diff --git a/CVSROOT/checkoutlist b/CVSROOT/checkoutlist deleted file mode 100644 index 4c45a691d0ae..000000000000 --- a/CVSROOT/checkoutlist +++ /dev/null @@ -1,14 +0,0 @@ -# The "checkoutlist" file is used to support additional version controlled -# administrative files in $CVSROOT/CVSROOT, such as template files. -# -# The first entry on a line is a filename which will be checked out from -# the corresponding RCS file in the $CVSROOT/CVSROOT directory. -# The remainder of the line is an error message to use if the file cannot -# be checked out. -# -# File format: -# -# [] -# -# comment lines begin with '#' -syncmail diff --git a/CVSROOT/commitinfo b/CVSROOT/commitinfo deleted file mode 100644 index b19e7b7a63e8..000000000000 --- a/CVSROOT/commitinfo +++ /dev/null @@ -1,15 +0,0 @@ -# The "commitinfo" file is used to control pre-commit checks. -# The filter on the right is invoked with the repository and a list -# of files to check. A non-zero exit of the filter program will -# cause the commit to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/config b/CVSROOT/config deleted file mode 100644 index ff43ec005ab3..000000000000 --- a/CVSROOT/config +++ /dev/null @@ -1,14 +0,0 @@ -# Set this to "no" if pserver shouldn't check system users/passwords -#SystemAuth=no - -# Put CVS lock files in this directory rather than directly in the repository. -#LockDir=/var/lock/cvs - -# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top -# level of the new working directory when using the `cvs checkout' -# command. -#TopLevelAdmin=no - -# Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the -# history file, or a subset as needed (ie `TMAR' logs all write operations) -#LogHistory=TOFEWGCMAR diff --git a/CVSROOT/cvswrappers b/CVSROOT/cvswrappers deleted file mode 100644 index 0accaf1b1532..000000000000 --- a/CVSROOT/cvswrappers +++ /dev/null @@ -1,23 +0,0 @@ -# This file affects handling of files based on their names. -# -# The -t/-f options allow one to treat directories of files -# as a single file, or to transform a file in other ways on -# its way in and out of CVS. -# -# The -m option specifies whether CVS attempts to merge files. -# -# The -k option specifies keyword expansion (e.g. -kb for binary). -# -# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) -# -# wildcard [option value][option value]... -# -# where option is one of -# -f from cvs filter value: path to filter -# -t to cvs filter value: path to filter -# -m update methodology value: MERGE or COPY -# -k expansion mode value: b, o, kkv, &c -# -# and value is a single-quote delimited value. -# For example: -#*.gif -k 'b' diff --git a/CVSROOT/editinfo b/CVSROOT/editinfo deleted file mode 100644 index d78886c1522b..000000000000 --- a/CVSROOT/editinfo +++ /dev/null @@ -1,21 +0,0 @@ -# The "editinfo" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/CVSROOT/loginfo b/CVSROOT/loginfo deleted file mode 100644 index d33dfced1ca9..000000000000 --- a/CVSROOT/loginfo +++ /dev/null @@ -1,29 +0,0 @@ -# The "loginfo" file controls where "cvs commit" log information -# is sent. The first entry on a line is a regular expression which must match -# the directory that the change is being made to, relative to the -# $CVSROOT. If a match is found, then the remainder of the line is a filter -# program that should expect log information on its standard input. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name ALL appears as a regular expression it is always used -# in addition to the first matching regex or DEFAULT. -# -# You may specify a format string as part of the -# filter. The string is composed of a `%' followed -# by a single format character, or followed by a set of format -# characters surrounded by `{' and `}' as separators. The format -# characters are: -# -# s = file name -# V = old version number (pre-checkin) -# v = new version number (post-checkin) -# -# For example: -#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog -# or -#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog -CVSROOT $CVSROOT/CVSROOT/syncmail %{sVv} gsherman@users.sourceforge.net -DEFAULT $CVSROOT/CVSROOT/syncmail %{sVv} qgis-cvs-commits@lists.sourceforge.net - diff --git a/CVSROOT/modules b/CVSROOT/modules deleted file mode 100644 index cb9e9efc94b3..000000000000 --- a/CVSROOT/modules +++ /dev/null @@ -1,26 +0,0 @@ -# Three different line formats are valid: -# key -a aliases... -# key [options] directory -# key [options] directory files... -# -# Where "options" are composed of: -# -i prog Run "prog" on "cvs commit" from top-level of module. -# -o prog Run "prog" on "cvs checkout" of module. -# -e prog Run "prog" on "cvs export" of module. -# -t prog Run "prog" on "cvs rtag" of module. -# -u prog Run "prog" on "cvs update" of module. -# -d dir Place module in directory "dir" instead of module name. -# -l Top-level directory only -- do not recurse. -# -# NOTE: If you change any of the "Run" options above, you'll have to -# release and re-checkout any working directories of these modules. -# -# And "directory" is a path to a directory relative to $CVSROOT. -# -# The "-a" option specifies an alias. An alias is interpreted as if -# everything on the right of the "-a" had been typed on the command line. -# -# You can encode a module within a module by using the special '&' -# character to interpose another module into the current module. This -# can be useful for creating a module that consists of many directories -# spread out over the entire source repository. diff --git a/CVSROOT/notify b/CVSROOT/notify deleted file mode 100644 index 34f0bc288808..000000000000 --- a/CVSROOT/notify +++ /dev/null @@ -1,12 +0,0 @@ -# The "notify" file controls where notifications from watches set by -# "cvs watch add" or "cvs edit" are sent. The first entry on a line is -# a regular expression which is tested against the directory that the -# change is being made to, relative to the $CVSROOT. If it matches, -# then the remainder of the line is a filter program that should contain -# one occurrence of %s for the user to notify, and information on its -# standard input. -# -# "ALL" or "DEFAULT" can be used in place of the regular expression. -# -# For example: -#ALL mail %s -s "CVS notification" diff --git a/CVSROOT/rcsinfo b/CVSROOT/rcsinfo deleted file mode 100644 index 49e59f4d0df9..000000000000 --- a/CVSROOT/rcsinfo +++ /dev/null @@ -1,13 +0,0 @@ -# The "rcsinfo" file is used to control templates with which the editor -# is invoked on commit and import. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being made to, relative to the -# $CVSROOT. For the first match that is found, then the remainder of the -# line is the name of the file that contains the template. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/syncmail b/CVSROOT/syncmail deleted file mode 100755 index 7af6c30e7c4d..000000000000 --- a/CVSROOT/syncmail +++ /dev/null @@ -1,323 +0,0 @@ -#! /usr/bin/python - -# NOTE: Until SourceForge installs a modern version of Python on the cvs -# servers, this script MUST be compatible with Python 1.5.2. - -"""Complicated notification for CVS checkins. - -This script is used to provide email notifications of changes to the CVS -repository. These email changes will include context diffs of the changes. -Really big diffs will be trimmed. - -This script is run from a CVS loginfo file (see $CVSROOT/CVSROOT/loginfo). To -set this up, create a loginfo entry that looks something like this: - - mymodule /path/to/this/script %%s some-email-addr@your.domain - -In this example, whenever a checkin that matches `mymodule' is made, this -script is invoked, which will generate the diff containing email, and send it -to some-email-addr@your.domain. - - Note: This module used to also do repository synchronizations via - rsync-over-ssh, but since the repository has been moved to SourceForge, - this is no longer necessary. The syncing functionality has been ripped - out in the 3.0, which simplifies it considerably. Access the 2.x versions - to refer to this functionality. Because of this, the script is misnamed. - -It no longer makes sense to run this script from the command line. Doing so -will only print out this usage information. - -Usage: - - %(PROGRAM)s [options] <%%S> email-addr [email-addr ...] - -Where options are: - - --cvsroot= - Use as the environment variable CVSROOT. Otherwise this - variable must exist in the environment. - - --context=# - -C # - Include # lines of context around lines that differ (default: 2). - - -c - Produce a context diff (default). - - -u - Produce a unified diff (smaller). - - --quiet / -q - Don't print as much status to stdout. - - --fromhost=hostname - -f hostname - The hostname that email messages appear to be coming from. The From: - header will of the outgoing message will look like user@hostname. By - default, hostname is the machine's fully qualified domain name. - - --help / -h - Print this text. - -The rest of the command line arguments are: - - <%%S> - CVS %%s loginfo expansion. When invoked by CVS, this will be a single - string containing the directory the checkin is being made in, relative - to $CVSROOT, followed by the list of files that are changing. If the - %%s in the loginfo file is %%{sVv}, context diffs for each of the - modified files are included in any email messages that are generated. - - email-addrs - At least one email address. -""" -import os -import sys -import re -import time -import string -import getopt -import smtplib -import pwd -import socket - -try: - from socket import getfqdn -except ImportError: - def getfqdn(): - # Python 1.5.2 :( - hostname = socket.gethostname() - byaddr = socket.gethostbyaddr(socket.gethostbyname(hostname)) - aliases = byaddr[1] - aliases.insert(0, byaddr[0]) - aliases.insert(0, hostname) - for fqdn in aliases: - if '.' in fqdn: - break - else: - fqdn = 'localhost.localdomain' - return fqdn - - -from cStringIO import StringIO - -# Which SMTP server to do we connect to? Empty string means localhost. -MAILHOST = 'localhost' -MAILPORT = 25 - -# Diff trimming stuff -DIFF_HEAD_LINES = 20 -DIFF_TAIL_LINES = 20 -DIFF_TRUNCATE_IF_LARGER = 1000 - -EMPTYSTRING = '' -SPACE = ' ' -DOT = '.' -COMMASPACE = ', ' - -PROGRAM = sys.argv[0] - -BINARY_EXPLANATION_LINES = [ - "(This appears to be a binary file; contents omitted.)\n" - ] - -REVCRE = re.compile("^(NONE|[0-9.]+)$") -NOVERSION = "Couldn't generate diff; no version number found in filespec: %s" -BACKSLASH = "Couldn't generate diff: backslash in filespec's filename: %s" - - - -def usage(code, msg=''): - print __doc__ % globals() - if msg: - print msg - sys.exit(code) - - - -def calculate_diff(filespec, contextlines): - file, oldrev, newrev = string.split(filespec, ',') - # Make sure we can find a CVS version number - if not REVCRE.match(oldrev): - return NOVERSION % filespec - if not REVCRE.match(newrev): - return NOVERSION % filespec - - if string.find(file, '\\') <> -1: - # I'm sorry, a file name that contains a backslash is just too much. - # XXX if someone wants to figure out how to escape the backslashes in - # a safe way to allow filenames containing backslashes, this is the - # place to do it. --Zooko 2002-03-17 - return BACKSLASH % filespec - - if string.find(file, "'") <> -1: - # Those crazy users put single-quotes in their file names! Now we - # have to escape everything that is meaningful inside double-quotes. - filestr = string.replace(file, '`', '\`') - filestr = string.replace(filestr, '"', '\"') - filestr = string.replace(filestr, '$', '\$') - # and quote it with double-quotes. - filestr = '"' + filestr + '"' - else: - # quote it with single-quotes. - filestr = "'" + file + "'" - if oldrev == 'NONE': - try: - if os.path.exists(file): - fp = open(file) - else: - update_cmd = "cvs -fn update -r %s -p %s" % (newrev, filestr) - fp = os.popen(update_cmd) - lines = fp.readlines() - fp.close() - # Is this a binary file? Let's look at the first few - # lines to figure it out: - for line in lines[:5]: - for c in string.rstrip(line): - if c in string.whitespace: - continue - if c < ' ' or c > chr(127): - lines = BINARY_EXPLANATION_LINES[:] - break - lines.insert(0, '--- NEW FILE: %s ---\n' % file) - except IOError, e: - lines = ['***** Error reading new file: ', - str(e), '\n***** file: ', file, ' cwd: ', os.getcwd()] - elif newrev == 'NONE': - lines = ['--- %s DELETED ---\n' % file] - else: - # This /has/ to happen in the background, otherwise we'll run into CVS - # lock contention. What a crock. - if contextlines > 0: - difftype = "-C " + str(contextlines) - else: - difftype = "-u" - diffcmd = "/usr/bin/cvs -f diff -kk %s --minimal -r %s -r %s %s" \ - % (difftype, oldrev, newrev, filestr) - fp = os.popen(diffcmd) - lines = fp.readlines() - sts = fp.close() - # ignore the error code, it always seems to be 1 :( -## if sts: -## return 'Error code %d occurred during diff\n' % (sts >> 8) - if len(lines) > DIFF_TRUNCATE_IF_LARGER: - removedlines = len(lines) - DIFF_HEAD_LINES - DIFF_TAIL_LINES - del lines[DIFF_HEAD_LINES:-DIFF_TAIL_LINES] - lines.insert(DIFF_HEAD_LINES, - '[...%d lines suppressed...]\n' % removedlines) - return string.join(lines, '') - - - -def blast_mail(subject, people, filestodiff, contextlines, fromhost): - # cannot wait for child process or that will cause parent to retain cvs - # lock for too long. Urg! - if not os.fork(): - # in the child - # give up the lock you cvs thang! - time.sleep(2) - # Create the smtp connection to the localhost - conn = smtplib.SMTP() - conn.connect(MAILHOST, MAILPORT) - user = pwd.getpwuid(os.getuid())[0] - domain = fromhost or getfqdn() - author = '%s@%s' % (user, domain) - s = StringIO() - sys.stdout = s - try: - print '''\ -From: %(author)s -To: %(people)s -Subject: %(subject)s -''' % {'author' : author, - 'people' : string.join(people, COMMASPACE), - 'subject': subject, - } - s.write(sys.stdin.read()) - # append the diffs if available - print - for file in filestodiff: - print calculate_diff(file, contextlines) - finally: - sys.stdout = sys.__stdout__ - resp = conn.sendmail(author, people, s.getvalue()) - conn.close() - os._exit(0) - - - -# scan args for options -def main(): - try: - opts, args = getopt.getopt( - sys.argv[1:], 'hC:cuqf:', - ['fromhost=', 'context=', 'cvsroot=', 'help', 'quiet']) - except getopt.error, msg: - usage(1, msg) - - # parse the options - contextlines = 2 - verbose = 1 - fromhost = None - for opt, arg in opts: - if opt in ('-h', '--help'): - usage(0) - elif opt == '--cvsroot': - os.environ['CVSROOT'] = arg - elif opt in ('-C', '--context'): - contextlines = int(arg) - elif opt == '-c': - if contextlines <= 0: - contextlines = 2 - elif opt == '-u': - contextlines = 0 - elif opt in ('-q', '--quiet'): - verbose = 0 - elif opt in ('-f', '--fromhost'): - fromhost = arg - - # What follows is the specification containing the files that were - # modified. The argument actually must be split, with the first component - # containing the directory the checkin is being made in, relative to - # $CVSROOT, followed by the list of files that are changing. - if not args: - usage(1, 'No CVS module specified') - subject = args[0] - specs = string.split(args[0]) - del args[0] - - # The remaining args should be the email addresses - if not args: - usage(1, 'No recipients specified') - - # Now do the mail command - people = args - - if verbose: - print 'Mailing %s...' % string.join(people, COMMASPACE) - - if specs == ['-', 'Imported', 'sources']: - return - if specs[-3:] == ['-', 'New', 'directory']: - del specs[-3:] - elif len(specs) > 2: - L = specs[:2] - for s in specs[2:]: - prev = L[-1] - if string.count(prev, ',') < 2: - L[-1] = "%s %s" % (prev, s) - else: - L.append(s) - specs = L - - if verbose: - print 'Generating notification message...' - blast_mail(subject, people, specs[1:], contextlines, fromhost) - if verbose: - print 'Generating notification message... done.' - - - -if __name__ == '__main__': - main() - sys.exit(0) diff --git a/CVSROOT/taginfo b/CVSROOT/taginfo deleted file mode 100644 index 274a46dd5b61..000000000000 --- a/CVSROOT/taginfo +++ /dev/null @@ -1,20 +0,0 @@ -# The "taginfo" file is used to control pre-tag checks. -# The filter on the right is invoked with the following arguments: -# -# $1 -- tagname -# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d -# $3 -- repository -# $4-> file revision [file revision ...] -# -# A non-zero exit of the filter program will cause the tag to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/verifymsg b/CVSROOT/verifymsg deleted file mode 100644 index 86f747ce2223..000000000000 --- a/CVSROOT/verifymsg +++ /dev/null @@ -1,21 +0,0 @@ -# The "verifymsg" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index 58a40552722a..000000000000 --- a/debian/changelog +++ /dev/null @@ -1,25 +0,0 @@ -qgis (0.1-2) unstable; urgency=low - - * Build with the Shapefile to PostGIS Import Tool (SPIT) and - PostgreSQL support (Closes: #233191) - - -- Steve Halasz Wed, 7 Apr 2004 09:18:34 -0400 - -qgis (0.1-1) unstable; urgency=low - - * New upstream release - * changed install location of html documentation to /usr/share/doc/qgis - * updated man page to describe new command-line options and include pointers - to HTML and PDF documentation (Closes: #234600) - * debian/control: - - updated description to include raster support - - -- Steve Halasz Wed, 25 Feb 2004 08:56:18 -0500 - -qgis (0.0.13-1) unstable; urgency=low - - * Initial Release (Closes: #217237). - * clean out config.status and config.log before building - - -- Steve Halasz Fri, 9 Jan 2004 12:27:07 -0500 - diff --git a/debian/compat b/debian/compat deleted file mode 100644 index b8626c4cff28..000000000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -4 diff --git a/debian/control b/debian/control deleted file mode 100644 index 3e271d773747..000000000000 --- a/debian/control +++ /dev/null @@ -1,19 +0,0 @@ -Source: qgis -Section: science -Priority: extra -Maintainer: Steve Halasz -Build-Depends: debhelper (>= 4.0.0), libgdal1-dev (>= 1.2+cvs.031111-1), libqt3-mt-dev (>= 3:3.2.1-6), libtiff3g-dev (>= 3.5.7-2), libcfitsio-dev (>= 2.460-1), postgresql-dev (>= 7.3.4-9), libhdf4g-dev (>= 4.1r4-17), libungif4-dev (>= 4.1.0b1-6), unixodbc-dev (>= 2.2.4-6), libxerces21-dev (>= 2.1.0-5) -Standards-Version: 3.6.1 - -Package: qgis -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Geographic Information System (GIS) - A Geographic Information System (GIS) manages, - analyzes, and displays databases of geographic - information. Quantum GIS (QGIS) supports shapefile - viewing, feature identification, and attribute - table display. QGIS also supports display - of various georeferenced raster and Digital - Elevation Model (DEM) formats including - GeoTIFF, Arc/Info ASCII Grid, and USGS ASCII DEM. diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index 656c86c3921b..000000000000 --- a/debian/copyright +++ /dev/null @@ -1,20 +0,0 @@ -This package was debianized by Steve Halasz on -Wed, 31 Dec 2003 10:07:40 -0500. - -It was downloaded from: - http://qgis.sourceforge.net/downloads.html - -The upstream contributors are listed in the AUTHORS file. - -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 2 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. - -On Debian systems, the complete text of the GNU General Public -License can be found in /usr/share/common-licenses/GPL file. diff --git a/debian/dirs b/debian/dirs deleted file mode 100644 index eb45eb8d2e39..000000000000 --- a/debian/dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/share/pixmaps -usr/lib/qgis diff --git a/debian/docs b/debian/docs deleted file mode 100644 index 5442c182369d..000000000000 --- a/debian/docs +++ /dev/null @@ -1,4 +0,0 @@ -AUTHORS -BUGS -README -TODO diff --git a/debian/qgis-icon.xpm b/debian/qgis-icon.xpm deleted file mode 100644 index 819eef666447..000000000000 --- a/debian/qgis-icon.xpm +++ /dev/null @@ -1,255 +0,0 @@ -/* XPM */ -static char * qgis_icon_xpm[] = { -"32 32 220 2", -" c None", -". c #324A00", -"+ c #257700", -"@ c #0F3700", -"# c #316E00", -"$ c #177B00", -"% c #0E7200", -"& c #0C2A00", -"* c #414202", -"= c #2C6000", -"- c #167800", -"; c #0F7400", -"> c #0E7100", -", c #0E7000", -"' c #0D2900", -") c #100F00", -"! c #1F5C00", -"~ c #103100", -"{ c #167A00", -"] c #0E6A00", -"^ c #106800", -"/ c #113B00", -"( c #5B55E0", -"_ c #4E49D6", -": c #423CCE", -"< c #403BC9", -"[ c #4440B9", -"} c #484297", -"| c #2A7003", -"1 c #0F7300", -"2 c #0E6E00", -"3 c #0B2C00", -"4 c #122000", -"5 c #173D00", -"6 c #4A43E0", -"7 c #3C37BB", -"8 c #2E2A7F", -"9 c #15143C", -"0 c #11102A", -"a c #191748", -"b c #282573", -"c c #384A53", -"d c #137B00", -"e c #0C5200", -"f c #040800", -"g c #1D1E00", -"h c #4942DC", -"i c #3833AA", -"j c #1E1D4C", -"k c #1F5F16", -"l c #091D02", -"m c #4841DB", -"n c #3934B2", -"o c #232163", -"p c #356701", -"q c #0B4300", -"r c #1A174A", -"s c #4F49D8", -"t c #3B35B8", -"u c #3631A6", -"v c #16152B", -"w c #197C00", -"x c #0C5B02", -"y c #0C1615", -"z c #302B99", -"A c #2B287A", -"B c #423CCC", -"C c #3631AB", -"D c #343093", -"E c #2F6C00", -"F c #0F7500", -"G c #0E6F00", -"H c #0C2A02", -"I c #282578", -"J c #3530A9", -"K c #3530A5", -"L c #1C1A3C", -"M c #4640C3", -"N c #3A35B7", -"O c #3631AA", -"P c #2A2776", -"Q c #147C00", -"R c #0B5700", -"S c #060A00", -"T c #3F3BA7", -"U c #282664", -"V c #3B36B5", -"W c #3833AF", -"X c #1B1950", -"Y c #247600", -"Z c #0E6D00", -"` c #092300", -" . c #423EA7", -".. c #2F2C7C", -"+. c #4640CA", -"@. c #3732AC", -"#. c #1C1A53", -"$. c #386401", -"%. c #127900", -"&. c #0C4A00", -"*. c #040500", -"=. c #423DA0", -"-. c #3832AE", -";. c #2E2B7A", -">. c #3E39B4", -",. c #1D7B00", -"'. c #0D6600", -"). c #071700", -"!. c #4641AA", -"~. c #2D2A79", -"{. c #332F99", -"]. c #307203", -"^. c #0F7600", -"/. c #0B3A00", -"(. c #4D48C3", -"_. c #2D2A78", -":. c #37339E", -"<. c #3732AB", -"[. c #27246D", -"}. c #3A6B73", -"|. c #4250AA", -"1. c #3E48A3", -"2. c #35347E", -"3. c #4641B5", -"4. c #232257", -"5. c #2E2B83", -"6. c #4D5AB0", -"7. c #423CC9", -"8. c #2B2D7A", -"9. c #212161", -"0. c #332F9C", -"a. c #3B36AD", -"b. c #413CC1", -"c. c #3530A6", -"d. c #14132B", -"e. c #343194", -"f. c #3631A9", -"g. c #3631A2", -"h. c #3B4262", -"i. c #433DCE", -"j. c #1B2444", -"k. c #083400", -"l. c #040600", -"m. c #1E1C48", -"n. c #322E9D", -"o. c #322E92", -"p. c #3F39C5", -"q. c #292673", -"r. c #342F9F", -"s. c #3A38A8", -"t. c #3634A2", -"u. c #093807", -"v. c #061800", -"w. c #342F91", -"x. c #3F3AB4", -"y. c #3C36BA", -"z. c #35309E", -"A. c #121129", -"B. c #2D2A72", -"C. c #3530A4", -"D. c #342FA1", -"E. c #0D2912", -"F. c #010100", -"G. c #423EAC", -"H. c #3530A2", -"I. c #161439", -"J. c #213E3F", -"K. c #2F2C90", -"L. c #2F2C84", -"M. c #4842CF", -"N. c #3732AD", -"O. c #1A183F", -"P. c #297500", -"Q. c #0E7300", -"R. c #114C15", -"S. c #24265C", -"T. c #2F2B8E", -"U. c #3832AD", -"V. c #3C37BC", -"W. c #3B36B2", -"X. c #1E1C4D", -"Y. c #287700", -"Z. c #0D5A00", -"`. c #050800", -" + c #020206", -".+ c #28265F", -"++ c #2E2A7D", -"@+ c #433DD4", -"#+ c #454902", -"$+ c #286800", -"%+ c #147300", -"&+ c #0E6700", -"*+ c #0E6C00", -"=+ c #0C4000", -"-+ c #3732A9", -";+ c #242252", -">+ c #3934AE", -",+ c #080E00", -"'+ c #070F00", -")+ c #050A00", -"!+ c #193400", -"~+ c #0F7000", -"{+ c #0E3500", -"]+ c #342F93", -"^+ c #3732A7", -"/+ c #433DCB", -"(+ c #312D89", -"_+ c #186000", -":+ c #0F3600", -"<+ c #322E95", -"[+ c #3530A7", -"}+ c #3530A8", -"|+ c #302D8E", -"1+ c #0F0E1F", -"2+ c #1F3A00", -"3+ c #123E00", -"4+ c #17163F", -"5+ c #131132", -"6+ c #080812", -"7+ c #192100", -" ", -" . ", -" + @ ", -" # $ % & ", -" * = - ; > , ' ", -" ) ! > > , ~ ", -" { > ] ^ / ", -" ( _ : < < [ } | 1 2 3 4 5 ", -" 6 7 8 9 0 a b c d > e f g ", -" h i j k % ] l ", -" m n o p % , q r ", -" s t u v w > x y z A ", -" B C D E F G H I J K L ", -" M N O P Q > R S T C O U ", -" V W O X Y % Z ` .C O .. ", -" +.@.O #. $.%.> &.*. =.-.O ;. ", -" >.O O #. ,.% '.). !.W O ~. ", -" {.C O #. ].^., /. (.W O _. ", -" :.<.O [. }.|.1.2. 3.<.O 4. ", -" <.O 5. 6.7.8.9.0.a. b.C c.d. ", -" e.f.g.h.i.j.k.l.m.n.o. p.O q. ", -" r.O s.t.u.v. w.O x.y.z.A. ", -" B.C.O D.E.F. G.@.O H.I. ", -" J.K.f.L. M.N.f.O. ", -" P.Q.R.S.T.U.y.V.W.O f.X. ", -" Y.^.> Z.`. + +.+@.O ++ @+ ", -" #+$+%+&+*+> =+ -+O C.;+ >+ ", -" ,+'+)+!+~+{+ ]+f.O ^+/+(+ ", -" _+:+ <+[+}+|+1+ ", -" 2+3+ 4+5+6+ ", -" 7+ ", -" "}; diff --git a/debian/qgis.1 b/debian/qgis.1 deleted file mode 100644 index 4e3dbd7ed926..000000000000 --- a/debian/qgis.1 +++ /dev/null @@ -1,35 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.\" First parameter, NAME, should be all caps -.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection -.\" other parameters are allowed: see man(7), man(1) -.TH QGIS 1 "Januray 6, 2004" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -qgis \- geographic data viewer -.SH SYNOPSIS -.B qgis [project-file.qgs] | [shapefile.shp] [raster-file.tif] ... -.br -.SH DESCRIPTION -This manual page documents briefly the -.B qgis -command. -This manual page was written for the Debian distribution -because the original program does not have a manual page. -.PP -\fBqgis\fP displays shapefiles, georeferenced raster files, and digital elevation models. You can specify a QGIS project file on the command line to be displayed at startup. Or you can specify a combination of multiple shapefiles and/or raster files to be displayed at startup. -.SH SEE ALSO -HTML and PDF documentation in /usr/share/doc/qgis and at http://qgis.sourceforge.net/docs/ -.SH AUTHOR -This manual page was written by Steve Halasz , -for the Debian project (but may be used by others). diff --git a/debian/qgis.menu b/debian/qgis.menu deleted file mode 100644 index bb5bf94d9683..000000000000 --- a/debian/qgis.menu +++ /dev/null @@ -1,3 +0,0 @@ -?package(qgis):needs=X11 section=Apps/Science\ - icon="/usr/share/pixmaps/qgis-icon.xpm" title="QGIS"\ - command="/usr/bin/qgis" diff --git a/debian/qgis.postinst.debhelper b/debian/qgis.postinst.debhelper deleted file mode 100644 index ea7876c6b098..000000000000 --- a/debian/qgis.postinst.debhelper +++ /dev/null @@ -1,3 +0,0 @@ -# Automatically added by dh_installmenu -if [ "$1" = "configure" ] && [ -x /usr/bin/update-menus ]; then update-menus ; fi -# End automatically added section diff --git a/debian/qgis.postrm.debhelper b/debian/qgis.postrm.debhelper deleted file mode 100644 index 2b4be4f27021..000000000000 --- a/debian/qgis.postrm.debhelper +++ /dev/null @@ -1,3 +0,0 @@ -# Automatically added by dh_installmenu -if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi -# End automatically added section diff --git a/debian/qgis.substvars b/debian/qgis.substvars deleted file mode 100644 index f6434171e3cb..000000000000 --- a/debian/qgis.substvars +++ /dev/null @@ -1 +0,0 @@ -shlibs:Depends=libaudio2, libc6 (>= 2.3.2.ds1-4), libcfitsio2, libfontconfig1 (>= 2.2.1), libfreetype6 (>= 2.1.5-1), libgcc1 (>= 1:3.3.2-1), libgdal1, libhdf4g (>=4.1r4), libjpeg62, libltdl3 (>= 1.5-3), libpng12-0 (>= 1.2.5.0-4), libpq3 (>= 7.3.1), libqt3c102-mt (>= 3:3.2.3), libstdc++5 (>= 1:3.3.2-1), libungif4g (>= 4.1.0b1), libxcursor1, libxerces21c102, libxft2 (>> 2.1.1), libxrender1, unixodbc, xlibmesa3-gl | libgl1, xlibs (>> 4.1.0), zlib1g (>= 1:1.2.1) diff --git a/debian/rules b/debian/rules deleted file mode 100755 index f1eb1db556ae..000000000000 --- a/debian/rules +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - - -CFLAGS = -Wall -g - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - -config.status: configure - dh_testdir - # Add here commands to configure the package. - CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --with-qtdir=/usr/share/qt3 --enable-spit --with-postgresql --disable-debug - - -build: build-stamp - -build-stamp: config.status - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - #/usr/bin/docbook-to-man debian/qgis.sgml > qgis.1 - - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - - # Add here commands to clean up after the build process. - -$(MAKE) distclean -ifneq "$(wildcard /usr/share/misc/config.sub)" "" - cp -f /usr/share/misc/config.sub config.sub -endif -ifneq "$(wildcard /usr/share/misc/config.guess)" "" - cp -f /usr/share/misc/config.guess config.guess -endif - rm -f config.status config.log - - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/qgis. - $(MAKE) install DESTDIR=$(CURDIR)/debian/qgis - - # Install menu pixmap - install -o root -g root -m 644 debian/qgis-icon.xpm $(CURDIR)/debian/qgis/usr/share/pixmaps - - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs ChangeLog - dh_installdocs - dh_installexamples -# dh_install - dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman debian/qgis.1 - dh_link - dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_python -# dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install diff --git a/design/diagrams/plugins.xmi b/design/diagrams/plugins.xmi deleted file mode 100644 index eb89e0d5f2ab..000000000000 --- a/design/diagrams/plugins.xmi +++ /dev/null @@ -1,179 +0,0 @@ - - - - - umbrello uml modeller http://uml.sf.net - 1.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/design/diagrams/use_cases.zargo b/design/diagrams/use_cases.zargo deleted file mode 100644 index 9f1ac1ab330b..000000000000 Binary files a/design/diagrams/use_cases.zargo and /dev/null differ diff --git a/design/docs/plugin.png b/design/docs/plugin.png deleted file mode 100644 index a0e8bb15f0fb..000000000000 Binary files a/design/docs/plugin.png and /dev/null differ diff --git a/design/docs/qgis_draft_design.lyx b/design/docs/qgis_draft_design.lyx deleted file mode 100644 index 6373124acbac..000000000000 --- a/design/docs/qgis_draft_design.lyx +++ /dev/null @@ -1,7208 +0,0 @@ -#LyX 1.3 created this file. For more info see http://www.lyx.org/ -\lyxformat 221 -\textclass article -\language english -\inputencoding auto -\fontscheme default -\graphics default -\paperfontsize default -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 1 -\use_amsmath 0 -\use_natbib 0 -\use_numerical_citations 0 -\paperorientation portrait -\leftmargin 1in -\topmargin 1in -\rightmargin 1in -\bottommargin 1in -\headheight 0.2in -\headsep 0.25in -\footskip 0.5in -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip medskip -\quotes_language english -\quotes_times 2 -\papercolumns 1 -\papersides 1 -\paperpagestyle default - -\layout Title - -Quantum GIS Design Document -\layout Author - -QGIS Core Design Team -\begin_inset Foot -collapsed true - -\layout Standard - -Gary E Sherman, Mark Coletti, Denis Antipov -\end_inset - - -\layout Standard -\pagebreak_top \pagebreak_bottom - -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - -\layout Section - -Introduction -\layout Standard - -This document describes the requirements and design for Quantum GIS (QGIS), - a desktop GIS application for Linux and Unix. - This document presents use cases, high-level class diagrams, and additional - information about the design and implementation of QGIS. - -\layout Standard - -QGIS is hosted on SourceForge at http://qgis.sourceforge.net. - The current release of QGIS is a viewer with a minimal feature set, including - loading data, browsing, and identifying features. -\layout Standard - -The design outlined in this document represents the next phase of QGIS developme -nt, which will move the application to a flexible and extensible platform - for working with spatial data. -\layout Standard - -Note that it's presumed that the reader is familiar with C++, object-oriented - design, and UML. -\layout Section - -Definitions -\layout Standard - -The following is a list of definitions for terms used in this document. - Some of these definitions are taken from the Association for Geographic - Information and the University Of Edinburgh Department of Geography online - dictionary of GIS terms available at http://www.geo.ed.ac.uk/agidict/welcome.html. -\layout Description - -Attribute: A fact describing an entity in a relational data model, equivalent - to the column in a relational table. -\layout Description - -Feature: A set of points, lines or polygons in a spatial database that represent - a real-world entity. - The terms feature and object are often used synonymously. -\layout Description - -GIS: Geographic Information System. - A software system that provides the ability to view and analyze spatial - data and its attributes. -\layout Description - -Layer: A dataset that has a spatial context and can be drawn on a map canvas. - Layers may have associated attributes. - -\layout Description - -Plugin: A compiled library that can be dynamically loaded into an application - to provide new functionality. -\layout Description - -Projection: A method of representing the earth's three-dimensional surface - as a flat two-dimensional surface. - This normally involves a mathematical model that transforms the locations - of features on the earth's surface to locations on a two-dimensional surface. - Because the earth is three-dimensional, some method must be used to depict - the map in two dimensions. - Therefore such representations distort some parameter of the earth's surface, - be it distance, area, shape, or direction. -\layout Section - -History -\layout Standard - -The QGIS project was registered with SourceForge on June 15, 2002. - Since that time, QGIS has developed into a minimally functional viewer - with support for shapefiles -\begin_inset Foot -collapsed true - -\layout Standard - -ESRI format for file-based spatial data. -\end_inset - - and vector data stored in a PostgreSQL -\begin_inset Foot -collapsed false - -\layout Standard - -PostgreSQL Relational Database - http://www.postgresql.org -\end_inset - - database using the PostGIS -\begin_inset Foot -collapsed false - -\layout Standard - -PostGIS extension - http://postgis.refractions.net -\end_inset - - extensions.\SpecialChar ~ - -\layout Standard - -The development thus far has been useful in developing an understanding - of the challenges involved in developing a more robust Open Source desktop - GIS application. - In March 2003, planning began to restructure QGIS in order to make it more - extensible and to provide a means to add advanced functionality through - the use of plugins. -\layout Standard - -The current version of QGIS (0.0.9) is still usable as a simple GIS viewer - for shapefiles and PostGIS layers. - Only minor maintenance is being done on the current code base at this time. - -\layout Section - -Goals -\layout Standard - -There are already other Open Source GIS projects available today. - Many have asked what purpose QGIS will serve: -\layout Itemize - -Will QGIS be a complete desktop GIS application? -\layout Itemize - -Will it compete with commercial products? -\layout Itemize - -Why are you developing another GIS application? -\layout Standard - -The answers to these questions are not clear-cut. - A list of high-level goals for the QGIS project are enumerated below. - The reader can perhaps use this information to answer these and other questions - related to the project: -\layout Subsection - -List of Goals -\layout Enumerate - -Provide an easy to use desktop GIS application -\layout Enumerate - -Provide an easy to install application for users with minimum system experience -\layout Enumerate - -Support common data formats -\layout Enumerate - -Provide the foundation for more advanced tools (plugins) -\layout Enumerate - -Become a tool for spatial data collection -\layout Enumerate - -Support data analysis and conversion -\layout Enumerate - -Print/plot maps -\layout Enumerate - -Integrate with Internet mapping technologies -\layout Standard - -Section -\begin_inset LatexCommand \ref{sec:Requirements} - -\end_inset - - provides details about the functional requirements. -\layout Section - - -\begin_inset LatexCommand \label{sec:Requirements} - -\end_inset - -Requirements -\layout Standard - -This section describes the functional requirements of Quantum GIS. - These functional requirements drive the use cases discussed in Section - -\begin_inset LatexCommand \ref{sec:Use-Cases} - -\end_inset - -. -\layout Standard - -QGIS will provide GIS functionality somewhere between a simple viewer and - an industrial strength application. - The ultimate nature of QGIS is only limited by the talent of those software - engineers who will provide advanced capabilities through plugins. -\layout Standard - -Some of the major design requirements include: -\layout Itemize - -Extensible architecture using plugins -\layout Itemize - -Internationalization -\layout Itemize - -Integrated scripting language -\layout Itemize - -Projection on-the-fly -\layout Itemize - -Flexible symbology for all feature classes -\layout Itemize - -Ability to render and browse data in many formats: -\begin_deeper -\layout Itemize - -Spatio-temporal data using a feature-centric model -\layout Itemize - -Shapefiles -\layout Itemize - -PostgreSQL / PostGIS layers -\layout Itemize - -Raster -\end_deeper -\layout Itemize - -Support for OpenGIS implementation Specifications -\begin_deeper -\layout Itemize - -Geography Markup Language (GML) -\layout Itemize - -Web Feature Service (WFS) -\end_deeper -\layout Subsection - -User Interface -\layout Standard - -QGIS will use the SDI (Single Document Interface). - QGIS currently has (and will have) standard GUI interface elements such - as menus, toolbar, and a statusbar. - In addition, the standard QGIS interface will have a legend panel and a - map canvas (or drawing area). -\layout Subsection - -Standards -\layout Standard - -Development of QGIS will proceed with adoption of applicable OpenGIS standards. - This will include support for GML and possibly WFS. -\layout Subsection - -Data Formats -\layout Standard - -Any data format could be supported by the development of a plugin that reads - and renders the data store. - The -\begin_inset Quotes eld -\end_inset - -standard -\begin_inset Quotes erd -\end_inset - - formats that will be included in the core QGIS are similar to those currently - supported: -\layout Itemize - -Shapefiles -\layout Itemize - -PostgreSQL/PostGIS -\layout Itemize - -Rasters -\layout Standard - -Format support will be provided by plugins. -\layout Subsection - -Platform Support -\layout Standard - -Initially, QGIS will target Linux and other Unix operating systems supported - by the Qt toolkit. - Coding during development of QGIS and plugins will be done in a way so - as to not introduce any platform dependencies. - This will provide to possibility of a Windows version at some point in - the future. - -\layout Subsection - -Toolkits -\layout Standard - -QGIS will leverage existing libraries and toolkits to support the GUI, GIS - data stores, and GIS processing algorithims. - At present the identified toolkits include: -\layout Itemize - -Qt (http://www.trolltech.com) -\layout Itemize - -GDAL and OGR (/http://www.remotesensing.org/gdal) -\layout Itemize - -Proj.4 (http://www.remotesensing.org/proj/) -\layout Section - - -\begin_inset LatexCommand \label{sec:Use-Cases} - -\end_inset - -Use Cases -\layout Standard - -Use cases provide a means to identify and visualize the major goal oriented - tasks the application should address. - -\layout Subsection - -Actors -\layout Standard - -Actors are really persons (or physical entities) that use a system to acheive - a specific goal (these goals are expressed as use cases). - A number of actors could be defined for QGIS, however at this point the - simple approach is taken. - The actors are: -\layout Itemize - -Casual GIS User -\layout Itemize - -Professional GIS User -\layout Standard - -These two actors are sufficient to frame the development and discussion - of QGIS use cases. -\layout Subsection - -Primary Use Cases -\layout Standard -\added_space_bottom smallskip -The primary use cases for QGIS are listed below in no particular order of - importance: -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Itemize - -Load data -\layout Itemize - -Browse data -\layout Itemize - -Install plugin -\layout Itemize - -Find feature -\layout Itemize - -dislayFeatureAttributes -\layout Itemize - -Get help -\layout Itemize - -Customize -\layout Itemize - -Save project -\layout Itemize - -Restore project -\layout Itemize - -Navigate map -\begin_deeper -\layout Itemize - -Pan -\layout Itemize - -Zoom -\end_deeper -\layout Itemize - -Save image -\layout Itemize - -Print -\begin_deeper -\layout Itemize - -Print image -\layout Itemize - -Print metadata -\layout Itemize - -Print feature information -\end_deeper -\layout Itemize - -Write script -\end_inset - - -\begin_inset Text - -\layout Itemize - -Run script -\layout Itemize - -Edit data -\begin_deeper -\layout Itemize - -Digitize -\end_deeper -\layout Itemize - -Buffer feature -\layout Itemize - -Process data -\begin_deeper -\layout Itemize - -Union -\layout Itemize - -Merge -\layout Itemize - -Intersect -\end_deeper -\layout Itemize - -Convert data -\begin_deeper -\layout Itemize - -Change projection -\end_deeper -\layout Itemize - -Import data -\layout Itemize - -Export data -\begin_deeper -\layout Itemize - -Export selected set -\end_deeper -\layout Itemize - -Select features -\begin_deeper -\layout Itemize - -Select by attribute -\layout Itemize - -Select spatially -\end_deeper -\layout Itemize - -Edit Layer Preferences -\begin_deeper -\layout Itemize - -Edit Symbology -\layout Itemize - -Edit Labels -\end_inset - - - - -\end_inset - - -\layout Subsection - -Case Descriptions -\layout Standard - -In the sections that follow, the use cases are presented in no particular - order. -\layout Subsubsection - -Load Data -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Use Case: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Load Data -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Goal in Context: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Load a data set from a data set -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Scope & Level: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Primary task -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Preconditions: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is running -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Success End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Data is loaded and displayed -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Failed End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is in pre-load state -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Primary Actor(s): -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Casual, Professional user -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Trigger: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -User wants to load data into environment for use -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Description of Steps: -\end_inset - - -\begin_inset Text - -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard - -User -\end_inset - - -\begin_inset Text - -\layout Standard - -System -\end_inset - - - - -\begin_inset Text - -\layout Standard - -selects data -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -\end_inset - - -\begin_inset Text - -\layout Standard - -acknowledges -\end_inset - - - - -\begin_inset Text - -\layout Standard - -start load -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -\end_inset - - -\begin_inset Text - -\layout Standard - -system shows loading of data then shows data -\end_inset - - - - -\end_inset - - -\end_inset - - - - -\end_inset - - -\layout Subsubsection - -Browse Data -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Use Case: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Browse Data -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Goal in Context: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Browse through a loaded data set and its features -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Scope & Level: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Primary task -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Preconditions: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is running, data set loaded -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Success End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Ability to browse, look at the needed information about loaded data -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Failed End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Unable to browse and look at the loaded data information -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Primary Actor(s): -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Casual, Professional user -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Trigger: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -User wants to browse the features and other information about the data set -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Description of Steps: -\end_inset - - -\begin_inset Text - -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard - -User -\end_inset - - -\begin_inset Text - -\layout Standard - -System -\end_inset - - - - -\begin_inset Text - -\layout Standard - -Change View -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -\end_inset - - -\begin_inset Text - -\layout Standard - -Redisplay View -\end_inset - - - - -\begin_inset Text - -\layout Standard - -<> -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -[continue until done] -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\end_inset - - -\end_inset - - - - -\end_inset - - -\newline - -\layout Subsubsection - -Load Plugin -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Use Case: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Load plugin -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Goal in Context: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Load a plugin into the 'core' system form the available list of installed - plugins -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Scope & Level: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Primary task -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Preconditions: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is running -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Success End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Plugin loaded and the the new tools corresponding to the plugin appear available -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Failed End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is in the initial or the previous plugin state -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Primary Actor(s): -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Casual, Professional user -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Trigger: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -User wants to view data with a different plugin, or wants to add certain - functionality to the existing state -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Description of Steps: -\end_inset - - -\begin_inset Text - -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard - -User -\end_inset - - -\begin_inset Text - -\layout Standard - -System -\end_inset - - - - -\begin_inset Text - -\layout Standard - -Ask for list of available plugins -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -\end_inset - - -\begin_inset Text - -\layout Standard - -Shows plug-ins -\end_inset - - - - -\begin_inset Text - -\layout Standard - -Selects one -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -\end_inset - - -\begin_inset Text - -\layout Standard - -System loads that plug-in -\end_inset - - - - -\end_inset - - -\end_inset - - - - -\end_inset - - -\newline - -\layout Subsubsection - -Find Feature -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Use Case: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Find feature -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Goal in Context: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Find a feature on a map or loaded data set -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Scope & Level: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Primary task -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Preconditions: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is running and a data set loaded -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Success End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -A feature that corresponds to the search condition found if such exists - and not found if not exists -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Failed End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -A feature that exists and corresponds to the search conditions not found -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Primary Actor(s): -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Casual, Professional user -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Trigger: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -User wants to find a feature on a map or data set -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Description of Steps: -\end_inset - - -\begin_inset Text - -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard - -User -\end_inset - - -\begin_inset Text - -\layout Standard - -System -\end_inset - - - - -\begin_inset Text - -\layout Standard - -Select feature -\end_inset - - -\begin_inset Text - -\layout Standard - -\end_inset - - - - -\begin_inset Text - -\layout Standard - -\end_inset - - -\begin_inset Text - -\layout Standard - -Show feature -\end_inset - - - - -\end_inset - - -\end_inset - - - - -\end_inset - - -\newline - -\layout Subsubsection - -displayFeatureAttributes -\layout Comment - -This was -\begin_inset Quotes eld -\end_inset - -Identify Feature -\begin_inset Quotes erd -\end_inset - -. - Feature information in inplicitly shown after it has been selected, so - we don't need a separate use case for that. - The hint for effecting this change was in the -\begin_inset Quotes eld -\end_inset - -goal in context -\begin_inset Quotes erd -\end_inset - -. - Think -\begin_inset Quotes eld -\end_inset - -findFeature -\begin_inset Quotes erd -\end_inset - - as highlighting a feature on the map and -\begin_inset Quotes eld -\end_inset - -displayFeatureAttributes -\begin_inset Quotes erd -\end_inset - - as giving the detailed attribute values hanging off it. -\layout Comment - -This can actually get a bit complicated as we still need to work out how - attributes are rendered. - Not only are there myriad attribute types (e.g., ints, floats, strings, dates, - raster images, etc.), but each type might have more than one means of rendering. - We might take a page from vtk and have a variety of -\begin_inset Quotes eld -\end_inset - -filters -\begin_inset Quotes erd -\end_inset - - and -\begin_inset Quotes eld -\end_inset - -renderers -\begin_inset Quotes erd -\end_inset - - that can be plugging together like tinker toys. - Think STL iterators and algorithms where certain algorithms and container - types only work with certain iterators, thus insuring correctness and maximum - flexibility and scalability. - So a 2D renderer will accept vector and image data and render it as a map-like - entity; 3D data could be rendered as a grayscale or color shade depending - on an intervening filter a la vtk. - A 3D renderer would accept the same kind of data, but drape vector and - raster data over a tessellated plane corresponding to elevation data. -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Use Case: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -displayFeatureAttributes -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Goal in Context: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -After selecting a feature on a map, display its attributes -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Scope & Level: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Primary task -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Preconditions: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Application is running and a data set loaded -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Success End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Attributes of a feature displayed -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Failed End Condition: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Nothing displayed when a feature selected -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Primary Actor(s): -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -Casual, Professional user -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Trigger: -\end_inset - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip -User wants to view attributes of a feature -\end_inset - - - - -\begin_inset Text - -\layout Standard -\added_space_top smallskip - -\series bold -Description of Steps: -\end_inset - - -\begin_inset Text - -\layout Standard - -User decides to view attributes of a particular feature -\layout Standard - -User chooses a feature on the map -\layout Standard - -User selects a feature -\layout Standard - -Attributes are displayed -\layout Standard - - -\begin_inset Tabular - - - - - - -\begin_inset Text - -\layout Standard - -User -\end_inset - - -\begin_inset Text - -\layout Standard - -System -\end_inset - - - - -\begin_inset Text - -\layout Standard - - - - - - - - and other HTML delights - -

-

- You can still take advantage of Forrest's site: linking, eg - <a href="site:index"> -

- - diff --git a/documentation_source/src/documentation/content/xdocs/samples/faq.xml b/documentation_source/src/documentation/content/xdocs/samples/faq.xml deleted file mode 100644 index 4f850e5463ad..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/faq.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - Documentation - - - How can I help write documentation? - - -

- This project uses Apache Forrest to - generate documentation from XML. Please download a copy of Forrest, - which can be used to validate, develop and render a project site. -

-
-
- -
- -
diff --git a/documentation_source/src/documentation/content/xdocs/samples/ihtml-sample.ihtml b/documentation_source/src/documentation/content/xdocs/samples/ihtml-sample.ihtml deleted file mode 100644 index a1a6095040b6..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/ihtml-sample.ihtml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - -

Test iHTML page

- -

This HTML is used to render the page instead of using the Forrest -XML DTD directly.

- -

All linked-to pages, like this one, are - also available.

-
[Index] - - diff --git a/documentation_source/src/documentation/content/xdocs/samples/index.xml b/documentation_source/src/documentation/content/xdocs/samples/index.xml deleted file mode 100644 index 6f975724c107..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - -
- Samples -
- -
- If something goes wrong.. -

Patches are welcome: Forrest FAQ

-
- -
diff --git a/documentation_source/src/documentation/content/xdocs/samples/sample.xml b/documentation_source/src/documentation/content/xdocs/samples/sample.xml deleted file mode 100644 index 19afb3cb4f9a..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/sample.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - -
- The document-v1.2 DTD - - - This document doesn't make any sense at all. - A nonsense document using all possible elements in the current - document-v12.dtd. -
- -
- Sample Content -

This is a simple paragraph. Most documents contain a fair amount of - paragraphs. Paragraphs are called <p>.

-

With the <p xml:space="preserve"> attribute, you can declare - that whitespace should be preserved, without implying it is in any other - way special.

-

A number of in-line elements are available in the DTD, we will show them - inside an unordered list (<ul>):

-
    -
  • Here is a simple list item (<li>).
  • -
  • Have you seen the use of the <code> element in the - previous item?
  • -
  • Also, we have <sub> and <sup> - elements to show content above or below the text - baseline.
  • -
  • There is a facility to emphasize certain words using the - <em> <strong> - elements.
  • -
  • We can use - - <icon>s, too.
  • -
  • Another possibility is the <img> element: - another feather, - which offers the ability to refer to an image map.
  • -
  • We have elements for hyperlinking: -
    -
    <link href="faq.html">
    -
    Use this to - link - to another document. As per normal, this will open the new document - in the same browser window.
    - -
    <link href="#section">
    -
    Use this to - link - to the named anchor in the current document. -
    - -
    <link href="faq.html#forrest">
    -
    Use this to - link - to another document and go to the named anchor. This will open - the new document in the same browser window. -
    - -
    <jump href="faq.html">
    -
    Use this to - jump - to another document and optionally go to a named - anchor - within that document. This will open the new document in the same - browser window. So what is the difference between link and jump? - The jump behaves differently, in that it will replace any frames - in the current window. - This is the equivalent of - <a ... target="_top"> -
    - -
    <fork href="faq.html">
    -
    Use this to - fork - your webbrowser to another document. This will open the document - in a new, unnamed browser window. - This is the equivalent of - <a ... target="_blank"> -
    -
  • - -
  • Oh, by the way, a definition list <dl> was used inside - the previous list item. We could put another -
      -
    • unordered list
    • -
    • inside the list item
    • -
    - - - - -
    A sample nested table
    Or even tables.. -
    inside tables..
    -
    or inside lists, but I believe this liberty gets quickly quite - hairy as you see.
    -
  • -
-

So far for the in-line elements, let's look at some paragraph-level - elements.

- The <fixme> element is used for stuff - which still needs work. Mind the author attribute! - Use the <note> element to draw attention to something, e.g. ...The <code> element is used when the author can't - express himself clearly using normal sentences ;-) - Sleep deprivation can be the result of being involved in an open - source project. (a.k.a. the <warning> element). -

Apart from unordered lists, we have ordered lists too, of course.

-
    -
  1. Item 1
  2. -
  3. Item 2
  4. -
  5. This should be 3 if my math is still OK.
  6. -
- - -
- Using sections -

You can use sections to put some structure in your document. For some - strange historical reason, the section title is an attribute of the - <section> element.

-
-
- Sections, the sequel -

Just some second section.

-
- Section 2.1 -

Which contains a subsection (2.1).

-
-
- - -
- Showing preformatted source code -

Enough about these sections. Let's have a look at more interesting - elements, <source> for instance:

- // This example is from the book _Java in a Nutshell_ by David Flanagan. - // Written by David Flanagan. Copyright (c) 1996 O'Reilly & Associates. - // You may study, use, modify, and distribute this example for any purpose. - // This example is provided WITHOUT WARRANTY either expressed or implied. - - import java.applet.*; // Don't forget these import statements! - import java.awt.*; - - public class FirstApplet extends Applet { - // This method displays the applet. - // The Graphics class is how you do all drawing in Java. - public void paint(Graphics g) { - g.drawString("Hello World", 25, 50); - } - } -

Please take care to still use a sensible line-length within your - source elements.

-
- -
- Using tables -

And now for a table:

- - - - - - - - - - -
Table caption
heading cellheading cell
data celldata cell
-

Not much of attributes with <table>, if you ask me.

-
- - -
- Using figures - -

And a figure to end all of this.

-
-
-
-
- Changes since <link href="site:document-v11">document-v11</link> -

- doc-v12 enhances doc-v11 by relaxing various restrictions that were - found to be unnecessary. -

-
    -
  • - Links ((link|jump|fork) and inline elements (br|img|icon|acronym) are - allowed inside title. -
  • -
  • - Paragraphs (p|source|note|warning|fixme), table and figure|anchor are - allowed inside li. -
  • -
  • - Paragraphs (p|source|note|warning|fixme), lists (ol|ul|dl), table, - figure|anchor are allowed inside definition lists (dd) and tables (td - and dh). -
  • -
  • - Inline content - (strong|em|code|sub|sup|br|img|icon|acronym|link|jump|fork) is - allowed in strong and em. -
  • -
-
- -
- © 2002 Apache Forrest -
-
diff --git a/documentation_source/src/documentation/content/xdocs/samples/sample2.xml b/documentation_source/src/documentation/content/xdocs/samples/sample2.xml deleted file mode 100644 index 1ddbce798f4e..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/sample2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - -
- More samples - - -
- -
- Miscellanea -

- You can include raw HTML, PDFs, plain-text, and other files in Forrest - output by placing them in src/documentation/content and - they will be copied over automatically. You can then link to them as - normal, e.g. - <link href="hello.pdf"/> and - <link href="test1.html/> -

-

- You can also have sub-directories such as - src/documentation/content/connectors which reflects your - xdocs/connectors tree. The raw files will then end up - beside your documents. -

-
- -
diff --git a/documentation_source/src/documentation/content/xdocs/samples/sdocbook.xml b/documentation_source/src/documentation/content/xdocs/samples/sdocbook.xml deleted file mode 100644 index f2349245588f..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/sdocbook.xml +++ /dev/null @@ -1,168 +0,0 @@ - - -
- Simplified DocBook title - - Sample Page subtitle - - Title abbrev - - - - - Author blurb Title - - Author blurb paragraph - - - Juan - - Jose - - Pablos - - - 01-August-2003 - - - - Abstract title - - Abstract paragraph - - - - Epigraph Attribution - - Literal layout - - Epigraph paragraph - - - - Example title - - Example paragraph - - -
- Figure title - - Literal layout -
- -
- Figure Image - - - - - - -
- - - - - - Informal Table head entry - - - - - - Table foot entry - - - - - - 1 - - 2 - - - - - - - - list item - - - - - Note - - - - - Ordered list item - - - - Article paragraph - - Program listing - - - Sidebar - - - - - Term - - - Definition - - - - - - Table - - - - - - - Head entry - - Head entry - - - - - - 1 - - 2 - - - - 3 - - 4 - - - -
- -
- Section title - - Section paragraph -
- - - Appendix title - - Appendix paragraph - - - - Bibliography - -
\ No newline at end of file diff --git a/documentation_source/src/documentation/content/xdocs/samples/subdir/book-sample.xml b/documentation_source/src/documentation/content/xdocs/samples/subdir/book-sample.xml deleted file mode 100644 index 902e7a0483e9..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/subdir/book-sample.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/content/xdocs/samples/subdir/index.xml b/documentation_source/src/documentation/content/xdocs/samples/subdir/index.xml deleted file mode 100644 index 93a8d5f076e4..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/subdir/index.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - -
- Page generated from a subdirectory - - - - -
- - -
- A subdirectory -

This was generated from a subdirectory.

-

When creating new subdirectories, remember that each must - have a book.xml file

-
- -
- diff --git a/documentation_source/src/documentation/content/xdocs/samples/wiki-sample.cwiki b/documentation_source/src/documentation/content/xdocs/samples/wiki-sample.cwiki deleted file mode 100644 index 97ec8e34b9e5..000000000000 --- a/documentation_source/src/documentation/content/xdocs/samples/wiki-sample.cwiki +++ /dev/null @@ -1,155 +0,0 @@ -!!!Forrest's Wiki Support - -Forrest now has partial support for documentation in Wiki format, thanks to the -[Chaperon parser|http://chaperon.sf.net]. Wiki is a simple text format that can -be learned in minutes. This page provides an overview of the syntax that -Forrest supports, namely a subset of that used by the [Cocoon -Wiki|http://wiki.cocoondev.org]. - -!Quick reference - -{{{ ----- = Make a horizontal ruler. Extra '-' is ignored. -\\ = force a line break, \\\=force line break and clear. - -[link] = creates a hyperlink to an internal WikiPage called 'Link'. -[this is also a link] = creates a hyperlink to an internal WikiPage called -'ThisIsAlsoALink'. -[click here|link] = creates a hyperlink to an internal WikiPage called -'Link', but displays the text 'click here' to the -user instead of 'Link'. -[1] = Makes a reference to a footnote numbered 1. -[#1] = Marks the footnote number 1. -[[link] = creates text '[link]'. - -!heading = small heading with text 'heading' -!!heading = medium heading with text 'heading' -!!!heading = large heading with text 'heading' - -''text'' = prints 'text' in italic. -__text__ = prints 'text' in bold. -{{text}} = prints 'text' in monospaced font. - -* text = makes a bulleted list item with 'text' -# text = makes a numbered list item with 'text' -;term:ex = makes a definition for 'term' with the explanation 'ex' -}}} - -!Writing text - -You don't need to know anything about the Wiki text formatting rules to use -Wiki. Just write normal text, and then use an empty line to mark a paragraph. -It's just like writing an email. - -!Hyperlinks -The link can also be a direct URL starting with http:, ftp:, mailto:, https:, or news:, in which case the link points to -an external entity. For example, to point at the java.sun.com home page, use [[http://java.sun.com], which becomes -[http://java.sun.com/] or [[Java home page|http://java.sun.com], which becomes [Java home page|http://java.sun.com]. - -To add a new page you just create a link to it from somewhere else. After all, there isn't much point in having a page -if you can't access it! You'll then see a small question mark after the page name when you return to that page. Then -click on it and you have created a new page! - -It's allowed to use almost any kind of characters inside a [[WikiName], as long -as they are letters or numbers. - -Note also that this Wiki can be configured to support standard CamelCase linking (if it's supported, the word CamelCase -should be a link). It's off by default, but if your friendly administrator has turned it on, then well, CamelCase all -you want =). - -!Adding pictures - -For security reasons uploading images is not permitted, but you can embed -any image in the wiki code by putting the image available somewhere on the web in one of the allowed formats, and then -just linking to it. -For example, this is an inlined PNG image: [rss.png]. - -If you specify a link text ([[this one here|http://example.com/example.png]) it becomes -the ALT text for those who either can't or don't want to view images. - -!Bulleted lists -Use an asterisk (*) in the first column to make bulleted lists. Use more asterisks for deeper indentation. For example: -{{{ -* One -* Two -* Three -** Three.One -}}} - -creates -* One -* Two -* Three -** Three.One - -!Numbered lists -Just like with bulleted lists, but use a hash (#) instead of the asterisk. Like this: -{{{ -# One -# Two -# Three -## Three.One -}}} - -creates -# One -# Two -# Three -## Three.One - -If you want to write the list item on multiple lines, just add one or more spaces on the next line and the line will be -automatically added to the -previous item. If this sounds complicated, edit this page for an example, below. - -* This is a single-line item. -* This is actually a multi-line item. - We continue the second sentence on a line on a line of its own. - We might as well do a third line while we're at it... - Notice, however, as all these sentences get put inside a single item! -* The third line is again a single-line item for your convinience. - -!Definition lists and comments - -A simple way to make definition lists is to use the ';:' -construct: - -;__Construct__:''Something you use to do something with'' - -Another nice use for the ';:' is that you can use it to comment shortly on other people's text, by having an empty -'term' in the definition, like this: -{{{ -;:''Comment here.'' -}}} -Which would be seen as -;:''Comment here.'' - -!Text effects - -You may use __bold__ text or ''italic'' text, by using two underscores (_) and two single quotes ('), respectively. If -you're on a Windows computer, make sure that you are using the correct quote sign, as there is one that looks the same, -but really isn't. - - -!Preformatted text - -If you want to add preformatted text (like code) just use three consecutive braces ({) to open a block, and three -consecutive braces (}) to close a block. Edit this page for an example. - -!Tables - -You can do simple tables by using using pipe signs ('|'). Use double pipe -signs to start the heading of a table, and single pipe signs to then -write the rows of the table. End with a line that is not a table. - -For example: - -{{{ -|| Heading 1 || Heading 2 -| ''Gobble'' | Bar -| [[Main] | [[SandBox] -}}} - -gives you the following table. Note how you can use links also inside tables. - -|| Heading 1 || Heading 2 -| ''Gobble'' | Bar -| [[Main] | [[SandBox] diff --git a/documentation_source/src/documentation/content/xdocs/site.xml b/documentation_source/src/documentation/content/xdocs/site.xml deleted file mode 100644 index 7b302c9f2165..000000000000 --- a/documentation_source/src/documentation/content/xdocs/site.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/content/xdocs/tabs.xml b/documentation_source/src/documentation/content/xdocs/tabs.xml deleted file mode 100644 index a2db64a65c79..000000000000 --- a/documentation_source/src/documentation/content/xdocs/tabs.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/content/xdocs/userguide.xml b/documentation_source/src/documentation/content/xdocs/userguide.xml deleted file mode 100644 index d3e1f430f2ea..000000000000 --- a/documentation_source/src/documentation/content/xdocs/userguide.xml +++ /dev/null @@ -1,377 +0,0 @@ - - - - -
- QGIS User Guide - Version 0.2 (Pumpkin) - - - - - This document is under development -
- - -
- Introduction - -

Quantum GIS (QGIS) is designed to be a Geographic Information System (GIS) -built for Linux/Unix. QGIS currently offers basic support for vector, raster, and database formats.

-The latest version of this document can always be found at http://qgis.org/docs/userguide.html - -
-
- Current Features -
    -
  • Support for spatially enabled PostgreSQL tables using PostGIS
  • -
  • Support for ESRI shapefiles and other vector formats support by the OGR library
  • -
  • Identify features
  • -
  • Display attribute table
  • -
  • Select features
  • -
  • Persistent selections
  • -
  • Save projects
  • -
  • Support for raster formats supported by the GDAL library
  • -
  • Change vector symbology (single, graduated, and continuous)
  • -
  • Display raster data such as digital elevation models, aerial photography or - landsat imagery
  • -
  • Change raster symbology (grayscale, pseudocolor and multiband RGB)
  • -
  • Export to Mapserver map file
  • -
-
-
- Getting Started -

This section gives you a quick overview of running QGIS and examining data - available on the QGIS web page. -

-
- Installation -

Installation of QGIS is documented in the Installation Guide. -

-
-
- Sample Data -

If you do not have any GIS data, you can obtain a dataset for Alaska (which will be used as the - basis for the examples and screenshots provided in this document) from the - the QGIS web site

-
-
- Starting QGIS -

- Assuming the QGIS is installed in the PATH, you can start QGIS by typing: - qgis.

-

- In addition, you can start QGIS by specifying one or more datafiles on the commandline. For example, - assuming you are in your data directory, you could start QGIS with two shapefiles and a raster file set to - load on startup: -

-

qgis ak_shade.tif alaska.shp majrivers.shp

-

QGIS Load Data On Start

- Your window decorations (title bar, etc.) may appear different depending on your operating system - and window manager -
-
- The QGIS main window -

- When QGIS starts, an empty window is displayed as shown below. - QGIS Main Window -

-

The QGIS main window is divided into five areas:

-
    -
  1. The menu bar
  2. -
  3. The tool bar
  4. -
  5. The map legend
  6. -
  7. The map view
  8. -
  9. The status bar
  10. -
-

These five parts of the main QGIS are described in more detail in the following sections

-
- The QGIS menu bar -

The menu bar provides access to various QGIS features using a standard windows - heirachical menu.

-

The File Menu:

-
    -
  • Open Project - Open a previously saved project.
  • -
  • Save Project - Save the current project.
  • -
  • Save Project As - Save project under a new file name.
  • -
  • Export to mapserver - Export your current project as a mapserver - map file. Note that not all mapserver features are available in the exported mapfile.
  • -
  • Exit - Exit the QGIS application.
  • -
-

The View Menu:

-
    -
  • Add Postgis Layer(s) - Add one or more layers - stored in a PostgreSQL/Postgis geodatabase to the map view.
  • -
  • Add Vector Layer(s) - Add one or more layers - stored on disk as shapefiles to the map view.
  • -
  • Add Raster Layers - Add one or more raster layers - to the map view.
  • -
-

The Tools Menu:

-
    -
  • Plugin Manager - This opens a dialog - that allows you to manage (load and unload) which plugins are used in QGIS.
  • -
  • Check Version - This option connects - over the internet to the QGIS server to find out what the latest available version is. No - personal data is sent to the QGIS server.
  • -
  • Preferences - Global configuration options - for the QGIS application.
  • -
-

The Help Menu:

-
    -
  • Contents - This opens the help documentation - you are reading right now!.
  • -
  • QGIS Home - Clicking this menu option will - take you to the QGIS internet home page using your preferred browser.
  • -
  • SourceForge Home - This will take you to the Sourceforge.net - project page for QGIS.
  • -
  • About - Click here to find out some useful information - about the current version of QGIS you are using. If you want to frighten yourself silly, take a - look at the Contributors tab to see all the hardworking elves behind the QGIS effort.
  • -
-
-
- The QGIS toolbars -

QGIS has toolbars that provide quick access to commonly used functions. These are:

-
    -
  • New Project - Start a new QGIS project. If you - already have a project ope, you will be asked if you would like to save the existing one first.
  • -
  • Open Project - Open a previously saved project.
  • -
  • Save Project - Save the current project.
  • -
  • Save Project As - Save project under a new file name.
  • -
  • Add Postgis Layer(s) - Add one or more layers - stored in a PostgreSQL/Postgis geodatabase to the map view.
  • -
  • Add Vector Layer(s) - Add one or more layers - stored on disk as shapefiles to the map view.
  • -
  • Add Raster Layers - Add one or more raster layers - to the map view.
  • -
  • Reload - Reload the current map view (refreshes display)
  • -
  • Zoom In - Zoom in the map display by dragging a rectangle
  • -
  • Zoom Out - Zoom out of the map display by dragging a rectangle. - Dragging a small rectangle will zoom out a long way, dragging a large rectangle will zoom out a little way.
  • -
  • Zoom Full Extent - Zoom out until all features in all map layers - are visible.
  • -
  • Zoom to Selected - Zoom to fit all selected features in the - map view.
  • -
  • Pan - Pan in the map display area.
  • -
  • Zoom to Previous - Zoom to last extents.
  • -
  • Identify - Show information about a feature (applies only to vector data).
  • -
  • Select Features - Select features in the map display (applies only to vector data).
  • -
  • Show Attributes - Show the attribute table for the selected layer (applies only to vector data).
  • -
-
-
- The QGIS map legend -

The map legend area is used to set the visibility and z-ordering of layers. - Z-ordering means that layers listed nearer the top of the legend are drawn over - layers listed lower down in the legend. The checkbox in each legend entry can be useed - to show/hire that layer.

-
-
- The QGIS map view -

This is the 'business end' of QGIS - maps are displayed in this area! The map - displayed in this window will depend on the vector and raster layers you have chosen - to load (see sections that follow for more info on this). The map view can be panned (shifting - to focus of the map display to another region), zoomed in and out, and supports various other - actions as described in the toolbar description above.

-

The map view and the legend are tightly bound to each other - the maps in view - reflect changes you make in the legend area.

-
-
- The QGIS map status bar -

The status bar shows you your current position in map coordinate (e.g. meters or decimal - degress) as the mouse pointer is moved accross the map view.

-
-
-
-
- Working with vector data -
- Loading vector data -

To load one or more shapefiles, click on the Add Layer button - Add Layer.

-

The Select one or more layers to add dialog box will be displayed. - Select layers

-

Navigate to the directory where the shapefiles reside. Select one or - more files and click ok to load them.

-

When QGIS loads a layer, it assigns a random color to it as shown - below.

-

Shapefiles loaded into QGIS -

-

- Obviously QGIS's choice of colors is not very pleasing in this case. -

-
-
- Changing Symbology -

- To make the layer more appealing, open the Layer Properties - dialog by right-clicking on a layer name - in the table of contents (left side of the QGIS window) and - selecting Properties. -

-

If you like, change the display name of the layer by editing - the Display name field.

-

- Layer Properties -

-

Click on the Legend - tab to display the current symbols used for the layer

-

- Display name

- - -

Click on the Outline color and Fill color - and select a new color from the color chooser. You can also change the - line width if desired.

-

- Changing colors -

-

After making the changes, click Ok to apply the changes to - the layer. Note that the alaska layer has been renamed to Alaska and the - color has been changed to a light green:

-

- Changing colors -

-
-
- Identifying a Feature -

QGIS provides a useful tool (Identify - the 'identify' tool) that allows you to click on a vector feature ( - point, line or polygon) and view information about that feautre. The information displayed is - retrieved from the Postgres database (in the case of Postgis layers) or from the .dbf file - associated with the shapefile you are insecting.

- -
-
-
- Working with raster data -
- What is raster data? -

Raster data in GIS are matrices of discrete cells that represent features on, above or below the earth's surface. Each - cell in the raster grid is the same size, and cells are usually rectangular (in QGIS they will always be rectangular. - Typical raster datasets include 'remote sensing' data (such as aerial photography and satellite imagery) and modelled data - (such as an elevation matrix).

-

Raster data typically do not have an associated database record for each cell (unlike in vector data where it is normal - for each feature to have an associated database record).

-

In GIS, a raster layer would have geopositioning data associated with it which will allow it to be positioned - correctly in the map display to allow other vector and raster data to be overlayed with it. QGIS, can read this - geopositioning data to facilitate properly displaying map overlays.

-
-
- Raster formats supported in QGIS. -

QGIS supports a number of different raster formats. Currently tested formats include:

-
    -
  • Arc/Info Binary Grid
  • -
  • Arc/Info ASCII Grid
  • -
  • Grass Raster
  • -
  • GeoTIFF
  • -
  • Spatial Data Transfer Standard Grids (with some limitations)
  • -
  • USGS ASCII DEM
  • -
  • Erdas Imagine
  • -
-

Because the raster implmentation in QGIS is based on the GDAL abstraction library, orther raster formats implemented - in GDAL are also likely to work, but have not yet been tested. See - the GDAL Raster Formats page for more details.

-
-
- Loading raster data in QGIS -

Raster layers are loaded either by clicking on the Load Raster icon - or by selecting the View->Add Raster Layer menu option. More than one layer can be loaded at the same time - by holding down the Control key and clicking on multiple items in the file dialog.

-
-
- Symbolisation and properties for raster layers -

Symbolisation of raster layers is achieved by right clicking on a raster layer legend entry and choosing 'properties': - on the popup menu that appears:

-

- Raster Properties Popup -

-

On the properties dialog for rasters you will see there are three tabs:

-
- The general properties tab -

- Raster Properties Popup -

-

The legend tab displays basic information aboug the selected raster - including its - dimensions (in pixels) and its display name in the legend.

-
-
- The symbology properties tab -

- Raster Properties Popup -

- - -

QGIS supports three forms of raster layer:

-
    -
  • Single Band Grayscale Rasters
  • -
  • Palette Based RGB Rasters
  • -
  • Multiband RGB Rasters
  • -
-

From these three basic layer types, eight forms of symbolised raster display can be used:

-
    -
  1. Single Band Grayscale
  2. -
  3. Single Band Pseudocolor
  4. -
  5. Paletted Grayscale (where only the red, green or blue component of the image is displayed)
  6. -
  7. Paletted Pseudocolor (where only the red, green or blue component of the image is displayed, but using a pseudocolor algorithm)
  8. -
  9. Paletted RGB
  10. -
  11. Multiband Grayscale (using only one of the bands to display the image)
  12. -
  13. Mulitiband Pseudocolor (using only one of the bands shown in pseudocolor)
  14. -
  15. Multiband RGB (using any combination of three bands)
  16. -
-

QGIS has the capability to invert the colours in a given layer so that light - colors become dark (and dark colors become light). Use the 'Invert Color Map' checkbox - to enable / disable this behaviour.

- -

QGIS has the capability to display each raster layer at varying transparency levels. Use - the transparency slider to indicate to what extent the underlying layers (if any) should - be visible though the current raster layer.

- -

QGIS has the capability to restrict the data displayed to show only cells whose values are - within a given number of standard diviations of the mean for the layer. This is useful - when you have one or two cells with abnormally high values in a raster grid that are having a - negative impact on the rendering of the raster. This option is only available for pseudocolor - images.

-
-
- The raster statistics properties tab -

- Raster Properties Popup -

-

This tab displays statistics about each band in the current raster layer. Statistics are - gathered on a 'need to know' basis, so it may well be that a given layer's statistics have - not yet been collected.

-

Statistics for a layer are gathered when pseudocolor rendering is selected and the 'apply' - button is pressed.

- Gathering statistics for a layer can be time consuming. Please be patient while - QGIS examines your data! -
-
- -
-
- Creating a QGIS mime type -

If you are a KDE user, you can create a mime type that associates GIS files with QGIS. This is useful - because it allows you to click on a shapefile (for example) in konqueror and the file will be loaded in a - new instance of QGIS. -

- -

- -

-
-
- Acknowledgments -

Hosting for the QGIS project is generously provided by Sourceforge. -

-

- SourceForge.net Logo -

-

Please see the Help->About->Contributors for a list of people who have donated their time to the QGIS project.

-
- -
- ©2003,2004 Gary Sherman -
-
diff --git a/documentation_source/src/documentation/dtd.xmap b/documentation_source/src/documentation/dtd.xmap deleted file mode 100755 index 9a267c9dce78..000000000000 --- a/documentation_source/src/documentation/dtd.xmap +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/faq.xmap b/documentation_source/src/documentation/faq.xmap deleted file mode 100755 index 983cbedb4bc2..000000000000 --- a/documentation_source/src/documentation/faq.xmap +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/forrest.xmap b/documentation_source/src/documentation/forrest.xmap deleted file mode 100755 index a862cc936f0c..000000000000 --- a/documentation_source/src/documentation/forrest.xmap +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - - - jtidy.properties - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/issues.xmap b/documentation_source/src/documentation/issues.xmap deleted file mode 100755 index 0b1e903d7dbc..000000000000 --- a/documentation_source/src/documentation/issues.xmap +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/linkmap.xmap b/documentation_source/src/documentation/linkmap.xmap deleted file mode 100755 index 89624c2d71f4..000000000000 --- a/documentation_source/src/documentation/linkmap.xmap +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/menu.xmap b/documentation_source/src/documentation/menu.xmap deleted file mode 100755 index da6781a4b38c..000000000000 --- a/documentation_source/src/documentation/menu.xmap +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/profiler.xmap b/documentation_source/src/documentation/profiler.xmap deleted file mode 100755 index 1194e73a6034..000000000000 --- a/documentation_source/src/documentation/profiler.xmap +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/raw.xmap b/documentation_source/src/documentation/raw.xmap deleted file mode 100755 index 90667c62514c..000000000000 --- a/documentation_source/src/documentation/raw.xmap +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/resources.xmap b/documentation_source/src/documentation/resources.xmap deleted file mode 100755 index 5bffb1e174b8..000000000000 --- a/documentation_source/src/documentation/resources.xmap +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/resources/images/Thumbs.db b/documentation_source/src/documentation/resources/images/Thumbs.db deleted file mode 100755 index de3845b958f4..000000000000 Binary files a/documentation_source/src/documentation/resources/images/Thumbs.db and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/add_layer_dialog.gif b/documentation_source/src/documentation/resources/images/add_layer_dialog.gif deleted file mode 100755 index e9abac64073f..000000000000 Binary files a/documentation_source/src/documentation/resources/images/add_layer_dialog.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/add_layer_dialog.png b/documentation_source/src/documentation/resources/images/add_layer_dialog.png deleted file mode 100644 index 991c0a221883..000000000000 Binary files a/documentation_source/src/documentation/resources/images/add_layer_dialog.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/back20x20.png b/documentation_source/src/documentation/resources/images/back20x20.png deleted file mode 100644 index 7321d64ea2bf..000000000000 Binary files a/documentation_source/src/documentation/resources/images/back20x20.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/btn_add_layer.gif b/documentation_source/src/documentation/resources/images/btn_add_layer.gif deleted file mode 100755 index 5d561983fa71..000000000000 Binary files a/documentation_source/src/documentation/resources/images/btn_add_layer.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/change_symbology.gif b/documentation_source/src/documentation/resources/images/change_symbology.gif deleted file mode 100755 index 2a11c1634c05..000000000000 Binary files a/documentation_source/src/documentation/resources/images/change_symbology.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/changed_symbology.gif b/documentation_source/src/documentation/resources/images/changed_symbology.gif deleted file mode 100755 index 44c98188fc09..000000000000 Binary files a/documentation_source/src/documentation/resources/images/changed_symbology.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/checkversion.png b/documentation_source/src/documentation/resources/images/checkversion.png deleted file mode 100644 index e8a39823d20e..000000000000 Binary files a/documentation_source/src/documentation/resources/images/checkversion.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/configure.png b/documentation_source/src/documentation/resources/images/configure.png deleted file mode 100644 index 637a99c5949d..000000000000 Binary files a/documentation_source/src/documentation/resources/images/configure.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/connect_no.png b/documentation_source/src/documentation/resources/images/connect_no.png deleted file mode 100644 index ecd475229ac3..000000000000 Binary files a/documentation_source/src/documentation/resources/images/connect_no.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/contents.png b/documentation_source/src/documentation/resources/images/contents.png deleted file mode 100644 index 07833f11fa82..000000000000 Binary files a/documentation_source/src/documentation/resources/images/contents.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/exit.png b/documentation_source/src/documentation/resources/images/exit.png deleted file mode 100644 index bfc66edaf54d..000000000000 Binary files a/documentation_source/src/documentation/resources/images/exit.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/filenew.png b/documentation_source/src/documentation/resources/images/filenew.png deleted file mode 100644 index 055825a9482f..000000000000 Binary files a/documentation_source/src/documentation/resources/images/filenew.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/filesave.png b/documentation_source/src/documentation/resources/images/filesave.png deleted file mode 100644 index 677ce2097d13..000000000000 Binary files a/documentation_source/src/documentation/resources/images/filesave.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/filesaveas.png b/documentation_source/src/documentation/resources/images/filesaveas.png deleted file mode 100644 index fa310a1455f2..000000000000 Binary files a/documentation_source/src/documentation/resources/images/filesaveas.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_add_pg_layer.png b/documentation_source/src/documentation/resources/images/gis_add_pg_layer.png deleted file mode 100644 index 46956e74a149..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_add_pg_layer.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_add_raster_layer.png b/documentation_source/src/documentation/resources/images/gis_add_raster_layer.png deleted file mode 100644 index a33754f7ab3b..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_add_raster_layer.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_add_vector_layer.png b/documentation_source/src/documentation/resources/images/gis_add_vector_layer.png deleted file mode 100644 index 839405c1add7..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_add_vector_layer.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_identify.png b/documentation_source/src/documentation/resources/images/gis_identify.png deleted file mode 100644 index 88ce96c08555..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_identify.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_pan.png b/documentation_source/src/documentation/resources/images/gis_pan.png deleted file mode 100644 index 10d22541fc79..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_pan.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_view_all.png b/documentation_source/src/documentation/resources/images/gis_view_all.png deleted file mode 100644 index 488073c3e245..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_view_all.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/gis_zoom_to_selected.png b/documentation_source/src/documentation/resources/images/gis_zoom_to_selected.png deleted file mode 100644 index 5c245626a5a3..000000000000 Binary files a/documentation_source/src/documentation/resources/images/gis_zoom_to_selected.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/graduated_vector_fill1.png b/documentation_source/src/documentation/resources/images/graduated_vector_fill1.png deleted file mode 100644 index 5596c3f18be5..000000000000 Binary files a/documentation_source/src/documentation/resources/images/graduated_vector_fill1.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/graduated_vector_fill2.png b/documentation_source/src/documentation/resources/images/graduated_vector_fill2.png deleted file mode 100644 index e87ecc3b6134..000000000000 Binary files a/documentation_source/src/documentation/resources/images/graduated_vector_fill2.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/graduated_vector_fill3.png b/documentation_source/src/documentation/resources/images/graduated_vector_fill3.png deleted file mode 100644 index e698b50d061e..000000000000 Binary files a/documentation_source/src/documentation/resources/images/graduated_vector_fill3.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/group-logo.gif b/documentation_source/src/documentation/resources/images/group-logo.gif deleted file mode 100644 index b14844ac4618..000000000000 Binary files a/documentation_source/src/documentation/resources/images/group-logo.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/group.svg b/documentation_source/src/documentation/resources/images/group.svg deleted file mode 100644 index d45160fdef6e..000000000000 --- a/documentation_source/src/documentation/resources/images/group.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - Anteater logo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/resources/images/icon.png b/documentation_source/src/documentation/resources/images/icon.png deleted file mode 100644 index ea6fca700b6b..000000000000 --- a/documentation_source/src/documentation/resources/images/icon.png +++ /dev/null @@ -1,707 +0,0 @@ -/* XPM */ -static const char * qgis_xpm[] = { -"48 48 656 2", -" c None", -". c #626327", -"+ c #185F00", -"@ c #375D10", -"# c #5D6051", -"$ c #205401", -"% c #046C00", -"& c #005200", -"* c #1E4510", -"= c #0F6400", -"- c #017200", -"; c #006900", -"> c #004200", -", c #223F14", -"' c #214A02", -") c #106700", -"! c #026F00", -"~ c #007000", -"{ c #006700", -"] c #005D00", -"^ c #003E00", -"/ c #2D471F", -"( c #395204", -"_ c #115F00", -": c #016A00", -"< c #006F00", -"[ c #006300", -"} c #006000", -"| c #005C00", -"1 c #344D23", -"2 c #52502C", -"3 c #425B14", -"4 c #0F4803", -"5 c #014C00", -"6 c #004100", -"7 c #304C1F", -"8 c #414A29", -"9 c #155B02", -"0 c #005F00", -"a c #004300", -"b c #254513", -"c c #046A00", -"d c #005400", -"e c #004500", -"f c #183E0C", -"g c #4C4A2C", -"h c #6D7234", -"i c #818332", -"j c #83882B", -"k c #86942C", -"l c #838E32", -"m c #7B8534", -"n c #565B28", -"o c #115B00", -"p c #007200", -"q c #006400", -"r c #004900", -"s c #003000", -"t c #013900", -"u c #113D08", -"v c #666336", -"w c #9D9734", -"x c #BAB627", -"y c #C9CD23", -"z c #C6C721", -"A c #BDC424", -"B c #BFCE2A", -"C c #C4D22D", -"D c #CDDA2C", -"E c #C7D52C", -"F c #B5C332", -"G c #5B890E", -"H c #027000", -"I c #002F00", -"J c #18320E", -"K c #3B5422", -"L c #0C4202", -"M c #183C06", -"N c #494D3C", -"O c #989847", -"P c #C3C82C", -"Q c #D7E01D", -"R c #CDD11D", -"S c #A8A526", -"T c #868536", -"U c #7A7B45", -"V c #7B814A", -"W c #858C4C", -"X c #9EA848", -"Y c #BAC735", -"Z c #B5CE12", -"` c #249A00", -" . c #006200", -".. c #005B00", -"+. c #052803", -"@. c #434C3D", -"#. c #48483F", -"$. c #364119", -"%. c #394315", -"&. c #484837", -"*. c #ABAD58", -"=. c #D5E02A", -"-. c #DEED1C", -";. c #C7D624", -">. c #899236", -",. c #696A4E", -"'. c #6D6C63", -"). c #696964", -"!. c #494A47", -"~. c #43433F", -"{. c #5B5B51", -"]. c #7D8154", -"^. c #4A880A", -"/. c #027A00", -"(. c #004E00", -"_. c #002A00", -":. c #283C20", -"<. c #4A4C48", -"[. c #474334", -"}. c #B4B289", -"|. c #E5E869", -"1. c #E8F422", -"2. c #CDDE21", -"3. c #858E38", -"4. c #626252", -"5. c #5C5C5B", -"6. c #364915", -"7. c #0A7001", -"8. c #005900", -"9. c #003800", -"0. c #072203", -"a. c #4D5144", -"b. c #918F6A", -"c. c #E2E291", -"d. c #F0F554", -"e. c #E0EE20", -"f. c #A4B130", -"g. c #6C6F56", -"h. c #50504E", -"i. c #155901", -"j. c #012800", -"k. c #2F4409", -"l. c #707645", -"m. c #585B43", -"n. c #C1C759", -"o. c #EAF047", -"p. c #E8F423", -"q. c #CDDC21", -"r. c #808847", -"s. c #62625C", -"t. c #026D00", -"u. c #006A00", -"v. c #005600", -"w. c #003300", -"x. c #153600", -"y. c #8EA50D", -"z. c #ABB933", -"A. c #6D7251", -"B. c #83853F", -"C. c #C8CE1F", -"D. c #DEE512", -"E. c #DDE411", -"F. c #B0B829", -"G. c #6F7056", -"H. c #0A5D00", -"I. c #004400", -"J. c #032700", -"K. c #597304", -"L. c #CBDE0E", -"M. c #CFE11F", -"N. c #9BA450", -"O. c #9BA129", -"P. c #C9D210", -"Q. c #DDE40E", -"R. c #D7DC12", -"S. c #979730", -"T. c #646459", -"U. c #164301", -"V. c #016F00", -"W. c #005100", -"X. c #002C00", -"Y. c #1F3404", -"Z. c #A2A80E", -"`. c #DBE00E", -" + c #DBE012", -".+ c #B1B234", -"++ c #76765D", -"@+ c #636C2E", -"#+ c #B5C81B", -"$+ c #CBE10E", -"%+ c #DCF00F", -"&+ c #D1E317", -"*+ c #89913E", -"=+ c #5F5F58", -"-+ c #076400", -";+ c #006D00", -">+ c #003C00", -",+ c #062403", -"'+ c #5B642C", -")+ c #C3CF1D", -"!+ c #E2EC12", -"~+ c #DFEB10", -"{+ c #C1CD21", -"]+ c #8F945D", -"^+ c #81912B", -"/+ c #C9DF15", -"(+ c #C8DF0D", -"_+ c #D1E80F", -":+ c #C6DA1B", -"<+ c #80894D", -"[+ c #5F5F5C", -"}+ c #185C02", -"|+ c #007500", -"1+ c #006600", -"2+ c #004C00", -"3+ c #012900", -"4+ c #324227", -"5+ c #929A60", -"6+ c #C7DA26", -"7+ c #E2F414", -"8+ c #E2F511", -"9+ c #CFE31A", -"0+ c #97A249", -"a+ c #59594E", -"b+ c #9FB22D", -"c+ c #D7EC14", -"d+ c #D3E90E", -"e+ c #C6DC0E", -"f+ c #AFC31E", -"g+ c #707551", -"h+ c #047200", -"i+ c #003600", -"j+ c #102D0A", -"k+ c #555B50", -"l+ c #818958", -"m+ c #C1D22C", -"n+ c #E0F214", -"o+ c #E3F512", -"p+ c #D9EB18", -"q+ c #A2B13B", -"r+ c #707360", -"s+ c #545839", -"t+ c #B8C92E", -"u+ c #DCF012", -"v+ c #DDF110", -"w+ c #CBDD10", -"x+ c #9FB024", -"y+ c #70735D", -"z+ c #166601", -"A+ c #007300", -"B+ c #004700", -"C+ c #022801", -"D+ c #333F2B", -"E+ c #646948", -"F+ c #BDC934", -"G+ c #E1F015", -"H+ c #E5F412", -"I+ c #DEEE15", -"J+ c #A8B534", -"K+ c #6A6C5B", -"L+ c #696D43", -"M+ c #C3D328", -"N+ c #E1F210", -"O+ c #CDE010", -"P+ c #98A924", -"Q+ c #767866", -"R+ c #027300", -"S+ c #193212", -"T+ c #444541", -"U+ c #606047", -"V+ c #B9BD34", -"W+ c #DEE313", -"X+ c #E2E810", -"Y+ c #DAE212", -"Z+ c #A2A92E", -"`+ c #5B5D4D", -" @ c #676A42", -".@ c #C3C826", -"+@ c #DDEA10", -"@@ c #DFF110", -"#@ c #CFE211", -"$@ c #92A225", -"%@ c #767A67", -"&@ c #076200", -"*@ c #003F00", -"=@ c #052703", -"-@ c #3C4236", -";@ c #5F6048", -">@ c #BABD35", -",@ c #DEE214", -"'@ c #E2E410", -")@ c #D9DD12", -"!@ c #9FA22B", -"~@ c #565648", -"{@ c #60623F", -"]@ c #BEC42A", -"^@ c #DAE00E", -"/@ c #DFEB0E", -"(@ c #D1E210", -"_@ c #8E9B23", -":@ c #757667", -"<@ c #195801", -"[@ c #017300", -"}@ c #002B00", -"|@ c #26391F", -"1@ c #606442", -"2@ c #C0CD32", -"3@ c #DFEE14", -"4@ c #E2F210", -"5@ c #DAEB13", -"6@ c #A2AF2E", -"7@ c #5B5C4C", -"8@ c #ABBA2C", -"9@ c #D8E210", -"0@ c #DFE10E", -"a@ c #D2D40E", -"b@ c #8F8F20", -"c@ c #737564", -"d@ c #047500", -"e@ c #0E2E08", -"f@ c #4E544A", -"g@ c #5B602E", -"h@ c #C4D227", -"i@ c #E1F012", -"j@ c #E2F310", -"k@ c #DBEC14", -"l@ c #A2AF33", -"m@ c #666758", -"n@ c #9AA935", -"o@ c #D6E715", -"p@ c #DFE40E", -"q@ c #D3D90D", -"r@ c #9AA41D", -"s@ c #757A5B", -"t@ c #216703", -"u@ c #0A8300", -"v@ c #218904", -"w@ c #438E08", -"x@ c #449109", -"y@ c #3B730D", -"z@ c #566736", -"A@ c #5D6052", -"B@ c #525923", -"C@ c #C4D51D", -"D@ c #E0F010", -"E@ c #E1F110", -"F@ c #D3E216", -"G@ c #919A3C", -"H@ c #6D6F64", -"I@ c #7B8835", -"J@ c #CEE21A", -"K@ c #DFF210", -"L@ c #D5E90E", -"M@ c #A8BA18", -"N@ c #7D8152", -"O@ c #56554E", -"P@ c #4C4D24", -"Q@ c #5D8C16", -"R@ c #83B813", -"S@ c #B5CF18", -"T@ c #C3D118", -"U@ c #C3D518", -"V@ c #BED31B", -"W@ c #B4C42B", -"X@ c #8F9A41", -"Y@ c #515439", -"Z@ c #727630", -"`@ c #CBD319", -" # c #DFE70F", -".# c #DEE50E", -"+# c #BFC51A", -"@# c #7B7E49", -"## c #5B5B56", -"$# c #565C32", -"%# c #BFD228", -"&# c #E1F214", -"*# c #D8E80F", -"=# c #B1BD13", -"-# c #8C914A", -";# c #9B977D", -"># c #8F8E44", -",# c #A5B822", -"'# c #B1C918", -")# c #83A119", -"!# c #5B7A15", -"~# c #6D801F", -"{# c #A5B428", -"]# c #CBD81E", -"^# c #C7CD20", -"/# c #9E9F3E", -"(# c #62634C", -"_# c #8E922F", -":# c #D3D814", -"<# c #DEE60D", -"[# c #A5AC28", -"}# c #6D7058", -"|# c #A6B13E", -"1# c #DEE51A", -"2# c #D7DA0E", -"3# c #B8BA0E", -"4# c #9D9F2F", -"5# c #8C8B52", -"6# c #9F9E30", -"7# c #B8BE19", -"8# c #638314", -"9# c #0C3B03", -"0# c #032001", -"a# c #2E3623", -"b# c #6C6F4D", -"c# c #A2A633", -"d# c #CDD115", -"e# c #C3CD1F", -"f# c #949D4E", -"g# c #73785B", -"h# c #AFBE2E", -"i# c #D8EB12", -"j# c #DCEF0E", -"k# c #C9DD17", -"l# c #88913E", -"m# c #6A6A63", -"n# c #727543", -"o# c #C9CB29", -"p# c #D6E013", -"q# c #C1D50E", -"r# c #B9CE19", -"s# c #8E9E2D", -"t# c #B1C320", -"u# c #9FB618", -"v# c #144904", -"w# c #002500", -"x# c #092205", -"y# c #4C4E47", -"z# c #66693E", -"A# c #BBCD25", -"B# c #D2E815", -"C# c #B1C52B", -"D# c #9AA647", -"E# c #C6DC20", -"F# c #DAF010", -"G# c #D2E912", -"H# c #9FB228", -"I# c #565655", -"J# c #9FA544", -"K# c #C8D321", -"L# c #C6D310", -"M# c #CDDE0F", -"N# c #C0D218", -"O# c #CBDE16", -"P# c #89AC18", -"Q# c #053901", -"R# c #012000", -"S# c #2C3B24", -"T# c #9EAF2C", -"U# c #D3E915", -"V# c #CEE317", -"W# c #C5D91F", -"X# c #D6EB15", -"Y# c #D5EB13", -"Z# c #B2C620", -"`# c #727B44", -" $ c #6C6D67", -".$ c #4E4E35", -"+$ c #958F34", -"@$ c #B4A911", -"#$ c #CCC709", -"$$ c #CFCB09", -"%$ c #CFCD0C", -"&$ c #949E15", -"*$ c #123704", -"=$ c #142A0E", -"-$ c #454841", -";$ c #7E8E2A", -">$ c #CEE517", -",$ c #D8EE11", -"'$ c #D9EE12", -")$ c #D7ED12", -"!$ c #BBD11D", -"~$ c #7A8539", -"{$ c #6D6F63", -"]$ c #60623E", -"^$ c #8C9F26", -"/$ c #C3D615", -"($ c #D8E311", -"_$ c #DBE210", -":$ c #C1C915", -"<$ c #607220", -"[$ c #565C43", -"}$ c #494944", -"|$ c #858E39", -"1$ c #C7D81B", -"2$ c #D7EB10", -"3$ c #C1D817", -"4$ c #808E33", -"5$ c #676959", -"6$ c #1B4105", -"7$ c #147303", -"8$ c #439B0A", -"9$ c #A8CF18", -"0$ c #D2E91A", -"a$ c #D7EC19", -"b$ c #BED41F", -"c$ c #A5B63C", -"d$ c #7E8B3D", -"e$ c #525423", -"f$ c #51491E", -"g$ c #7A6F27", -"h$ c #A69B20", -"i$ c #BA9D08", -"j$ c #CBBE07", -"k$ c #D2DA0F", -"l$ c #9DAB20", -"m$ c #696C4E", -"n$ c #046000", -"o$ c #016300", -"p$ c #137303", -"q$ c #5B9512", -"r$ c #A4BE21", -"s$ c #BFD622", -"t$ c #C3DB23", -"u$ c #BDD226", -"v$ c #B4BE25", -"w$ c #B0AC20", -"x$ c #BBBE1E", -"y$ c #B8AD15", -"z$ c #AC7301", -"A$ c #AD6900", -"B$ c #B48602", -"C$ c #97881B", -"D$ c #625F49", -"E$ c #244702", -"F$ c #076700", -"G$ c #004D00", -"H$ c #053401", -"I$ c #4A5830", -"J$ c #868F56", -"K$ c #919D4E", -"L$ c #8F9D45", -"M$ c #8B9541", -"N$ c #868F41", -"O$ c #8E9239", -"P$ c #BBB913", -"Q$ c #BF9B02", -"R$ c #AD6D00", -"S$ c #9F7A0E", -"T$ c #736C45", -"U$ c #67703F", -"V$ c #555841", -"W$ c #156000", -"X$ c #027200", -"Y$ c #0B2C07", -"Z$ c #4E524A", -"`$ c #50504D", -" % c #63635F", -".% c #666762", -"+% c #5C5D56", -"@% c #64645F", -"#% c #8B945C", -"$% c #C6DA26", -"%% c #DFEB14", -"&% c #D8D70D", -"*% c #C6C012", -"=% c #8C8135", -"-% c #738133", -";% c #B5C830", -">% c #929E54", -",% c #5D5F59", -"'% c #155100", -")% c #036600", -"!% c #005800", -"~% c #243D1B", -"{% c #69704A", -"]% c #C1D337", -"^% c #E3F51D", -"/% c #E5F618", -"(% c #DCE815", -"_% c #B2A61C", -":% c #76703D", -"<% c #636644", -"[% c #B2C335", -"}% c #C9DC24", -"|% c #929D52", -"1% c #787A75", -"2% c #515C19", -"3% c #124E03", -"4% c #023F00", -"5% c #013600", -"6% c #013000", -"7% c #013400", -"8% c #005500", -"9% c #023501", -"0% c #3B4A2F", -"a% c #A9B642", -"b% c #E2F125", -"c% c #EBF81E", -"d% c #E8F31A", -"e% c #D5CB10", -"f% c #BEB226", -"g% c #BEB53F", -"h% c #D1D021", -"i% c #B8BF23", -"j% c #7E8356", -"k% c #636362", -"l% c #4E5944", -"m% c #39472F", -"n% c #293520", -"o% c #2B3624", -"p% c #37432B", -"q% c #1D4A08", -"r% c #033801", -"s% c #505D43", -"t% c #70783E", -"u% c #CDDA34", -"v% c #E9F622", -"w% c #ECF71F", -"x% c #E6E815", -"y% c #DDD412", -"z% c #DCD617", -"A% c #CEC91B", -"B% c #8B8830", -"C% c #6D6D5D", -"D% c #283710", -"E% c #065100", -"F% c #005000", -"G% c #033C02", -"H% c #556347", -"I% c #919D44", -"J% c #CEDE30", -"K% c #E8F425", -"L% c #EBF524", -"M% c #E9F223", -"N% c #DAE626", -"O% c #A5AF33", -"P% c #6A6C4C", -"Q% c #5F5F5D", -"R% c #164403", -"S% c #033C01", -"T% c #50603F", -"U% c #8C944C", -"V% c #BAC544", -"W% c #C8D23E", -"X% c #BEC73D", -"Y% c #97A142", -"Z% c #696963", -"`% c #0A4701", -" & c #033800", -".& c #42542E", -"+& c #646654", -"@& c #7E8166", -"#& c #858670", -"$& c #6C6D62", -"%& c #60605F", -"&& c #1E2D08", -"*& c #173303", -"=& c #3F4728", -"-& c #353520", -";& c #4D4A3C", -" ", -" . ", -" + @ # ", -" $ % & * ", -" = - ; > , ", -" ' ) ! ~ { ] ^ / ", -" ( _ : < ; [ } | ^ 1 ", -" 2 3 4 5 | } } } | 6 7 ", -" 8 9 0 } 0 0 | a b ", -" c { } | d d e f ", -" g h i j k l m n o p q ] r s t ^ u ", -" v w x y z A B C D E F G H ; } d I J K L M N ", -" O P Q R S T U V W X Y Z ` ~ ...6 +.@.#.$.%.&. ", -" *.=.-.;.>.,.'.).!.~.{.].^./.{ 0 (._.:.<. [. ", -" }.|.1.2.3.4.5. 6.7.; } 8.9.0.a. ", -" b.c.d.e.f.g.h. i.p q ] r j.k.l. ", -" m.n.o.p.q.r.s. t.u.} v.w.x.y.z.A. ", -" B.C.D.E.F.G. H.~ [ | I.J.K.L.M.N. ", -" O.P.Q.R.S.T. U.V.{ 0 W.X.Y.Z.`. +.+++ ", -" @+#+$+%+&+*+=+ -+;+ .8.>+,+'+)+!+~+{+]+ ", -" ^+/+(+_+:+<+[+ }+|+1+0 2+3+4+5+6+7+8+9+0+a+ ", -" b+c+d+e+f+g+ h+;+} v.i+j+k+l+m+n+o+p+q+r+ ", -" s+t+u+v+w+x+y+ z+A+q ] B+C+D+ E+F+G+H+I+J+K+ ", -" L+M+v+N+O+P+Q+ R+; } d I S+T+ U+V+W+X+Y+Z+`+ ", -" @.@+@@@#@$@%@ &@~ [ ..*@=@-@ ;@>@,@'@)@!@~@ ", -" {@]@^@/@(@_@:@ <@[@{ 0 (.}@|@ 1@2@3@4@5@6@7@ ", -" 8@9@0@a@b@c@ d@< [ ] 6 e@f@ g@h@i@j@k@l@m@ ", -" n@o@p@q@r@s@ t@u@v@w@x@y@z@A@ B@C@D@E@F@G@H@ ", -" I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@ Z@`@ #.#+#@### ", -" $#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(# _#:#<#9@[#}# ", -" |#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m# ", -" n#o#p#q#r#s#t#u#v#w#x#y# z#A#B#C#D#E#F#G#H#s@I# ", -" J#K#L#M#N#O#P#Q#R#S# T#U#V#W#X#Y#Z#`# $ ", -" .$+$@$#$$$%$&$*$=$-$ ;$>$,$'$)$!$~${$ ", -" ]$^$/$($_$:$<$[$}$ |$1$2$'$3$4$5$I# ", -" 6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$h. ", -" n$;+o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$ ", -" E$F$< 1+] G$H$I$J$K$L$M$*+N$O$P$Q$R$S$T$ U$V$ ", -" W$X$< q } | ^ Y$Z$`$ %.%+%##@%#%$%%%&%*%=% -%;%>%,% ", -" '%)%{ 0 v.8.] !%i+~% {%]%^%/%(%_%:%<%[%}%|%1% ", -" 2%3%4%5%6%7%> v.8%9%0% a%b%c%d%e%f%g%h%i%j%k% ", -" l%m%n%o%p%q%d & r%s% t%u%v%w%x%y%z%A%B%C% ", -" D%E%F%G%H% I%J%K%L%M%N%O%P%Q% ", -" R%2+S%T% U%V%W%X%Y%A.Z% ", -" `% &.& +&@&#&$&%& ", -" &&*&=& ", -" -&;& ", -" "}; diff --git a/documentation_source/src/documentation/resources/images/icon_small.png b/documentation_source/src/documentation/resources/images/icon_small.png deleted file mode 100644 index 3cd23a728cd7..000000000000 Binary files a/documentation_source/src/documentation/resources/images/icon_small.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/layer_properties.gif b/documentation_source/src/documentation/resources/images/layer_properties.gif deleted file mode 100755 index 55b2ea5c3644..000000000000 Binary files a/documentation_source/src/documentation/resources/images/layer_properties.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/loaded_shapefiles.gif b/documentation_source/src/documentation/resources/images/loaded_shapefiles.gif deleted file mode 100755 index 744a2be3841a..000000000000 Binary files a/documentation_source/src/documentation/resources/images/loaded_shapefiles.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/loaded_shapefiles.png b/documentation_source/src/documentation/resources/images/loaded_shapefiles.png deleted file mode 100644 index bf0b6f1d92ee..000000000000 Binary files a/documentation_source/src/documentation/resources/images/loaded_shapefiles.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/mapserver.png b/documentation_source/src/documentation/resources/images/mapserver.png deleted file mode 100644 index 554e8e4998fa..000000000000 Binary files a/documentation_source/src/documentation/resources/images/mapserver.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/open.png b/documentation_source/src/documentation/resources/images/open.png deleted file mode 100644 index e1314000fc71..000000000000 Binary files a/documentation_source/src/documentation/resources/images/open.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/package_network.png b/documentation_source/src/documentation/resources/images/package_network.png deleted file mode 100644 index ac4c1c41834a..000000000000 Binary files a/documentation_source/src/documentation/resources/images/package_network.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/project-logo.gif b/documentation_source/src/documentation/resources/images/project-logo.gif deleted file mode 100644 index 219f05b20298..000000000000 Binary files a/documentation_source/src/documentation/resources/images/project-logo.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/project.svg b/documentation_source/src/documentation/resources/images/project.svg deleted file mode 100644 index 42f3febf0dec..000000000000 --- a/documentation_source/src/documentation/resources/images/project.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - Anteater logo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/resources/images/qgis_load_data_on_startup.png b/documentation_source/src/documentation/resources/images/qgis_load_data_on_startup.png deleted file mode 100644 index 8ae4c507c8b7..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_load_data_on_startup.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_mainwindow.gif b/documentation_source/src/documentation/resources/images/qgis_mainwindow.gif deleted file mode 100755 index b08677b7db21..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_mainwindow.gif and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_mainwindow.png b/documentation_source/src/documentation/resources/images/qgis_mainwindow.png deleted file mode 100755 index 8f6db6cf162c..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_mainwindow.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_mainwindow01.png b/documentation_source/src/documentation/resources/images/qgis_mainwindow01.png deleted file mode 100644 index 9ef6442a5da9..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_mainwindow01.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_mainwindow01.xcf b/documentation_source/src/documentation/resources/images/qgis_mainwindow01.xcf deleted file mode 100644 index 0447fafb1b38..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_mainwindow01.xcf and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_raster_popup_properties_selected.png b/documentation_source/src/documentation/resources/images/qgis_raster_popup_properties_selected.png deleted file mode 100644 index cdbd9557114c..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_raster_popup_properties_selected.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_raster_properties_general_tab.png b/documentation_source/src/documentation/resources/images/qgis_raster_properties_general_tab.png deleted file mode 100644 index 06b869fa4412..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_raster_properties_general_tab.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_raster_properties_statistics_tab.png b/documentation_source/src/documentation/resources/images/qgis_raster_properties_statistics_tab.png deleted file mode 100644 index e407fc4b9bdd..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_raster_properties_statistics_tab.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_raster_properties_symbology_tab.png b/documentation_source/src/documentation/resources/images/qgis_raster_properties_symbology_tab.png deleted file mode 100644 index de3448dfbf43..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_raster_properties_symbology_tab.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_raster_stats.png b/documentation_source/src/documentation/resources/images/qgis_raster_stats.png deleted file mode 100644 index 76d48d605e1e..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_raster_stats.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties.png b/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties.png deleted file mode 100644 index 998e5ccf1775..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties1.png b/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties1.png deleted file mode 100644 index f2e8aed25540..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties1.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties2.png b/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties2.png deleted file mode 100644 index 945e66f72dc9..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties2.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties3.png b/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties3.png deleted file mode 100644 index fce4102c142f..000000000000 Binary files a/documentation_source/src/documentation/resources/images/qgis_vector_layer_properties3.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/reload20x20.png b/documentation_source/src/documentation/resources/images/reload20x20.png deleted file mode 100644 index fbc6b576f53b..000000000000 Binary files a/documentation_source/src/documentation/resources/images/reload20x20.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/select_features.png b/documentation_source/src/documentation/resources/images/select_features.png deleted file mode 100644 index 86005be7afb1..000000000000 Binary files a/documentation_source/src/documentation/resources/images/select_features.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/sf.png b/documentation_source/src/documentation/resources/images/sf.png deleted file mode 100644 index fddc4ed59f6a..000000000000 Binary files a/documentation_source/src/documentation/resources/images/sf.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/table.png b/documentation_source/src/documentation/resources/images/table.png deleted file mode 100644 index f28f0e2eb739..000000000000 Binary files a/documentation_source/src/documentation/resources/images/table.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/viewmag-.png b/documentation_source/src/documentation/resources/images/viewmag-.png deleted file mode 100644 index 1b4971cd7345..000000000000 Binary files a/documentation_source/src/documentation/resources/images/viewmag-.png and /dev/null differ diff --git a/documentation_source/src/documentation/resources/images/zoomin.png b/documentation_source/src/documentation/resources/images/zoomin.png deleted file mode 100644 index dfdd7126d4cd..000000000000 Binary files a/documentation_source/src/documentation/resources/images/zoomin.png and /dev/null differ diff --git a/documentation_source/src/documentation/revisions.xmap b/documentation_source/src/documentation/revisions.xmap deleted file mode 100755 index 478dcd6fa5a4..000000000000 --- a/documentation_source/src/documentation/revisions.xmap +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/sitemap.xmap b/documentation_source/src/documentation/sitemap.xmap deleted file mode 100755 index b7fc2486320c..000000000000 --- a/documentation_source/src/documentation/sitemap.xmap +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - - - - - - - - //*[local-name() = 'section'] - title/text() - - - - - - href src - site ext - - - - - - /site// - /@href - - - - - - /site/external-refs// - /@href - - - - - - false - false - false - org.apache.xalan.processor.TransformerFactoryImpl - - - - - - - - - - - - - - -//W3C//DTD HTML 4.01 Transitional//EN - http://www.w3.org/TR/html4/loose.dtd - - - - - - source - -//APACHE//DTD Documentation V1.2//EN - document-v12.dtd - - - - - - ISO-8859-1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skinconf.xml b/documentation_source/src/documentation/skinconf.xml deleted file mode 100644 index e3e6c2c3b6f8..000000000000 --- a/documentation_source/src/documentation/skinconf.xml +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ]> - - - - true - - true - - false - - true - - true - - true - - mydomain - MyProject - - - QGIS - Quantum GIS - http://qgis.org/ - - - - images/project-logo.gif - - - - - - - - - - - 2004 - Micro Resources. - - - - - - - - - - - - - - - Built with Apache Forrest - http://xml.apache.org/forrest/ - images/built-with-forrest-button.png - 88 - 31 - - - Sourceforge - http://sourceforge.net - http://sourceforge.net/sflogo.php?group_id=55820&type=1 - 88 - 31 - - - - - diff --git a/documentation_source/src/documentation/skins/avalon-tigris/css/mysite.css b/documentation_source/src/documentation/skins/avalon-tigris/css/mysite.css deleted file mode 100755 index a979b0b4e279..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/css/mysite.css +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Other colors: - * - dark blue: #036 - * - bluish: #269 - * - */ - -/* - * The Banner section. - */ -.banner, .projectLogo, .groupLogo, .projectLogo a, .groupLogo a, - .groupLogo a:visited, .projectLogo a:visited, - .groupLogo a:link, .projectLogo a:link { -} - -/* - * The Status + Footer section. - */ -.status, .breadcrumb, .searcher, .tabs { -} - -.selectedTab { -} - -/* - * The Menu section. - */ -.menuColumn { -} -.menubar { -} -.menu { -} -.menuLabel { -} -.menuItem { -} - -/* - * The Content section. - */ -.contentColumn { -} - -h1, h2, h3, h4 { -} - -h3, h4 { - } -h3 { - } -h4 { -} - -.code { -} - -.section { -} - -.subsection { -} - -/* - * The Footer section. - */ -.footer, .copyright, .host, .credit { -} - -/* - * General Settings - */ -body { -} - -a:link, .menuItem a:visited, .status a:visited { - color: #036; -} - -a:active, a:hover { - -} - -body, th, td { -} - -.logoImage { -} diff --git a/documentation_source/src/documentation/skins/avalon-tigris/css/print.css b/documentation_source/src/documentation/skins/avalon-tigris/css/print.css deleted file mode 100755 index 059fd686cac4..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/css/print.css +++ /dev/null @@ -1,16 +0,0 @@ -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks { - display: none; - } -body.docs div.docs { - margin: 0 !important; - border: none !important - } - -/* just to be sure */ -#navcolumn { - width: 0px; -} - -#leftcol { - width: 0px; -} diff --git a/documentation_source/src/documentation/skins/avalon-tigris/css/site.css b/documentation_source/src/documentation/skins/avalon-tigris/css/site.css deleted file mode 100755 index b4842df9cd7f..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/css/site.css +++ /dev/null @@ -1,81 +0,0 @@ -div#banner { - border-top: 1px solid #fff; - border-bottom: 1px solid #aaa; -} - -#banner, #banner td { - background: #fff; - color: #036; -} - -#tabs { - text-align: right; -} - -.selectedTab { - color: #036; -} - - a.unselectedTab { - color: #888888; -} - -#source { - background-color: #fff; - color: #000; - border-right: 1px solid #888; - border-left: 1px solid #888; - border-top: 1px solid #888; - border-bottom: 1px solid #888; - margin-right: 7px; - margin-left: 7px; - margin-top: 1em; -} - -#source pre { - margin-right: 7px; - margin-left: 7px; -} - -/* make the whole column grey */ -#navcolumn { - width: 150px; - } - -#leftcol { - width: 150px; -} - -/* - * The Menu section. - */ -.menuColumn { -} - -.menu { - padding-bottom: .2em; - font-size: x-small; - text-decoration: none; -} -.menuLabel { font-weight: bold; } -.menuItem { - padding-left: 12px; - text-decoration: none; -} - -/* breadcrumbs */ -#breadcrumbs -{ - font-weight: bold; -} -.breadcrumbTrail -{ - padding-left: 5px; -} -.breadcrumb -{ - font-weight: bold; -} -.crumbSeparator -{ -} diff --git a/documentation_source/src/documentation/skins/avalon-tigris/css/tigris.css b/documentation_source/src/documentation/skins/avalon-tigris/css/tigris.css deleted file mode 100755 index 2fc461c4b02f..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/css/tigris.css +++ /dev/null @@ -1,434 +0,0 @@ -/* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see */ - -/* colors, backgrounds, borders, link indication */ - -body { - background: #fff; - color: #000; - } -.app h3, .app h4, .app th, .tabs td, .tabs th, .functnbar { - background-image: url(images/nw_maj_rond.gif); - background-repeat: no-repeat; - } -#navcolumn div div, body.docs #toc li li { - background-image: url(images/strich.gif); - background-repeat: no-repeat; - background-position: .5em .5em; - } -#navcolumn div div.heading { - background-image: none; - } -.app h3, .app h4 { - color: #fff; - } -.app h3 { - background-color: #036; - } -.app h4 { - background-color: #888; - } -.a td { - background: #ddd; - } -.b td { - background: #efefef; - } -table, th, td { - border: none - } -.mtb { - border-top: solid 1px #ddd; - } -div.colbar { - background: #bbb; - } -div#banner { - border-top: 1px solid #369; - border-bottom: 1px solid #003; - } -div#helptext th { - border-bottom: 1px solid #996; - border-right: 1px solid #996; - } -div#helptext td { - border-bottom: 1px solid #cc9; - border-right: 1px solid #cc9; - } -.tabs { - border-bottom: .75em #888 solid; - } -.tabs th, .tabs td { - border-right: 1px solid #333; - } -.tabs td { - border-bottom: 1px solid #ddd; - } -#navcolumn { - background: #eee; - border-right: 1px solid #aaa; - border-bottom: 1px solid #aaa; - } -#breadcrumbs { - border-bottom: 1px solid #aaa; - background-color: #ddd; - } -#navcolumn, #breadcrumbs { - border-top: 1px solid #fff; - } -#rightcol div.www, #rightcol div.help { - border: 1px solid #ddd; - } -div#navcolumn div.focus { - border-top: 1px solid #aaa; - border-left: 1px solid #aaa; - background-color: #fff; - } -body.docs div.docs { - background: #fff; - border-left: 1px solid #ddd; - border-top: 1px solid #ddd; - } -body.docs { - background: #eee url(images/help_logo.gif) top right no-repeat !important; - } -.docs h3, .docs h4 { - border-top: solid 1px #000; - } -#alerterrormessage { - background: url(images/icon_alert.gif) top left no-repeat !important; - } -.functnbar { - background-color: #aaa; - } -.functnbar2, .functnbar3 { - background: #aaa; - } -.functnbar3 { - background-color: #ddd; - } -.functnbar, .functnbar2, .functnbar3 { - color: #000; - } -.functnbar a, .functnbar2 a, .functnbar3 a { - color: #000; - text-decoration: underline; - } -#topmodule { - background: #ddd; - border-top: 1px solid #fff; - border-bottom: 1px solid #aaa; - border-right: 1px solid #aaa; - } -#topmodule #issueid { - border-right: 1px solid #aaa; - } -a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited { - color: blue; - } -a:active, a:hover, #leftcol a:active, #leftcol a:hover { - color: #f30 !important; - } -#login a:link, #login a:visited { - color: white; - text-decoration: underline; - } -#banner a:active, #banner a:hover { - color: #f90 !important; - } -#leftcol a, #breadcrumbs a { - text-decoration: none; - } -a:link.selfref, a:visited.selfref { - color: #555 !important; - text-decoration: none; - } -h2 .lastchild { - color: #777 - } -.tabs td, .tabs th { - background-color: #ddd; - } -.app th { - background-color: #bbb; - } -.tabs th { - background-color: #888; - color: #fff; - } -.axial th { - background-color: #ddd; - color: black - } -.tabs td { - background-color: #ddd; - } -.alert { - color: #c00; - } -.confirm { - color: green; - } -.info { - color: blue; - } -.selection { - background: #ffc; - } -#login { - color: #fff; - } -#helptext th { - background: #cc9; - } -#helptext td { - background: #ffc; - } -.tabs a { - text-decoration: none; - } -#navcolumn div strong { - color: #000; - } -#banner, #banner td { - background: #036; - color: #fff; - } -body #banner #login a { - color: #fff; - } - - -/* font and text properties, exclusive of link indication, alignment, text-indent */ - -body, th, td, input, select, textarea, h2 small { - font-family: Verdana, Helvetica, Arial, sans-serif; - } -code, pre { - font-family: 'Andale Mono', Courier, monospace; - } -html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code { - font-size: x-small; - voice-family: "\"}\""; - voice-family: inherit; - font-size: small - } -html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code { - font-size: small - } -small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol { - font-size: x-small; - voice-family: "\"}\""; - voice-family: inherit; - font-size: x-small - } -html>body small, html>body div#footer td, html>body div#login, html>body div#helptext td, html>body div#helptext th, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc { - font-size: x-small - } -#bodycol h2 { - font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif; - font-size: 1.5em; - font-weight: normal; - } -h2 small { - font-weight: bold; - letter-spacing: .06em; - } -dt { - font-weight: bold - } -#login .username { - font-weight: bold; - } -h4 { - font-size: 1em; - } -#breadcrumbs td { - font-weight: bold; - } -.selection { - font-weight: bold - } - - -/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */ - -#bodycol h2 { - margin-top: .3em; - margin-bottom: .5em; - } -p, ul, ol, dl { - margin-top: .67em; - margin-bottom: .67em; - } -h3, h4 { - margin-bottom: 0; - } -form { - margin-top: 0; - margin-bottom: 0; - } -#bodycol { - padding-left: 12px; - padding-right: 12px; - width: 100%; - voice-family: "\"}\""; - voice-family: inherit; - width: auto; - } -html>body #bodycol { - width: auto; - } -.docs { - line-height: 1.4; - } -.app h3, .app h4 { - padding: 5px; - margin-right: 2px; - margin-left: 2px; - } -.h3 p, .h4 p, .h3 dt, .h4 dt { - margin-right: 7px; - margin-left: 7px; - } -.tasknav { - margin-bottom: 1.33em - } -div.colbar { - padding: 4px; - margin: 2px 2px 0; - } -.tabs { - margin-top: .67em; - margin-right: 2px; - margin-left: 2px; - } -#leftcol { - padding-bottom: .5em; - } -#breadcrumbs td { - vertical-align: middle; - padding: 2px 8px; - } -#rightcol div.www, #rightcol div.help { - padding: 0 .5em - } -#navcolumn { - margin: -8px -8px 0 -8px; - padding: 4px; - } -#navcolumn div { - padding-left: 5px - } -div#navcolumn div div { - margin-top: .3em; - margin-bottom: .3em; - } -div#navcolumn div.focus { - margin-top: -.1em; - padding: .2em 4px; - } -body.docs #toc { - position: absolute; - top: 15px; - left: 0px; - width: 120px; - padding: 0 20px 0 0 - } -body.docs #toc ul, #toc ol { - margin-left: 0; - padding-left: 0; - } -body.docs #toc li { - margin-top: 7px; - padding-left: 10px; - list-style-type: none; - } -body.docs div.docs { - margin: 61px 0 0 150px; - padding: 1em 2em 1em 1em !important; - } -.docs p+p { - text-indent: 5%; - margin-top: -.67em - } -.docs h3, .docs h4 { - margin-bottom: .1em; - padding-top: .3em; - } -#alerterrormessage { - padding-left: 100px; - } -.functnbar, .functnbar2, .functnbar3 { - padding: 5px; - margin: .67em 2px; - } -#topmodule td { - vertical-align: middle; - padding: 2px 8px - } -body { - padding: 1em; - } -body.composite, body.docs { - margin: 0; - padding: 0; - } -th, td { - text-align: left; - vertical-align: top - } -.right { - text-align: right !important; - } -.center { - text-align: center !important; - } -.tabs td, .tabs th { - padding-left: 7px; - padding-right: 7px; - } -.axial th { - text-align: right; - } -.app .axial td th { - text-align: left; - } -body td .stb { - margin-top: 1em; - text-indent: 0; - } -body td .mtb { - margin-top: 2em; - text-indent: 0; - } -dd { - margin-bottom: .67em; - } -#footer { - margin: 4px - } -#helptext { - margin-top: 1em - } -#helptext td div { - margin: .5em - } -.courtesylinks { - margin-top: 1em; - padding-top: 1em - } -#navcolumn div { - margin-bottom: .5em; - } -#navcolumn div div { - margin-top: .3em - } -#navcolumn div div { - padding-left: 1em; - } -#banner, #banner td { - vertical-align: middle; - } -body.docs, body.nonav { - margin: 1em - } diff --git a/documentation_source/src/documentation/skins/avalon-tigris/xslt/fo/document2fo.xsl b/documentation_source/src/documentation/skins/avalon-tigris/xslt/fo/document2fo.xsl deleted file mode 100755 index 9b845e7044de..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/xslt/fo/document2fo.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/book2menu.xsl b/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/book2menu.xsl deleted file mode 100755 index a0775a481745..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/book2menu.xsl +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/document2html.xsl b/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/document2html.xsl deleted file mode 100755 index 929af3f530e8..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/document2html.xsl +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - <xsl:value-of select="header/title"/> - - - NO TITLE - - - - - -
- - - by  - - - - - - - -
-
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -

- -
- -

- -
- -

- -
- -
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a - - - b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/site2xhtml.xsl b/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/site2xhtml.xsl deleted file mode 100755 index a3fa779171bd..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/site2xhtml.xsl +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - *** This is a generated file. Do not edit. *** - - - - - - - <xsl:value-of select="/site/document/title" /> - - - - - - ================= start Banner ================== - - ================= end Banner ================== - - ================= start Main ================== - - - ================= start Status ================== - - - - - - - ================= end Status ================== - - - - - - ================= start Menu ================== - - ================= end Menu ================== - - ================= start Content ================== - - ================= end Content ================== - - -
- - -
-
-
-

- -

-
-
-
- -
-
-
-
- ================= end Main ================== - - ================= start Footer ================== - - ================= end Footer ================== - - - -
- -
diff --git a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/tab2menu.xsl b/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/tab2menu.xsl deleted file mode 100755 index c82c036ea139..000000000000 --- a/documentation_source/src/documentation/skins/avalon-tigris/xslt/html/tab2menu.xsl +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/fo/document2fo.xsl b/documentation_source/src/documentation/skins/common/xslt/fo/document2fo.xsl deleted file mode 100755 index cbb7f12390a7..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/fo/document2fo.xsl +++ /dev/null @@ -1,705 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Page - - - - - - - - - - - - - - - - Page - - - - - - - - - - - - - - - - Page - - - - - - - - - - - - - - - - - - - - - - - - - NOTICE: - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - pt - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - by - - - , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Note: - - - - - - - - - - - - Note: - - - - - - - - - - FIXME (): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - in - - - - - - - - - - - - - - - - - - - - - - - - - Table - - - : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/fo/footerinfo.xsl b/documentation_source/src/documentation/skins/common/xslt/fo/footerinfo.xsl deleted file mode 100755 index 355ae3ee7864..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/fo/footerinfo.xsl +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - Copyright ©   All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/fo/pdfoutline.xsl b/documentation_source/src/documentation/skins/common/xslt/fo/pdfoutline.xsl deleted file mode 100755 index e90850d79f50..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/fo/pdfoutline.xsl +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/book2menu.xsl b/documentation_source/src/documentation/skins/common/xslt/html/book2menu.xsl deleted file mode 100755 index 263f16ab7094..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/book2menu.xsl +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - -
  • -
    - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/common/xslt/html/document2html.xsl b/documentation_source/src/documentation/skins/common/xslt/html/document2html.xsl deleted file mode 100755 index 4dc5214d1bb6..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/document2html.xsl +++ /dev/null @@ -1,450 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - -
    - -

    - -

    -
    -
    - -

    - -

    -
    - - - - -
    - - - ; - - -
    -
    -
    - - - - - - - - - - - - - - - - PDF
    - PDF
    - -
    -
    - - - - - - - xml
    - xml
    - -
    -
    - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - ^ - - - - - - - - 15 - - - 0 - - - - -
    - -
    - - - - -
    -
    - - - Note - Warning - Fixme () - -
    -
    - -
    -
    -
    - - -
    - - Notice: - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - -
    -
    -      
    -
    -    
    -
    - - - - - - - - {@alt} - - - - - - - - - - - - - - - - -
    - {@alt} - - - - - - - -
    -
    - - - - - - - - - - -
    -
    - - - - - - - - - - - -
      - -
    • - - - - - - - -
    • -
      -
    -
    -
    - - - - -
    - - # - - - - - - - - - - - - - by  - - - - - - - - - - - - - - - version - - - - - - - - - - v - - - - - - - - - - - - - - - -

    - - Type: - -

    -
    - - -

    - -

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/dotdots.xsl b/documentation_source/src/documentation/skins/common/xslt/html/dotdots.xsl deleted file mode 100755 index f0436c0de27d..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/dotdots.xsl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - ../ - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/pathutils.xsl b/documentation_source/src/documentation/skins/common/xslt/html/pathutils.xsl deleted file mode 100755 index 5590575796b1..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/pathutils.xsl +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/renderlogo.xsl b/documentation_source/src/documentation/skins/common/xslt/html/renderlogo.xsl deleted file mode 100755 index 7e9638530730..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/renderlogo.xsl +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - {$name} - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/site2xhtml.xsl b/documentation_source/src/documentation/skins/common/xslt/html/site2xhtml.xsl deleted file mode 100755 index ecd9d377a31d..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/site2xhtml.xsl +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <xsl:value-of select="div[@class='content']/table/tr/td/h1"/> - - - - - - - - - - - - - - - - - - - ================= start Tabs ================== - - ================= end Tabs ================== - ================= start Menu items ================== - - ================= end Menu items ================== - ================= start Content================== - - ================= end Content================== - - ================= start Footer ================== - Copyright ©   All rights reserved. - /* */ - - - - - - - - - - - - - - - - - - - - - - - Valid HTML 4.01! - - - - - - - - Valid HTML 4.01! - - Valid CSS! - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/split.xsl b/documentation_source/src/documentation/skins/common/xslt/html/split.xsl deleted file mode 100755 index 0076a36b8925..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/split.xsl +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - 40 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/common/xslt/html/tab2menu.xsl b/documentation_source/src/documentation/skins/common/xslt/html/tab2menu.xsl deleted file mode 100755 index cb95ecb90fa5..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/tab2menu.xsl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/common/xslt/html/tabutils.xsl b/documentation_source/src/documentation/skins/common/xslt/html/tabutils.xsl deleted file mode 100755 index 2208e02ee07d..000000000000 --- a/documentation_source/src/documentation/skins/common/xslt/html/tabutils.xsl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - / - - - - / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/forrest-css/css/krysalis.css b/documentation_source/src/documentation/skins/forrest-css/css/krysalis.css deleted file mode 100755 index 125e93e9ae0b..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/css/krysalis.css +++ /dev/null @@ -1,308 +0,0 @@ -/* Apache Forrest CSS */ - body { - background-color: white; - font-family: arial, helvetica, sans-serif; - margin: 0px; - padding: 0px; - } - form { - padding: 0px; - margin: 0px; - } - a:link { - color: #0F3660; - } - a:visited { - color: #009999; - } - a:active { - color: #000066; - } - a:hover { - color: #000066; - } - .textonly { - display: none; - } - #toplinks { - font-size: 70%; - left: 15em; - position: absolute; - top: 119px; - } - a.toplink { - text-decoration: none; - } - body>#toplinks { - padding-bottom: 0em; - } - #mainheader { - background-color: white; - border-bottom: 11px solid #ABC; - height: 100px; - text-align: center; - white-space: nowrap; - } - #grouplogolink { - display: block; - left: 0px; - position: absolute; - top: 0px; - width: 288px; - } - #grouplogolink/* Hide from Mac IE 5 */ { - display: inline; - float: left; - left: auto; - margin-top: 2px; - position: relative; - top: auto; - width: auto; - } - #grouplogo { - border: 0px; - } - #projectlogo { - border: 0px; - } - #search { - background: #F3F6FF; - border: 0px; - border-bottom: 10px solid #ABC; - border-top: 10px solid #ABC; - display: block; - margin: 0px; - padding: 10px; - padding-right: 0px; - padding-top: 5px; - position: absolute; - right: 10px; - text-align: left; - width: 150px; - top: 22px; - voice-family: "\"}\""; - voice-family: inherit; - top: 0px; - } - #mainheader>#search/* Hide from Mac IE 5 */ { - float: right; - margin-right: 10px; - min-width: 130px; - padding-right: 10px; - position: static; - right: auto; - top: auto; - width: auto; - } - #search * { - border: 0px !important; - font-size: 70%; - } - .searchtext { - color: black; - display: block; - font-size: 100%; - } - .query { - width: 8.5em; - } - #content { - background: white url('skins/krysalis/content-background.png') repeat-x top; - padding-bottom: 1em; - padding-left: 12em; - padding-right: 10px; - padding-top: 30px; - voice-family: "\"}\""; - voice-family: inherit; - padding-left: 10.5em; - } - body>#content { /* Be nice to Opera */ - padding-left: 10.5em; - } - #content * { - position: relative; - z-index: 2; - } - #content h1 { - font-size: 125%; - } - #content h2 { - font-size: 100%; - } - #content h3 { - font-size: 80%; - } - #content p { - font-size: 80%; - } - #content em { - font-style: normal; - font-weight: bold; - } - #content li { - font-size: 70%; - list-style-type: none; - } - #content li li { - font-size: 100%; - } - #content .author { - display: block; - font-size: 70%; - text-align: right; - } - #printable { - display: block; - font-size: 70%; - float: right; - margin-right: 3em; - margin-top: 1em; - position: relative; - text-align: center; - width: 6em; - } - #printable/* Hide from Mac IE 5.x */ { - width: 5.5em; - } - #printable img { - border: 0px; - display: block; - } - #printable>img/* Hide from Mac IE 5.x */ { - display: inline; - } - #nav { - border-bottom: 10px solid #ABC; - left: 10px; - padding-top: 10px; - position: absolute; - top: 70px; - z-index: 1; - } - #nav/* Hide from Mac IE 5.x */ { - top: 70px; - } - #categories { - border-bottom: 10px solid #ABC; - font-size: 70%; - height: 1.75em; - margin: 0px; - padding: 0px; - position: relative; - z-index: 1; - } - .category { - display: block; - float: left; - margin: 0em; - margin-right: 0.3em; - padding-right: 0.2em; - padding-left: 0.5em; - text-align: center; - } - .category/* Hide from Mac IE 5.x */ { - padding-left: 0.5em; - padding-right: 0.5em; - } - span.category { - background: #ABC; - color: #F3F6FF; - font-weight: normal; - padding-bottom: 0.5em; - padding-top: 0.3em; - } - a.category { - background: #F3F6FF; - border: 1px solid #ABC; - border-bottom: 0px; - font-weight: normal; - padding-top: 0.15em; - margin-top: 0.5em; - } - .navsection { - background: #F3F6FF; - border-left: 1px solid #ABC; - border-right: 1px solid #ABC; - display: block; - font-size: 70%; - margin: 0px; - padding-bottom: 0.1em; - padding-left: 15px; - padding-top: 0.3em; - width: 11em; - voice-family: "\"}\""; - voice-family: inherit; - width: 10.5em; - } - #nav>.navsection { /* Be nice to Opera */ - width: 10.5em; - } - .navsectionheader { - color: black; - font-size: 100%; - margin: 0px; - padding-left: 7px; - } - .navsectionheader/* Hide from Mac IE 5.x */ { - font-size: 90%; - } - .navitem { - display: block; - margin-left: 0px; - margin-bottom: 0.2em; - padding-left: 15px; - } - .navsection>.navitem { - display: list-item; - margin-left: 15px; - padding-left: 0px; - } - span.navitem { - background: url('skins/default/navbullet-selected.png') no-repeat center left; - color: #FFCC00; - } - .navsection>span.navitem { - background: inherit; - list-style-type: disc; - } - a.navitem { - background: url('skins/default/navbullet.png') no-repeat center left; - color: black; - list-style-type: circle; - text-decoration: none; - } - .navsection>a.navitem { - background: inherit; - list-style-type: circle; - } - a.navitem:visited { - color: white; - } - a.navitem:hover { - color: #009966; - } - .navsection>a.navitem:hover { - background: inherit; - } - #footer { - background-color: #ABC; - font-size: 70%; - padding-bottom: 5px; - padding-top: 3px; - text-align: center; - } - #revision:before { - content: " -- " - } - #validation { - display: block; - margin-top: 5px; - text-align: right; - } - #validation img { - border: 0px; - } - - .extratab { - display: none; - } diff --git a/documentation_source/src/documentation/skins/forrest-css/css/page.css b/documentation_source/src/documentation/skins/forrest-css/css/page.css deleted file mode 100755 index 7660e3629cbb..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/css/page.css +++ /dev/null @@ -1,353 +0,0 @@ -/* Apache Forrest CSS */ - body { - background-color: white; - font-family: arial, helvetica, sans-serif; - margin: 0px; - padding: 0px; - } - form { - padding: 0px; - margin: 0px; - } - a:link { - color: #0F3660; - } - a:visited { - color: #009999; - } - a:active { - color: #000066; - } - a:hover { - color: #000066; - } - .textonly { - display: none; - } - #toplinks { - background-color: #CDDEEE; - font-size: 80%; - margin: 0px; - min-height: 18px; - padding-bottom: 0.2em; - padding-top: 2px; - padding-left: 5px; - } - body>#toplinks { - padding-bottom: 0em; - } - #quicklinks { - display: none; - } - #mainheader { - background-color: #294563; - border-top: 2px solid #4A6D8B; - border-bottom: 0.6em solid #4A6D8B; - text-align: center; - } - #grouplogolink { - display: block; - left: 0px; - position: absolute; - top: 18px; - width: 220px; - } - #grouplogolink/* Hide from Mac IE 5 */ { - display: inline; - float: left; - left: auto; - position: relative; - top: auto; - width: auto; - } - #grouplogo { - border: 0px; - } - #projectlogo { - border: 0px; - margin-bottom: 1.5em; - } - #search { - background: #4A6D8B url('images/search-bottom.png') no-repeat bottom left; - border: 0px; - display: block; - margin: 0px; - padding: 10px; - padding-right: 0px; - position: absolute; - right: 10px; - text-align: left; - width: 190px; - top: 22px; - voice-family: "\"}\""; - voice-family: inherit; - top: 18px; - } - #mainheader>#search/* Hide from Mac IE 5 */ { - float: right; - margin-right: 10px; - min-width: 170px; - padding-right: 10px; - position: static; - right: auto; - top: auto; - width: auto; - } - #search * { - font-size: 70%; - } - .searchtext { - color: white; - display: block; - font-size: 100%; - } - .query { - width: 10em; - } - .content { - background: white url('images/content-bg.gif') repeat-x top; - padding-bottom: 2em; - padding-left: 14em; - padding-right: 10px; - padding-top: 30px; - voice-family: "\"}\""; - voice-family: inherit; - padding-left: 13.5em; - } - body>.content { /* Be nice to Opera */ - padding-left: 13.5em; - } - .content * { - position: relative; - z-index: 2; - } - #printable { - display: block; - font-size: 70%; - float: right; - text-align: center; - } - #printable img { - border: 0px; - display: block; - } - #printable>img/* Hide from Mac IE 5.x */ { - display: inline; - } - #nav { - xbackground: url('images/nav-bottom.png') no-repeat bottom right; - left: 10px; - padding-bottom: 10px; - padding-top: 10px; - position: absolute; - top: 71px; - z-index: 1; - } - #nav/* Hide from Mac IE 5.x */ { - top: 78px; - } - #categories { - border-bottom: 10px solid #4A6B8D; - font-size: 80%; - height: 2.15em; - margin: 0px; - padding: 0px; - position: relative; - z-index: 1; - } - .category { - display: block; - float: left; - margin: 0em; - margin-right: 0.3em; - min-width: 65px; - padding: 0.2em; - padding-left: 0.5em; - text-align: center; - width: 5.25em; - } - .category/* Hide from Mac IE 5.x */ { - padding-left: 0em; - padding-right: 0em; - } - span.category { - background: #4A6D8B url('images/tab-top.png') no-repeat top left; - color: white; - font-weight: bold; - padding-bottom: 0.5em; - padding-top: 0.5em; - } - a.category { - background: #B4C6E6 url('images/tab-top.png') no-repeat top left; - font-weight: normal; - padding-top: 0.25em; - margin-top: 0.5em; - } - .navsection { - background: #4A6D8B; - border-left: 1px solid #294462; - border-right: 1px solid #294462; - display: block; - font-size: 90%; - margin: 0px; - padding-bottom: 0.9em; - padding-left: 1.5em; - width: 13.6em; - voice-family: "\"}\""; - voice-family: inherit; - width: 11em; - } - #nav>.navsection { /* Be nice to Opera */ - width: 11em; - } - .navsectionheader { - color: #CDDEEE; - font-size: 90%; - margin: 0px; - } - .navsectionheader/* Hide from Mac IE 5.x */ { - font-size: 100%; - } - .navitem { - display: block; - margin-left: 5px; - padding-left: 15px; - } - .navsection>.navitem { - display: list-item; - margin-left: 20px; - padding-left: 0px; - } - span.navitem { - background: url('images/navbullet-selected.png') no-repeat center left; - color: #FFCC00; - } - .navsection>span.navitem { - background: inherit; - list-style-type: disc; - } - a.navitem { - background: url('images/navbullet.png') no-repeat center left; - color: white; - list-style-type: circle; - text-decoration: none; - } - .navsection>a.navitem { - background: inherit; - list-style-type: circle; - } - a.navitem:visited { - color: white; - } - a.navitem:hover { - background: url('images/navbullet-selected.png') no-repeat center left; - color: #FFCC00; - } - .navsection>a.navitem:hover { - background: inherit; - list-style-type: disc; - } - #footer { - background-color: #CDDEEE; - border-top: 1px solid #294462; - font-size: 80%; - padding-bottom: 5px; - text-align: center; - } - #revision:before { - content: " -- " - } - #validation { - display: block; - margin-top: 5px; - } - #validation img { - border: 0px; - } - - .extratab { - display: none; - } - .author { - text-align: right; - font-size: x-small; - font-style: italic; - } - .note, .warning, .fixme { - border-top: 3px solid #900; - border-bottom: 3px solid #900; - border-left: 3px solid #900; - border-right: 3px solid #900; - background-image: url(images/icon_error_lrg.gif); - background-repeat: no-repeat; - background-position: 0 1.33em; - margin: 1.33em 0; - padding: .33em 0 .67em 36px; - min-height: 32px; - } - .fixme { - background-image: url(images/icon_warning_lrg.gif); - border-color: #c60; - } - .note { - background-image: url(images/icon_info_lrg.gif); - border-color: #069; - } - - .codefrag { - font-family: courier; - } - -@media print { - - body, html { - background-color: white; - } - - acronym, abbr { - border: 0px; - } - - a { - color: black !important; - text-decoration: none; - } - - p a:after { - content: "(" attr(href) ")"; - } - - p abbr:after, p acronym:after { - content: "(" attr(title) ")"; - } - - #nav { - display: none; - } - - #printable { - display: none; - } - - .content { - background: white; - padding: 0em !important; - } - - #search { - display: none; - } - - #toplinks { - display: none; - } - - #footer { - background: white; - } - - #validation { - display: none; - } - -} diff --git a/documentation_source/src/documentation/skins/forrest-css/scripts/breadcrumbs-optimized.js b/documentation_source/src/documentation/skins/forrest-css/scripts/breadcrumbs-optimized.js deleted file mode 100755 index bf0c44fe4356..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/scripts/breadcrumbs-optimized.js +++ /dev/null @@ -1,67 +0,0 @@ -var PREPREND_CRUMBS=new Array(); -PREPREND_CRUMBS.push(new Array("Apache","http://www.apache.org/")); -PREPREND_CRUMBS.push(new Array("Jakarta","http://jakarta.apache.org/")); -var DISPLAY_SEPARATOR=" > "; -var DISPLAY_PREPREND=""; -var DISPLAY_POSTPREND=":"; -var CSS_CLASS_CRUMB="breadcrumb"; -var CSS_CLASS_TRAIL="breadcrumbTrail"; -var CSS_CLASS_SEPARATOR="crumbSeparator"; -var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); -var PATH_SEPARATOR="/"; - -function sc(s) { - var l=s.toLowerCase(); - return l.substr(0,1).toUpperCase()+l.substr(1); -} -function getdirs() { - var t=document.location.pathname.split(PATH_SEPARATOR); - var lc=t[t.length-1]; - for(var i=0;i < FILE_EXTENSIONS.length;i++) - { - if(lc.indexOf(FILE_EXTENSIONS[i])) - return t.slice(1,t.length-1); } - return t.slice(1,t.length); -} -function getcrumbs( d ) -{ - var pre = "/"; - var post = "/"; - var c = new Array(); - if( d != null ) - { - for(var i=0;i < d.length;i++) { - pre+=d[i]+postfix; - c.push(new Array(d[i],pre)); } - } - if(PREPREND_CRUMBS.length > 0 ) - return PREPREND_CRUMBS.concat( c ); - return c; -} -function gettrail( c ) -{ - var h=DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=DISPLAY_SEPARATOR; } - return h+DISPLAY_POSTPREND; -} - -function gettrailXHTML( c ) -{ - var h=''+DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=''+DISPLAY_SEPARATOR+''; } - return h+DISPLAY_POSTPREND+''; -} - -if(document.location.href.toLowerCase().indexOf("http://")==-1) - document.write(gettrail(getcrumbs())); -else - document.write(gettrail(getcrumbs(getdirs()))); - diff --git a/documentation_source/src/documentation/skins/forrest-css/xslt/fo/document2fo.xsl b/documentation_source/src/documentation/skins/forrest-css/xslt/fo/document2fo.xsl deleted file mode 100755 index 9b845e7044de..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/xslt/fo/document2fo.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/forrest-css/xslt/html/book2menu.xsl b/documentation_source/src/documentation/skins/forrest-css/xslt/html/book2menu.xsl deleted file mode 100755 index 1b8cd6705e3a..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/xslt/html/book2menu.xsl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - -
  • - -
      - -
    -
  • -
    - - - - -
  • - -
  • -
    - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/forrest-css/xslt/html/document2html.xsl b/documentation_source/src/documentation/skins/forrest-css/xslt/html/document2html.xsl deleted file mode 100755 index 820e8737e6c1..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/xslt/html/document2html.xsl +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - - -
    - - -

    -
    - - -

    - -

    -
    - - - - -
    - - - by - , - - - -
    -
    - -
    -
    - - - - - - 1 - - - - - - - - -
  • - - - # - - - -
  • -
    -
    - - - - - - -
      - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -

    - -
    - -

    -
    -
    - - -

    - -
    - -
    -
    - -

    - - -
    - - -
    - -
    -
    - -
    - - - -
    -
    - - Note - Warning - Fixme ( - - - ) - -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PDFPDF version - - - -
    diff --git a/documentation_source/src/documentation/skins/forrest-css/xslt/html/site2xhtml.xsl b/documentation_source/src/documentation/skins/forrest-css/xslt/html/site2xhtml.xsl deleted file mode 100755 index 0ad953d57a61..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/xslt/html/site2xhtml.xsl +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - - - - - - - - - - - <xsl:value-of select="div[@class='content']/h1"/> - - - - - - - - -
    -
    - - - - - - - - grouplogo - grouplogolink - - - - - - - - - - - -
    - - the site - -
    -
    - - - - - - - - - - - projectlogo - projectlogolink - - - -
    -
    - -
    - - - - - -
    - - - -

    -


    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {$name} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/forrest-css/xslt/html/tab2menu.xsl b/documentation_source/src/documentation/skins/forrest-css/xslt/html/tab2menu.xsl deleted file mode 100755 index 6e36ecb8eefc..000000000000 --- a/documentation_source/src/documentation/skins/forrest-css/xslt/html/tab2menu.xsl +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - -
    -

    - -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/forrest-site/css/page.css b/documentation_source/src/documentation/skins/forrest-site/css/page.css deleted file mode 100755 index 83db96035523..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/css/page.css +++ /dev/null @@ -1,71 +0,0 @@ -body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%; } - -a:link { color: #0F3660; } -a:visited { color: #009999; } -a:active { color: #000066; } -a:hover { color: #000066; } - -img { border: 0; } - -.menu { background-color: #4C6C8F; margin: 0px; padding: 3px 8px 5px 3px; font-size : 90%; } -.menu a:link { color: #FFFFFF; text-decoration : none; } -.menu a:visited { color: #FFFFFF; text-decoration : none; } -.menu a:hover { color: #FFCC00; text-decoration : none; } -.menu ul { margin: 0px 0px 0px 20px; padding: 0px; } -.menu li { list-style-image: url('images/label.gif'); font-weight : bold; } -.menu ul ul li .sel { list-style-image: url('images/current.gif'); font-weight : normal; } -.menu ul ul li { list-style-image: url('images/page.gif'); font-weight : normal; } - -.menu .base-seleted {color: #000000; } -.menu .base-not-selected { font-family: Verdana, Helvetica, sans-serif; } - -.tab { font-size : 85%; border: 0 } -.tab a:link { text-decoration : none; } -.tab a:visited { text-decoration : none; color: #2A4A6D } -.tab a:hover { color: #000066; } - -table .title { background-color: #FFFFFF; width:100%; border: 0px; } -.dida { font-size: 80%; } - -.pre { white-space: pre;} - -.content { padding: 5px 5px 5px 10px; font : small Verdana, Helvetica, sans-serif; font-size : 90%; } -.content .ForrestTable { width: 100%; background-color: #7099C5; color: #ffffff; font-size : 90%;} -.content .ForrestTable th a:link { color: white; } -.content .ForrestTable th a:visited { color: #cfdced; } -.content .ForrestTable th a:active { color: #000066; } -.content .ForrestTable th a:hover { color: #000066; } -.content .ForrestTable caption { text-align: left; color: black; font-weight: bold; } -.content .ForrestTable th { text-align: center; } -.content .ForrestTable td { background-color: #f0f0ff; color: black; } -.content .attribution { text-align: right; font-style: italic; font-size: 90% } - -.frame { margin: 5px 20px 5px 20px; font-size: 90%; } -.frame .content { margin: 0px; } - -.note { border: solid 1px #7099C5; background-color: #f0f0ff; } -.note .label { background-color: #7099C5; color: #ffffff; } - -.warning { border: solid 1px #D00000; background-color: #fff0f0; } -.warning .label { background-color: #D00000; color: #ffffff; } - -.fixme { border: solid 1px #C6C600; background-color: #FAF9C3; } -.fixme .label { background-color: #C6C600; color: #ffffff; } - -.code { border-color: #CFDCED; border-style: solid; border-width: 1px; } -.codefrag { font-family: "Courier New", Courier, monospace; } - -.highlight { background-color: yellow; } - -.minitoc {margin: 5px 5px 5px 40px;} - -.dtdElement { width: 100%; font-size: 90%; background-color : #ffffff; } - -.dtdTag { color: #990000; text-transform : uppercase; font-style : normal; font-size : 120%; font-weight : bold; } - - -@media print { - .menu { - display: none; - } -} diff --git a/documentation_source/src/documentation/skins/forrest-site/scripts/breadcrumbs-optimized.js b/documentation_source/src/documentation/skins/forrest-site/scripts/breadcrumbs-optimized.js deleted file mode 100755 index bf0c44fe4356..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/scripts/breadcrumbs-optimized.js +++ /dev/null @@ -1,67 +0,0 @@ -var PREPREND_CRUMBS=new Array(); -PREPREND_CRUMBS.push(new Array("Apache","http://www.apache.org/")); -PREPREND_CRUMBS.push(new Array("Jakarta","http://jakarta.apache.org/")); -var DISPLAY_SEPARATOR=" > "; -var DISPLAY_PREPREND=""; -var DISPLAY_POSTPREND=":"; -var CSS_CLASS_CRUMB="breadcrumb"; -var CSS_CLASS_TRAIL="breadcrumbTrail"; -var CSS_CLASS_SEPARATOR="crumbSeparator"; -var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); -var PATH_SEPARATOR="/"; - -function sc(s) { - var l=s.toLowerCase(); - return l.substr(0,1).toUpperCase()+l.substr(1); -} -function getdirs() { - var t=document.location.pathname.split(PATH_SEPARATOR); - var lc=t[t.length-1]; - for(var i=0;i < FILE_EXTENSIONS.length;i++) - { - if(lc.indexOf(FILE_EXTENSIONS[i])) - return t.slice(1,t.length-1); } - return t.slice(1,t.length); -} -function getcrumbs( d ) -{ - var pre = "/"; - var post = "/"; - var c = new Array(); - if( d != null ) - { - for(var i=0;i < d.length;i++) { - pre+=d[i]+postfix; - c.push(new Array(d[i],pre)); } - } - if(PREPREND_CRUMBS.length > 0 ) - return PREPREND_CRUMBS.concat( c ); - return c; -} -function gettrail( c ) -{ - var h=DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=DISPLAY_SEPARATOR; } - return h+DISPLAY_POSTPREND; -} - -function gettrailXHTML( c ) -{ - var h=''+DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=''+DISPLAY_SEPARATOR+''; } - return h+DISPLAY_POSTPREND+''; -} - -if(document.location.href.toLowerCase().indexOf("http://")==-1) - document.write(gettrail(getcrumbs())); -else - document.write(gettrail(getcrumbs(getdirs()))); - diff --git a/documentation_source/src/documentation/skins/forrest-site/xslt/fo/document2fo.xsl b/documentation_source/src/documentation/skins/forrest-site/xslt/fo/document2fo.xsl deleted file mode 100755 index 9b845e7044de..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/xslt/fo/document2fo.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/forrest-site/xslt/html/book2menu.xsl b/documentation_source/src/documentation/skins/forrest-site/xslt/html/book2menu.xsl deleted file mode 100755 index 4280a02208c0..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/xslt/html/book2menu.xsl +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - -
  • - -
      - -
    -
  • -
    - - - - -
  • - -
  • -
    - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/forrest-site/xslt/html/document2html.xsl b/documentation_source/src/documentation/skins/forrest-site/xslt/html/document2html.xsl deleted file mode 100755 index 4ac4d50aca94..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/xslt/html/document2html.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/documentation_source/src/documentation/skins/forrest-site/xslt/html/site2xhtml.xsl b/documentation_source/src/documentation/skins/forrest-site/xslt/html/site2xhtml.xsl deleted file mode 100755 index 62eb5357ddad..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/xslt/html/site2xhtml.xsl +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - - - - - - - - <xsl:value-of select="div[@class='content']/table/tr/td/h1"/> - - - - ================= start Navigation Path ================== - - - - - - - -
    - - ===== breadcrumb trail (javascript-generated) ==== - - -
    - -
    - - - - - - - - - - - - - {$name} logo - - - - - - - - - - - -
    -
    - -
    - - - - - - - -
    -
    - -
    - ================= end Footer ================== - - -
    - - - - - ================= start left top NavBar ================== - - ================= end left top NavBar ================== - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    -
    - ================= start Menu items ================== - - ================= end Menu items ================== -
    - - - - - -
    -
    - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/forrest-site/xslt/html/tab2menu.xsl b/documentation_source/src/documentation/skins/forrest-site/xslt/html/tab2menu.xsl deleted file mode 100755 index 6168d3256e84..000000000000 --- a/documentation_source/src/documentation/skins/forrest-site/xslt/html/tab2menu.xsl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - -
    - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    - -
    - - - - - - - - - - - - -
    - - - - - -
    -
    - -
    - -
    diff --git a/documentation_source/src/documentation/skins/krysalis-site/css/page.css b/documentation_source/src/documentation/skins/krysalis-site/css/page.css deleted file mode 100755 index edef43af1537..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/css/page.css +++ /dev/null @@ -1,305 +0,0 @@ - -body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%; } - -p { margin: 10px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; font-size : 100%; } - -.textheader { display: none; } -.headerlogo { padding: 0px 2px 2px 0px; } - -.spacer { border: 0; margin: 0px; } -.skin { border: 0; margin: 0px;} -.figure { border: 0; vertical-align: top ; margin-top: 10px; margin-bottom: 10px; } -img { border: 0; margin-top: 5px; margin-bottom: 5px; } -/* Leave out vertical align until I figure out why IE isn't picking up the .skin/.spacer styles (JT) */ -/*vertical-align: top*/ - - -a:link { color: #0F3660; } -a:visited { color: #000044; } -a:active { color: #800000; } -a:hover { border: 0px solid #a5b6c6; background: #CFDCED; } - -.menu a:link { color: #000000; font-weight: normal;} -.menu a:visited { color: #000000; font-weight: normal; } -.menu a:active { color: #000000; font-weight: normal; } -.menu a:hover { color: #000000; font-weight: normal; } - -.menu { background-color: #F7F7F7; - padding: 8px 0px 4px 0px; - margin: 0px; - font-size : 70%; -} - - -.menutitle { - cursor:pointer; - padding: 0px 3px 5px 10px; - background-image: url('images/chapter.gif'); - background-repeat: no-repeat; - background-position: center left; - font-weight : bold;} - -.menu .menuitemgroup { - margin: 0px 0px 6px 8px; - padding: 0px; - font-weight : bold; } - -.menu .selectedmenuitemgroup{ - margin: 0px 0px 6px 8px; - padding: 0px; - font-weight : bold; } - -.menu .menuitem { - padding: 0px 0px 2px 10px; - background-image: url('images/page.gif'); - background-repeat: no-repeat; - background-position: center left; - font-weight : normal; -} - -.menu .menupage { - padding: 4px 3px 5px 10px; - background-image: url('images/current.gif'); - background-repeat: no-repeat; - background-position: top left; - font-style : normal; - - -} - -.menu .menupagetitle { - padding: 0px 0px 0px 6px; - font-style : normal; - background-color:#CFDCED; - border-color: #a5b6c6; - border-style: solid; - border-width: 1px; - -} - -.menu .menupageitemgroup { - padding: 3px 0px 4px 6px; - font-style : normal; - background-color:#ffffff; - border-color: #a5b6c6; - border-style: solid; - border-width: 1px; - -} - -.menu .menupageitem { - - font-style : normal; - font-weight : normal; - border-width: 0px; - font-size : 90%; -} - - -.smallerfont { - font-size : 100%; - padding: 0px 0px 0px 0px; -} - - -.biggerfont { - font-size : 100%; - font-weight : bold; - padding: 0px 0px 0px 0px; -} - -.resetfont { - font-size : 100%; - font-weight : normal; - padding: 0px 0px 0px 0px; -} - -table .title { background-color: #FFFFFF; width:100%; border: 0px; } -.dida { font-size: 80%; } - -.pre { white-space: pre;} - -h1 { font-size : 160%; margin: 0px 0px 0px 0px; padding: 0px; } -h2 { font-size : 140%; margin: 10px 0px 0px 0px; padding: 0px; font-weight : bold;} -h3 { font-size : 130%; margin: 18px 0px 0px 0px; padding: 0px; font-weight : bold; } -h4 { font-size : 120%; margin: 18px 0px 0px 0px; padding: 0px; font-weight : normal; text-align: left; } -h4.faq { font-size : 120%; margin: 18px 0px 0px 0px; padding: 0px; font-weight : bold; text-align: left; } -h5 { font-size : 100%; margin: 14px 0px 0px 0px; padding: 0px; font-weight : normal; text-align: left; } - -.content { padding: 5px 5px 5px 10px; font : small Verdana, Helvetica, sans-serif; font-size : 80%; } -.content .ForrestTable { width: 100%; background-color: #7099C5; color: #ffffff; font-size : 100%;} -.content .ForrestTable caption { text-align: left; color: black; font-weight: bold; } -.content .ForrestTable th { text-align: center; } -.content .ForrestTable td { background-color: #f0f0ff; color: black; } - - -.note, .warning, .fixme { - border-top: 3px solid #900; - border-bottom: 3px solid #900; - background-image: url(images/icon_error_lrg.gif); - background-repeat: no-repeat; - background-position: 0 1.33em; - margin: 1.33em 0; - padding: .33em 0 .67em 36px; - min-height: 32px; -} - - -.fixme { - background-image: url(images/icon_warning_lrg.gif); - border-color: #c60; -} - -.note { - background-image: url(images/icon_info_lrg.gif); - border-color: #069; -} - -.label{ - font-weight: bold; -} - - -.code { background-color: #F7F7F7; - border-color: #CFDCED; - border-style: solid; - border-width: 1px; - font-size : 120%; - padding: 1em 1.33em 1em 1.33em; -} - -.codefrag { font-family: "Courier New", Courier, monospace; font-size : 120%;} - -.highlight { background-color: yellow; } - -.minitoc { list-style-image: url('images/current.gif'); font-weight : normal;} - -.search { font-size : 70%; } -.footnote { font-size : 70%; } -.datenote { font-size : 60%; color: #F7F7F7;} - -input { font-size : 100% } -submit { font-size : 100% } -button { font-size : 100% } -textarea { font-size : 100% } - -.tab { font-size : 85%; border: 0 } - -.tab a:link { font-weight: normal;} -.tab a:visited { font-weight: normal; } -.tab a:active { font-weight: normal; } -.tab a:hover { font-weight: normal; } - -.trail { font-size: 70%; } - -.trail a:link { font-weight: normal;} -.trail a:visited { font-weight: normal; } -.trail a:active { font-weight: normal; } -.trail a:hover { font-weight: normal; } - - -.dtdTag { color: #990000; text-transform : uppercase; font-style : normal; font-size : 120%; font-weight : bold; } - -.top-left { - background-color: #a5b6c6; - background-image: url(images/top-left.png); - background-repeat: no-repeat; - background-position: top left; - width : 5px; - height : 5px; -} - -.top-right { - background-color: #a5b6c6; - background-image: url(images/top-right.png); - background-repeat: no-repeat; - background-position: top right; - width : 5px; - height : 5px; -} - -.top-left-tab { - background-color: #cedfef; - background-image: url(images/top-left.png); - background-repeat: no-repeat; - background-position: top left; - width : 5px; - height : 5px; -} - -.top-right-tab { - background-color: #cedfef; - background-image: url(images/top-right.png); - background-repeat: no-repeat; - background-position: top right; - width : 5px; - height : 5px; -} - - -.bottom-left { - background-color: #a5b6c6; - background-image: url(images/bottom-left.png); - background-repeat: no-repeat; - background-position: bottom left; - width : 5px; - height : 5px; -} - -.bottom-right { - background-color: #a5b6c6; - background-image: url(images/bottom-right.png); - background-repeat: no-repeat; - background-position: bottom right; - width : 5px; - height : 5px; -} - -.bottom-left-thick { - background-color: #a5b6c6; - background-image: url(images/bottom-left.png); - background-repeat: no-repeat; - background-position: bottom left; - width : 5px; - height : 9px; -} - -.bottom-right-thick { - background-color: #a5b6c6; - background-image: url(images/bottom-right.png); - background-repeat: no-repeat; - background-position: bottom right; - width : 5px; - height : 9px; -} - - -@media print { - .headerlogo { display: none; } - .textheader { display: block; font-size : 70%; } - .menu { display: none; } - .dida { display: none; } - .minitoc { display: none; } - .search { display: none; } - .datenote { display: none; } - /*.footnote { display: none; }*/ - .tab { display: none; } - .trail { display: none; } - .logos { display: none; } - - .top-left { display: none; } - .top-right { display: none; } - .top-left-tab { display: none; } - .top-right-tab { display: none; } - .bottom-left { display: none; } - .bottom-right { display: none; } - .bottom-left-thick { display: none; } - .bottom-right-thick { display: none; } - -} - - - - - - diff --git a/documentation_source/src/documentation/skins/krysalis-site/scripts/breadcrumbs-optimized.js b/documentation_source/src/documentation/skins/krysalis-site/scripts/breadcrumbs-optimized.js deleted file mode 100755 index bf0c44fe4356..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/scripts/breadcrumbs-optimized.js +++ /dev/null @@ -1,67 +0,0 @@ -var PREPREND_CRUMBS=new Array(); -PREPREND_CRUMBS.push(new Array("Apache","http://www.apache.org/")); -PREPREND_CRUMBS.push(new Array("Jakarta","http://jakarta.apache.org/")); -var DISPLAY_SEPARATOR=" > "; -var DISPLAY_PREPREND=""; -var DISPLAY_POSTPREND=":"; -var CSS_CLASS_CRUMB="breadcrumb"; -var CSS_CLASS_TRAIL="breadcrumbTrail"; -var CSS_CLASS_SEPARATOR="crumbSeparator"; -var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); -var PATH_SEPARATOR="/"; - -function sc(s) { - var l=s.toLowerCase(); - return l.substr(0,1).toUpperCase()+l.substr(1); -} -function getdirs() { - var t=document.location.pathname.split(PATH_SEPARATOR); - var lc=t[t.length-1]; - for(var i=0;i < FILE_EXTENSIONS.length;i++) - { - if(lc.indexOf(FILE_EXTENSIONS[i])) - return t.slice(1,t.length-1); } - return t.slice(1,t.length); -} -function getcrumbs( d ) -{ - var pre = "/"; - var post = "/"; - var c = new Array(); - if( d != null ) - { - for(var i=0;i < d.length;i++) { - pre+=d[i]+postfix; - c.push(new Array(d[i],pre)); } - } - if(PREPREND_CRUMBS.length > 0 ) - return PREPREND_CRUMBS.concat( c ); - return c; -} -function gettrail( c ) -{ - var h=DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=DISPLAY_SEPARATOR; } - return h+DISPLAY_POSTPREND; -} - -function gettrailXHTML( c ) -{ - var h=''+DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=''+DISPLAY_SEPARATOR+''; } - return h+DISPLAY_POSTPREND+''; -} - -if(document.location.href.toLowerCase().indexOf("http://")==-1) - document.write(gettrail(getcrumbs())); -else - document.write(gettrail(getcrumbs(getdirs()))); - diff --git a/documentation_source/src/documentation/skins/krysalis-site/scripts/fontsize.js b/documentation_source/src/documentation/skins/krysalis-site/scripts/fontsize.js deleted file mode 100755 index cafe0bd63018..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/scripts/fontsize.js +++ /dev/null @@ -1,150 +0,0 @@ -function init() -{ //embedded in the doc - //ndeSetTextSize(); -} - -function checkBrowser(){ - if (!document.getElementsByTagName){ - return true; - } - else{ - return false; - } -} - - -function ndeSetTextSize(chgsize,rs) -{ - var startSize; - var newSize; - - if (!checkBrowser) - { - return; - } - - startSize = parseInt(ndeGetDocTextSize()); - - if (!startSize) - { - startSize = 16; - } - - switch (chgsize) - { - case 'incr': - newSize = startSize + 2; - break; - - case 'decr': - newSize = startSize - 2; - break; - - case 'reset': - if (rs) {newSize = rs;} else {newSize = 16;} - break; - - default: - try{ - newSize = parseInt(ndeReadCookie("nde-textsize")); - } - catch(e){ - alert(e); - } - - if (!newSize || newSize == 'NaN') - { - newSize = startSize; - } - break; - - } - - if (newSize < 10) - { - newSize = 10; - } - - newSize += 'px'; - - document.getElementsByTagName('html')[0].style.fontSize = newSize; - document.getElementsByTagName('body')[0].style.fontSize = newSize; - - ndeCreateCookie("nde-textsize", newSize, 365); -} - -function ndeGetDocTextSize() -{ - if (!checkBrowser) - { - return 0; - } - - var size = 0; - var body = document.getElementsByTagName('body')[0]; - - if (body.style && body.style.fontSize) - { - size = body.style.fontSize; - } - else if (typeof(getComputedStyle) != 'undefined') - { - size = getComputedStyle(body,'').getPropertyValue('font-size'); - } - else if (body.currentStyle) - { - size = body.currentStyle.fontSize; - } - - //fix IE bug - if( isNaN(size)){ - if(size.substring(size.length-1)=="%"){ - return - } - - } - - return size; - -} - - - -function ndeCreateCookie(name,value,days) -{ - var cookie = name + "=" + value + ";"; - - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - cookie += " expires=" + date.toGMTString() + ";"; - } - cookie += " path=/"; - - document.cookie = cookie; - -} - -function ndeReadCookie(name) -{ - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - - for(var i = 0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0) == ' ') - { - c = c.substring(1, c.length); - } - - ctest = c.substring(0,name.length); - - if(ctest == name){ - return c.substring(nameEQ.length,c.length); - } - } - return null; -} diff --git a/documentation_source/src/documentation/skins/krysalis-site/scripts/menu.js b/documentation_source/src/documentation/skins/krysalis-site/scripts/menu.js deleted file mode 100755 index e14e58481d01..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/scripts/menu.js +++ /dev/null @@ -1,88 +0,0 @@ -/* - - ============================================================================ - The Apache Software License, Version 1.1 - ============================================================================ - - Copyright (C) 2002-2003 The Apache Software Foundation. All rights reserved. - - Redistribution and use in source and binary forms, with or without modifica- - tion, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. The end-user documentation included with the redistribution, if any, must - include the following acknowledgment: "This product includes software - developed by the Apache Software Foundation (http://www.apache.org/)." - Alternately, this acknowledgment may appear in the software itself, if - and wherever such third-party acknowledgments normally appear. - - 4. The names "Apache Forrest" and "Apache Software Foundation" - must not be used to endorse or promote products derived from this software - without prior written permission. For written permission, please contact - apache@apache.org. - - 5. Products derived from this software may not be called "Apache", nor may - "Apache" appear in their name, without prior written permission of the - Apache Software Foundation. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- - DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - This software consists of voluntary contributions made by many individuals - on behalf of the Apache Software Foundation. For more information on the - Apache Software Foundation, please see . - -*/ - -/** - * This script, when included in a html file, can be used to make collapsible menus - * - * Typical usage: - * - * - *@author Nicola Ken Barozzi - *@created July 21, 2003 - *@version 1.0 - */ - -if (document.getElementById){ - document.write('') -} - -function SwitchMenu(obj) -{ - if(document.getElementById) { - var el = document.getElementById(obj); - var title = document.getElementById(obj+'Title'); - - if(obj.indexOf("_selected_")==0&&el.style.display == ""){ - //nicolaken: doesn't work :-( - //title.style.backgroundImage = "url('images/chapter_open.gif')"; - el.style.display = "block"; - } - - if(el.style.display != "block"){ - //nicolaken: doesn't work :-( - //title.style.backgroundImage = 'url([url]images/chapter_open.gif[/url])'; - el.style.display = "block"; - }else{ - //nicolaken: doesn't work :-( - //title.style.backgroundImage = "url('images/chapter.gif')"; - el.style.display = "none"; - } - }// end - if(document.getElementById) -}//end - function SwitchMenu(obj) diff --git a/documentation_source/src/documentation/skins/krysalis-site/xslt/fo/document2fo.xsl b/documentation_source/src/documentation/skins/krysalis-site/xslt/fo/document2fo.xsl deleted file mode 100755 index 9b845e7044de..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/xslt/fo/document2fo.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/book2menu.xsl b/documentation_source/src/documentation/skins/krysalis-site/xslt/html/book2menu.xsl deleted file mode 100755 index 1b8cd6705e3a..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/book2menu.xsl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - -
  • - -
      - -
    -
  • -
    - - - - -
  • - -
  • -
    - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/document2html.xsl b/documentation_source/src/documentation/skins/krysalis-site/xslt/html/document2html.xsl deleted file mode 100755 index 2920ce6413da..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/document2html.xsl +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - -
    - - - - - - - -
    -

    - -

    -
    -
    - -

    - -

    -
    - - - - -

    - - - - by  - - - - - -

    -
    - -
    -
    - - - - - - - - - - # - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    - -
    - -
    - - - - - - - - - - - - - - - - -

    - -
    - - -

    -
    -
    - -
    - - -

    - - -
    - - -
    - -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/site2xhtml.xsl b/documentation_source/src/documentation/skins/krysalis-site/xslt/html/site2xhtml.xsl deleted file mode 100755 index 18bc99a2733d..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/site2xhtml.xsl +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - - - - - - - - - - - - <xsl:value-of select="div[@class='content']/table/tr/td/h1"/> - - - - - - - - - ================= start Banner ================== - - - - - ================= start Group Logo ================== - - ================= end Group Logo ================== - ================= start Project Logo ================== - - ================= end Project Logo ================== - - ================= start Search ================== - - ================= end Search ================== - - - - - - - - - - -
    - - - - - - - - -
    - ================= start Tabs ================== - - ================= end Tabs ================== -
    - - -
    - ================= end Banner ================== - - - ================= start Menu, NavBar, Content ================== - - - - - - - - - -
    - - - - - - - - ================= start middle NavBar ================== - - - - - - - - ================= end middle NavBar ================== - - ================= start Content================== - - - - - - ================= end Content================== - -
    - - - - - -
    - - -   - - - - - - - Font size: -   -   -   - - -
    -
    -   -
    - -
    -
    -

    -
    - ================= end Menu, NavBar, Content ================== - - ================= start Footer ================== - - - - - - -
    - - - - - - - -
    -
    - - - -
    - - - - - - - -
    - - - - -
    - ================= end Footer ================== - - -
    - - - - - - ================= start left top NavBar ================== - - ================= end left top NavBar ================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    -
    - - ================= start Menu items ================== - - - - ================= end Menu items ================== -
    - - {$name} logo - - - - - - - - - -
    -
    - - - - - - - - - - - - - selectedmenuitemgroup - menuitemgroup - - - - - -
    - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - -
    diff --git a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/tab2menu.xsl b/documentation_source/src/documentation/skins/krysalis-site/xslt/html/tab2menu.xsl deleted file mode 100755 index 47ae508f9e62..000000000000 --- a/documentation_source/src/documentation/skins/krysalis-site/xslt/html/tab2menu.xsl +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -
    - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - -
    - -
    - - - - - - - - - - - - -
    - - - -
    -
    - -
    - -
    diff --git a/documentation_source/src/documentation/status.xmap b/documentation_source/src/documentation/status.xmap deleted file mode 100755 index 39bd602c970f..000000000000 --- a/documentation_source/src/documentation/status.xmap +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - -//Netscape Communications//DTD RSS 0.91//EN - http://my.netscape.com/publish/formats/rss-0.91.dtd - ISO-8859-1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation_source/src/documentation/this-should-never-be-used/favicon.ico b/documentation_source/src/documentation/this-should-never-be-used/favicon.ico deleted file mode 100755 index 161bcf7841cb..000000000000 Binary files a/documentation_source/src/documentation/this-should-never-be-used/favicon.ico and /dev/null differ diff --git a/documentation_source/status.xml b/documentation_source/status.xml deleted file mode 100644 index 71b0ff772076..000000000000 --- a/documentation_source/status.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - Initial Import - - - - - - - - - Customize this template project with your project's details. This - TODO list is generated from 'status.xml'. - - - Add lots of content. XML content goes in - src/documentation/content/xdocs, or wherever the - ${project.xdocs-dir} property (set in - forrest.properties) points. - - - Mail forrest-dev@xml.apache.org - with feedback. - - - - - - diff --git a/plugins/README b/plugins/README deleted file mode 100644 index b61867f68b34..000000000000 --- a/plugins/README +++ /dev/null @@ -1,2 +0,0 @@ -This module contains QGIS plugins that are developed outside the -QGIS source tree. diff --git a/plugins/fishing_spots/COPYING b/plugins/fishing_spots/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/fishing_spots/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/fishing_spots/INSTALL b/plugins/fishing_spots/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/fishing_spots/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/fishing_spots/Makefile.am b/plugins/fishing_spots/Makefile.am deleted file mode 100644 index 7b2292b49ec7..000000000000 --- a/plugins/fishing_spots/Makefile.am +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libFishingSpots.la - -## qt designer user-interface files -plugin_UI = pluginguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = plugin.moc.cpp plugingui.moc.cpp - - -libFishingSpots_la_SOURCES = plugin.cpp \ - plugin.h \ - plugingui.cpp \ - plugingui.h \ - utils.c \ - shpopen.c \ - dbfopen.c \ - shapefile.h \ - shapefilemaker.cpp \ - shapefilemaker.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libFishingSpots_la_SOURCES = $(plugin_MOC) - -libFishingSpots_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CXXFLAGS) $(GDAL_CFLAGS) -libFishingSpots_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm - - - - - diff --git a/plugins/fishing_spots/README b/plugins/fishing_spots/README deleted file mode 100644 index e794b646a5e4..000000000000 --- a/plugins/fishing_spots/README +++ /dev/null @@ -1,15 +0,0 @@ -############################################## - QGIS PLUGIN TEMPLATE DIRECTORY - - T.Sutton 2004 -############################################## - -Please do not edit the files in this directory -unless you know exactly what you are doing - -these files are used as the basis for creating -new plugins. Altering these files may break -the automated plugin template generation process. - -Please visit: http://mrcc.com/qgiswiki/PluginDevelopersGuide - -For more information on creating plugins. diff --git a/plugins/fishing_spots/autogen.sh b/plugins/fishing_spots/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/fishing_spots/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/fishing_spots/configure.ac b/plugins/fishing_spots/configure.ac deleted file mode 100644 index dfbe9476f5de..000000000000 --- a/plugins/fishing_spots/configure.ac +++ /dev/null @@ -1,48 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(plugin, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([plugingui.h]) - -AM_INIT_AUTOMAKE(plugin, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(BOOST_PATH) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/fishing_spots/dbfopen.c b/plugins/fishing_spots/dbfopen.c deleted file mode 100644 index 0e743d17ec8f..000000000000 --- a/plugins/fishing_spots/dbfopen.c +++ /dev/null @@ -1,1082 +0,0 @@ -/****************************************************************************** - * $Id$ - * - * Project: Shapelib - * Purpose: Implementation of .dbf access API documented in dbf_api.html. - * Author: Frank Warmerdam, warmerda@home.com - * - ****************************************************************************** - * Copyright (c) 1999, Frank Warmerdam - * - * This software is available under the following "MIT Style" license, - * or at the option of the licensee under the LGPL (see LICENSE.LGPL). This - * option is discussed in more detail in shapelib.html. - * - * -- - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - * - * $Log$ - * Revision 1.1 2004/04/24 00:59:39 timlinux - * Added shapefile builder libs and start of generic shapefilemaker class that Ill eventually move into qgis core. Modified makefile to build this stuff. - * - * Revision 1.1 2004/04/05 15:39:45 timlinux - * Initial commit of new plugin to build graticules - not working yet! And thus not added to higher level makefiles yet. - * - * Revision 1.2 2004/03/31 20:36:46 timlinux - * Fix for knock on effects of change of filename from shapefil.h to shapefile.h - * - * Revision 1.1 2004/03/22 23:38:25 timlinux - * This is a c++ first draft of a port of a perl script by Schuyler to import Garmin gps dump files as a shapefile. The resulting imported file will be displayed in the map view. At the moment it only generates a point layer of the waypoints but a future version will generate polylines and perhaps polygons too using similar logic to that used by Shuylers perl stuff. Note this plugin is still under construction and I am commiting it mainly so that other developers can assist me when I get stuck. Also note that the plugins Makefile builds a standalone app based on the plugin gui that can be run separately from qgis. - * - * Revision 1.22 1999/12/15 13:47:24 warmerda - * Added stdlib.h to ensure that atof() is prototyped. - * - * Revision 1.21 1999/12/13 17:25:46 warmerda - * Added support for upper case .DBF extention. - * - * Revision 1.20 1999/11/30 16:32:11 warmerda - * Use atof() instead of sscanf(). - * - * Revision 1.19 1999/11/05 14:12:04 warmerda - * updated license terms - * - * Revision 1.18 1999/07/27 00:53:28 warmerda - * ensure that whole old field value clear on write of string - * - * Revision 1.1 1999/07/05 18:58:07 warmerda - * New - * - * Revision 1.17 1999/06/11 19:14:12 warmerda - * Fixed some memory leaks. - * - * Revision 1.16 1999/06/11 19:04:11 warmerda - * Remoted some unused variables. - * - * Revision 1.15 1999/05/11 03:19:28 warmerda - * added new Tuple api, and improved extension handling - add from candrsn - * - * Revision 1.14 1999/05/04 15:01:48 warmerda - * Added 'F' support. - * - * Revision 1.13 1999/03/23 17:38:59 warmerda - * DBFAddField() now actually does return the new field number, or -1 if - * it fails. - * - * Revision 1.12 1999/03/06 02:54:46 warmerda - * Added logic to convert shapefile name to dbf filename in DBFOpen() - * for convenience. - * - * Revision 1.11 1998/12/31 15:30:34 warmerda - * Improved the interchangability of numeric and string attributes. Add - * white space trimming option for attributes. - * - * Revision 1.10 1998/12/03 16:36:44 warmerda - * Use r+b instead of rb+ for binary access. - * - * Revision 1.9 1998/12/03 15:34:23 warmerda - * Updated copyright message. - * - * Revision 1.8 1997/12/04 15:40:15 warmerda - * Added newline character after field definitions. - * - * Revision 1.7 1997/03/06 14:02:10 warmerda - * Ensure bUpdated is initialized. - * - * Revision 1.6 1996/02/12 04:54:41 warmerda - * Ensure that DBFWriteAttribute() returns TRUE if it succeeds. - * - * Revision 1.5 1995/10/21 03:15:12 warmerda - * Changed to use binary file access, and ensure that the - * field name field is zero filled, and limited to 10 chars. - * - * Revision 1.4 1995/08/24 18:10:42 warmerda - * Added use of SfRealloc() to avoid pre-ANSI realloc() functions such - * as on the Sun. - * - * Revision 1.3 1995/08/04 03:15:16 warmerda - * Fixed up header. - * - * Revision 1.2 1995/08/04 03:14:43 warmerda - * Added header. - */ - -static char rcsid[] = - "$Id$"; - -#include "shapefile.h" - -#include -#include - -typedef unsigned char uchar; - -#ifndef FALSE -# define FALSE 0 -# define TRUE 1 -#endif - -static int nStringFieldLen = 0; -static char * pszStringField = NULL; - -/************************************************************************/ -/* SfRealloc() */ -/* */ -/* A realloc cover function that will access a NULL pointer as */ -/* a valid input. */ -/************************************************************************/ - -static void * SfRealloc( void * pMem, int nNewSize ) - -{ - if( pMem == NULL ) - return( (void *) malloc(nNewSize) ); - else - return( (void *) realloc(pMem,nNewSize) ); -} - -/************************************************************************/ -/* DBFWriteHeader() */ -/* */ -/* This is called to write out the file header, and field */ -/* descriptions before writing any actual data records. This */ -/* also computes all the DBFDataSet field offset/size/decimals */ -/* and so forth values. */ -/************************************************************************/ - -static void DBFWriteHeader(DBFHandle psDBF) - -{ - uchar abyHeader[XBASE_FLDHDR_SZ]; - int i; - - if( !psDBF->bNoHeader ) - return; - - psDBF->bNoHeader = FALSE; - -/* -------------------------------------------------------------------- */ -/* Initialize the file header information. */ -/* -------------------------------------------------------------------- */ - for( i = 0; i < XBASE_FLDHDR_SZ; i++ ) - abyHeader[i] = 0; - - abyHeader[0] = 0x03; /* memo field? - just copying */ - - /* date updated on close, record count preset at zero */ - - abyHeader[8] = psDBF->nHeaderLength % 256; - abyHeader[9] = psDBF->nHeaderLength / 256; - - abyHeader[10] = psDBF->nRecordLength % 256; - abyHeader[11] = psDBF->nRecordLength / 256; - -/* -------------------------------------------------------------------- */ -/* Write the initial 32 byte file header, and all the field */ -/* descriptions. */ -/* -------------------------------------------------------------------- */ - fseek( psDBF->fp, 0, 0 ); - fwrite( abyHeader, XBASE_FLDHDR_SZ, 1, psDBF->fp ); - fwrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, psDBF->fp ); - -/* -------------------------------------------------------------------- */ -/* Write out the newline character if there is room for it. */ -/* -------------------------------------------------------------------- */ - if( psDBF->nHeaderLength > 32*psDBF->nFields + 32 ) - { - char cNewline; - - cNewline = 0x0d; - fwrite( &cNewline, 1, 1, psDBF->fp ); - } -} - -/************************************************************************/ -/* DBFFlushRecord() */ -/* */ -/* Write out the current record if there is one. */ -/************************************************************************/ - -static void DBFFlushRecord( DBFHandle psDBF ) - -{ - int nRecordOffset; - - if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 ) - { - psDBF->bCurrentRecordModified = FALSE; - - nRecordOffset = psDBF->nRecordLength * psDBF->nCurrentRecord - + psDBF->nHeaderLength; - - fseek( psDBF->fp, nRecordOffset, 0 ); - fwrite( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); - } -} - -/************************************************************************/ -/* DBFOpen() */ -/* */ -/* Open a .dbf file. */ -/************************************************************************/ - -DBFHandle DBFOpen( const char * pszFilename, const char * pszAccess ) - -{ - DBFHandle psDBF; - uchar *pabyBuf; - int nFields, nRecords, nHeadLen, nRecLen, iField, i; - char *pszBasename, *pszFullname; - -/* -------------------------------------------------------------------- */ -/* We only allow the access strings "rb" and "r+". */ -/* -------------------------------------------------------------------- */ - if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0 - && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0 - && strcmp(pszAccess,"r+b") != 0 ) - return( NULL ); - -/* -------------------------------------------------------------------- */ -/* Compute the base (layer) name. If there is any extension */ -/* on the passed in filename we will strip it off. */ -/* -------------------------------------------------------------------- */ - pszBasename = (char *) malloc(strlen(pszFilename)+5); - strcpy( pszBasename, pszFilename ); - for( i = strlen(pszBasename)-1; - i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' - && pszBasename[i] != '\\'; - i-- ) {} - - if( pszBasename[i] == '.' ) - pszBasename[i] = '\0'; - - pszFullname = (char *) malloc(strlen(pszBasename) + 5); - sprintf( pszFullname, "%s.dbf", pszBasename ); - - psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) ); - psDBF->fp = fopen( pszFullname, pszAccess ); - - if( psDBF->fp == NULL ) - { - sprintf( pszFullname, "%s.DBF", pszBasename ); - psDBF->fp = fopen(pszFullname, pszAccess ); - } - - free( pszBasename ); - free( pszFullname ); - - if( psDBF->fp == NULL ) - { - free( psDBF ); - return( NULL ); - } - - psDBF->bNoHeader = FALSE; - psDBF->nCurrentRecord = -1; - psDBF->bCurrentRecordModified = FALSE; - -/* -------------------------------------------------------------------- */ -/* Read Table Header info */ -/* -------------------------------------------------------------------- */ - pabyBuf = (uchar *) malloc(500); - fread( pabyBuf, 32, 1, psDBF->fp ); - - psDBF->nRecords = nRecords = - pabyBuf[4] + pabyBuf[5]*256 + pabyBuf[6]*256*256 + pabyBuf[7]*256*256*256; - - psDBF->nHeaderLength = nHeadLen = pabyBuf[8] + pabyBuf[9]*256; - psDBF->nRecordLength = nRecLen = pabyBuf[10] + pabyBuf[11]*256; - - psDBF->nFields = nFields = (nHeadLen - 32) / 32; - - psDBF->pszCurrentRecord = (char *) malloc(nRecLen); - -/* -------------------------------------------------------------------- */ -/* Read in Field Definitions */ -/* -------------------------------------------------------------------- */ - - pabyBuf = (uchar *) SfRealloc(pabyBuf,nHeadLen); - psDBF->pszHeader = (char *) pabyBuf; - - fseek( psDBF->fp, 32, 0 ); - fread( pabyBuf, nHeadLen, 1, psDBF->fp ); - - psDBF->panFieldOffset = (int *) malloc(sizeof(int) * nFields); - psDBF->panFieldSize = (int *) malloc(sizeof(int) * nFields); - psDBF->panFieldDecimals = (int *) malloc(sizeof(int) * nFields); - psDBF->pachFieldType = (char *) malloc(sizeof(char) * nFields); - - for( iField = 0; iField < nFields; iField++ ) - { - uchar *pabyFInfo; - - pabyFInfo = pabyBuf+iField*32; - - if( pabyFInfo[11] == 'N' || pabyFInfo[11] == 'F' ) - { - psDBF->panFieldSize[iField] = pabyFInfo[16]; - psDBF->panFieldDecimals[iField] = pabyFInfo[17]; - } - else - { - psDBF->panFieldSize[iField] = pabyFInfo[16] + pabyFInfo[17]*256; - psDBF->panFieldDecimals[iField] = 0; - } - - psDBF->pachFieldType[iField] = (char) pabyFInfo[11]; - if( iField == 0 ) - psDBF->panFieldOffset[iField] = 1; - else - psDBF->panFieldOffset[iField] = - psDBF->panFieldOffset[iField-1] + psDBF->panFieldSize[iField-1]; - } - - return( psDBF ); -} - -/************************************************************************/ -/* DBFClose() */ -/************************************************************************/ - -void DBFClose(DBFHandle psDBF) -{ -/* -------------------------------------------------------------------- */ -/* Write out header if not already written. */ -/* -------------------------------------------------------------------- */ - if( psDBF->bNoHeader ) - DBFWriteHeader( psDBF ); - - DBFFlushRecord( psDBF ); - -/* -------------------------------------------------------------------- */ -/* Update last access date, and number of records if we have */ -/* write access. */ -/* -------------------------------------------------------------------- */ - if( psDBF->bUpdated ) - { - uchar abyFileHeader[32]; - - fseek( psDBF->fp, 0, 0 ); - fread( abyFileHeader, 32, 1, psDBF->fp ); - - abyFileHeader[1] = 95; /* YY */ - abyFileHeader[2] = 7; /* MM */ - abyFileHeader[3] = 26; /* DD */ - - abyFileHeader[4] = psDBF->nRecords % 256; - abyFileHeader[5] = (psDBF->nRecords/256) % 256; - abyFileHeader[6] = (psDBF->nRecords/(256*256)) % 256; - abyFileHeader[7] = (psDBF->nRecords/(256*256*256)) % 256; - - fseek( psDBF->fp, 0, 0 ); - fwrite( abyFileHeader, 32, 1, psDBF->fp ); - } - -/* -------------------------------------------------------------------- */ -/* Close, and free resources. */ -/* -------------------------------------------------------------------- */ - fclose( psDBF->fp ); - - if( psDBF->panFieldOffset != NULL ) - { - free( psDBF->panFieldOffset ); - free( psDBF->panFieldSize ); - free( psDBF->panFieldDecimals ); - free( psDBF->pachFieldType ); - } - - free( psDBF->pszHeader ); - free( psDBF->pszCurrentRecord ); - - free( psDBF ); - - if( pszStringField != NULL ) - { - free( pszStringField ); - pszStringField = NULL; - nStringFieldLen = 0; - } -} - -/************************************************************************/ -/* DBFCreate() */ -/* */ -/* Create a new .dbf file. */ -/************************************************************************/ - -DBFHandle DBFCreate( const char * pszFilename ) - -{ - DBFHandle psDBF; - FILE *fp; - char *pszFullname, *pszBasename; - int i; - -/* -------------------------------------------------------------------- */ -/* Compute the base (layer) name. If there is any extension */ -/* on the passed in filename we will strip it off. */ -/* -------------------------------------------------------------------- */ - pszBasename = (char *) malloc(strlen(pszFilename)+5); - strcpy( pszBasename, pszFilename ); - for( i = strlen(pszBasename)-1; - i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' - && pszBasename[i] != '\\'; - i-- ) {} - - if( pszBasename[i] == '.' ) - pszBasename[i] = '\0'; - - pszFullname = (char *) malloc(strlen(pszBasename) + 5); - sprintf( pszFullname, "%s.dbf", pszBasename ); - free( pszBasename ); - -/* -------------------------------------------------------------------- */ -/* Create the file. */ -/* -------------------------------------------------------------------- */ - fp = fopen( pszFullname, "wb" ); - if( fp == NULL ) - return( NULL ); - - fputc( 0, fp ); - fclose( fp ); - - fp = fopen( pszFullname, "rb+" ); - if( fp == NULL ) - return( NULL ); - - free( pszFullname ); - -/* -------------------------------------------------------------------- */ -/* Create the info structure. */ -/* -------------------------------------------------------------------- */ - psDBF = (DBFHandle) malloc(sizeof(DBFInfo)); - - psDBF->fp = fp; - psDBF->nRecords = 0; - psDBF->nFields = 0; - psDBF->nRecordLength = 1; - psDBF->nHeaderLength = 33; - - psDBF->panFieldOffset = NULL; - psDBF->panFieldSize = NULL; - psDBF->panFieldDecimals = NULL; - psDBF->pachFieldType = NULL; - psDBF->pszHeader = NULL; - - psDBF->nCurrentRecord = -1; - psDBF->bCurrentRecordModified = FALSE; - psDBF->pszCurrentRecord = NULL; - - psDBF->bNoHeader = TRUE; - - return( psDBF ); -} - -/************************************************************************/ -/* DBFAddField() */ -/* */ -/* Add a field to a newly created .dbf file before any records */ -/* are written. */ -/************************************************************************/ - -int DBFAddField(DBFHandle psDBF, const char * pszFieldName, - DBFFieldType eType, int nWidth, int nDecimals ) - -{ - char *pszFInfo; - int i; - -/* -------------------------------------------------------------------- */ -/* Do some checking to ensure we can add records to this file. */ -/* -------------------------------------------------------------------- */ - if( psDBF->nRecords > 0 ) - return( -1 ); - - if( !psDBF->bNoHeader ) - return( -1 ); - - if( eType != FTDouble && nDecimals != 0 ) - return( -1 ); - -/* -------------------------------------------------------------------- */ -/* SfRealloc all the arrays larger to hold the additional field */ -/* information. */ -/* -------------------------------------------------------------------- */ - psDBF->nFields++; - - psDBF->panFieldOffset = (int *) - SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); - - psDBF->panFieldSize = (int *) - SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); - - psDBF->panFieldDecimals = (int *) - SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); - - psDBF->pachFieldType = (char *) - SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields ); - -/* -------------------------------------------------------------------- */ -/* Assign the new field information fields. */ -/* -------------------------------------------------------------------- */ - psDBF->panFieldOffset[psDBF->nFields-1] = psDBF->nRecordLength; - psDBF->nRecordLength += nWidth; - psDBF->panFieldSize[psDBF->nFields-1] = nWidth; - psDBF->panFieldDecimals[psDBF->nFields-1] = nDecimals; - - if( eType == FTString ) - psDBF->pachFieldType[psDBF->nFields-1] = 'C'; - else - psDBF->pachFieldType[psDBF->nFields-1] = 'N'; - -/* -------------------------------------------------------------------- */ -/* Extend the required header information. */ -/* -------------------------------------------------------------------- */ - psDBF->nHeaderLength += 32; - psDBF->bUpdated = FALSE; - - psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,psDBF->nFields*32); - - pszFInfo = psDBF->pszHeader + 32 * (psDBF->nFields-1); - - for( i = 0; i < 32; i++ ) - pszFInfo[i] = '\0'; - - if( strlen(pszFieldName) < 10 ) - strncpy( pszFInfo, pszFieldName, strlen(pszFieldName)); - else - strncpy( pszFInfo, pszFieldName, 10); - - pszFInfo[11] = psDBF->pachFieldType[psDBF->nFields-1]; - - if( eType == FTString ) - { - pszFInfo[16] = nWidth % 256; - pszFInfo[17] = nWidth / 256; - } - else - { - pszFInfo[16] = nWidth; - pszFInfo[17] = nDecimals; - } - -/* -------------------------------------------------------------------- */ -/* Make the current record buffer appropriately larger. */ -/* -------------------------------------------------------------------- */ - psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord, - psDBF->nRecordLength); - - return( psDBF->nFields-1 ); -} - -/************************************************************************/ -/* DBFReadAttribute() */ -/* */ -/* Read one of the attribute fields of a record. */ -/************************************************************************/ - -static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField, - char chReqType ) - -{ - int nRecordOffset; - uchar *pabyRec; - void *pReturnField = NULL; - - static double dDoubleField; - -/* -------------------------------------------------------------------- */ -/* Have we read the record? */ -/* -------------------------------------------------------------------- */ - if( hEntity < 0 || hEntity >= psDBF->nRecords ) - return( NULL ); - - if( psDBF->nCurrentRecord != hEntity ) - { - DBFFlushRecord( psDBF ); - - nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; - - fseek( psDBF->fp, nRecordOffset, 0 ); - fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); - - psDBF->nCurrentRecord = hEntity; - } - - pabyRec = (uchar *) psDBF->pszCurrentRecord; - -/* -------------------------------------------------------------------- */ -/* Ensure our field buffer is large enough to hold this buffer. */ -/* -------------------------------------------------------------------- */ - if( psDBF->panFieldSize[iField]+1 > nStringFieldLen ) - { - nStringFieldLen = psDBF->panFieldSize[iField]*2 + 10; - pszStringField = (char *) SfRealloc(pszStringField,nStringFieldLen); - } - -/* -------------------------------------------------------------------- */ -/* Extract the requested field. */ -/* -------------------------------------------------------------------- */ - strncpy( pszStringField, pabyRec+psDBF->panFieldOffset[iField], - psDBF->panFieldSize[iField] ); - pszStringField[psDBF->panFieldSize[iField]] = '\0'; - - pReturnField = pszStringField; - -/* -------------------------------------------------------------------- */ -/* Decode the field. */ -/* -------------------------------------------------------------------- */ - if( chReqType == 'N' ) - { - dDoubleField = atof(pszStringField); - - pReturnField = &dDoubleField; - } - -/* -------------------------------------------------------------------- */ -/* Should we trim white space off the string attribute value? */ -/* -------------------------------------------------------------------- */ -#ifdef TRIM_DBF_WHITESPACE - else - { - char *pchSrc, *pchDst; - - pchDst = pchSrc = pszStringField; - while( *pchSrc == ' ' ) - pchSrc++; - - while( *pchSrc != '\0' ) - *(pchDst++) = *(pchSrc++); - *pchDst = '\0'; - - while( *(--pchDst) == ' ' && pchDst != pszStringField ) - *pchDst = '\0'; - - } -#endif - - return( pReturnField ); -} - -/************************************************************************/ -/* DBFReadIntAttribute() */ -/* */ -/* Read an integer attribute. */ -/************************************************************************/ - -int DBFReadIntegerAttribute( DBFHandle psDBF, int iRecord, int iField ) - -{ - double *pdValue; - - pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' ); - - return( (int) *pdValue ); -} - -/************************************************************************/ -/* DBFReadDoubleAttribute() */ -/* */ -/* Read a double attribute. */ -/************************************************************************/ - -double DBFReadDoubleAttribute( DBFHandle psDBF, int iRecord, int iField ) - -{ - double *pdValue; - - pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' ); - - return( *pdValue ); -} - -/************************************************************************/ -/* DBFReadStringAttribute() */ -/* */ -/* Read a string attribute. */ -/************************************************************************/ - -const char *DBFReadStringAttribute( DBFHandle psDBF, int iRecord, int iField ) - -{ - return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'C' ) ); -} - -/************************************************************************/ -/* DBFGetFieldCount() */ -/* */ -/* Return the number of fields in this table. */ -/************************************************************************/ - -int DBFGetFieldCount( DBFHandle psDBF ) - -{ - return( psDBF->nFields ); -} - -/************************************************************************/ -/* DBFGetRecordCount() */ -/* */ -/* Return the number of records in this table. */ -/************************************************************************/ - -int DBFGetRecordCount( DBFHandle psDBF ) - -{ - return( psDBF->nRecords ); -} - -/************************************************************************/ -/* DBFGetFieldInfo() */ -/* */ -/* Return any requested information about the field. */ -/************************************************************************/ - -DBFFieldType DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName, - int * pnWidth, int * pnDecimals ) - -{ - if( iField < 0 || iField >= psDBF->nFields ) - return( FTInvalid ); - - if( pnWidth != NULL ) - *pnWidth = psDBF->panFieldSize[iField]; - - if( pnDecimals != NULL ) - *pnDecimals = psDBF->panFieldDecimals[iField]; - - if( pszFieldName != NULL ) - { - int i; - - strncpy( pszFieldName, (char *) psDBF->pszHeader+iField*32, 11 ); - pszFieldName[11] = '\0'; - for( i = 10; i > 0 && pszFieldName[i] == ' '; i-- ) - pszFieldName[i] = '\0'; - } - - if( psDBF->pachFieldType[iField] == 'N' - || psDBF->pachFieldType[iField] == 'F' - || psDBF->pachFieldType[iField] == 'D' ) - { - if( psDBF->panFieldDecimals[iField] > 0 ) - return( FTDouble ); - else - return( FTInteger ); - } - else - { - return( FTString ); - } -} - -/************************************************************************/ -/* DBFWriteAttribute() */ -/* */ -/* Write an attribute record to the file. */ -/************************************************************************/ - -static int DBFWriteAttribute(DBFHandle psDBF, int hEntity, int iField, - void * pValue ) - -{ - int nRecordOffset, i, j; - uchar *pabyRec; - char szSField[40], szFormat[12]; - -/* -------------------------------------------------------------------- */ -/* Is this a valid record? */ -/* -------------------------------------------------------------------- */ - if( hEntity < 0 || hEntity > psDBF->nRecords ) - return( FALSE ); - - if( psDBF->bNoHeader ) - DBFWriteHeader(psDBF); - -/* -------------------------------------------------------------------- */ -/* Is this a brand new record? */ -/* -------------------------------------------------------------------- */ - if( hEntity == psDBF->nRecords ) - { - DBFFlushRecord( psDBF ); - - psDBF->nRecords++; - for( i = 0; i < psDBF->nRecordLength; i++ ) - psDBF->pszCurrentRecord[i] = ' '; - - psDBF->nCurrentRecord = hEntity; - } - -/* -------------------------------------------------------------------- */ -/* Is this an existing record, but different than the last one */ -/* we accessed? */ -/* -------------------------------------------------------------------- */ - if( psDBF->nCurrentRecord != hEntity ) - { - DBFFlushRecord( psDBF ); - - nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; - - fseek( psDBF->fp, nRecordOffset, 0 ); - fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); - - psDBF->nCurrentRecord = hEntity; - } - - pabyRec = (uchar *) psDBF->pszCurrentRecord; - -/* -------------------------------------------------------------------- */ -/* Assign all the record fields. */ -/* -------------------------------------------------------------------- */ - switch( psDBF->pachFieldType[iField] ) - { - case 'D': - case 'N': - case 'F': - if( psDBF->panFieldDecimals[iField] == 0 ) - { - sprintf( szFormat, "%%%dd", psDBF->panFieldSize[iField] ); - sprintf(szSField, szFormat, (int) *((double *) pValue) ); - if( strlen(szSField) > psDBF->panFieldSize[iField] ) - szSField[psDBF->panFieldSize[iField]] = '\0'; - - strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), - szSField, strlen(szSField) ); - } - else - { - sprintf( szFormat, "%%%d.%df", - psDBF->panFieldSize[iField], - psDBF->panFieldDecimals[iField] ); - sprintf(szSField, szFormat, *((double *) pValue) ); - if( strlen(szSField) > psDBF->panFieldSize[iField] ) - szSField[psDBF->panFieldSize[iField]] = '\0'; - strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), - szSField, strlen(szSField) ); - } - break; - - default: - if( strlen((char *) pValue) > psDBF->panFieldSize[iField] ) - j = psDBF->panFieldSize[iField]; - else - { - memset( pabyRec+psDBF->panFieldOffset[iField], ' ', - psDBF->panFieldSize[iField] ); - j = strlen((char *) pValue); - } - - strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]), - (char *) pValue, j ); - break; - } - - psDBF->bCurrentRecordModified = TRUE; - psDBF->bUpdated = TRUE; - - return( TRUE ); -} - -/************************************************************************/ -/* DBFWriteDoubleAttribute() */ -/* */ -/* Write a double attribute. */ -/************************************************************************/ - -int DBFWriteDoubleAttribute( DBFHandle psDBF, int iRecord, int iField, - double dValue ) - -{ - return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) ); -} - -/************************************************************************/ -/* DBFWriteIntegerAttribute() */ -/* */ -/* Write a integer attribute. */ -/************************************************************************/ - -int DBFWriteIntegerAttribute( DBFHandle psDBF, int iRecord, int iField, - int nValue ) - -{ - double dValue = nValue; - - return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) ); -} - -/************************************************************************/ -/* DBFWriteStringAttribute() */ -/* */ -/* Write a string attribute. */ -/************************************************************************/ - -int DBFWriteStringAttribute( DBFHandle psDBF, int iRecord, int iField, - const char * pszValue ) - -{ - return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) pszValue ) ); -} - -/************************************************************************/ -/* DBFWriteTuple() */ -/* */ -/* Write an attribute record to the file. */ -/************************************************************************/ - -int DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple ) - -{ - int nRecordOffset, i; - uchar *pabyRec; - -/* -------------------------------------------------------------------- */ -/* Is this a valid record? */ -/* -------------------------------------------------------------------- */ - if( hEntity < 0 || hEntity > psDBF->nRecords ) - return( FALSE ); - - if( psDBF->bNoHeader ) - DBFWriteHeader(psDBF); - -/* -------------------------------------------------------------------- */ -/* Is this a brand new record? */ -/* -------------------------------------------------------------------- */ - if( hEntity == psDBF->nRecords ) - { - DBFFlushRecord( psDBF ); - - psDBF->nRecords++; - for( i = 0; i < psDBF->nRecordLength; i++ ) - psDBF->pszCurrentRecord[i] = ' '; - - psDBF->nCurrentRecord = hEntity; - } - -/* -------------------------------------------------------------------- */ -/* Is this an existing record, but different than the last one */ -/* we accessed? */ -/* -------------------------------------------------------------------- */ - if( psDBF->nCurrentRecord != hEntity ) - { - DBFFlushRecord( psDBF ); - - nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; - - fseek( psDBF->fp, nRecordOffset, 0 ); - fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); - - psDBF->nCurrentRecord = hEntity; - } - - pabyRec = (uchar *) psDBF->pszCurrentRecord; - - memcpy ( pabyRec, pRawTuple, psDBF->nRecordLength ); - - psDBF->bCurrentRecordModified = TRUE; - psDBF->bUpdated = TRUE; - - return( TRUE ); -} - -/************************************************************************/ -/* DBFReadTuple() */ -/* */ -/* Read one of the attribute fields of a record. */ -/************************************************************************/ - -const char *DBFReadTuple(DBFHandle psDBF, int hEntity ) - -{ - int nRecordOffset; - uchar *pabyRec; - static char *pReturnTuple = NULL; - - static int nTupleLen = 0; - -/* -------------------------------------------------------------------- */ -/* Have we read the record? */ -/* -------------------------------------------------------------------- */ - if( hEntity < 0 || hEntity >= psDBF->nRecords ) - return( NULL ); - - if( psDBF->nCurrentRecord != hEntity ) - { - DBFFlushRecord( psDBF ); - - nRecordOffset = psDBF->nRecordLength * hEntity + psDBF->nHeaderLength; - - fseek( psDBF->fp, nRecordOffset, 0 ); - fread( psDBF->pszCurrentRecord, psDBF->nRecordLength, 1, psDBF->fp ); - - psDBF->nCurrentRecord = hEntity; - } - - pabyRec = (uchar *) psDBF->pszCurrentRecord; - - if ( nTupleLen < psDBF->nRecordLength) { - nTupleLen = psDBF->nRecordLength; - pReturnTuple = (char *) SfRealloc(pReturnTuple, psDBF->nRecordLength); - } - - memcpy ( pReturnTuple, pabyRec, psDBF->nRecordLength ); - - return( pReturnTuple ); -} - -/************************************************************************/ -/* DBFCloneEmpty() */ -/* */ -/* Read one of the attribute fields of a record. */ -/************************************************************************/ - -DBFHandle DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ) -{ - DBFHandle newDBF; - - newDBF = DBFCreate ( pszFilename ); - if ( newDBF == NULL ) return ( NULL ); - - newDBF->pszHeader = (void *) malloc ( 32 * psDBF->nFields ); - memcpy ( newDBF->pszHeader, psDBF->pszHeader, 32 * psDBF->nFields ); - - newDBF->nFields = psDBF->nFields; - newDBF->nRecordLength = psDBF->nRecordLength; - newDBF->nHeaderLength = psDBF->nHeaderLength; - - newDBF->panFieldOffset = (void *) malloc ( sizeof(int) * psDBF->nFields ); - memcpy ( newDBF->panFieldOffset, psDBF->panFieldOffset, sizeof(int) * psDBF->nFields ); - newDBF->panFieldSize = (void *) malloc ( sizeof(int) * psDBF->nFields ); - memcpy ( newDBF->panFieldSize, psDBF->panFieldSize, sizeof(int) * psDBF->nFields ); - newDBF->panFieldDecimals = (void *) malloc ( sizeof(int) * psDBF->nFields ); - memcpy ( newDBF->panFieldDecimals, psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields ); - newDBF->pachFieldType = (void *) malloc ( sizeof(int) * psDBF->nFields ); - memcpy ( newDBF->pachFieldType, psDBF->pachFieldType, sizeof(int) * psDBF->nFields ); - - newDBF->bNoHeader = TRUE; - newDBF->bUpdated = TRUE; - - DBFWriteHeader ( newDBF ); - DBFClose ( newDBF ); - - newDBF = DBFOpen ( pszFilename, "rb+" ); - - return ( newDBF ); -} diff --git a/plugins/fishing_spots/icon.xpm b/plugins/fishing_spots/icon.xpm deleted file mode 100644 index d0ed6eaa4112..000000000000 --- a/plugins/fishing_spots/icon.xpm +++ /dev/null @@ -1,159 +0,0 @@ -/* XPM */ -static const char *icon[]={ -"22 22 134 2", -"Qt c None", -".b c #000000", -"a. c #030202", -"#5 c #070707", -".K c #080809", -".C c #0b0704", -".s c #0e0b09", -".0 c #0f0806", -".O c #0f0a07", -".D c #100c09", -"ab c #100c0b", -"#U c #100f0e", -".P c #110d08", -"#b c #130c09", -".1 c #130f0c", -"#a c #140704", -".t c #14100d", -"#k c #160f0d", -".m c #160f0e", -".B c #16110c", -"#A c #171715", -"#u c #18100e", -"#I c #181817", -"#P c #1c1a19", -".Q c #1d1d14", -"#C c #1e1512", -".2 c #1e1e15", -".N c #1f1509", -"#c c #1f1f16", -".E c #23201a", -".r c #232421", -"#l c #27291e", -"#J c #29211c", -".i c #292a2c", -".u c #2a2929", -".8 c #2a2b29", -"#K c #2b2820", -"ad c #2b2826", -".d c #2c221d", -"#j c #2c2521", -"#2 c #2c2625", -"#X c #2f2b2d", -".n c #2f2d37", -"#3 c #303030", -".h c #312f2b", -"#v c #313329", -"#d c #323625", -".l c #35312f", -"#T c #372b27", -"#t c #382d2a", -"#D c #38362c", -".3 c #393c2e", -"#1 c #3a2a1f", -"#S c #3a2b1f", -".W c #3c3f3e", -".Z c #3e2e1d", -"#9 c #3e2f27", -"#q c #3f4037", -"#0 c #402f24", -".e c #403525", -"#L c #403b32", -"#m c #40412c", -".9 c #413934", -"#e c #41452f", -".R c #424839", -".A c #433d2e", -".o c #435159", -"ac c #464040", -".k c #464742", -"#n c #464831", -"#8 c #47352a", -"#R c #493a2b", -"#Z c #4b362f", -"#. c #4c413a", -"aa c #4d3f36", -"#s c #4d473f", -".q c #4d4e44", -"#7 c #4e3d31", -".M c #4e3f29", -".v c #4f575d", -".H c #4f5851", -".4 c #505745", -".F c #51544d", -".z c #525354", -"#o c #53523a", -".w c #53696a", -"#H c #544c3a", -".# c #554b3f", -"#4 c #555052", -"#y c #555131", -"#x c #555238", -"#f c #55573c", -"#V c #57504e", -"#w c #585a42", -"#z c #5d5842", -"#Y c #5f4f49", -"## c #5f523e", -"#p c #606047", -"#O c #61534c", -"a# c #61534d", -"#g c #626344", -"#6 c #635348", -"#E c #63644e", -"#B c #64605d", -".5 c #666851", -"#Q c #685647", -".I c #6b736f", -".x c #6c7f7d", -"#W c #6d6564", -".G c #6d7068", -"#M c #6e6861", -"#G c #6f6148", -".Y c #705d46", -".X c #716055", -".L c #716b64", -".S c #717869", -"#F c #726a4e", -".6 c #72715a", -"#i c #746b5b", -".f c #757443", -".J c #797e7f", -"#N c #7c6d63", -".a c #827d59", -".T c #90938d", -".y c #969f9f", -".7 c #999789", -".U c #9b9f9e", -".p c #9ba4a7", -"#r c #9e9083", -".V c #a5a6a2", -"#h c #aaa48b", -".j c #aab082", -".c c #b5be86", -".g c #c0c0ff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.cQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.e.f.b.b.g", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.h.i.b.b.b.j.k.g", -"QtQtQtQtQtQtQtQtQtQtQtQt.l.m.n.o.b.b.p.q.gQt", -"QtQtQtQtQtQtQtQtQtQt.r.s.t.u.v.w.x.y.z.g.gQt", -"QtQtQtQtQtQtQtQt.A.B.C.D.E.F.G.H.I.J.K.gQtQt", -"QtQtQtQtQtQt.L.M.N.O.P.Q.R.S.T.U.V.W.gQtQtQt", -"QtQtQtQtQt.X.Y.Z.0.1.2.3.4.5.6.7.8.g.gQtQtQt", -"QtQtQtQt.9#.###a#b#c#d#e#f#g#h#i.g.gQtQtQtQt", -"QtQtQtQtQtQt#j#k#l#m#n#o#p#q#r#s.gQtQtQtQtQt", -"QtQtQtQtQt#t#u#v#w#x#y#z#A.g#B.g.gQtQtQtQtQt", -"QtQtQtQtQt#C#D#E#F#G#H#I.g.g.g.gQtQtQtQtQtQt", -"QtQtQtQt#J#K#L#M#N#O#P.g.gQtQtQtQtQtQtQtQtQt", -"QtQt#Q#R#S#T#U#V#W#X.g.gQtQtQtQtQtQtQtQtQtQt", -"Qt#Y#Z#0#1#2#3.g#4#5.gQtQtQtQtQtQtQtQtQtQtQt", -"Qt#6#7#8#9a..g.g.g.g.gQtQtQtQtQtQtQtQtQtQtQt", -"QtQta#aaab.g.gQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"Qt.gacad.g.gQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"Qt.g.g.g.gQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; diff --git a/plugins/fishing_spots/images/plug.jpeg b/plugins/fishing_spots/images/plug.jpeg deleted file mode 100755 index d57c2506916f..000000000000 Binary files a/plugins/fishing_spots/images/plug.jpeg and /dev/null differ diff --git a/plugins/fishing_spots/plugin.cpp b/plugins/fishing_spots/plugin.cpp deleted file mode 100644 index ffd41d7f4bb7..000000000000 --- a/plugins/fishing_spots/plugin.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*************************************************************************** - plugin.cpp - Import tool for various worldmap analysis output files -Functions: - -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// includes - -#include -#include -#include -#include "plugin.h" - - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include - -//the gui subclass -#include "plugingui.h" - -// xpm for creating the toolbar icon -#include "icon.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "FishingSpots"; -static const char * const description_ = "A simple plugin to map fishing spots and harbours mentioned in fishing reports."; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -Plugin::Plugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ -} - -Plugin::~Plugin() -{ - -} - -/* - * Initialize the GUI interface for the plugin - */ -void Plugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon),"&Fishing Spots", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Tools", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("Fishing Spots", QIconSet(icon), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Tools"); - toolBarPointer->setLabel("Fishing Spots"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void Plugin::help() -{ - //implement me! -} - -// Slot called when the buffer menu item is activated -void Plugin::run() -{ - PluginGui *myPluginGui=new PluginGui(qgisMainWindowPointer,"Fishing Spots",true,0); - //listen for when the layer has been made so we can draw it - connect(myPluginGui, SIGNAL(drawRasterLayer(QString)), this, SLOT(drawRasterLayer(QString))); - connect(myPluginGui, SIGNAL(drawVectorLayer(QString,QString,QString)), this, SLOT(drawVectorLayer(QString,QString,QString))); - myPluginGui->show(); -} -//!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating -//layer -void Plugin::drawRasterLayer(QString theQString) -{ - qGisInterface->addRasterLayer(theQString); -} -//!draw a vector layer in the qui - intended to respond to signal sent by diolog when it as finished creating a layer -////needs to be given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); -void Plugin::drawVectorLayer(QString thePathNameQString, QString theBaseNameQString, QString theProviderQString) -{ - qGisInterface->addVectorLayer( thePathNameQString, theBaseNameQString, theProviderQString); -} - -// Unload the plugin by cleaning up the GUI -void Plugin::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new Plugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/fishing_spots/plugin.h b/plugins/fishing_spots/plugin.h deleted file mode 100644 index 8659ceb780b3..000000000000 --- a/plugins/fishing_spots/plugin.h +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - plugin.h - Functions: - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include -#include - -#include - -/** -* \class Plugin -* \brief OpenModeller plugin for QGIS -* -*/ -class Plugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - Plugin(QgisApp * , QgisIface * ); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ Plugin(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawRasterLayer(QString); - //! Add a vector layer given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); - void drawVectorLayer(QString,QString,QString); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/fishing_spots/plugingui.cpp b/plugins/fishing_spots/plugingui.cpp deleted file mode 100644 index b73fcf8d060e..000000000000 --- a/plugins/fishing_spots/plugingui.cpp +++ /dev/null @@ -1,423 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "plugingui.h" - -//qt includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//standard includes -#include -#include -//shapefile making stuff -#include "shapefilemaker.h" -/** Alternate constructor for use when this plugin is going to be an app main widget. */ -PluginGui::PluginGui() : PluginGuiBase() -{ - - //Comment out the next line if you are debuggin stuff - tabMain->hide(); - //tabMain->removePage(tabRegex); -} - -PluginGui::PluginGui( QWidget* parent , const char* name , bool modal , WFlags fl ) -: PluginGuiBase( parent, name, modal, fl ) -{ - - //Comment out the next line if you are debuggin stuff - tabMain->hide(); - //tabMain->removePage(tabRegex); -} -PluginGui::~PluginGui() -{ -} - -void PluginGui::pbnOK_clicked() -{ - - if (leOutputFileName->text()=="") - { - QMessageBox::warning( this, "Fishing spots", - "Output filename is invalid.\n" - "Fix it and try again" ); - } - // - // If you have a produced a raster layer using your plugin, you can ask qgis to - // add it to the view using: - // emit drawRasterLayer(QString("layername")); - // or for a vector layer - // emit drawVectorLayer(QString("pathname"),QString("layername"),QString("provider name (either ogr or postgres")); - // - - - //Test the url snarfer - mQUrl = QUrl("http://www.marlinnut.com/latlon.shtml"); - check(); - - -} - -void PluginGui::pbnCancel_clicked() -{ - close(1); -} - - -// -// The following methods are adapted from some sample code I found here -// - - -void PluginGui::check() -{ - - connect(&mQhttp, SIGNAL(stateChanged(int)), - this, SLOT(slotStateChanged(int))); - connect(&mQhttp, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)), - this, SLOT(slotResponseHeaderReceived(const QHttpResponseHeader &))); - connect(&mQhttp, SIGNAL(requestFinished(int, bool)), - this, SLOT(slotRequestFinished(int, bool))); - - std::cerr << "-------------------------------------------" << std::endl; - std::cerr << "Web Snarfer running " << std::endl; - std::cerr << "Setting host to: " << mQUrl.host() << std::endl; - std::cerr << "Path in url is: " << mQUrl.path() << std::endl; - //std::cerr << "Query in url is: " << mQUrl.query() << std::endl; - mSetHostIdInt = mQhttp.setHost(mQUrl.host()); - std::cerr << "ID sethost: " << mSetHostIdInt << std::endl; - - if(!mQUrl.query().isNull() || mQUrl.hasRef()) - mRequestQString = mQUrl.toString(); - else mRequestQString = mQUrl.path(); - - mHeaderIdInt = mQhttp.head(mRequestQString); - std::cerr << "ID head: " << mHeaderIdInt << std::endl; - - //QTimer::singleShot( mTimeOutInt * 1000, this, SLOT(slotTimeOut()) ); -} - -void PluginGui::slotRequestFinished(int id, bool error) -{ - std::cerr << "slotRequestFinished: " << id << std::endl; - if(error) - { - std::cerr << "Error: " << mQhttp.errorString() << std::endl; - finish(); - } - - else if(id == mHeaderIdInt) - { - requestHeadFinished(id); - } - - else if(id == mGetIdInt) - { - requestGetFinished(id); - } -} - -void PluginGui::slotResponseHeaderReceived(const QHttpResponseHeader& resp) -{ - std::cerr << "slotResponseHeaderReceived " << std::endl; - std::cerr << resp.toString() << std::endl; - mQHttpResponseHeader = resp; -} - -void PluginGui::slotTimeOut() -{ - std::cerr << "slotTimeout " << std::endl; - if(mQhttp.state() == QHttp::Connecting) - { - assert(mQhttp.currentId() == mHeaderIdInt || - mQhttp.currentId() == mGetIdInt); - - std::cerr << "Error: Time out" << std::endl; - - finish(); - } -} - -void PluginGui::slotStateChanged(int state) -{ - std::cerr << "slotStateChanged " << std::endl; - std::cerr << "Current id: " << mQhttp.currentId() << std::endl; - std::cerr << "State: " << state << std::endl; - - switch (state) - { - case QHttp::Unconnected: std::cout <<"Unconnected" << std::endl; break; - case QHttp::HostLookup: std::cout <<"Host Lookup" << std::endl; break; - case QHttp::Connecting: std::cout <<"Connecting" << std::endl; break; - case QHttp::Sending: std::cout <<"Sending" << std::endl; break; - case QHttp::Reading: std::cout <<"Reading" << std::endl; break; - case QHttp::Connected: std::cout <<"Connected" << std::endl; break; - case QHttp::Closing: std::cout <<"Closing" << std::endl; break; - default : std::cout <<"Illegal state" << std::endl; break; - } - -} - -void PluginGui::requestHeadFinished(int id) -{ - std::cerr << "requestHeadFinished: " << id << std::endl; - - assert(id = mHeaderIdInt); - assert(!mQhttp.hasPendingRequests()); - - // 405 -> it might not support HEAD request's... - if( (mQHttpResponseHeader.statusCode() == 200 || mQHttpResponseHeader.statusCode() == 405) && - (mQHttpResponseHeader.contentType() == "text/html" || - mQHttpResponseHeader.contentType() == "text/plain") ) - { - mGetIdInt = mQhttp.get(mRequestQString); - std::cerr << "ID GET: " << mGetIdInt << std::endl; - } - else if(mQHttpResponseHeader.statusCode() == 301 || - mQHttpResponseHeader.statusCode() == 302) - { - // ... - } - else - { - finish(); - } -} - -// -// This is run once the web page has been retrieved. -// - -void PluginGui::requestGetFinished(int id) -{ - std::cerr << "************************************* " << std::endl; - std::cerr << "requestGetFinished: " << id << std::endl; - - assert(id == mGetIdInt); - - QString myPageQString(mQhttp.readAll()); - std::cerr << "Getting document contents : " << std::endl; - //std::cerr << myPageQString << std::endl; - assert(!myPageQString.isEmpty()); - - //now we parse the file looking for lat long occurrences - QRegExp myRecordQRegExp( leRecordRegex->text(),false,false ); // match using regex in our dialog - QRegExp myLabelQRegExp( leLabelRegex->text(),false,false ); // match using regex in our dialog - QRegExp myLatitudeQRegExp( leLatitudeRegex->text(),false,false ); // match using regex in our dialog - QRegExp myLongitudeQRegExp( leLongitudeRegex->text(),false,false ); // match using regex in our dialog - // - //check each regex is valid and if not bail out - // - // - // Record - // - if (!myRecordQRegExp.isValid()) - { - QMessageBox::warning( this, "Fishing spots", - "The record regex " + leRecordRegex->text() + " is invalid.\n" - "Fix it and try again" ); - } - else - { - //make sure greedy matches are off so if you have a string like - // blahblahblah - // and your regex is .* - // non greedy match will return blah - myRecordQRegExp.setMinimal(true); - std::cerr << "Using record regex : " << leRecordRegex->text() << std::endl; - } - // - // Label - // - if (!myLabelQRegExp.isValid()) - { - QMessageBox::warning( this, "Fishing spots", - "The label regex " + leRecordRegex->text() + " is invalid.\n" - "Fix it and try again" ); - } - else - { - //make sure greedy matches are off so if you have a string like - // blahblahblah - // and your regex is .* - // non greedy match will return blah - myLabelQRegExp.setMinimal(true); - std::cerr << "Using label regex : " << leLabelRegex->text() << std::endl; - } - // - // Latitude - // - if (!myLatitudeQRegExp.isValid()) - { - QMessageBox::warning( this, "Fishing spots", - "The latidude regex " + leLatitudeRegex->text() + " is invalid.\n" - "Fix it and try again" ); - } - else - { - //make sure greedy matches are off so if you have a string like - // blahblahblah - // and your regex is .* - // non greedy match will return blah - myLatitudeQRegExp.setMinimal(true); - std::cerr << "Using latitude regex : " << leLatitudeRegex->text() << std::endl; - } - // - // Longitude - // - if (!myLongitudeQRegExp.isValid()) - { - QMessageBox::warning( this, "Fishing spots", - "The regex " + leLongitudeRegex->text() + " is invalid.\n" - "Fix it and try again" ); - } - else - { - //make sure greedy matches are off so if you have a string like - // blahblahblah - // and your regex is .* - // non greedy match will return blah - myLongitudeQRegExp.setMinimal(true); - std::cerr << "Using Longitude regex : " << leLongitudeRegex->text() << std::endl; - } - - // - // Main parsing loop - // - int myPosInt = 0; // where we are in the string - int myCountInt = 0; // how many matches we find - while ( myPosInt >= 0 ) - { - myPosInt = myRecordQRegExp.search( myPageQString, myPosInt ); - if ( myPosInt >= 0 ) - { - std::cerr << "************************************* " << std::endl; - std::cerr << "Match found from pos " << myPosInt << " to " << myPosInt + myRecordQRegExp.matchedLength() << std::endl; - QString myRecordQString = myPageQString.mid(myPosInt,myRecordQRegExp.matchedLength()); - myPosInt += myRecordQRegExp.matchedLength(); //skip the length of the matched string - myCountInt++; // count the number of matches - int myLastPosInt=0; //for keeping track of where we have searched up to within the record - - // now extract the location name - - myLastPosInt = myLabelQRegExp.search(myRecordQString, myLastPosInt); - QString myLabelQString = myRecordQString.mid(myLastPosInt,myLabelQRegExp.matchedLength()); - myLabelQString.replace("

    ",""); - myLabelQString.replace("\n",""); - std::cerr << "\t label match from " << myLastPosInt << " : " << myLabelQRegExp.matchedLength() << std::endl; - myLastPosInt += myLabelQRegExp.matchedLength(); - - // now extract the lat - - myLastPosInt = myLatitudeQRegExp.search(myRecordQString, myLastPosInt); - QString myLatitudeQString = myRecordQString.mid(myLastPosInt,myLatitudeQRegExp.matchedLength()); - myLatitudeQString.replace("° ",","); //replace the html degree symbol with a comma - myLatitudeQString.replace("'",""); //replace the minutes symbol with nothing - myLatitudeQString.replace("\n",""); - QStringList myQStringList = QStringList::split(QString(","),myLatitudeQString); - float myDegreesFloat = myQStringList[0].toFloat(); - float myDecimalMinutesFloat = myQStringList[1].toFloat(); - float myLatitudeFloat = myDegreesFloat + (myDecimalMinutesFloat/60); //convert from degrees and decimal minutes to decimal degrees - std::cerr << "\t long match from " << myLastPosInt << " : " << myLatitudeQRegExp.matchedLength() << std::endl; - myLastPosInt += myLatitudeQRegExp.matchedLength(); - - // now extract the long - - myLastPosInt = myLongitudeQRegExp.search(myRecordQString, myLastPosInt); - QString myLongitudeQString = myRecordQString.mid(myLastPosInt,myLongitudeQRegExp.matchedLength()); - myLongitudeQString.replace("° ",","); //replace the html degree symbol with a comma - myLongitudeQString.replace("'",""); //replace the minutes symbol with nothing - myLongitudeQString.replace("\n",""); - myQStringList = QStringList::split(QString(","),myLongitudeQString); - myDegreesFloat = myQStringList[0].toFloat(); - myDecimalMinutesFloat = myQStringList[1].toFloat(); - float myLongitudeFloat = myDegreesFloat + (myDecimalMinutesFloat/60); //convert from degrees and decimal minutes to decimal degrees - std::cerr << "\t lat match from " << myLastPosInt << " : " << myLongitudeQRegExp.matchedLength() << std::endl; - myLastPosInt += myLongitudeQRegExp.matchedLength(); - - // Show some info to stdout - - teResults->append( myLabelQString + ", " + QString::number(myLatitudeFloat) + ", " + QString::number(myLongitudeFloat) + "\n");; - - //create a FishingSpot struct and add it to the vector - FishingSpot myFishingSpot; - myFishingSpot.label=myLabelQString; - myFishingSpot.latitude=myLatitudeFloat; - myFishingSpot.longitude=myLongitudeFloat; - mFishingSpotsVector.push_back(myFishingSpot); - } - } - std::cerr << "************************************* " << std::endl; - //std::cerr << myPageQString << std::endl; - std::cout << myCountInt << " records found" << std::endl; - //std::cerr << myPageQString << std::endl; - std::cerr << "************************************* " << std::endl; - - // - // Now build the shapefile - // - createShapefile(leOutputFileName->text()); - finish(); -} - -void PluginGui::finish() -{ - std::cerr << "finish: " << std::endl; -/* - Don't go back to slotRequestFinished -*/ - disconnect(&mQhttp, SIGNAL(requestFinished(int, bool)), - this, SLOT(slotRequestFinished(int, bool))); - - mQhttp.closeConnection(); - //close the dialog - done(1); -} - - - - -void PluginGui::createShapefile(QString theShapefileName) -{ - - ShapefileMaker * myShapefileMaker = new ShapefileMaker(theShapefileName); - for (int myIteratorInt = 0; myIteratorInt < mFishingSpotsVector.size(); ++myIteratorInt) - { - FishingSpot myFishingSpot = mFishingSpotsVector[myIteratorInt]; - myShapefileMaker->writePoint(theShapefileName, static_cast(0-myFishingSpot.longitude), static_cast(myFishingSpot.latitude) ); - std::cerr << myFishingSpot.label << " :: " << myFishingSpot.latitude << " :: " << myFishingSpot.longitude << std::endl; - } - delete myShapefileMaker; - //clear the spots list - mFishingSpotsVector.clear(); - QFileInfo myFileInfo( theShapefileName ); - emit drawVectorLayer(myFileInfo.dirPath(),myFileInfo.baseName(),QString("ogr")); -} - -void PluginGui::pbnSelectFileName_clicked() -{ - std::cout << " Gps File Importer Gui::pbnSelectOutputFile_clicked() " << std::endl; - QString myOutputFileNameQString = QFileDialog::getSaveFileName( - ".", - "ESRI Shapefile (*.shp)", - this, - "save file dialog" - "Choose a filename to save under" ); - leOutputFileName->setText(myOutputFileNameQString); - -} diff --git a/plugins/fishing_spots/plugingui.h b/plugins/fishing_spots/plugingui.h deleted file mode 100644 index c64bc032207c..000000000000 --- a/plugins/fishing_spots/plugingui.h +++ /dev/null @@ -1,98 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef PLUGINGUI_H -#define PLUGINGUI_H - -#include -// -// QT includes -// -#include -#include -#include -#include -#include - -/** -@author Tim Sutton -*/ - -// -//// Structs -// - -/** \brief The Fishing spot struct stores data for one location listed on the http://www.marlinnut.com/latlon.shtml site. - */ -struct FishingSpot -{ - /** \brief The name of the fishing spot. */ - QString label; - /** \brief The Latitude*/ - float latitude; - /** \brief The Longitude */ - float longitude; - -}; - -// -// Typedefs -// - -/** \brief A vector type for storing multiple typedefs.*/ -typedef QValueVector FishingSpotsVector; - -class PluginGui : public PluginGuiBase -{ -Q_OBJECT -public: - PluginGui(); - PluginGui( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~PluginGui(); - void pbnOK_clicked(); - void pbnCancel_clicked(); - void check(); - void pbnSelectFileName_clicked(); - -protected slots: - - void slotStateChanged(int state); - void slotResponseHeaderReceived ( const QHttpResponseHeader & resp ); - void slotRequestFinished ( int id, bool error ); - void slotTimeOut(); - -signals: - - void finished(); - -signals: - void drawRasterLayer(QString); - void drawVectorLayer(QString,QString,QString); - -private: - - QUrl mQUrl; - int mTimeOutInt; - QHttp mQhttp; - int mSetHostIdInt; - int mHeaderIdInt; - int mGetIdInt; - QString mRequestQString; - QHttpResponseHeader mQHttpResponseHeader; - FishingSpotsVector mFishingSpotsVector; - - void createShapefile(QString theShapefileName); - void requestHeadFinished(int id); - void requestGetFinished(int id); - void finish(); -}; - -#endif diff --git a/plugins/fishing_spots/pluginguibase.ui b/plugins/fishing_spots/pluginguibase.ui deleted file mode 100644 index 354a10df496f..000000000000 --- a/plugins/fishing_spots/pluginguibase.ui +++ /dev/null @@ -1,394 +0,0 @@ - -PluginGuiBase - - - PluginGuiBase - - - - 0 - 0 - 502 - 510 - - - - - 255 - 255 - 255 - - - - Fishing spots plugin - - - image0 - - - - unnamed - - - - pixmapLabel2 - - - - 150 - 32767 - - - - image1 - - - true - - - - - line1 - - - - 2 - 32767 - - - - VLine - - - Sunken - - - Vertical - - - - - layout2 - - - - unnamed - - - - pbnCancel - - - Cancel - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 270 - 21 - - - - - - pbnOK - - - OK - - - - - - - txtHeading - - - - 5 - 1 - 0 - 0 - - - - - 0 - 10 - - - - - 32767 - 32 - - - - - 24 - 1 - - - - Fishing Spots - - - AlignCenter - - - - - tabMain - - - - 7 - 7 - 0 - 0 - - - - - tabRegex - - - Regex - - - - unnamed - - - - textLabel1 - - - Url: - - - - - leUrl - - - http://www.marlinnut.com/latlon.shtml - - - - - leRecordRegex - - - <TR> <A NAME=.*\n *<TD.*\n *<P.*\n *<\/TD>\n.*\n.*\n.*\n.*\n.*\n.*\n.*<\/TR> - - - - - textLabel1_2 - - - Record Regex: - - - - - textLabel1_2_2 - - - Label Regex: - - - - - leLongitudeRegex - - - [0-9]*&#[0-9]*; [0-9\.]*' - - - - - leLabelRegex - - - <P>.*\n - - - - - textLabel1_2_2_2_2 - - - Longitude Regex: - - - - - leLatitudeRegex - - - [0-9]*&#[0-9]*; [0-9\.]*' - - - - - textLabel1_2_2_2 - - - Latitude Regex: - - - - - spacer3 - - - Vertical - - - Expanding - - - - 21 - 20 - - - - - - - - tabResults - - - Search Results - - - - unnamed - - - - teResults - - - - - - - - teInstructions - - - - 7 - 7 - 0 - 0 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial"> -<p style="margin-top:16px"><span style="font-size:17pt;font-weight:600">Description</span></p> -<p>This plugin will fetch a list of harbours and fishing spots and convert it to s point layer. </p> -<p>Tim Sutton 2004</p> -</body></html> - - - - WidgetWidth - - - - - layout4 - - - - unnamed - - - - textLabel1_3 - - - File: - - - - - leOutputFileName - - - - - - - - pbnSelectFileName - - - ... - - - - - - - - - 789c9595595315491085dff91537c8376322adbdba63621e14505040904574621eaab7cb22fb45c589f9ef539da7c00145199a97efd6e9ccac5359d94f9f4cf636d6264f9ece5dced2eca09db4fbe962f2a4bb3a3ebefef3af3ffe9e9b376692ffb5751333ffdbdcfce66cd24ed64f4ffa11b8c9404afe464e2c6c955122262f1cc747f4af85abfcd4c20bc24d5e77c297c27dfe05eb4a78c8fa20fca6702af11647d64ab5d0a7e6961bc9bf537850a8774358ab4e55b20ebdbd799f75e141b5b29e84dd6d7d33708ed8c9fa9170c87a613ebe65e47b0ece1911ef9970cc8f17be12ae723cd1d34ae14acbfe08f5b63a69d4b729dce547ea21f14ff7da6bf19b4de11ef1795d78d01efba3b6f0a0e1e7d2c8c61aa593f0456167b4e83f0a47536bd4f74ab8365acb7ef8a0703260d94fa6daa0deaa70032639ff4c9541bf74b78c7ac0ad311afe1e16f6a51e533818f8b7273ce408f0ffa47067e19f1dd9aaf191f57d613dbe21eb9fc0d696fa24bf35b6c467d9bff5e31bb2be2d1c733ec4977eb095e98cf8478be0fc3efc40fedab606fe497fd9649246bcadc20d98df09b776b0e89f0fc2bde98b1f75e1a1e43f171e9c2afb95fbe2545e47bff660eb8b5fab851b8bfb790c76bad42bf19dce15a3bff0be761efbe7b7c2c65516e72bfdecacedb03f3e057bed711fa5df5cc819e0ff51e1e890ffa4706571bed22f2ee67ae127f2d5a343c2e2876bb2bff04fe68d6b73c5a24f725f5d97fd937ea24b708e88facf0bf70efb8bc2bded909fd70a0fa57fa53fdce0a3477f2d17ae3cf46e64af7c74e89717c2da3b07fd5761e3ad473ef1279341bdfc191cea80fd4afcfc765bd649d8e71d63bfc8e77346f8775d5817ffbe143616f36d281c2de6cfae70f4caa11f91bff2a99c07eaed7c55f8bdf0e00687fb817a861c1fef9f8d1c54500efd27f339686f9de44b74cbe8dfa9b009b6f81f84f30573a877091c5ca94fe667704115ffe57b124228fe93ccc34c01f959e66768a20d386ff123b47188c82ff72b7421bf20eb2fc15105e497f30f7da802e2637d081af5b1f81173350ef34ae64fcc03dfe3fc570b3725fe16385601fe497f441312f6c7019c3f07387f99a7d185c64bbfb39c5fccede5acb0ccdf58c73ea21f64bec736ef08ebd2ff95891dee1fcbbcaa556d2bf827fd52877aa8e18ff47f5dd7b1825ebe977593d751df1938b984f395ef43ddd7aa423ee9a7e45348e81799af292557a1fe4370a32a7c9f641ee4cdf515fc937e68f3e777907a36678f7f1ea767e2c40db78fd373c73d0f59dff0f4577adee70351367cc8473fd7f3473ee6133e15f5199ff3f4e17af8822f79c657fc893ff317bee6af3c7d48cfcff8392ff0222ff10b7ec9cbbcc2aff8f5a8fe5ecfabbcc6ebfc86377893dff2166ff30eeff23ba8efeb798fdff30756acd9b065c79e0347ae50cb7d3dd7c44494a8a1963aea69a029edd3c137f5f7f5d0211dd1473aa6133aa5333aa70bbafca6beafa7195dd127fa4c5fe89abed2339ed2f3ff46ff4ebf408bb4442fe8252dd3caa8bcabbeaba757f49a56698dd6e90d6ddc57ded5d326bda52ddaa61ddaa577b4f763f58d9eded30752a4c990cd353bf23f56dfea0345aaa84e7c53f3cff59bb334deb7e661dd5d3d4f539bba5fabbfe97f56c3437e3ee6f9dffa7f7e9ffb178f0e0d54 - - - 789c4cbdc7726a41b36edbdf4ff1c79ebd1d373830f18dd390104678044848276e032befbdeecbdf0939be6f1dadd61ac12c9b95959559e67ffdcf7f16e3c17ffee77ffdd7fbc7f2e376fd9ff5cdf2ed3fffb3f97c7cfcfd3fffeffffefffeebbf0ba5ea7f8ae5c27faaa54ae93fc5fffe7ffeebbf73b5cfffacff93e4f77fe503386f1bd4f720b9790014f2f9c32f065583f8a4f464508d34ae0d228da40648f3e9e117fd138348a39a1a542297634011506d1ad4228dd4e0904b6e3603942847bf62109f947306cb03e8fefbc5f600a667800a9ff4b606ebc845b5ade75707b0180156f95d14fd43a0503880497c92b517890ebf01158adeab006a8568a0d12ba04eb69755c04ae00eb02e44bfd4a281d27d590fa0fe0aa05f92dc37a04cf5c72f0095a3b60454a372c97a0da851f4f90850a772dd3fc0aa508a829d02d6f94d3490d2d8f0492dd2284ae892c729a0988f5fcc86801afd52d2274b6a7bd502acc865b830387c92ecfa0750ca6a1be2507b3488eacfaf01757aeea20d50cfa50bc0867ee9ff194423cfa36f4b85b410925c2b1c4079df4487726c7a806a3e1a683a042c55b9950095ebb6016bb2cd4f01db428cdbcb287ab950889226cb688f8a843fd97401951087e4eedce0d095c9b603a8d2fba7f7803ae5281d03688f64bd01ac91c2d102b0a5c52e7b801de230681c40d5723a3b036cf9c5fc16b0a3b6f37980429e369dcf0005aa5fbf3c804c28a32b93dd005097e06e0192c2d1954174f6ec16b023977e34502dcb3672397f0014e8ecf347404ad1cf7b8062215a7d193d57cf6a133256e80024c9f5378006507d0158d2a6f3894148725201aca8edba0cd890e8f855201a3949ea00f54b6d6b108d3c7b302845d195ed8e069a8786c9caa9dade038ad162c92a34dd32ab5ce8c2421bc0884a56bf80a53aaa67b08eba54001ac88b9541a4b1e903d6c8e9e40cc0a84cd63bc096a29fe91355ff6c03908ccd2606d1d9d3b14188c334e463e991ddbf0094421c92750cc2959474b2be03ac90c2db6f834dd4e514b0a6e7aeda020c8fe904c0504f964dc08e5f0c5383a8cb79cd2094f465f4feca923c1d194457e6cf0ca84b098042c9555a809444cf29ba7a3f77de3588e1b11800ca808bc42054709e062a540a210eb9f70358ef3b33a6e853c00a497e9c00d648d0c3ab41b47aee1f8836bdbc0568c229dc19448b9de9173b097f18245927f0c9fcc1209af06209d068e8bf1b6007cd0ca2b6dd1da05808c16dd50ca2b6834740492d96338834ae04cad162b9cb1b40855fb49e015512ad455d367bd5165df90858a2c6736f809594d29d0032561c03d67cb2fa016ce8a8b460c030ed00b692d382410cd3ed0cb043d3f5f9c48abef866c02cd60614e8b9e19f4174c38c927a98ce1f0da24d0b0f06985f454091beed7f004a3472fa0b90e0a62d834863f409a890ede80b5025dbc1930106ebc280f956892ed390f555a4b1f5a455bf3188aeacd601527d8f33c096d190fc1944df96bf051851fd0660876134be1440f847ef06d140ad7383182f9b68f52c494a3abf0768ae9c4c0cc2dc589168d60d28a58d413461ebde20a6931105b386e9af0ca2e8d36b83b0b6566f809286a9d22893684a9b663d17fd523d31887e199600eeca4b8310dc451fb044604e55b04d8a868906dac9b44e961d8066f5f52d409378ff454083f0c900ebf315e0b96100d09c5dbe179075412ed988a2604303ccd11b8398d57729a0a082b50029ad7e7663102d36fa00144974f46b104dd87a308844e75380345d7e6c10fdd2bd3608cdbfa2fa595786c05cd1a659cfa1507e046244e546df801ab90cde0d62464e0e63aef06ff956bf1790b62c02645dd4af0568e4f28b4188f6d91d40e3e5711e60ff9be8fd7b013abbfc6080a61b0364f40ef306a89c8a4134f274072832e6922aa0c427c35f83688f8b26408a6d363288be2d1d19c4001a9c012a1a955700cd40296d9a35727c725a066c522cc783fa2cfc5bbdd61f0c42b1ddcd01983d49eec5201aa8941884d00d23978225f9f10c50608e5af605e8b9e2a34134f2ec1e20137f543088da8efe0c98a346802275e9350c4260fa1b4089369dbc194403cd5552994ea31f83e8978b15405a6ab0304007750d62340ca6802a9ddd53396a0cc2feaf006a6bf00ca893c6a80858926d4acf15560ca0f54119145277e5e40320f3ab7e65108d3c8a064a6d5c0d1f0d424ec79f00443b597601a98647dd203a6a4c2eb64f870d83e8a85d0150d2f27e039071355c01645cf5df0ca2fafd4f037c064aa34a1a839a017d3b36c0557104a8c932c803ea291ea3e8b9e27e39124df804d848293d03b49eabe50da23d7a17016c29a5b7064c6bf700e9f5ee8541e88fe5294096d2d9c8201a392d1ba01df4894cdac183017abd042853dbb36b4085347a9706d1629d8641b4c7f91dc0c6d5dc20baa1a75caa88f6c51a20a5d46f1a84ac977e0c62780c8f01757abffc0ac062cb5d76012b59f42f0691468b9e2bac53ac1cfd6293e2a78b562fd9da2a3e1be01d8de1f1cfc954281a20a733009a3f37793708fbe3790b286900dd1ae0a9191bd0731380ace0f19b013ae8c220a6e8cd005091c008c8743aed194403754e0468d34107502397b3ad41f45cfb08202d359b1ad00d6f062130c32540165b47b9a81b3aa7806d1ab53d6d0276295ea718626577543fb22ddb962afd19e0b55e0164290def00b2947a1f06f1c9b06ac072a50260f6481e5e0065a9cf1b83908f41d7809e2b184403f5fe0ca281a65b80cce2fea941b4d8a86c10de8dadaa5f555dae003512ede50518eae775409d44fbff0026dcb700e3b6756710b95cb4004b75f6ab0163ee11b0e69356d5201a397f0bd850d2343abb9ce6f9a44313a6698a42891155918196e49e0c184077001968c517033cf01f00ad815a178022d51f7600b2d8ca4583e8cad1b101c1830540b3d8e8c8203a2a511ab2d886d706d1d969cf8051f908d0627598338841387e378895e7f61c5093c3ac06a89368e15480a1de2b18607fcc00eadbfe9700837078099082ed750ca22b0b2501846e9402d6923165bb431c4e433b54326b82468edafe5f1ee79d01d6c5034076617a6d106d5a3901c8c8eb2e0c98d67e0132f2863503025479015a6c9c023c577e1bc4caa2af6cab18bd2f5b01cce265cf206adbf933c0c82b19309055d2aa2c9467404d664fce201a79f26a1086e27208a8d3623db5e952b37a47403da772a8b3e7378035ed314c001bdab455066c3590db0691eda51a79472ec57b8390c2ab90d3cc72e0935268ba9a9c19b9de3940d667ad6fc0101b01e4aa48bf0d18513b80fd0e4d0304a62040497b9f00cda6bd6b8368e49572916d39480cd063c70234507100a8cb843b3760b2f83260cc15014b1aa83d04ace897d2a341b4697b6410d956d5a66ba9f1b601111aa5b121d16ac120daa3bf04ec30aedaa11db2e9864fae68d3ac2b63202f9606518eb3b072eafb904c28e9c8b6fecf2bc92f3c890f6e01b282fbcf06b819460019bd69db00257d03d08aaf7b09908ddbbd12a0b643a5211bb7706f10e230fe0030e672dd2f037aee47009fe3fa01201bb7383408716835042847b76810d53fdb01965a79ce0d22dbc98b012bf13160455dced5a66b72491f0ca2e7067580c4a1573688465ea8e85b991b3706d1d9a7a150b2f9874ffab1f05e7a9554ba07142958fd1ca0ae1cea17b282d3a241b458656180d17b09b08dbb04c8a41d9e1830f175011a73dd7383908fd23740adde391660ccf58e0ca2729331c0cb959641247aaa3418c8c96608586b055c05c8d5d94b0df05de401ea864ed32086c7640490c6edaf0d88bd863e5d7a464e69c26cdc86d09dd2626991ae2c855edf87b0d0a7a700595bf5b90189fe00344557ee01eadbe116202b38dd19d0b7bf0019bd5de52293f6ecde80706d1ea089afd717a0d5fbc78015452fe50cf0b1750568b16e6a100dd4390268ae6cef0cc28970f308d850b9ea33604ba2a70d0356164d807a6e481366232a3ee99d1a60af9f18847c141f0045c030eab2b6efb35405a4b2836600ad92eaff000ab603d0981b0c01eab9e106200bb6503088363ded1b842dd5d52fe43e6e2d00b2606b0f0019acbd8141f46d7e02d0d4787a6410c3e3346f106e7db44366aee23e7ede18c43a3bf93160ec3f19848cb58f019a2bab4f0684e3e680ad2223f70099c59da501cee158e1acddd9edb1016950976cdc86c0743b06346109504c898a560cf016278072ca8e887340955f0ca3911d27cc0d7600995fe56780fd523700ada3063d03d4780a90d769a05c2430c33540366e213588563f7d30409ffe0164d29e5e194413960b00d9b8e9560081e95f033435165f0d423e1e54db0d252dd60c62bebdae03b6245aec19e040cc198414eef2809d646c254037f462dc66f3b17c5ba94134729bda66bd1fb914bb0698e72d030c81aa012ee83780347ffb03504aa3c5f2f46d26302cdf4282b68ed04c6600050f863d0316efd1c8ff428bf5a90113df04e0a5f9930125ad02b49e1bf40da272a50a40deafde102091eadf00647c0f5b0684f31b024c1698f8db025bf0925c0a90695dfe077077fc0948a44600cdea95a60133d02d4012745a3040afabb69ac45b05832818cbc82c058dca1380fab6f30028d2959dba01ea42a09c62075d01aa084c278687239ab9d373804cb8d32f808ceff2a341b4586908d0401eac00328b2b7706cc1edf0019bdbd1b017594d25853b0fa8b0063aeab44378ad0f40468f5f4d4203aeaf407a039bb736610a2ddfd3688604af20bd851b9625d0071283d18d00d616bef34d493cd045060ae3c5a08486d6d01a934ffdc20bab2fb6b80e62f028a74e5f00a504af1a0950de8ca1ca0c227170d0366c233816214ecfc09504bf119f4058aac3d2e004bd2181e7e91fe0bb5f6c70039cb3b2f00fbc6b700c592ca1d03f67dd60132263a3f004950a90c90a950793088493c1c4419582396b50fc086de2feb17b2c6dbd706084c09b0934eae184467877327ddef2526b05c12d07affce00136e69101dd51e006c19dc008a68fef1025092d0ad0d424e5b454019096a7f02aaf45cfb0fb044a40607d329fd1726ed0f000a1d0dd600adc5ca2580e6ecfe2dc0aba40b804cebca25003b3949be013b7e51be32c021d230c021423964272748d03e0a1a9e89a34b832847a726407bf4770079aeaa5d831840dd29808d1849e308a03550bf2d40a2a7a941fca29300caf46d4ae5b231178d3c555dead2c92ad8b248ece430e1a4a92dfad34f4089254fbb0d284b9fde01648f753f005a69f56e0de293b30780cce27e1f80599cf47a802d1eb458471d40984e17b300367a4f178082ece4aa417454e31a90a2f993b241f47ef7c7205aac5c0130f1257fc780926ced09a082ac77b6803a6d3afc02ac515b57d15169311fbf48deff00653e19c5302d7ac3d0d96300dbc9fd3b809cc3ddbe0102f304900dd3ee0868e5790a900ba9dd05c8b9d3fd04d81c7d37c076180234a25aa1d88a59bf44ab77ef01189b49eecb20d238ba02a4087fae2440ab1f5d008accc8c911a0446797cb06ec1f6b184439fe04ca8cec520bb064064ad78095e6179a30dd005aaf0245642ceae2506baef30db0fdf128206ff11cb0d4fa6508d0caa226a0c9a2f606c0844b4ea21b4afb0925c02b400ed576cf8026cc03d8fe92fc9d004af44b636740037d18104cb93308916a1d1b10a0ca01ca526c1b00eed26439328809a7a792ca506cab723586c7ef2d409ecd42d920eaf25d052ca3f7937501b06254f6a31bcaff1cbbf700876cde00322547d700cdfba703809d3b5d80e697d8db93553e2f71280aa82b1b06319df44854065ad22d1a44bf9c7c00523abbf903c053931c1500258decbe01c2df04a81bb667802a83f0f70650670075cb02458abe026c182fd517c016b5d58e11f52f70588b915d9175919c7c0252a4307c6c7b20afe4b301b23e06108c4d4ebe0c1895ca059325697e03649f869b612f723450216fc0125005ab2041fd1c403b556a09a02e599f0034797636062c89b70029945617b0437f8ca24dab7674770a0039febb3d80a2e69d1420cbb11612547523e73e01981b49e30650a2d5c38d9d0189c3516a1042d71b1944b6952783e886bf234015bbb0f46580d0b50135baf2f70e50a760df35c01aa12b5c092063ed98d53343b218ddd089cad56cd19f0e01f217f6ef01daa9d2d72fbc2ff809a03018e657cd0649474066603bb4e53e8415f21131f17dd5a482bf0125dab4710b286b643f002a88656ce6c8003296fcb50cf039ae010a0cfd7500ecbb48b6a706b1ade0f71ab0c62e6cbf0036e8c2568854b6ac2a7232a5024825c9d7062c01db8065311a681405ab7b4fcd680350a0bd9307289eddbd0568f5da0ac3b9be9f4f0fa0fe0c283190c395b5d7fbd4b6710790e09e4e00552d68ea0691c6c91ba08e58c6269becbf4bc6cbef3d60c53c57a0a49914125b3b35887ef9562e5bd9daa1a4335d499b8e426096ff76886c01728587572175842669fe06d877e601604bed015df9601042d7ab03240eb1f7eb00a272cf3b80a6c6d59f4134505b9f50fd84ce5e661214727af166403904b645dc3fd140cb4ca410ed986f5759cfa1f95f007454723202b00b2939f93188463e3a07d4250e55807aeeaf6740d13706a8f13e80bae40a2d81e8dbe45725dda8818e0d425dd49e00cc73c92dd916f3142c0e8f1e4028c7e35b00fef5e4bb62c0a27900488b983d5340a918a3611286e2da3b11c65f0007968b0039223a6f0079147bf70039aa26a13ed73648da4d805649e14fde6b648ade200dcb18e376add57c122786f6d24137fc9d1a441aa75b83c8a57f04d0def3df0783e886ddd02026addf27c096346e433b641d895876c372dcd883d60925bdf75a63a1540029e3b6fe08208891348f00350ad62e02308c92c616b0a2b359686e34cd27bd154003a8fb6c106944e8f90042c6da2ac73ae6b9e4e10db0a16077170631f6c309b95f9bd01edf7f02a471da01ec944b2c13b289a01882fb3d07a418dfe3587a6d3dbd76c7800a16cad913a02eb7ed07409bd199e7b6ff42e0fa853c35a31d406eecbe3ed92a50560628ea8541b2956f2b69a6803aeaa24dd1f7ca2fc015604d8bb5fe8110299c5d5b0bdd51d180c9626280eacb03b65828ada601c2df05d0eac94f9892d90774e5eac8200af67d0ed04c781ab5dd39b04ce5768ae124cd6380a6b593670346e50360a9b04fcd20e4b4f90758692a480d42b4f1d3ed52f64927bdb6010e11a5c11a39e99e0124963866f600353e36405bde01b00c9275d5808e0a7363678dfbfb6c10b5bd781540f87f120011abe4772740cf55ae001554707a029095d33be88f2c0f1c4449b30660359f4414705f0a8a7ef20b584bd3d5019ae61b0f06288333c096dac642330392a0f06c1e40084c1c52ccea5a90d5f76ac0becf9e0093d67d024849e348bf905bbffd2c10364c1207943350d62aba0ca861175ef601db52b4c7db7b8052815f740e1aa6587080aa5d0d603f7ffb06b0a4e7225eb9af1a953b793288a2878735031b6a1b31ad0308298c61ba9f6d354c4f0ca24dbbab0096a0eedc2012ed4d0d22d1c7738027f19640d43639ea03d4c8bf2f80a296801d4039642c599e012a614b255f3340359691c9070d545c859c266f6f014a25e4f4347aee9f433526adac140ad6c7c8ce00abd7e4640ed0f686660bb0d6270500eb86a4f1049058ea177b298b16ab01248571d8fa00e8b98a010e802520d5e2fd49a0c85eb84703b648f40dc220e95c018aca253588da6ebb02b4e9f7058020463253b625eaf2530710c448be68b14cf8f15b760d58cece0075c6cbe805b0a6b3df8f0294d262641bfb2ef605a7e8cd26608b58c6b9b50cec68d3981a0f00732344bb68498e1d33199014f61283f8e4742c40234724a0b827914678aeb2ff2bcad37e12403b7c2f00650db136a012166cf2b304d458bcb78e0cd87bde052c4b44017706d1c8973f803543eced238085bf1b5aaaa46d38b9985f8a256bed70856760ab89af08d84949ef0c2217b45469af73a3b3e7021a0d8f00c97a9c4cc98084ee686080cb7523401ae1edc900c183e4bb0ca8b18e8a5574068826245fef064c9efa6459c4c8fb026c4a38a9436d951d476edf07c80c8e180d8d0d6047398ea24dcbb650f44951fe8fe6bb011ab7228048fd1501a924b965c02c3604681036df0448a3973388ae7cbe06102a497e8e016ac28b178328e99f4a5a258ddd9541c8d8e704b064207fd16299c6c5ca793120e8776a1095fb548bad71fe9d855eaf38061c8b800c6cb093515b15c7e6c3d82cda199a446435ab499ef68833abfbba4a5d340c10ed1280707e7234348846fe5908d062cd2f8368d3967e51423e3a9700867ad29a19441add9a01bebe3ea0a2823d0ad0ea4ddac3fdd2dd02e4f8df4e0c58efbf01ea5228b780650971503956e472d93788348e4b06dc2e36006c48e3650a90a9f0f11740464df2712bc027ef2d40594a2904a69a2d68504aa183aaf27ce77acf025abcbf0314c2c2fea8ca8792ebbd02ececba03108f4a4e4270abc5bc86e909a0a0ceae02e42c8feb4ff6806e9853f42281e5e4af64403076611075a98d0568a0538abe1f8691cb10a061fab73540493f1b1091e801aa08eee85440e25000d410cbe69d010ed5be01eab30920aa91cc960651d2cf16608dfef8d0271b196853031ae8d9201ae853b5dd1639b5a8a26f99d636ea975d294afa4e2ea55acc84c97bc3207ef1f600589538ac109ffc5f074042e5ec5dd004206e015a9b36638aaed9966a1600329d62a7db01a0933b0234f2c90420f98823117b40df9eae0da2d51bc78032caa0f12c40a2dd2540caa0f96ac026ac9241f47e9c02cf408d44fbfa44e2f07d6910d5ff991ab08cd42f240ef72a3a319c64b632c01d5603a06172f991003df7a7726cf8e4730cd892edd700b043c62ebf03640a854d47f70631d48b7780b484e36e668052fa056865f14eab6712c48ebbb061ec4ecf7527808a4e0d3c18e0c61e02584725475197fade548cf668034aea86918004e6ce20e4236e8ecb40592bad63017a3f5c150710fdd2561a15e4f4f8de0017c18500b9848735031afbcd178348342e9a3c80908fce2d4081e5dfad80e6fd3fc092347e8e0c4260b60383a8dcfd06b02297cd9901ae70fd62c327275b8368d32fba2193a0f8e4ebd420442aaef8cbc00e1d745c3420481ec25f2fe571da775b0225ae1b5b1a30bf50b04c0a994d7f0169894b567e0c42d63f680f99e7c93bf2914961f4cbbbd258871e4bde1e019b12d1a6e8a8a50df8468cca7d7821ca71b20068b912dbd5f7bda2c5d9cc202a171b1ff7dd44dff695a884eee40f5041606247d50130e1fc1ae0ed3902486dc53ed80ce021495a2380344cecb73c8048b45b35205a7d02904364d43188debf981bb068be05c8caf9cd1960d2b6006b72b9b93708d13e56a2362676802d22757b0ad8f1c9e73f10b5fd8a4198ade690e4cfa94188c30fb52dc905fdf1032823a71fdf80aa6642daa35447f5858bb1b8b2efb311955b152bb29327065817f706188a97002d0262ebca01a00c6e00352ddfca02681854f0ca63ffefc320d2e8960da2e76629604539661303ac8b13c05a5e854783e8b9fb2d60236530368836bd7837886ef879006c25b86bc08e7e79893197cd61ea97960101ff3c4031be8f1383908fb877e300a2c5b67501c6febd722995b832b503a8968812476df7a74a90c2e8b9f5def370008b6f409982c5e1e27d7bd162c7cf00b96e625ff00144abc71d1107c03eb60e404b8dd8e17e0051db5e13a081fc2db044f8dbe7008db9dfc480a8e88b017e873940619fdf8141e4f2b233c064e902369a7046000dd3e30a40d6c50bede1f5cb67d7203ef95a0052c4e1f34c0083a4fd0ba896884646ab6f1c5ac4a7b4f9b75c79041049ccf55e00de63343088ca1dc72a6963033e6e063b0034ffad01eaf31c20033ef69e1f40543f4ed8ed0787f4fa02a0111507d90e203ef9b9308882fda500b5faf79541b4e9f710a029fae7cf203afb7e09d0bab2c12fb2214694b804c00c4c5eaf01448993e9d880d5eb9d401879c9c3145064105e7e0968103e1b702284a267a3327a7fd60754f8453931c0d8a4e74ad5c82577752210b643f2f60ad8624c4c43e36e7ddfc5d914b0d2055c51d2ad37a38f6a00769627c721415bbbc3e24a99036055b032201cf70990017f3a3320e27d01903e3db936200a7866807754bfd8ca3edd1a44b6a39641f4dcf700a0c9f3ebc820c4613b14504751974c3e22db9f478026cf2f1a28ebecc8e57567c0c8ee1a8438bcf7002564ec73661063ee6803286b39db3660b2d027553ef9981ae0523b3688f6f8a0725edfde9c186006d251d9341f5df9f96d10d5bf691a10268d596c5bce97394a1dca607fdc859d3b438076a975df000a711e87a2df795d793401c8e68f3b43f7dd4467c70507071022b5f83388068a2b64f766117a2c0e7d1f0041bfc480399ba2dbe66fe70468b18e7e2185725432e016dea60142d707ec28e9f5d2001f7d28839de7fdebc4205afd78062890e8d7c8009b8e062aa59a5f3a00c9d8c319a08c687fcc0cd853736440d44bb9d4d041854703e6b95f409dc548f7508e52de7b8bbbaf8095f66eac02ec3d42d19533802ce923fdc2fec29a01dae10620c339b69c1d0086c0036083c0fc550c6234c465c87ba39851d99e03a40c8eab06cc2f2d037aee4c8031372b04c85094743835888efa3e11a05f7edb800275f97e3088cebefd11a0a35a4a34a51cafb4870df8cb4f01fa65f26880c17a09a8a03f3e4f0c68b12703d62f7d80269c82d2a8694a1a03ead2410d83c8f636052cf9e48d5ccac5121b530e0b9a52c147654fdf0132471bb9007b9f5188c30ca0d5dad114a0d0405ccdb96f512d45ff01a47068805d3800c8a28f43df0710fdd2680064d13795c68ebe7dfc08e081fc7b6ec08e88a501f37e0b6071c81bb0686e0252cd40c706a89c7b0366a036a028291c0b50d2ed3fc0fdc97d8004e65975a9f0c9d9b301fed32ea08a9c7e360d6220bf6c0c70cbd1c89e923efa0604cae8ecd2b21c89be55012be5f26b105352157128adcb244ad1cb797e71792f50e6b44fb47aea2399a32ea0a8bd3d312af781e568f5b89864af6fb183165f02b4c7e217b0a672711fdbbe57e466281a442e71f9efdeb244f585d7fa0070747f19a08255302d357ea391d3bdc20875310648a11cad0d88028e0c70541d0930f67f2987856e7826203d56372078d0011425fc1706d8307901e4e3750b28518e8612d54273a17254f864d5348836fdfa30c0c8531a72663c7f1a3013b60da22b274ab486bba3a46ceba1a592e31bc0125d78d613606a7c98015634e16c60101db529197054451db52a732775a451f4ad91e3ef00da9e9d8b8d4b19a8ea6cc205809d3bb9511fa0f5ed09bff0fa362e22ddf70a12342819e0dbea19e052cb0176d2a789013b3263362d5a07754a06d1fb0f2d01fa25de90d92f89c86576264047fdbc00e4d9fcbe33887eb9c909d0eadf2340995cbe7e0da23dbe7e0c58dfae00329c77230316565b8002431fc7065c3c3101c892be7f3208398de7800e004fde11003d967c288db53e393188067aaf0036e472f96780ed5034c0b5f716607f0ceb201f832b8328fa1b8d5caea03e9b31804a5e78c7ad91fb4e90adfd0cd0c22a0e061f409434eed73e00e6a8a87e696f91850e5a1930c41e015a69fd5d1ba0c78e005228f1e850694f30251b06eca6d4275a697de917329d7e170208cc8b12ad20855f1d0334bf408d8eba3932e092d92f409d4fbe2606d8da2ac752abb50b034ca7638318fb289452a62e22d11ba5b1a6b35fce001bd2986d0c8859340cd8281c8aad94890357d847e5cabe9c60d406e8e0d6a807204a9c8b1321251f644be2a692fd6256f658c847d9bdbff81460002d7e0c889b9601052ddf7a06eca83a17a0e74e86002d8abebb06ecddb807487f4ca7029ad6d606b8c38e015a36354706ccd95f00594a3fbf0621415325aac5fb746210d55f350ca2fa0b155d8651bd6080ea4b0075faf65b403b331e8606845a0b064cf32dc04a91a2530356af1b039ef2511a68985cfe5a40e6d71960cb27974d035eff51dfeef8e41e71c89a34b27d7b06d4d052afef06dcf11f7aecdf5daea3181e9562510ef7478096f771cf770634adc54593a58ad7eac30f8318c8cd984d2b5ebec5bdd6a57f1b537e0a06c8d8a94164fbb703680762f34380569f3f038a527d370638dc2f0025842eee2fdc9b45146c3a33607fd0ad4188c39cf62855a44f4f0c98a20db4be6d03580226f1a0c31e90cbf7ad4188f6cdc2001facaa8f572199e60c70ec2e01f5482357681a5030fa3693c2f8248e441c00fbd7f30638dd3a8035baf0636e108dfc790dd06c7aff0ad896d95e393388da3ea7801d3ab9f52650e63843980ad95caa49fcd88019f90b9052b90fb2cd26606e800850d521815cf84f33a0cde88d18ea553b33e2bae47d37d1b7f13ed001c427f150cfde2896abe2dd00abaf0b50e8e8270568a139280024a7bf2b017a3fde6fd8ab3569fe6b8074e1cd970102f36d807dda006819f95301c8fcfafa3308918acb1af6224749e3be8b0320267e23402e6f6b03028743c092923ebe1b3089aba418f049236f10d93eeb176b12bda81944abdf1c1b44cf3d8c011bad5fe8db4c5b461a4f770628479a50ebdbe493f6c8267196e66f8014f5f9fe03a833cdc7fec252cd27201a31086bff442af458cd73765ceb7d00d1a6c79f00e9c246132057f8efdc800d65af02a8ad53fd82f064f2dd0348b11db5019e3ce706f4fe3d00af6472b234606be49b41b4c7591db0a4a46f1b01846e9b3720525434c0539303ac34bd3e0264afdf150c2297e777c086449f1f0c22d1b512dda0727e1b00ed633bfb30206c7c6ec061850a6087d03dd062e502bfb82b1aa0832858b98ac01cc540aedbab108f75ec9b58b358056017c19b01e1eb1f0051af24de6a3d001c2229400bbc78cc650f348b5d03b47cfbfb366053eba7418c97b8d66a3fae29e9cf1ca0f55c6b0290fef8f93120b8b4308844635fce7ef1a689af60c00cf464807c1c1b608ede002463ef5b807c06af894194f4fec100234f45f78aaf0320e897bcdc18105e502e9ac556750342e02ae94e8ebb5b032439350849befe3188467ea28132a5141aa6f22c50262c780590936946c1b2991037f69100257daf028a94e3f80f50a2fad73702e472d30254cb5cc114e558eafea0e428b4c3d25a2a1e0cda1bc588c3e9d28013a94f802a721a57fa97feed98393936e030dc0c2067f9c5d4802322158094d2f1970181f6ba0157ca289725b93cdf1844ef1f5f00e42e8ddb6f0f00a1db01e466d8160c10dc1560a3c5481bb0a5a37eee01d230b77d8348e3356780ef2206e132930f36e9e50da24d572d0156055f3d40016bab7826c032e1b709d05eb837fac5f271495796cbf83f2ea97eb69088a2bfbe01d6652e328e8e5af9f84f3cc2b46f51cd2f9700b919feaa002f01af0c382afb089004dddf0ad0fb84d2565e02fe9400dac637d91a44a27ff7002994bf8101fb72540e89c37062101d35eb00d694a37166401adf06d1c86735c046ae9b850062799f33e08de50b83504acf8901dbd694a8ac9c2f9563877cdce605908fdbb0d856990445a22f65037abf2da068c21250d052b42880ca79a291cbdae43b5b034afce2967ec9ec7534ee0f00e32a89d7f6f62d4acfc5bb8019507cbf7102d03a2ade463f8028e96bd180239967809a6ca967017abf393088269cbf02ea12cb6f0326cf3140f1b9c74f80a6a4f1930173f6b701418c09604defcf9a0658f47f06dc10520568e91557b61f00d6d6b54134f2993ed1b9d7db338328c7cb8301bbe447801d7559d1ea5e8b6d6b02f4eda265c0469d1b8348f4f516502097879141449bc6cf02d8521f0b80567cb1056f0f98803ffb00cd734f3b03e63901cd73c98d01be0bfda2ccf078383788725cd3a616dc3f15bd8a724cdf0d70dd8486d96f5cc265720c905721aee5dd4f15f2a0cd005aadc5c57907109d3d7a0268e9f5530648c38c1e0db0d8ce0d4282e231b90ce808d1c59101abf93b036c07a5a185d5cfab01d6566a1022f57e0bd8c9965a1944bfc42dcd07404037964d1b3b00e69f0691e8cd12a0d5daed089092e8f4cc80a9b1265066b3f109a028e1af18e066d80920da8f3d0302a93700cd957fb469261f88c3ca8080bfea52a71caf1f800d93e72c6c98adef3f1d57005cc194238ebcd5d53649bc2abbef15d445bcefb19f08e4882802b49e8b53367b0b57cb844b03f447db802d457380566b3f5f06848eb6007bcff30009ccf3b301518dd4203a6ada03ecb4397f6bc07eba1f032cfa5f01fae5a11b20131854ced28065e43f109dfd5502c8522adc08a02ebe3e0129b97c6d00d2300f7d0372b937885c1e070224ba7a34c0fc4a002574d0f79901066b0150d6781902b4f25c3c0090b15c7a6e100a761633d0bfe76e4fc384dbf9c0543ca4b0ef043a3b1e8439007c4a79802ca5ef0e404bafa67eb1964251a21beaf23401485dcc5e0cd843523688468e4743f68b26e4e3756310ad7ec627654e84247f0f0608ccce20e4e3ac02d0c2ea7d6380ad7d6fc0952103404ad1afd7802295fb122851b0db89017733e405e8ecc702005b3b799b19207454bf5c51efabe8357e71db30c00ca44db3de27849500d6e8a0eb5bc0a6825d482e95628527510f43ac9cf719abc905a0aa6daff500fb9b3762987e04f07a2ee2a6fb5e411c628bd5be13e8ca98f7f7b6276dda7d346006ca03b4b09a6c0ca2b3e3faa4fdb8d684933388349e5f0c70ecb603781d754ab6596713697e356013d69541c8c77c04d03aea696a10b9dc3c19843278ce09d0d92f6b4089aefcb90368a83ff40c228d37a52181399e18447b7cce0115793667066c5b7b342090aa5caa04a88ab7801ab3d88b72a993c6e79701daf2d980f56d05b0adb0c12e446aff1e302f4b56013baed48d6777f79d204bfadd0081210dafe6077980965e719bc501b02d49896a1df5770bd0b269b234884f161f002d9b9ece02587fc44392078021b03660989e002452dbb20127757202f4fe9f7249e5a64c0c2297f78241c8d83bb5cd269cc8f6c680a26f2b0618ceb4bab5d41d4d68a3f78706ca540e0ef75301127d291944a2eb2b83a86d323288baece8b96cd28ada6e5283d00e5f2b408d58525ce3740078cfd5ea75c472db30c04b7b0c58e2b46fa91ccb0a370cd1b7992e648dac7e59a30b5fbf03545212bdff02142ba1fa2687d5c9feae5b2ebe1aff0076dc4d79fe6e10951bff05b05761f46580727c06484e5f530186fac90940abb5a32640abb5dfa101c73b3e0d88bf447ba4d6634765037665b50db0611201867af30120397db916403e2e2e0c7892fdce00c75d0ea05552636a10e5d8a606c4a3944b8982ed2a0234d0e71220f5f9b2025424635f06cc95faa44ad19f7f0c0860de1944cfad1e0c50288843b9a66cf58942f16f530302546b409d06daa93d9608dd4ee558f1c9f5c880e8ecb54194e3bd065893edfd9b01bba0a97e26da3cdd1bf35cd16fe9cd8b01f6f7011f401c432a17ffedeae4136bdcd933400bbcf7bc006dfa17ed51f47a2ede09d8ab243afb6f68c0b9824b01d2386a01b47cfb581a70f0e24d809e5bd70c62544eef0d70fe4d015acf35d70608ddb34108dd490e50d68990b28034ee97018bd52b0326cf0420057bf307a8d2d9b7ff00b3e9185023d1c72b034e3db70c309dda06eca43e02688be6632a407bdc350c6278bcbf1a44ab3f5d03b4d9385eb9cbc09a4fcedb065c46f80dd854385a5e01ecca1835f44ba55ac1d88cdedf5f3f1ff1fd383550f6fdebc949f45cc9be8b46c78059bd02d032f26c63c02afac300dfe7ab00959bec027819f97e25808c4d7200e9d39f7380568def4f00e9b1b30b036ef5aa099068bf059058defc08d0fbdf0d8368d3691750a6a45f3b033afb4b00393d9f18d0d9f7009c19c9ae6ac03960e552a52e9f2b0109bf3ed162e466658071d534c03c3f06d4e565e919304c11874ce8386c7d6e4014306fc0166f759476fecdca800dbfb81e1a70bbfa58a0c2190935e196729c5f1be00abf31c0520a4d57aae4c398c82d4834b31d90e41873be5b3f37ff0668c3f23434eefee6a7b093a731e1941d138f3b76f75d8d0e1a1f01e476394a0c688f182f652f89c76f062c56cf015af03e2502b4fa6200909f7f5c3788342ece00451ab9ab34a43eef6f0434dfbe1a609faa606579f1070658280d01faf648e5d01af9eb5a805cdefe016216bf064c9e7780aa66e4b24128d8f33303963cfa454debb92b80d7402afa527bf2ea06448a9a06bcc2fc6480315105ac344ca7062c566f019af79ffe813058e7430154f0ef3b60ab51d93060c1ab92eecadc49bd1088f55cf210cbc87226eb9c02a74df71b0c43f87b806285cdf9a1e9f6d78d71dc360fe0c59cdc3c44bb926eb0a427313c2abe0c6814bab0622bf82df46945e72b93c104a0c5fb626b8075710d28321a8e0b06f18b5701c50aee8b00a9cfa38e012bf14b4005ad1d2f3a1e0089ae05b41257495978279f2f02f2075d1aa094be0d3818fc0b50907cf727c0f0d85e19841e7baa1b70b4bc0d9039fab204b08e4a2eca066ce2bc01aca8cb6ddb207279bc34e001b695012f4b8e016bc6cb666b10fdb2d919605baa1c1b3954d5629b0a27633f01f81d929d5a6c47a2377503568d4706bc0a3913c01dd64a0cb80b89ba54f2d4e5fe5d40c3e3c28057bbe8fdfdf31d31083f0045caf14ad1b33f229aaf805a8577cea26ff7b7adb1a7f70520b7dc34f447d52741e391f2bd8469f6880154b5bb74f46ec082a60690df61f260c0c3564d80dc0cbf2380bc0a939501bb4b1f0152c1d3860176f2854188d448b9c84530eb1970e5e10c50d34eea8d0117922d0c8867970072656da6062cce6a061cc8fd052c297a73638033a300d05aeca26480a5b406c807fb7a6710d93e2e0c22dbdcd2209a30190be0aad87e02360cd3eb7303c24f5dc056138ed2408de76a3b03e20da1e9aa15c56f1f6f0c38d4db0714f8e4f8089052fde1c28050c92d4053418bf6a8942a3cba4c5d32e18f75c35508ddfefa355e9a884158b34bad3134602a3807a4d4f66c0c905761fc0290cf202e76deab4645125303ae81d327d2fcef970039118ef5896d879a41c8c753ce00496e0024b8db920152a8a2d729696362c02bbb4706dc0ef4035832e6aef5c9926cb7df0678adab0678e07b00e9f5872f00ebb9e4fad780a8975a7d43a22f4503568df70298c5f59a0193e735602b97c991016efd0b039e2651d1b71576a72b17992ca5b5008ebb1e9f643a992d566780029abff52e40a2ef34a1457b9708a0a417649ba9f1f0062e4205d7ff790343c3d47da07f12e5a87b1979fc0ab0c62d03e488187c09f0c9cd27406e869f0f80146c43894af55dac0cb0d81e0dd8b3b90648e8de56061c11a9009664db181bf0d84fd12084eef6d780213600ac649eef0cd892f86a102d36ff30e048f716207dfaf4238048bd280d02edc9c72960ab25e0dc80b7d1270228b66b957487f05f5c1a84f09f570c30e142afd7336dc9f9861b037cd27f021813c71d400191dad1d999d0e1a32f19849d5cdd0854d8164d47edefb20d7d5a31e000c80250a23d2e73800a821b8fecec4105c388bead54c9e5fddd200c92b318fbcbfd8be20730896e58fa619a718ceca5cf9b4ea22b97f64c9cad05b45d6c6e10dd30b905c811f1b434c07b9e00a482df9486dc0ca37b80b4e5ae6ec0eb3f4a43a23df8316015fd0d9057e1a36ac0c19c2703b6568f0de84a652b87d9eed880dd2ebf06ac809b800d456fae0c182f6a4239224e77009db2699d19442e0f9f06914b321440828aef06f861423e9615ed4ffe7a3260df27e250e16c64b2da19c4105bb701450ca3d7890073439c9c3e005c6a142c3315782eaa6bc03b8947063caff60fe074bb0494e986df4f831851935825adf6afa31fc03cc6dcca4f6f9e87e0aef6ef22c42f520077c9e7ae1e012b9df788265cd943329f03e4da1bbe18c427e35780647d7109902362fa0d90df61b236c0e7f800900a9ecd0dd897f366c09ede15405e85bfa501f72a280db919bed7065c3b7269c09b5ccf0638666e00da10f2be34a01c3503566b970688c309406eb95e6a10d93ea88158cf25bbb10086f3e2c400773aed21259d3c1f19b0fdb661c09d4c2301fc1f3f4d80f65abfd40cf0b1e50cd8852420ebe2b86110adbe4e04982c56cf064c5ad7005c8cc9d30c502297bb3f01e69787070376edd5011a1e3f0301127db80754f0d1a72a698d2176d306d4357b4c004b668fd71f006ea8dc240ab6de3f747f0097a161d63e91ba88496b6db367f80cd0ec311803e43299bc18e0c5bf06c8fff1b102c8dd113bee0e8060ca1b40ee8eef0d407a7d5a356003e689016eb977c09a5cce07067803ab06d195b79706ec96536d37143d1ea738004e1b9f19847cdc2d0c78bd43696c698ffb338328e9ae684064e4d48083176ad31dd5ffb936c0d5198a7e6d8748a320803db6ba37c0cf4f9b7a6e784f0c30cffb06585b8f8054265cdf80e9e44a80a1feb833e01dcd2da088f06f3f00657d726d103db7f907d871a772545859b4560644029e0055961a1f34616555e181f1908f4d663ac582f72c7eb1d13309b9f390c28d8efce7aee6809276fd46136eec6519f600369dc8c5aef0a31c401e92c5c6005bea062087c8f4072077c7b469c0fee40780347fbc5e5ade58706f17067815b606c48013032ce94f807c179fcf06dc32923788ae9cf6013b2a178f611f003bbaa706ac2b670644de1b064ce2d1b7d9da559b068a0678472b808224a86b8053e5c420caf1f50890a2bfaf1ab05ce918508e1da048b66f7f06d162b7d7028cb9c75303c61cadee45c0d38d01ef9b3605985f9e11a94cf8596ab40da21b9e54db0ad9ce6e0d109816a04a5db66a8f6a0cc2dc82deb7abb3af465e5763157d16c2bfddbf4d1b821b93c5d69652dcfdb337033415d4003ab9f47b06900f655036e00d882540bebec5da20aafff30690c6bdb83160536bdd80b1af3424c90f1d035cbff7061c97fb01e0cc48ee5e0d3844726f80cff149806eb80f59dfda93b7fd318831f7543160dd40d1338d4b04af6b8038e81729b9dc5d19d0a64380fcdacf7f06d8415b03ae61f910c032a8570dd804ae4f4a946365a07d5b970631e6928e01f76de501b272360d40855c861b409534663b0322014b816a64bb7901d428c7f7a741b8a1ca4aa35ea1d59b802543ec05c1cd0ca318849d1e6053e5343abfa8e6ab318bc5d9c8f2cecfee9e8782ddbf2d48a4f913a077f0c65bc04ad7e186eadbe906bb1c21cefd65955c2616ebb99dd71ef19aeb7ed6d7fc5207e8987cbe64c0ba41bf9083e82c67c0568d3b80bc3dbf63809c3b8b23c086e1f1f30e90e6bfbf3688369d1d033480ce5f0da21b86b7061cca8bbeddd97573f76640a23983a8dcf98b0002d3d227da2d773e33e052c4aa0181f6b20012d4ed035299921583c8767702c0db93ac2f0d5824d2ead2ebc9f3af011ae64b806c9f1e0ca2facb4f03e454899635f67f0df05c350d08c7d12f99a1c45aecd380bb90ee04308cf23b004ea664a616ab91cbdbb701e6d7b5015d49ef67632e4a7a7d654068f119b0625a3bd32fd6e472c768a86c18b7eb16604b8822f63956f2bae53d176bf5cafeea568218f701f6b7fe1dc0f411c0f9975cfe2b80cfbe350600b9b2e291ae032060f70bb0c5f606d0b4162fe4eea554e6d7cc007b7d0a90d7a95f01c8a734f932e0ac570fa0c8ea6007d00c344f0ca2c56657013ca206bf06210ead63803c461f3503f607e50d38403612a0a35a4f8054c1fa8901c2ffef1798e71f02d4e5f70f50a42e9f8f0691ed4515a055f463c7201af9a26880a5847c64134ed4f6ae6ac0c4772f4039b60215b2bdee09685a3b356019f964c0b6f915a04a2eef63017c6cfd8601eb7d7d52d70ae7d8802d8937065c91b13060af640eb0a4a40f37062c34978015f35cfa0fb0ffe360a154f60faf726be42b8057a9738be700d93c1733f2e20a5064e2bbf80494f400ec39803dacb9710eb0d66eec6d007bd02664eb496b5204c8d975b6326054360cb890fd142057d6ef042047d590da7a3a99ff03848d3f00f229f54b06f8718f0d10a97301c5d612809c4c9f45035c6a0d03f639ae01f2d26e7f053459940cd892f8022851b0ed9d015b4676065c8fd3016859fd7462c08aef0150d114ad5f5428c7a06910e5587e187063fd2da02aabef4b408b22154c26dcf6c52082e4676a0ff9b61e95e892b1fffd6180b9716340b45afdb222db2f642c9b70980aee05c2b6cc4d43afa77e2b2d8c894aaa57dc73e717009e53cf2d0a01f62f24c72f7e00bc88928bab5b2ba91e1dcac5db0b07c02f4a8072c42b73573159a4ba992377750ee0deaf64143296da8336fc0468061a8c00f25c0d3e0da2a3164a436ea8c5102027539c183a00de05ec07f0dc70543188ce7eac1bb0815b9f6834bcea13798c8637066cd4a109b3d1c00b420583c8e5be648033f4424076d097014e845b807698b55e0c70caae0ca2e89bbc00233b1ec7ca40592bad8501bb0773808ae6a81f039cd4ef06dca6a5f6a8ea7060cb20b2dd7c1b70ebfd8901112b7da2a33bf7350186fadd8f01ef7a7500b2d856d7064c7cb7062803e4231b62bc27aebaac4874766d1012b4bb3388de9fb601b2fa2ed706a82d810d2db6bd31c0eb740ad84a8fb50c386eab36dd55638885d3ad9266eb39f63946df16d3947712a7054099892fde5ea8ec9f430e306f0074e125f3fefeac464caff33a402f175f85a950cc56c4c41b42c3143dad31f68bf6b19d9d1bc42767894128837c19a0e8ca1fe5b0f7ebe21aa0f9e5e6dd807b69ff0448a34fa21e73e77301e4e3b966c095655f00f9b63e4b061ccafb077813d49f48492f00f205dfdc197084b96840678f0084d193cf9c0133f205a08a586e1f0035ada36a06ecaa281b442ecf2d038eaacc007572593e0930d45f170621b88f6d03a6687abfa2d371af63c09a4f6637061cec6b1b70947a0bd006cce7a901418c2f83e88685da744b7b5cf40c589cdd0ae065d9ee003b0cd633c64b358f976516fdb23f221203e8e20d5063009d7d0336cc95f3309d4a456ebfcdcd6b8022af0f8ed700bd99328e82fd3b9b70f90090d1db3805689e9b9f03e4b89b9e18b0a90460b7dcf40b20a7db80343cbfcc6606d1fbf39c8044ea05a0d1301c0bc867f06cc0feb13f80fc635fa9010b090339ba730651d2fb0a40bee09b6703f66ea406d184bb27809cc39f06e4f2dc3440d1aba4f8d892d59d012e933a40b3c747ce80e7d52e0db8b26c055892ed75d7802d9a4d03362c2363b6e9b6af06d1a63924281b2fdcfa36076c48e3edd7805bab6f0470fe3d4f005b097f01b043f8e3bd933da8b26980ea570be4724d0355d32a67bd8680529575d416b0a961f48649bb3fb58907fec220ccd1d90f806359b9f0d454ca456e48cd2df200ed99b820d16ccc316e1b002ebccc2dde0025e6b978aa25037264c681a90c704b73eefc17a0fb9446d1d965c7a3c62d805cf2c32780e7b91940dec049c869d9cebfb3a501c7b2a8cb3f4fde4a40fb0c460039eec6350336a43e0264e4c5d1e13d40703b0265d238bd37c091a982c90b77e75f20da2d1ad95eb89fad00253daa19b07deecd801d445f802ad5bf4d0428e97065801392decfcc40627ce7066c80781050c48a8eb29b61f30ad01c755731c0942c1b70d1d3b101b555a22b72f9b83408f9583e1a70ab681fb02697dd8741b4e990d1908d4ac2713f06588e3d03ee30d3273b3988ce0c2869d885e56c5a63758268574be88f9b8e00a6e4790c8f4abad3b416ed51f9b7e22b02525c26673f006e25cec56e860c707b542eb614552a7ac020777e295062ef46b469c5af998ca3d52b5ebe45c0ee00d8d44a49edda5bf4018e14510ebbd44e4f009a708eaa066c08c919e0baa1a4f6a0f57f0db8672211a06f8705037632bd01e441bb7b17506c6d6c80e3ff1120598f5dbf7ba009e7c200157c69c056c067405d91800f0376226c00f22a9c5e0334e1f4ae0c22979b9a4188437e68101a37ad085439dfa0a2af652acc0c080d3c1bb00ba96bc056c0254076e16a63c03e25a5b161d27a3a07ece4f87f348844d75f06dcde10d35a255b4771aaa403d07ea9edb580027648503680b8ce210437fb824742cfcf016b76fec553b519d0108b838e956a36c4587a2d011badc536802d8effd83292e59ae7a1f3b82bab52d5d5beb97c0c8faa0ff5c6db937bb308291c5152fbd71721fc55fbb5e76f00b9b167530144aa790590176e5a33e09e1afd4253c1fcda809d4c6f06dc7a7f09d07879381290b64c0d38185c04c8e9d6fa3620eef1ef17bce2ae82c949bd3937e01cf0d480f53ead9e8d175c26a70608dd02208fc0aa6a1042974b0c70862a514d05fdd480eba406066c91f02755aee4568be904c4f983017aac6fc0298a0b83509f1bc4d2eba875cf80e31d4f0298920b4036bf702bf1c2207a6e41ab679663647bb9116000cdbb8094f6f8fe16c0948c87023350aab215907ed99fdc3afc221e82cbc0ae16b6e505b5add56ae1bb887338955a362a638e9a1400ecffc8e111a8a54b42e093982c6ac53cc183f36f4041aeced0a735bd159f1b2706f18bd87098819aeea6dc0196c4c447b1f6a8d9477f7205904bfe6c68101d35fd05c8a3783600c881b8580a301a26f700f9fa26d4d6aebd8f0a409ebcf614a02969f267c0369c9201fb828f001a84770f0684af9f0d08732c0cd8a0ab44e5b86bcc0cb8a16c691052f87862c0c36735038e0f2a97250aa5b915a0e8b71b0314ca9501eb6c157d45e58ed706d140cda50107622e01f26ebc3e1ab077437dab59ecedd800c7ee95419423d712608e1aaa2be5ee98ae0c983c114b1b8aeb5303145bf8616ada1092acc8361bb791c6ecce00b70b1d55d5cee1b71b019c90edc4809b5aaf012572d951d24c8bb32d6904c8fe1dd28847b933b0aac6203ce117b57c2dc6dc05d9d6ea75a6d730f1eb699d0794e262810c2c59794e1a803557625e848cd58b656cdc7c0cf57f477746d1b775c7d6ce460045bd88aed4ed1e5c4c041098e9b1014a7a089037704239ecebbba80bc8501c00b8dc24b97b06685a9b7f1bf09a7c0fa01175f46b40e0b0681032f6b836c003df05c82fd56e18703b50d98010c58f012fd4a9601a40f733031eb53b3760fbfe99014fa4cc01f2af775f0cb8393f01c85fd8480da25f2e0ce40d7c02689e3bdf19f016e7a3419423d716a8f23a54dd8075b69a50c75dfa0b03b454c1800d2134725527b9d66303cebfd040d9986347c4d8805bacee05d00e9b4f40916c9f287a3608a9fe16c06c9a2c6a800a71f54f24b9baae11c3d12fb68cca78a6690ff0f6e4698f6c1cc7202ce400b51a8bc49870b2d99665241e92a5e7dbf9118007e972f32a400ed58b174055c1fab0e897256ef7c8c5c9c7ca52218a5cdca4b707bcf918d7036740c707b1b5ff1d656a44e5960e0b8e9b00851770ec2e3d014f49d4aeceb8b9650f640553fd7f9b5a8b00b9291f29c77e428931a73434f1a93dec73bc1f19e07057a21ab717b706c858dd20447b746180c3fd1520afe447dd20b29d7f19b0ed55d5d7e9c9e6ce80b569c980f70a1e0cb8704ad5df50db666210b9dc750072885cfc1a70bdf83340f35cefc220b2bd6b1b90eda900cbc82532960d4236d75e188442d97c0064e3ae8a066c1a380660d2264fe492c96da4f1361660543eff036cf55a19c4d4d8ac1b44c15673404947dd460255aeb79801ca6887b75b03e2b77f800a257dd819c410fb9c02e4d8fd1c0276b528e9c93f10237bca78a9d56b04537a80559d875763f25c65633f5cbfe75f02da97f302a8118d1c47cfed1f30008421b0f21100817fe7091b0099c5a32383688f7101a0497c2220cfe66265c07cbb04d84d7964c081875780bc92710bcd0170947a0cd086908b894194e3f912a0e9f5eec980d39377007925e31def03e099a6d480fdc9ff3e6127c23d406ecacfb201b735de1870e3b4125500e2626880cfe0d780cb6e1f005b855a7f0d3883f76c80582e00f2d4ac0d182f8f43030eb0231f9e3cfb9f069c8f3a316069de1360ecef2869369043a4929e416818f67ead6c058faa06b18cac2b97b4ca1ba94ab4a85149dfda293b1b09304c9f870661c1969e0d5824ee00654a7a7b2bc02a3a5eda3c00ce352adb0a057b4170ab550c810d3256ad472eb9f4cd20866993615add60087caae85b9441bc385e5965f67a14bdd93688c5fb8282d58a809381019745fd01eab568d30202535bd6a21c6c0958d5d675824bd1d96b3daf969bff02784139c704bcb6311177cc64a0ce2f16af06a8ad398047cb727122b5b2de5fec1de2109dbd76b865fa0e90a7777a0190dbb6fd05909776fa61c079c2b201e70995e892713b1f0034015f340c08d6d70c58cebe0034d45f0a061ccda818b0775495930fb6d3304019140c88f23c0034d4e77d8328c7666e807d7a69c0eb5025c08ecaed5e0c70ca86e0aeed755add0a30809e6820cfc83755030e90150dd8d7772cc000aab70ca8fe06e0c3b46b0366f53301b454e24fd05223fac5e6f97a6010ad9e2c019ec491d36c2047a2975b03dcfa4d03f6c2a50036c527773d013c68849ff68037753a802a2ae7b26c80c5f607a8d1402d55ae8e6510d748666059c372bc0364fae1f08b786b310372dcb1b7385b686865f12940a24d8647ad8086f9e81b10bf6d1ac4406e2030b512209e883d80b0a50af45cadace50a05b3866167d7bab6c164893b222a9b748d033176fc6760a7b858b8e437990dc3cb1b5f8002bb292f43f8377ea12e0ed5547c4a2f972f027412639c026490b49f01d21f7133fa0184c00cbf01b21d08b46f3c89cf7706d1fbd3b24148d0e3528011d557a252060fbf06ec4319197051fea50167894f00f238b77e0c3857b03208a16b1f01765a035d1850d27f809d2ad70621fcd7211f1b6df6495e8606ecdb2a01e4a4be2818b07bf0cc20b2edd3519af793b78601f1ca13832847b21240a14c91a0aa7675ae6e0cb8db76224037246b03f69ed7015a04ac52036ef46b016408e40606e8319a30530691cbf2c100fb636e80da52c1aa3ab1bc1560b9d2fe119013e11e20eb222eddcdc01643e09d2156dd55b916ef5b0065f076621005fb0cfdb1b17bb0d9348861fa8e5866da21fc8571416c0652d91f538318b70d8658a61d02c44bbd0710459f313c6ab55aa82d8e776c32938507618e0c3059ee0cc2988857dd32b0c49199ff03acf8c585b25d61e54ce9cada16308b4fb669996d6bec84dc1679c53d370bf5b9f53b018b90e4ad1734c3be410cb1388dbeb7c571664c49d45efccb17039eff551a72dab7df018a9c4d8606c41bde0072a7c7dd3f0710daa1a392caba883389078051533108b18c774632a0bdb42fa901d7167d18f0aa8a6aabcd820de522ef79636ec0153b058350064fc7028cca3620d330ac70660644dffe01ec8f1f03ae4010d026ac6ec780c3e7f48b9d7fc767063833be0c38fa47bfd8dce87f1810d23b3208d12e5c0ba03f660b804efacdbe0cb8c06f2d409bae3f0d7871dc9f604c9c570450172381321df54b57da64491203fc30f44ba683886a2c0dd8ecd33508ed50fe07629856da063c05a6dad6a8cba20ca8d3ea2feaec25055b54012b6adb68013668a98672d9494bc5ba729ba9ad50066f4d83f8249e59c94001b5d5ec1884967aa72e991e0b6df97e6a80b66498662badc8f6e4cc20d4c5710d5001347b062836c64badcae26c41e5325d889796f6c86c29ce7b140c88ceaab62bd4e7547559d5f1272385b5b55c48b70275acad3a40061a0ed5fd99e6f884fddabb748df9c5e26c976e58246227ef4a8538c9959b9f00d65cfacfd26b67f5390e71f877667558072864d3e802b4138105efceae9bf62740aa8f3d573b0742da1f00c53dd8cfbf73dce3be0f5098a3a56c653ab102de59f5c555fa19508882d963674df75836606f60de80fda70d0184ff1ae02046e7c400b7cbda207450e70b505010b468c046ae5b032ee0a272555d58f7fd668063f7c38080dd0ba0a8e0e32b4086d16dd3207219f50418ea4b7d22ffe97ddd20fae57964c0492e04a6aaab5c066d408d4f66f706bc2d5834203084c048c3e40adf06681835d092ca3d750c70960f001b965e576ac20d1aa6a94415c369340d42c3708c6097e920340c52681df4491a998661a5d53208fdf14e9b661a86e51be5c8d66291e8c993015ea72aa082e9948e0ca22e0d7da26813c7b276564ae72a7a4d690c0c78d4ae678009a74f64c22de8b94c4b451af963032ee13935e0bc29dd9069a968e4b3b6017bbf5039b58dcab102c8a68b07a5aaf962192d154ea60cc85115db91abfba7d138d9b60be068d36805f0668e3cc0319c95017764ae018ad0b45f000ac89cf50c42c6ee8700c55f3a53800ca3980a0e00cfd5c200b3e72a80a32be39100a27d520328dcd26e1930d46f0d427fb4ee015217fd7703b2bd3060fde25f30d4bb0d4051d7170c0cd84e380794646d7d1bb0f47a03c886b93e35e0f6ca4f01b20d81c9800ea09ef70d88479d08d04077a706d1516b3521b78ce4ced562351c33177443a650f0e57c08d498b40a006998a465c085204f006dd538463e6cd4346e0264ea2294413c0b9081945c5e5f0ca21c6f2d8348e37906907338ee00388018fbef34503618b0721840d96a2db23d7936e00437829ba98b188471d96d0614ad6e8e0c58be95005abea543032c945301c6fea5cab194627b31e0ce2ed55671b10b643d337bb813f2dd0093456d2a0d13c6660636241abbb2aa85b492b2d08cce2e646b4242e0d1b7053d339bbb7a06e8bef1467465c111abc9182027d3f802201752dc187b003c005b072830d4790328ec1397661e006bc249009b0a778f06ec962b03a40c6ef206dc617629c0883afd04286473931ab07afd32e080217571b8f6b124806530e919b027af05f059c02f035e982a1b442e4777004236c9c5b74134f24b1f2063e2f15580720cfc0bca91cb19b0467e00e8746df3cc801387e702e8b1d77f203a6a3d04d468d39f2e60c99af0fad220647d847c64da81d7c310cbea1a07514b0db4ade1e89e02e4feb955efefe4ba41701d5c8ab35e071006c971d7005fce2d2095ba58028aa4f15636c0ca6903e42d6e9c198476880dba1928a3b6de3b06a1b6d2b141e88f0fa55121978f810136cca3418cca0f4643a6a5889ca92e35540e7376065006c78c3947ce4e7a06a10cf20dc09234a68941689899125db2168bd72a32b0a2fae9b301d17be4c3e1b80b3a3b534a589f7901eddadb01b675a26fa1d70bf5029fc453b5d5fdd503d14097313cf68f1ef28b3a80735ab9f310fefd63831c44d900ca6cae8dfba4ab3e7c9e8c2f01beba640e9093a9fd0a90da9a6f0cd8a01b0a36b5fd313d37e01e81aa01e6c61f4091a226457760a8f567c0ad1a45032ca5a100c394493cb50e6a5e1b90ed8f000379d0352060a7447524f3a46d1095eb1e1b3059a860049792ddc480176294adae3deb5d1a44395e1b00824b49d2376053fc0820b7cb53df00d5a7a22f5139ab3c60451a0b442a5b1445499777064cd173011645bd954188f6336dea68d371d9802d564d00564e2e5e00c9409101f4560394d01fcf7303964d2d803ccef1c2e501e076a91bc4207ca7fa99fe087571991ac4f0c0e6df835006972a69956ce36dc10388929efc1aa0c7548e1ad5bf7c02d4d11f8d47804269275f062803957445b68b9901eb289563a57554d38003311dc0964faeae04505b8b6b83f86486acd776f568a03c45dfef7b8d5c422cf79724b0bf3024b9a8805d2e1f43ace85b12c7b1d4f877d47eb40328fa46e58a5e699d14010ac58ff30644f01e018a8bc559f3bd4b56be9c180dc57f3b43df0db813e152803137ea028825e5f21503624913039e4554a20a2e759a06e452376083cc588031d7ba0348a1a0a48b8e670fef0d3804ff0da8c8277d6cc0b24905931fb7f069102d367c00c864b9ee18703f7fcf20ba61f96e109d9df60da2b6f13c520674d0e0fe4a80163bba35606fb172d13aeaa763c011a217013cdfab3640a6d35c69ac49745933e0bef18141cc1e4b9563c366c191fa658bf975823864965280fc02a040fb2782eb4059dc987200a15062f3e401605cad0032ae8e91b14cb1459b9e560d423bbc21c9fbb76b42174e0d22d167c4d22ee8c6cc20d2500359b17d5c00aaf24b3d1b70fd49d7209452aa5caaa89c0f5acc7eed8f53038cab0703de6ef901d469a009c3c331be082c6760451a8d078348a3f964108a2d9ecccdc09a722c9a02528e3903cede570db0c7d40db2c766aacb165db8406d65ca116d19d3dafebe0b4e1cfe02b628c7d8b894019d6b8c5dd007c0f9a830034bc52d371c5e853228e98af2dc557454c9b7018fd60045012713805c48c39101fb0bb7011c4a3b6d006429cd3e0c380f740990628b439b7b2087ea95416887933a403beece4a02e8b1a73f039e9c7a07f02855725e1340296d1706acb35b06f8e8bf01babca2b335c0a7a44f7ca7acca51435dac2a063cd344bfd874ea2d0c386d7c6510e5381e1844f5db4bc0524bd19601c7296706d1b7371b03364f226399a6e368976abbe193cb9d012f809c01b6e4b2bc318882bd9c0276a8f1a27a7f57e31d2bcaf12fd8469b2a9496dc3e001439bb1c19b0810a8171282d6e7c3c0042697d83505b9f7380acbee32a40265c616e10ca20b68967a02277d88d4124fa4c7bd8f3dd981ba0948e0d62ecbfd3ea99dae23aa98641a89c0f7aceaef0b894e800a2a48d9a4124faa1f65852fd894aaa905eaa4fd64ae3de20d238f91640b10d558e0daa6f3c10d0dab46080076d6bc0319390f572b14458304e73ec9f16e45aabf3182ffbd75ca360970b408d63d027614997bd71e92e7cb0ffee553837d031d7a2010784ee006579ad6f041873c32b03eec53f37e05efc3240fbfa5abf02d241470651f4de1ca098386d5a764cfcb96cc0c1711a289b3b19ea6d83a86daf20801efbad1a70656a09a088d5e6c88023555d83506c6f6a4219468381016fe82e0d08845c1844b6b9be0181c35300b71524cb3701daf4756ec041e91e60cd5ec9d82db70738aa7e94e8964f967503f6c27d0076da7c4ddf3a9c3f278d4ca110573f03c8746afd03f149f9d620e474482e0ea5bd2e0c62bca0b5cb32bf92358d6ccfd5b71295e954383788f1f2360454c9e5b2688081766b103a280eb36440def3c69f015ea753031e505249ebe88f785f6c0f5006f14a440696a8e08fb9010eb3a6016efdaa41e4327a0468e5f93132c0c9940014b0bbda0014b01bcd0d38a2fa2380522a200ed9da340ad654b65a8a16a706dcb3393088ca5d01ea656d6f8811b57fdb980dfe916da5b8e169b4517443c5fb94e240ddded890bad80214359fee0c88ef170025d91f6f0005a8e2d9aa03c0646900147e6a7c00b437b0dd14208df37f8010d6274041f2cdaf012ea41ca08ea67bed18f0eaf01c800b3a49b6061cc76e03646ebc360d78a37d6510d97e5c01f05a2711583e0096b3f44b66a1f038561fb0653d87a950c99401b7f21c1b84ea5b86aba2a25dd049d214a8712264062854090c3504e497a22b1d174b1f0d420aab3d80d4459c46cf80e262c71d8318b7df3700d90e850b8310feb701a0a618dfc620d2184d015a143d9f1b304cef0c70412b0d8dfdb8cf2003b22ee236ad03201a391260107ed0d90ed6372a02243a569b6a6175a936dd302a1b087f362ae39393b1418cca3c9d9d2d9be293e2cc803510ad5e4ff9c59044eb456d7e0aff58d58eee787c2003259d7d6b00363abb1295abfab9ca7810771fc1d1a500d702c4804723037652bf03148f7aca03147e6a9f01b45c99370c62cc9dbe0034d41f2b028ca861c9804787e606e8a07b8036d8bd8c0db830a66340f8facb809b7c6f013a3fd73b17a0b6e38e014766f206b8e54e014b798cda061ca87b05ac645c3d02301592d79601176024063ccbdc31c09525a0fb1d3e2f0c68a0a541e8b1971e602b275317b0a3b6c706b8b1cfb706dc5343c132951389ae7206ec424a055814117aaed638d9967b43c61c174b9f0cb8d16f67c023a12b800365c706314ce3eae70c282ef6d43588a1febd30e0bcfa0740de9ecf77835039dfca56e6469c4bda034676f5cd2046f69b7e51a71c6f5503ac9c3b03565a27020cf567c69c3ddf8d730129b60783e8a889b29541f2b932e08dd45b019d4c5139d60a2d0e0d7087b50c3059fc894c961a40bb08ba928f2d7a6c3403ecf8a4353688daa648503d4fb62c7932401adda501efcd9f18b0bba30028d040836f40111ffd00b1dc3f2a1c2a9836ad57eaf8c7fe00553ec9334cebf57ac869fec2206a1be75f32c95ecbf11fd9ee9f98c60d155d59b393693830e08de51a407b04a65b80826d9d5780426993a9010ee63b800ca3f38601f1b92b031ee63d01487db2e0ad397246cfd5ac2d9be700ef601e19f00468c920144afb0fb044d14f54fda5827e97066ce6e800d8059d743f0dd8a7740190d79a1056cdb6d4dd9741241a0fa0ec1df2247a746f80a35b45dfa17197316e6b99e9c4469d8e0001bb8b07808eecbeb40530bf8e3e0cd82fb53360c5d70514a9cb751e206f4fdc01900145f0ba1b03b602f60da2a4cd1f8074e17c631003f9896e707ceea762c0f20d91b281f62d20e36a3c37e0944d0fb044af8f9e0c2297e7a1016d5a1460a8bf1f03e4c66e5c0890cbf9c620f4d890d1906929b659940cb8a2ab6780b37c2120f32b31e0e8ce0b409eef8f86806cba7b039e786c0214274c4934d352b4d8a3417cd2fc3388ea776e0105d228160c889bae0129ed31a009eb253e99843ecd341f17095e853df6ff53766e4dc9f4ccd7ff30733e257b3814f7bb4b71af67b30554141551f9f46f925e6b31a0deffe7ad4a51f873c86492ee74a79349742877bcf10ec06355ed10b78edf8407bd9435544f0b0fb69b00ec83ce3709a051bb4700f4b62e7201788e3501748ed700dc5b1fedd2530f63274d048081554b00e79d14008cf6e47702d6c34cb6043009fa0590a2eb7bbc128093f72180e9859a0016a51d00e0a0c0e8f05b003b4fb2c6389596b604e06ca2d6e58f1dd704ecb6b3a60036bc3c0128319eeb5997d3e35bad119604f45ca78419de270184b21e09d04b3d1c03206214c1e7ef759be8fa6aa8314db621d8d5d3541abce09ec23ff7cc83be54ad2d606adac809a00d1fbc0b27ca9e8f05ec693f6f04308c1c03d0db6a2404d0173b2fda017a4a075d01786c87009c5bdbc904ecb62f8f0276db7708bf22ce8b570168f69d80f530671700396aece34dc06a6cc07230043ddb06e0d284edb180657a0fe1ef9628e9a1797dae8bc6e3efa0f5971d4a1da04ed7690ed0c06dedc8ba4ea2ddd561b412ad31ba1801d0ddb81803d0ee5fde0820423213c0c123cc83f340072f02584afc2e0025bc10c07aed1d80144ab8bf2b80db3e0860605507e09c78712780dd4eda02d8d46c1f803ba31fbe0b58a6870b00fa0e93a900ce6a3d168099ff24c092e677ebfa12378ec2de2e7b007c75787a08d040ff31f92240c4e8ba07d0c414d646418011ce15da4593e46f685b4dfbec160226eb58d09e6882db0e8372806a7ace827521a7cf67009ce5f96a11208fcf218076f6d91630d1eebc0a98e0be1d00701ee86d5fc0ee3215c05da6fc0923ac8ba980ddc58e780c006197738002f581e57389160c1d8c0850b0196fcb29f0ed8180657a804a764a683ad78805d06d7d00d4391fd513c00bca43016bca03dcd6e92d36277811b00ed636ecefa48d127bfd5edb20206d6105517c770950e088363bddb6e3cf79c77a6d53a0e5e637a72300ae20b2ed1cbc73ce5765270490f5930e0067abaf9a009c4b3aef03d077d83d00a011bfbc16b0825d6d08d8e377eb04d086fc16803334a7f70256f41d3cad5375ec983212c060e41b20e7c06a57002fb14602a6a6079f00058a7eb0216099f62f004a2832267552a7fbd8836843c0327df814c07b499b04985cfac0d332d21b3da1607abfc18ea90e001ba197002dfc2411802380b57069b70d47e0ec9a00461c61ec548e801d4ce300a76cb606043db40be443361bd1af54d3c6572f0296e9518f80361b0da5299b9744c0d414eba552d9fd8f0c80cb913f21b8cbcd805201538fc68600968b419235a9f3b62760b77d7922c06dd16ba70afd6e4f05b0655957c03a941ae44356dddebdf7001ddbc1500066de4c52eaecbedd767e2a80fd9446027697fd7f0075f41f3b6380067aa933088c1b59d815cd6d016bb97b5e91a2cbb93039cd1a6d4c92c38867ad06d65adbe19c9dcc1f1766123400e0592567b8822f3bc51b5f007c83fbf21580d32db699ba039c5df9d71240b7b521603a678763b93fb9a6776f5b009bccee08600ea701c0f9db3c13c02baa7816a7d958cb722080033fccebd3c635d11bee22333f7911b04ce3030268e50eeee23c7ab81b0b023813a72869977bfec5bc0be7706a5b009cc3395f02ecd9d515c086a831003b830d96940b858f7405e4b4895ad70cefc158c044bb812a74bd0356aa14009cd4d9be278068632179a6ce00f373d9f2c5f1be00ee9212709a3401e02c8fedd6e8018afed5104097c35aa7fff1c992d277388c05ec2eed33016814f3e0c490ed181b80dd0531fa4cd1d1c58b80657a762600dd47d1150cdd817a38efc2329d3f0bc099280590073275ba0fcd46bb3855c7158f02d619d87ed20e70a6f9e44b0033893d012c3c4067d0eba1a4e7665ef3268ea88f6ddbb34eceadf463ccbfe4dc6634de30339f6b3eca4e61f6b31e18489c3d01d077b08347fc381cfab23f05e01910e743016cb3110b6053a273019c593f03e082b2eb0301eb1df63f0038bb729d096051da54000bb96602a673fb787cd75d603efb5500a7dba2605c7e1b1ddc0370ef8e7f1d0154e11d0116b6bda3d65d7781fda423006ea53f791240dc8105c31c4e747a0cd0465461ba05c0d995ed2b0208ff151e5f6f4f4eef054c2b5f5200ce7b6c7604b0bce14800af41ff034821ebafcc9493182f19013a94cf3b01cbe375038066feb304a089c63b78b95e43ea2cafc07c761b80f31e761a74007617bca5972bf8b77813b04c8f2301d397fd53801a6d367fc259e2f95000db7d9c08a07718003461b36f21b89a19d9791030453e2800da3d3824260e450b9b88c677568e426a6a5b95760a1eba1c0d4c4e0b45046e8f0018d6b773f0fc7a4c88f6e3010144dbf672758041fb03fe84eba5ae46025866614e5ea1f9ca9b7b012b18c2b685b3b7d8fc7743003bd6ef02d09afeeb0a601fe74800f3d9df004d14fd26016831a45612c01b8f1e04f0e6e32940070beb8f3201abe4e98600b60adb06e0daf3ed6b821edef0ff07d0c3a8a07622004f3a12307d69f0f11308dd0b7fc290fce3b68065dada14c0a2233e7e06197bbd036038fd2517b0a7fd6a0a40916b00057a874fde5696f05ec064bd7d2a60f531c5b348e7ded1fa8a8f2dde052c8fc34c003a970250e7302fe681dd65078fafc9c7ed0f01bc347105d0c24ce21d9ec5a9183c6993a0b2857d59623b31a753b6f5fe8b05ee4a45becf1702a60df0e94a0d676f4e00103e8e76ad1b2f9d36c034ee0960e4b92b80bd078f0920dab6f98d5f3240d7ba0f508722236452ca240d7817ecee111d3d01700b84c9b3003659a91360783f9900b4b18f00f68858eeff513b05e082433ebee2c9b6996967b999c7c51601df06fb04d0066dff04f036c71d410f07d06f007092eb252680ace7ac75468b1fb7041086627dd002d57202e4517f1530199bf30a468b1f9f054c4e3f4f05a0842d80128fff69da50cae01cf404a0fb3700d49777145d71a9c5b300cef19e0960d34c5ec140d5fc00a0491bf52d603f69a26d9d7a58db3620fcbd0e23688580b5cb3e1abbd785d1ba0c0fd7dd68e355b7f88a80b34ddb1b0634fd648bb0fc7a7f3a571d801a44fbba2660b6c10e92f43f80241fe500b41ed935000233d1645300bbbe3d02c05844b72f0470ae26bca28d8245a500a6b07805f751b4f70abadaab227a39006094d63603ea2e77a2583404f0724f01006f2b4ada0029868076a4610050b19600a69ef92cb41e19336550f6f151c064acf521603276cfa7a52978dd11b0bb9c2c0870173b1224002be9712c80ad07ce01b0d6297ee4b3308e6b7b850760e5786d1ad00cafbdc7e7008dc52211c062c13e0003bb8fc70296e96c0ec038cc622280c1d98700b61d41d19dbe98f0cfff01b4508eed9980fde40062e9f40581ff4f802e54cccee4ead65a090eb8d83659af6986667f02c050e7b5b55c4d9318bbbb005c227145c0490c9bf5f200927cb80dc0f0b1b93d0160b5fe17015c278bc2f937abe17ed929001ed0fd7a00e86261dbdd1900bbf18d1301448c08b86e7cda1680243f13c0b97ae3b3a470aeb66f09d0d876347c009669c23c3889512b082052d94cc09430637d308068273a76977b221c7505b0c09f75ca00a2edaa118065daca04309b60725a5300f1f145c08afeb8bc027781c0385987054239d4f32f220193c2f63f0113bac723000aff0c2555dc61f12400e1bf14c0b6ef042d863b2e04ac6ddf67025831b305c0c5603b2d01bc0dc687ebe227f6229b033d28d0de3540822bec20856ebd855322623b2ebb5b6ff3953b8b7f7853c1e14a1f80114533d13eb0876efce015800b866e1602d8df61400073b23f03e02900b7af02a62f8773008e4e6cc783ee720f008b5d04603fb15d9bfc2bbddc3f685fc0d474b601d045dcf26e28001bc59f60f7a8d8b64bf6efb6700cf40f204510c18e25ea2e5fe8dfbe01e0c8a2d517b09f44ac42c6e8133e3e63f4b6cd680066d66c98d0f5bb046067c14cc02ac80e51e92e370518ed08588db5660226b8b65745b7ae187d960b988aa1ebf3c0a43047a68ad38d6b02c81432a68943db6ad001da86452c80f5fc858009ae1d16e600556c862a540060a7104084f55300fe18ea432182cf04a08372d8a6dd01d84ff68f017a3d447ad1b652a03bfb4943a7411f9a6837e45c5d6f0a40f84f00784a84cdcf058021cf1e00635bd71b02986fe810404eaf1e005a50425bcc118089f601cbd146c12cd01d004e856c10a01c367ded5ffb848db2170d02c0e24916bdc7a802cbd18366db9cb87f531406e79c79303e56638dd11f8b96004bf016000c87d9dec7dde55be08ba680ddf686b7cd59c9d702f6b476b2930710dcd63f81a01e83191b8aa1707bc32e002b7ad211c074dc0e4009294c715b05cc46bb0226c9478900e61afb008c8ddb26e601d85deae702b02f3900436af9ae80a9fa7843c0eef288a2cb24d972d300b05ff0ab0006897700d4b919da4511819d8e005e829f0b6090780cd0a159e3d376518eed42003f390248122c6be4c3a5d0cac62740862b6c13c06eb3dde6386a06c070faa975f4cde5aa1b1307ff4e3336021b0898661f34005a0c4197041ceff70510cc9800b4318eda3f04e01eccf6f68207c8e3f10e800af4419040d547858059645be5ea5d4dbe81b94f007de96d0920a47606409f2e5a02aca9e911f47022ca29408efab0b570dde50bcad38680f50eb6dad601ee83961402d6b6b64b91075cb27a29002564d119a4b6bd4c02b067b12d430230e14f51eb8a8f8d1b0226b8ed730113dcd73600036676a0760058297b216072ba0bf950042ddf1330cd1edf0b60b1f1234093de276f4b1b65272a056015d49e0a58bb3c4282a473b679a7038c2aecb405b031dab6803576e31aa08b4ced286307f81ac17c2280c593cb2bf046fb2b0075ae017148361204884c1b5acdb48971a54972cbef2d686a6a22d5928a1d9e01d0ebb317d83d807a2020e2dff2c52e67e70226a7670700d8e73b7a3d0440903a1a8d0560c5f8932e6e7b5412602c768e67617c2cba661e8c2af4da001c03bdd404ac3e223e2de363099f85d1afe75d011c01ba0d50524d53024ad08300ccc98e406a0a84a26b45b7ed9c1f80152c7d1630494e0b00c6c7467b02789df25ec084eeb503c0259ad3a6005e87ba14803fb64d00097a7c0260486dbc0408413353ce03d959ad0ed0be2c5201c8fa1601efb20f407d99c7008c2aec6c0b6015412e80a37c1200ea4bf3860077d961a609ef72286025dd7e13806fc982e5095e9832916ab7f10e4d7c677d509bbb58c5f753800e577659a66d2d80a8bd13a00bb605767ed0046dd83b04e841c50e3f05e0a0e12e1af21c3d00c0e0448fd70226b8f602aa772431284a760920ebf9ab803d4bf40f80e1303b0a2c00bc2eb70380d8569458ebb77b1b305a518f80438db180e5d13a15484c3d8e016a34273301c43f7a02a6ea6909c060979dff128035767b20600efcf819a009f5787b1480d15a024c0c7505b0a51dea4301b3e25bc0a4705c17c0fa0fd4ba7afe45216035d6ee1040e81e51c9d28619efc220c2565f00ee17eb83c27fc7db268c284e0410aab821c06db759c9296e3b1f08c0e0f02e29eed2bf0528e817ee0860273dabd38edf403a007b673500ec95b501d0c6c283fb01000ffbd9a801f095883b0b3275b8537cb4ff0cd0e1c0ea0100c3a6d8b62f08002146821e07670b8004dee7e19b00b651d826807adc9f01e0edc928ba2080fb351a0264b084333c0b379d89bedb001cbfbcd405f08261178006c75eef080076cefae4e58b8e8b96008e57c34f7a354c72459704d0b9875b0193e4a348203735c5e32b266d3b920700a3f5248073df76001a287a8afa5058cece8f0a00439e370193757b8fafdb91ceb5720113cbe20b8051b8f15800b10b5610adc782797421b8ed1301745b2c18742e7aff2048b08802adaf40c4162b88a3a4fb2f017bfc06cb91e22e8dbe00e6e74600194d5246c03cd8b6059cbc6d8212056b5877d1716e206c94d547975b74c5834200919a5b00be68706a0ad4e5c02aaebd0220141e9d7f0220f21ded1d01a40ca76700391cb4fb2140c137fd1a000c87d991867e1130c4b21d0bd86d9f08b8936ff78b80c3fb77011398725fc0842eea025092477301ab8fd6894066c28f8773920c93f42d0093140b5825db796b0e301c56ee0898588e2f05102f3c0050807943c0c421df06607c6cfc2060793ca24e650a16998049507b430041fb3d004af20c6dabe1fdf6900079dcd70510616d036478b826afc870173b72db811c7799b34e739474eb5e00eac14c4b48f2361e9f239c68df4c418f21b578e31e807b316e7c0b6025d30300d68f4567870014edeb5b008a76792180d9d957006cf5130df605e006f2b619acc7604880f0f1e00080ef7abd46048c492f0018ec7a8d05b0f4de9ab2e7dc2f1398ac4300e1b77d6afcb25846048e01ea3c08ee9100925c0c052cd3f240004a980370a891c40218158c04ece15ac70230273b005c3b9a7c0858d1d348c05ace4e62f52fed21d3725bc044eae1550033bc4d00069837f9930e84ee1412a4e857be2500ebb1296063d38c57f418c9ab03b0a35f6c0858cb75f604acc69e586354b177e6c1d1fcd69d80e5d1cc05b0d9cb1420678880ad5f20d3396bbd40c1b6360430f988874b6a503104cbfd49f0d8be6001c088f3b5152c617c2cbee81370c3873700eacbfe1100cf28b357fffce217cc8a265f02d8a7660a402f27fa1430059adbb3244ef84d9137df01384cc8da02f082f170eaf9a3be00e66f3b000c21e55301b82c870256eb49044049b60da70280acef02b450303eade2b876985c00885a3f00308454ee0958db8e2f0812bc32f304d0e5ead225b0bb6c4e08200e2dd618834c795f001af54600b17c621eecf917a5006c765b007b85b31c19327d628d51d667ac0f0ebcb76e05f0126b43c05aae730250e02e7d88a53316d819bd26004f090f97d4e16dddd86dd30e174f5e5933a45cea155dcf01b83794ed7ced01c25058dd916a4f958da9009626340032083fc62f292753a2ab3d000476633bf7decfbe40d631bf9f320c15bd9a46a54ef8e1d4cc09b8123211b0b1faac0e5043cf9fb50018538af81305545152857feccc94003053b40940d11ede085863f737044ad38643803655ac1440479f0a9858a62c07e341c347020e455f0520dadf0014ed664100f9688d00180fca3705a062ba02993e3d01b00b5ed404acd6db4b8073ac2063ae9346f8f880c0328d668f025685d373008ea2b79a027697fb6f012cce67eb97a88f4e5300ab4bcde97543773ccbfc4900a62015c05be0a80fa72fd8b07f0ba08192de5939fc0b5388905833645c0b17dfe00aee6512df9d0370e7c9ee2e00a74ace5b02d81f770080976a22ccae646e2081b5a35f003c1d6ad02580244f2dba9169487c3406a851812202847e670d803a746e541250f78f01b86966d62480be20229029a6d4ea099838145300468cca2301bbed5306d0e628a92d80e0f0b600043726803844cc832b21934d01189ce515d694290bc62053794b00097ad01526a7d1f80520e9615df0a58065ba592780d0ddb2a40c32bdf35918641a0f054ca49e1e01680a164301bc52b52f008dda03a0464d21521a346fd505b0fd4926809737ac4f76260b99da49020ed4508ead9e008e9db15e3be78196315611e41d4c73c41837e43c1a2dbe8a00784ee2a55550ae8d59ef16008c3aed9914e63deea5f65107c03e57d1d110804a18c5045ca39802d0d7ce1a0276db872781c2baf133000666466f008cc3e48f02f0618e05102dee00502c870f0468fd514fa066b73d00e8a2a4c9b6008c452e600a9410f08db2f41580919a724bc09a617c2e60067858036074b475246082bbc91a4b210e2f2f000cdd8c4b01acb56615d28769be0b40e896004babef0128b853eb61724dfa6d3504b00e7653c01ebf730a5043a6769c9803758eb313019ca3d904682570cfad60854eecbbb903483161674719770bbd5a7e3f02e06651b6cd86efc4311d673ba4fa9d6db14a1e5d4ec15ddf222c0772a3067a4a1b04f0728e7017f6c983598f00d3e81ff7004d2e9e4439189819d8c6bd3e02cb398b3302d86cdb99d44f9163746247b5048030d4ab005ceb670113985279400aed5c0dff7218447bd82680048dba02752be91e00379b4bb604d08d1f0a98cea56f008ce5947d016ba8f13f011c5ed20460706773870002f3c48763e8e6e94100623903607fdadc17c074cbb100b67e46eb4bb4a7289806ab5bc70208312e044c3e1acca38e4ce7a875e7c3c0318a05f013e6d149b044d340d9c6de0cf1add547c97d47e3db6b800cddf80580b6c2c63a94526f509d3709e0e55cbd01f08d108c0a4a458c1ec6009cadbe32192be5f3675d008e4d1fce04307dfd01c028cb943fa1af9d3f086008f8480039fd370040af3db03d2103c08add8800e2309a0230a882c16aa990fc036f4b59b7b317fc4b5910ede184809976041a568e7d808443f3850022ac35023c4bfa0ec0284bb92960753a3e1530a1eb5c01306eb9d9143091b29df31d60d865fe2280e9967701289075e3a53ae9c548c01aaaf3218040269ac1c9ba650a47b1947a4cd1fa1af06e8f04101ddd11c01b3277000ddc658ed64f9a340591004e0f1b0274006cf97e6f438753d8be92de3fe161c71b00dc04f0fe0e802f805cbf00f0c53edbcea1a79737a2eb4f006c8011e5a901e7e5e0c4e0130094237afe24809c3e4f00389c7d3815b03c1e6f005a5d8c5ebb04b00d4509c0c08c1d99eb015adf8e9bf3215948f2080fa7284bce7230ca327c1680ac7f00d0716e6d09600fd50140ca20d38b004c419d00054b67008cb20c9f044c82c66702d8ab829952b4375b02d8811b6dabb0cbc34cc0a4f0e9dc803ae9c558c0eab43313b01afbc06d25c98d7b01bce67a09c0b1e9d687005e0f6b0858eb77da004ddc65ce72b4ac6091ed6f190076b209fd584f6f95c4b6d175afa6bdb2ec1c895e4d2f185eee0170b5ed1df390ac6f01b0a33fb086aa394946fcf41f005f66b1c34a7b7a7b6130eb003086928f0118217958023857043dae531a0858d187d7008c7f0ca702109857003abd76ba6d005854f204c0e05fcabbb0c74dcf0018dd286f04b0a07d20606d7bca8231dcd14a042cd3cdb680c9d8d39b0145379ec6020866a0a19cd021da83dbaa736ca502d6a1cc260238277103805238bd0568d2d73e11c07ec1a90096deb7005ac8742b0768a31cdb0b01bc97640fb73cf371e315006fa446fb8f00889044b64b808f7b434e1ffe01b4d96d7d03204410ddde03f04dbfe15800c18c37028608460230d1e7008c088c9e0138de2f5e0560914f05cc1db530b69f9ba527bd20602cb82680c9a52900a370594900494e8f00180028af05ac291f9e05b099184aaa08dae6a18035d4d30b0023029f1b0296c7264aaa4ea9792e80954c2d019c3cca2b9a9c4b4a05206378388dd6b6df0530e1df14b0d6ef7400da769778fe00d081aca7ff04d0b199996ff817a10318d86d1b9a07bad81440d7770fc03d776ee70078e72cb22396fcc4228df819005f8940bb3438d28aca4b012bc7f388c0446a306b033044d0dd17403c993fa15f58c40256f48743014c1d3d033000d0dc02e078bf48054c3eca7f022663c316003dc7d11220d63701e012aba42f80ee7343c00a96a382140028af04b02cfa4e0073164f000c656dee0a58ebe75d008608e6998095f4eb4100c28f9653c7d61c0998599b3d0b6079252ac88925bacf3b01eccd700ad086be6cfd138024cf054cc63acc83e3b92d16bd9be0e0a28580fdc4deb0eb2d8f35b337b83d40ccc04e727600563dbafe32c0b54ed1510b805b757cf20a788e519e00b461f73f3600ba70e19ec7048c7e350038bc1f0e01e8d3159100861aa5002cf20b00d718d919871e2478d1e01f40ce191a168ca3f9f24cc094f089cf5260bd143aa5a6e6a2473302b4eda82980097f3e1cbae028b186f20bda315a3b06e0781fbadf94e738be12c084ff3e401d8d9de02e0a00d889f4015839be1e059007c441bd65b32980970496c0ba2d38354d2785f03f12012ce0de05e8403db64e05b0966579854961e706a09b60df735472d28346a52702380b2b44bf9c0cd660e66d6b9bdef230285b8712000e3e1b0370c387fb5702ee286c665ecbc4a33c02684192f74e003891fa780b90d85d06361b1900bae012807e613e12c0406228800532283a47e251bc10c0daaf6f000ebcf38600ccfc400022750e40333f2e044cc6bae64cb414974a6f05b012128faf71f6d3a5005a7f4fc05aff1f6eeb84ce4ada1d0b58a69b7b025885b409c0a1f9d3ab8095f4b32660c23f390568d10b26606fb9712460edd23e24487184306a4ce3fde98d00241935e6e4141eec810036fe6e09988c75ba00bd14cb5fbe0012b83dc9ad00cef1b6a6f4a754998db2d3c2bda3c03ed95abf4db18ced30063f918691f8f30300e3fcb6303600f4965f005ca85312d0732c12010c9a4f0460c40f013868ce8e0038241ebe0840702f0cc844b7ba022641279b000cff144b8005ed770298f73805e09078782b80a5b34b004f2907a08c6d1e08e064a7378016657d2a803d54eb0278c76a0b801d5bf34e00e2302448319b802af46b8a4ce8ae041000b806e84192b7ce04d08fb50920631d3e6d82bb6ca129931405b3cd5e3cc04fecdda6de72e1f4c515400beee8410d0087fd44a311408f0eeb8d808519f6fe01708f889299a65c7f7a07c01533e52700bdbeec580083e625e85a1e170018234718bc7b600d3532f558ae1cce0e0530062a04ace7df7c0350107224805722720193b16201c0584e7a2f004700f5a131f2f04e00cb5eaf054c0ac75300746c1134aa23b16cee08605ebd0ec061f53c11b0927e8d054ca49e5830765bcd2302c8477b09ac92672c470f997ede0b600b04d67a2fc5b4e03b404287959926b8cb7d47c0046604b174828b1e770b20636f69bd4357db7d5cde0160815d746422d5e59c56b4ff04c09d16176d008e5f1e4e04f0aee83d0017b78c784581a62ce7001c67673501bc2b7a2480e905eb93bb1a678f26001c56679100228a3301f4962d803af465d814b076e9d705d0f58d0018cb499b02d879e10680c36a3b9727002cf15e5e61426773e20eb49169a3238053325f013a8cc0a70278a7a8216099667d00768e4fa875f574ad42008bc00f0420741f0014ba4f56614a67f3908079f405b04e89cd90e3b6d7d605f7b81d4c74f401a060e886004e34c80152baa30f023818ef15805b0f3c3f026030329831538e9187f6f83d3968d98680d5d8c39100de4abb02c090381abe09203a7a01c0117076208011705d00f25103a079ed37054c608a3e00633976204c0008ecde0270c03bbc17c08abb77012c58fe04a048358604ec50f8f85df6524d016bfda76300dacac69e805572bb2e80556a29408a87fb980a602bb913808c5edfa600cec0dc13c06b376cca025d5f72238095f6a65189ceb1bab41a4b34ff622bfe7bcb55aed7a702f693ee050007bccf43000e13ec3c9c00d04bd500b832a3307148e47ee5f70218ac1e0a605dce14805196762280f1fe250007ab68db4483d5c58300e4e30da0c94e2912b0fea3c8001876297605b03eb92d80b53d57001cac3e1d08601aec85006dfb8fa04b97762180f7e69b04685b4c83251cdfc6f373016bb9494c80bb7c0f00d829358f05b03eb921803003db2563d73727c09027b903c821fcdfe70296e9462260dd057c6dd79ba23e3ef870250a766b7d61aa9d8d9fcddea61c040cec64271f198714168700f494b25b01ac627c05e0a8b1d803e09830fb1240a7f42e0019ab03c068c5e34400a7435d0130ba51ec0860096f47c05a6e3207e010f0699f002dd77f13b04a6ed600d8faad3b0238576506804162dcfd16b05a9f4404c874c1876387d2ea0860b5cb06408e3cbe58c96cfdcf6380825ddf8d00f4f61aa04cf1621f9a32ddc06db76b022685993d7ed62bd04b4d2cd38cbef660760dc0015efb0ba08e3a2df601e8a164770296a9ed3b1a0016701f017080373c07e0f00dd1d14cc3b7a72d01846e1a003038715f006d5bf0270c116443010cef13008ed69e0e096870460218bfd401d8fa0d3e7e9262e7495ec1f1dc774680823d1d09e075861d002872dc3c11b0867a9e0114c863de12c056fa254089c6febe10c02b995d01accc408da535003b1bbd97f71af0944ecd97f2abf6ecb6936b01b82c37001c58b53f011aa8d3f20580ce44762f80b65d022c189a01701c351c007094948d04600ab605a08439004dc1381540473f05e0683eed0a6089c42500c7404f7b02e8e84b0168f61080addf1e1340d5d117e61a25f559f40c42f7d411c042e11880aabeb90436bc7f7e072891c7c7ab80e5f181bb38dd3719fbbe14c04bdf918085e4c73d801a9ef66313a08e72cc17002dfce4c85aae48f822ec4b8b00ad3ff907c0d8f86809b0c8f7168063a0f63740939a7d0420cf60280071a80960d5ef3b0007dec32b008e70b26f01188b3e015bbf01406331ce04ac828a6d00c683ecccc700f032ed05000734934200af521f08609b8d050005a6b94780de61740c80315054e602581ad913b0d6fffc046067b01909e0fc3900270e96c7e73f01cbe30315e4e4c3c4e1fb4a002db7103071b065e20e34d8072d815d314733a4ed14bbde9b112f7b7c4b0ff1e452239cc91900bccf819dc5e91703614dcd4302d042ad0f7300ba0ac5b1005aff8e00ad1fbd017040d39e13a082862c07a7f4102c2f97039a1d0294a33f05e8b143190a20381c03708c9cf60850b0c92700c72f5f0702d650ad5b012cf0bf02e0a0b9732e804d566a00053b94ae00826e4b609962aeb164ff11b73705d00c11408d01802d01cbe30315e47a18938fef6b01ac1edc17c079e20b80266e3b67393a295ebb092de7233958a7347927a0a3380060682fe3152d44cf3bf7006d5472f901c0c18805440280e17b05e05063780ac081c4434ec01e66530006f80120e1f07e978006675b00aba11e0138e0cd620234e5570f800389a7b600de0978138038a40014879d86807517c93500871a5f430174392d019c185c1870f281c317bf01d85d7c7f0a60d20f4577ad8f3ee856c032fd4005b90ec5c4e1fb46009b54f7044c1c3ef02cce8ad96d27c18af9280cda76f20120eff30480ae42c99f6864910a4060a6001c5974ce08f02cc37f001a48f409e8192c04b01f2c0bc670c753930099b675058c850dce7c448945ef11a0e8795b004db90d5020d349298085f5df02260e3133a538b41e04600a70854627fd1d01989333016bcacf4d00eafef75c004d898753eb7f6c0134d97fc402e67f3c10b42841d7006ddc65fe09d0c34f8eac77a8277c7feeb904a0f7393c0690dd3f204053966f001c48b453023cbe1d0fedad1c8d784b00cd9000b05fefc40268976b000e2387070256eb5f5d000e13264301abc2e654c0baf1183f51cbb5f6047040ce37408d6ada11c0610c670238c53d02a0567e7f09e064da0940930d752f6079bc5f02b4281fb70258d3cb82757097398b9ea4d6940b13a9860299f1808015740b40bfb0b301d0c315c323009ae86126604dd96b086071cb3b80c60d43025ac257008e0a168f0228580a805e3b6ebf0b9856dab6340e7018d93c14800fb3bc02470b58cb35344cf8da10c024d7ab00d62ae069d5fa9bef025053e6c181c4d78b0056765d0b6059410c00bd8dbf3f042c8a5ff08a1675ff4e00aec20d401be5983d007491e91c8f9fa6297616b4c76f2a3c383a15c079c003800415348c01e4e25f09a0e53e04203011005dfc76498067996c03d081ef7f09d86d271900bae078a726808662493926cc5b026806eb829b72e0bf6a025685fd53019b1919bf02d41121b197bf02301b657b99048095b29900561f5f03705430bf10c0f2a81b01ccef2f005ad0dbefbe80b5dcc906409b0667246079bcf32e1d94c3629f0ef4281f8f028805ef0264a985b18fec27ad846f2e2d3e012830b6f42d008c5fee00e8e45d5c02d014749e0052b6fe2e003dfa7e2200a123a047df1e09608b50e641077eb2238076f914b0dbf66700b4d9ad1b011cf267e6a4a541e2f050002b439b02e83ffa00f4e8bf0f05b09f745d005b63bd01503eba0702a6fb3634778083808fb680d5fad79500541db5eec4c16afd7b4b00efde1f01602011cf1a02101896b40bf9988d0112cb347ab03eb9ed5a1fc7787d0130a218970230af970218aedc03d0e7ef35052cd3ee91007a7ee69121530ba905607a1be7007404267b0208327505e0e25f00d07a0c5301ccce2eaf80019e02d0e7ef7f0858ebf74dd6dbb21eed998095d436bf71a0c6086b248092de0ba0dbda02a0cfbfd8158048ed0820ce3f0768421c3ed02eae434197732980ce0015e4c40191de6d01ccbf8c01281fefef003ddce59d4f9b50a4460029329d583fd691d7d7bd13c0bbd511400ead8cef047084dfbb8089e5e61480667ef35900f1a09e803554bb0028d12e515d006b03cdb9eac85fefcf05b072e715800180fe9600de8f4a0410dc39016077317f0368d2513c10c004772e80b7178e0038c0db9c0958257f300ffafc1f850026a75f05201f87001dc61dae00ba68fd6fd64737337df97804e8e12eef8500c4e11a2041c1ded1944e1c60929e0032dc65be095066986db2db7615408c6e05305dbb0d40cfb17b2880c6be0228f093deb900f61d7d13809cee0370dcd08f05a0d966f7dd0899625913c0541a6eab61c2e45000ddc5b7005aff0880c6a27f2680a52b6d007606f377008e0abe3605ac1cc77d0133051366dac6c36d1e09d830e189cfc291c5474b00e5b812c066841d801ee4e37b47c09af26d0320a1cb920b403ed00c4e3e7046c801416616f91dadef04c69ed60ed50dc09ed6de28732047a6b38800059bb1c6d8fa23ab8f9ebc8b6e5f008380078012b7ed0d04705ad6ad0016405807db93ab30391040eb470288c1e600358ae58600b6c858007020d1bf11c0cae177009a82cea78095743a07e040f3b323806124af68238faf850016c8f405ec69374f003aec1df82c5db4cbe75400e6e409a0c7beb007904060be37057038f83d40cad6cf04b0092033cd508e77fe24c7b37c3c08403eda0005f2980d09508ed91b001a3b9e9b683bc1cecc88db8c84737931248e1e32808c367b01c0114eef5800fbb06e02b097ea5a07eb86dd287aef4cc01439be21c0d36ebe0030c418df0b6074c24ceb1087644b005bfbe259343a59ec0960f5f12900bd8bd6ae8015ac2c0038589d1c0bc0617d05e8208faf6f01cc24320f88546493e40e70ecb1c99f74d95077003dfa302901f2b0bd191c601f34bf06600ff3bd1030abfe5603c8f0f86fcf049431d6698e72bc338f02953c3a14808cb5004a764ab180956366be65926d503eaccb49198789e22100866ff1621380439ede81004cd20200fd58149bf0a7eaa53a7d801a8a1edd0b58d17ba70434d15d803abdf12701f4415f000df66328a9c62ffd8500c62f39009d9afe40005dce06007ba9f90740173ff99a10a092fb0f0278f79e3fe9a1d67b7d01c4fa784582db7e5e13208f8f39003ba54fe69141823a2301ec9c7f07400fd676e30bc0eef2f642409122286809bf014af663e6e2a7d9066e3b9b01a0e5a291153d63fc34420cd6afbbb0a22ffa008c8e46770218465a3364f282e32d01acfa45a61cbf44f103011ebfb3095047d17bff08a0a6f1a300c6951b00b06271671fa0891afbba04e08066b1047697cb1700c650be67025641b66acf87a9e8af1f09a0e7e74f7abced17011aaaff28809d6b1b001845c79b9f0468a8f72b801472faf92680f53037003925a80e4087f583f551208fb7a90004a60428795b14ddf530e8940a0036d4ec1500ed12cfb7019a994da561d22f5787f265362ad7bcc7624bc004c6b69409001dca0700a370712180c63e0068d0b9ea12a0d67b270278937c0ac0806adc17b01a6b0d005a10baa42f802d10f82cf472beef00e8e5f4af04301b9901b00fea6d02f432ac3261c112e4f1f52960b7ed9702d83aad09801e26b217a602407f3a27a07c5c00642cd8b3009601b7010a14ec7b57c04cc1db2d005ddab7090125c82c9073ac71db773c8b932098b58e00cc1a8aee440af501f9c85a997517767a475268acde3d07e0dc6bd70a562c475a4d801ae7e60b018cf8120214ac9702b00fea2c009abc2213401f5403e0c0aa3717b00a6a5d03b4add6a3781b80c3a6af0b01d8ec7d020e9b5874daa8feb90096ae7401d807d96a7ddf89b3b1e702884c8c051021f902c8d00cefcf0039ef722480cea007406762ce66282130b544c0fc8f37ebfa5c974417ee49001efdb9002468045063c1f02c4e6060093f0420852858d64039e67d807666e260675124a506783db351250756517c0ec0bbf40e054c09e3b100d629f1270cdbc69b02d0fd6f01f4740b8016fd8f37000eac36070410870ef3e8a0c6be785b8ea316570410ba741f0021d728b914c06c5349c02ee75a0013a939007b297b2fc947c7e8279f0a208a3f144020f31f408e7679f900287097cf0b01fb89ed0de5c7d0a88fb7a6000244d6053bb7993276034077f4652e000942cb3981c1dac0430184c2538026329d4d015a687d3be121ddd08232db14c02ff64097f3b82d003fe81300d33ed1f35c009d5244801ec6d69e0760c1aee70f007a39dd1b02f65239409b46eb1c8026a9570074d9b60300466afa9b02560e8b9ffab804e7a3de09d8a15c0858494bd60747e29f3d020ece6a0039f2f8de17c094cd48c0bc8bf11b00874d9bc70430162901874d6fef0258a8732e80de01e570f20137704fc0c4e1ed1aa0ce4c5f052c8ff70780060506cde00406e210cc5a5ad358dddebdf7ab4f39383b224015c623016c09d106e0a0a8db2360a774256055d8fb02500ff30ac031d07702c0f1cbe24200ed72024063d1bf14c0cc6a0cc0cee0b50b50e0275ff70218573e0094a8f5f78901a7c85871f7228010741d806afab6094027efed4ac0f2787b13b03cdecf019ab8edbc2180107406d0ceb0dc23588fb4be1cf0c6002d3494bd64140062399f0050c2c8de08f1513a8c2c6cd7480fd82e1702a8f5084081887b01ac711e02b0836d5d0998c0bcec037018f9c54ca973b61cd9c77ad8941f0258e7d813c02108a901d72e583d3816c036a3787ca740d8a4e95000b5be01d040adbfa1925d3360afdf2f01c8072ad96914a617ba001dcb231a591536388911d996dc1ec044c7d702d65dd882321f3bc7151630f33d322368970290e453003ace8b030138ce6f00ecb6be79170ebdbe1201bc0c67dd78c3552126a8120138bdd7022696b6d3911ff0b0197605705ec131401d4df9391080022d005ad4974b01ec3db829805a7f0568a3e5dedb00dd0c737ca8c2ac873cbad69f36e5f4f6de05ac2fb43d993c408d458f00b4519b39003dd8cd2b0108ee3f00faa78b7301cbd40e83f2e33d767dc70298597d02a036bc99aa375d9d6266241540156600f43e5fbe011a68b9cf3d01c8fa1600657d7e0fd0ca1051641e6d0ebd660238807e5f00cd3000e8a019de3b00bd0cb31ad6b62d45e0370b007a6c9bd70276dba36d801cb7b5d1bc8fa0a0821603012c487d006077f16535d69268bf1e00d479c59d004e2e4649b3063b83054013b5feb92f604ffbf605d041399eef04ec8a6906d04525db5e590e24bc2215c01c8e75286d7ff684e9dc0c80dde7662960f571d8052850d2af1300ba1bdf0d01b81b26b86d759f5f23000a9d9df6eb408357cc047054ed1500ed7ee75800f5710bd042257f1e0840e83e01ba28d87343001b82e4006906bdb52aeca4acc2c53d404ad3782500cdbe1680c0300f7a069b3702a82053c28e1c81ef0d012cc41801d4f070cfb88b64ecb5074033fff52e80c3c2508e8c46dc36660d007964006d3cede7a38069d45b0240297c9b03f4d85d7c08581e2f7d01cb63ca3c12abe4781a01641926634db3bb0c0044d10d40c61a7b01a0116f595fe87c3edcf6eb18404e6f5d0053cf63803a656c0a00e72afa6e09606fb957017b5a3b53c781166ffb268040771b803dddeb4400351601c0ccc72fef02987a7e12b01a7bbd00a024bfcc0054a705409ee3887aeb507a8ad32d6e00683de25301cc3699d0f564a2376f05aca4ad4b801a4ada1d02d0227f1d09605af05000a1bd1d00fa41cf570290f505401b77d9cc04501f4f001d4a720ed085d07d4e04cc517c3d07a0e03ed701525c318d0132abc2f8a50750e41848587d241a9cd9118f016046d3e434599ad7a1002af94e0052f80540f3fa752800c16d0a60b0fa08d0c4d3b62e04200e5300caa9ed6bed4007723a9e0b98128edf01ba94f54701e4710fd0c35d3e9f095063af0380844db901a03aed02e43966680ca4f28316770034275353b154d6d4de9ef43d320af65d13b0fa78fd06a0d7f7fd24000962a6f23f5e0570974b01bc353007e8228faf29011fff01a047bb3f16409f7c02008b1c3f370530a029082074af6700299ba105802a8ca766b3d37c23c748cb0437936b1d9f09c0f0bd03d0de2eae0550850b009ad7c5a900a69e27006daa1833ed5082660228fa85001eff03a0c7c77f25807c0c3b00b0c8d1b02b8092fe0380118f9f6b046897fe8b0046f37c960cf5f1b20d50e08ae92340c93ab5dbe63227d31900ec6d64275cfaee95eed7420025fd00e852c6b60550f44d8004457fee006468ec972d00166c6aa2edfafd1c4760d85d0a9aa4f86b1780e664714440c1fd04a0117f9d0ba0a16602d650cf5f00291acab6b27520e34fda0039eaf4ab14c020d1eab45816fd01a0969b45b6cda1fd1a020e455b00ec0b6db18f7746d9f57d03b0e75f1c13a00a9fcf0154c9fc498692bebc0214a8e417335a250b164f2700f51c5e70785a1fe5a7dbf309c00e36df05606fb9f82780bd2a860009cd6b8700e578de0248290e53809c25e54f4ad4e90b0aa6924e9f011a393a47fb494d9a3dfd0260c7f6550760a7f43c00508dbd011476db683c0328a9732303aeb1110c7d16c022f021000b362568e67015ec2e75f50e592a8053101b0054f5c58900842e07608d3dbe0394b8ed6b61c035b6d5d8e300a0919bde3ed60058b0e90b402b47c4c81adb997094e3390128588ebe01f7f8b8cbb5004cd210a08e82f527023855f61ca0999bdeda9b5c0eb01cd331403bc7d4b335767329417b025859de05909a4600255aeee5c880ab20ec745413308333fe00a8e327af2540030ff77825803abd0068e526fc762ca2032cfa30a87ab61cce465b0092c27d01bc72d70128508e6e1ba0a4489904b596cd9003d471c5435b0025bd0168b2192e05d00cff00da390e08be05e8e08a9ea9479bba1fbf1c02e428e9c38601573038ac19006bfd91a0812b1e5a0228470ad062d1df0450c9a7009d1c87837f027471c57404d0cb51ebc1e0789b6ee5886c89b7b72eec720e04b032d4aab023557fa803d450b0e70280b5fe48d0c4150f0d01f8633d80369ff65500b57e06d0cd71b0e61c00cf12772dd3ae3ae9d115007d07db6bcf1b13147d6295ec8c094a3ab90060333c26002d14ece1420067c8f4003a6c86a900f633b806e815568ec73b8004574c4df8fd70c504e6d9f2e8a9ff983401d85d583cd9f79528c7640ca04abe0668a360763c6300908f18a0cb67c904b06bc2274052580ff338034871c53478397eecca3ab5bb24ec3fe2c903807a871240757a03d04139469702d85dac0bd043d1d1b6c9b24e3f003280a9f5c9a90af61c03a0bb8886f693542e4baf2e0059ff066077311901b077786802b458b07301c8e91040cdd001e8f2270d023e4b0490200f5b0be7019ae1690e9015307c1b0039ae980677d48765284126a799faa0a75b00f63076e0a997412b69548e00da54f52b003694bdc1ed400f251d1f10a01ce36d01bc4a9d03a478dad18d00aef800c80bf4fcd62eb97a98a76f00f61fa30280ddc5c33d4087771908e0ac927d003683edb9e340c29ff405704ce49e006a7d019021d3515d00fb3bcc008ac234fb91052b71c54b70697d5c8232d600a8a35d9ebe00d8e58c7200f6300fbb005d96e31040edd2054879c596000e0e4805b09bc52d009be1e91da02ce07d064fda7b8528e9a406d040bb3cdd00b0cb79382740253fec01b0cb19770858d24d004a90bd011100b65efc0460cbc165295d33e02743011cf3b623809dd10b8002998ef705f08e772887ef2c603ce36f00f663934700765be336019e65b805c06eeb614700255d0050c6465f006c398bf63890e38ab221801dc9b704b02b207f52b26def04d0d3d96d6b7cb878f202c08e6df206c05eca824c01e005d43e007ba98781009ee51b4032762a60452f26006cb9fc0ca0c04fca6701ec7cdd17c076961f068a0db6ed95006c5430af7e1485869a3c01a8db7a1340d16300765bc34d01f40e33016c2ab2034019b3fdb60240bbf0b66cca9c5794f8493911c076c9bb02d8fcb73450d490e9e85e003d7f707bfc480c459f7c01a8637b1540bb4400ead832017417730194b40e40a1b3bda00340bb3c02b029735ce1da0547d73c09e030864d011cbf3703a823d3d18600dc8dd0c3f8d11c8a3e9900b0a7b3cdc303c01e003d809c4a980ae02c8a4f013cdc088042671b8105803d3279059b32376d68ba76417df404b041ec4200766e08d040a6a39a008c8569436bd9b1bd08a0a409003bb6e14200a3932f013ccb0300656c648fdf72cd809d49c7027697fc18a08e9f94b18095b4780768e2691fac976a2f7b870300f563cf02d8acf21b80fdd8705b0012d41540d1ada46d4990bd5a1e00b6c1df07a8b1a16a02d8c9f714a04129ec0ae020856f013879d62975d41914cf00ecb61ebe052030a60d1d755bb6e3520038aba414c04e7abb001498f104a0ce763914c0d93e0b8026dba52380cdf6bf04e04b991276a5eae3260045bb7811402fd532e04a0aa1fb04602f553c0840600a0114ec1f409d3d7f2e80bd078f00d82ef937400b579489003643fe14804362f5d15bda4a6bec9e44dbb64b0e0025bd07a8510abf00d82915b98015cca28101e05484338006bbcf4701ece3dc0168b2e522016c0d3e0768e327652a80874b04b017d20740976d6b0a942c8da7f552c952f83301087f0ba0cea2d700d84be575019c023012c09e7fe7004d54f2704f00bb12cf005a6cdb58001b918e013af849190960d42850627b2d66da4305156114ed4d3895b010801436001ad4a82e4093323616c0a6ee57002deaed83007637fd0268e32e594f001ba29e037459d23004f4e697f5910a40a49a004ddc363b0168513e9a02c8f406a04dd1ce04b083dd034087b5be2580636677017afcc93640822bf2778014cd5084e1bd37ae94e48e00e4a30ed042c12c5ee89594ba7f2e80d66f09e074ca3b800e6a2c7b04e8b2d6770450eb1f02d8f1710f2041d1b304206515865192b7a52c582e00716803b4d96b7f007470db6c5700fbc2f12714dce21e40454f017abceda700da652e8093e0fb006989f3802f0032f60e6f0079894d55cdb92a2596d93f013c7e0da0c3824d01bac8b4ec10f0b69b000932b583f102b04c933d023c7ed202c850303ba2de811c5794a1a4de52e2f1b3530194e30ea04b49de03e8f12e4f0029f248f60550859f047896e40c202fcdce2503800257e4a143f1be051ecee63cbdd903c806042c470ad063adbf0224bced1020638ddd13308f86006aec1ca028cd68d996320e94b822b36771268b774900a8c8d90b40ca4c4b801c15649ba97bc03c0e04504197006569d6c336db2feae506aec842f7e96d07ef920150e7923640c64c730096236a0214ac8f9a0032ad0ba03eae0db872e0105994a3ace18acc8aeefa7ddef611800a649bba7b43c04c0b0096236a0094aca04301647a22800aba35e0ca8193be6f00eab822333975dd3c6e6b2fc2fa1e88ddd61340819fd80e320eb01cb65349d1728f8f0a3a16c0b31c09e020a72f807a89e3094247ef7b64de651b80da904d004ae4612f6c176dddd6968b3950637dfc13407d9c0ae0a09e6f8046898ede9ad2992cd6c70e8064fdd980bb2dce6cdb00c06d07b69d940375e491ee08e0a8960540b3c4610cf693ae843fbb00287917eb72ba9275db86c501dc6560db3938d0c0d3a6db02389b631fa055e2149160a2bd4bc387335577dd1a4a1a8d0028c9b6f0d101dc6530e3154db6eda5001ece0a9648e86cada403f8c9c05ee976a0c576d91240494d5f528ad460b609d0601e0b00e431b0fd501c68973824c3bae08ce230b02d54bce8f3270940a7c4410ac1127aa3c6bb3c01b45841fb00fa490cd02db1d9be8976e14a8abb3c02b4f99314a057e27c75eb0c4a573014fd01a0c34c3380a4c4eed9c178baea6931d367802eabb00448cbdcae08b6c1d5469b99be00f498690e9095d8e53d78c1ae363acc74172061a605405e960682cbe21ebe6b99c6365deb1eade41541095dc113de25f40eee1e19af88ff4851252581a44c992bbd2b4df8747f964e3fc2e7287c1987cf28fcc45df9e01ac5b5ad9388909ec29f0f952fcfae72427a0e691ad26b48f6fdcdb57348eefbcc3d7448af81cf9de431cdc3356ffcf9977bf8f0e53dfccbfeeb0ab0a83c511cbe44a1f0f6694f31228956bf47bc6c54a99964b5de923f52ba7abb92d90e9974dfb562542f7669d392355effefb4c5e4be6f0f663b83d9ee60b617d27e480783d9e1607634981df3fa9390b602390ad7ff1bcc4e07b33326f7e760303b1fcc2e42ba0ce9aa92ae07b39b906e996e02bc1bccee07b38dc1ac163eddf7fa60d618cc9a215d577ed20aa93d987506b3ee60d68ba3388ea29092384af9446b8f79cca75032b21d1ee4283cfe0ebf6f57d2d1ea057fa5e3df6a696bb59275d3e34ae656ed8771948594c751e1128cca1f499a64dfdd639752b8f03da5828e2a499a579a483adb10d2c87d069179326d23541a52a6de2ada53553ee9dc47f83e35957286d51939673da85ed2c5d7d5649998e68d2a8f56d5b39f221ffdd089ea6f7fd598e8ef54fe71eb5f7f3be47f4db35db395a1daad039b58e31dff91762b82e6be1fc4d1531c4d82da1d045255b835c93dae48cdb9a538720de6fac68b389ac6d16b1cbdc5d17b1ccd98de0379a31a5d872f52b2bba04696ba71f41194c9b5dca7fb1ea0d3b37a1c7d05756cc7d1771c2dc205ae167a54be7910db4d3ed79a68576155f64f7ed3d493dfb4644d11d7d2ee6a95eef0be6b9749537fd6a4cf218efaff8be64952acf19df572bfd9aa98baaace9541e1aa09c2e51c6ca61da761416a1e836df37a46bd440ac4956f379840b38b9b412ff72afc9946d47eeeb2dda34e7bcb1aa09149c8e4a5f22bf7df7d965ce21f554cd1e8473dfcd48f35a318550cdb7fd8bca4a27f65e557e51fe9a7d65ab2c77cb2c63bf923a9233e66cbfb6e371839a95db5b3fed97d5b92b53b0d06cfa9a053e2c38ac2bd53058f82463a057d0e97b9fc4f83952a82c6b8741247ffe2c8c1b3381a84741efedb0f975d849450364fc24faadcc14b97560b2c0197e6ad59befeaa7afd651ad72ef83fd3f66fe6b37a41b51b581638d4804fffad792ba6abe24a55bdca35551bad269f4fd00ca5bd8ad95bdabfaa92d1e77ca69b3aa152be101a475a359ccb440b3a914686fcafdc70ec0f4d4a571fb0fa14ff8bcd1bfdad43554daaaadd9a575ffeb8f5cf7b2d1d85ffb6792695d6594bdbfe43b2aacaba259f8a92721ad249107faf0d41b75e82c3e93c4ca71007c10bfd478d814f55d1b9938ae659b29cfbab97e9b7a68e0975d12ebb5ced4b762a965b9ab7d68bfce56dca68edb28a0e2b3ee17afacdb6d94f8ed7748b3ddf9a11852dd4432182b36aa5fcf700877f48e8f8afe47e1547b72e31b771f8732f18bcbbf0b957713e47543ed3a14d5e791fd2464835d395a02e8bf0ddc17a48eecb5580b5f0fdbe92567ec874c52b1ba15437ab656e90549569f8b38309d7dfacfefce6471d0e7fbb7e58253fae1fae5d1f47cd90aaa5351f02fe41759c57d5a19f1dfdaf96e0e730c5097eabe29eb90eba45b5800532fb17340f56d0d9369a37b34c9b21b5993a4cdd60b19cdf9886d40b7f76e324fe3d219f4a4a2297d6864dec54767e0ca7326ac6deaf295c70f05b3a64daade4bcb35ab76b357cfce3bf5b3f9c5269b6f522fdff45f396a3370ae9cdaf897ab69494c01b71928494c64946e5db5b35843b158ff48e3a57552653b52ba61a152ba4240fa9c065ee8b483521937a28a115522990a4a4a43756f832ddaea464187ea2ff36fd9f0e568925cfcb1f4a593599ebfa1a6aaff16b5a19e705e56855fd4c92feaa44981aada455ef746d5c883f697292a070c71cf60d1479a137085d8c935148e3a06ded8ad23cf804b50b092468a7bb7efd879dd52f76cdf8a765a250ffa579d528c96e256d571c02bbccdbcbd5df56afff195539e178718d580706555ecdf050e61fb305bf76be3f7aff71a5ef5e73c0bcb3045185fc4a729b5ee1bce699da8d68f04ce1eee2e4315c90f92f180bde577e1b64397972e9876b276ff65775692e335926bb60a90d4820c355e56bfcf87955f96eeccf55ebde5cd5bcc6aae6c9212f573df6f237c752c6eff6c78354bccd8a02555dc4569c4ce2e4d927d333fb9e4c56c7464b77288e263e0493bc84cfa9ffd37f3ed1e61541b74e69dbfa54b83e93a9a6d7958a1d3a5a1d7b6dfd66687757fd40a808a57567d5c1dbfd618a048fd6accbaa39fca997a61966020f02d90ddee08aa2ac6ade56a53fab466a7eba11273f746e971196334b9850fdbf6cc09a9dbbadf84b4b51a2f03e2d45d84bdc53d0adc760cc7668f0ee822e4ae7325e70b76a96a41f2ec3e1aadd5d3a6020bc2cdcdafe5bf2bfcd8a863556d5ba02ffd2bc65b66b2a5ead906a86b73ffa0029ae95194ebba9efafaee90f8b5bed00e01fd854eeab57b5e4cd5bb5e4ddbe0755333273821f271f5ea6f069d7bf87ffce9d10c5c967b8e62bfcf7d36ba1ffbe1bae3f32a3655a157ccb4eb0829761889686cf5e50cd4bfb841e27df214fcb7916eef21d3edf43d95e593677e5c24ba8bfd77120ae0cee76fb71d20f7dc096571794fc2b7cb7722affa3f0dfddf0447d3eef273f8f577fbbe915c2e7b9e7ee1b3eb799e72e3fbfff287fb53e2d67abed194bde0ff5b9c5ba155ffbdc09f67ed71acf95c03daa2b932b84bbabfbf749f87e12be3bf22f4e4e2bfc2c4e0671721e271771721927cedfbb8e939b38b90d9feefb5df8ef205c794f99ad0769ba0f3a5d04681af6e333d988935a9cd457cb701c4895abb4fffd79c25f553fdd2d1aa16cf679b0fadfc34a0d1c8667bc0bcf75b5fa29aea776cfdb0cb96d84cf7bd66d7db53c6bf9b7c2af5aabb57a17ead3ee72417e1eaeb7fcb1b8c5b9616eb4d48bd3384ea390e29092384de3340b29e717478a382d431ac6e9284ec771fa5049e3008721b96b1e4dba2ba6a51abcff25c5e91353cc64a5fa15462cd8cf948647882a3f8997f9b8e7555ac9f9e9471afe914a7e19f14f5733934a86cfbe62dda7ff9ef0d6012eebdc9197389d86f41aa76f71fa1ea7b390a6e15f0f21ff92f9172ab62dacf888d3799091c64a4a3fc397832038d57416d27910b7db38fd8ad3ef385d842f5f415e6ec3bf2e2935f7ab4e1dcd58baf947fae4ad950e425afb53e539f9239d867414be57af646ecb1b1dac26fd6b2fa4f33f92ea417fb6e2b4cfcadcf35f50b70d7ff7742b4eb743914e5898d338dd89d3dd90f682f2a962afe374dfd7aaafcc4bcf7dce7d7f99952dfdb4c67b0ee250954193cd2ef88abcc715b5339d93c8bc50524cff4c050fcc06ac7a77478c28fe927e93fdf84792da2595ef6be930a49c5aa85e2459ed60944fbaaaacd44eff144a7f69a174b1fcd18159df70b89ef93249db8ee2d43dfe499cfe633a0dc4f1b370c17b48034bd2bc6a9a5764e737c14ccf21294e10bcb09c53c95a2b099272113afda715dd0ae3b63f350ff22ee1ada425ff5ca6f58e41694deda47c07cbae65a9e207d4cbfa52f970bb3368d5f2a1f6fe48e1bf4b15e71dbd7a6d854f972e4332150cf7b26a47cf77b0da671c553a9223f2b625b3793d2a5f77a96dbf1a03c0ab90ae439aa023f61237594d76c18d7956bf854c7f9f71fecd263dafa4f54ee2a75e5aaa5abeb5f4d31056356fed8261c5a4159547ab3ea6aaa25ca9409433091d80333177717a1f92fbb21114a816fe9507d5ac07e27823a466484e62da71da8953d734bd388be32cb28485c4ab82b6b72e98320050cdbfe4eeb79425c1e6053dcb529fa079c39518c74a3a5831724b0dfba1766b17aca55f34af6a11eb3ff84fddb562ac99b47e45cfec4bb51f3aabf45856ab07be184ed5bcc2ed546c9e7ab2aae9ad57f4acdaf9d543263b4165ab9a67622ecd5b7a41ab72aa6b96b2165430cb90a091ab29cb6d04b3ba64aaff97c10b36afe2f55535cf7b689d652197baf8d3463e551cbcaa0f19af1a24c140aaeab2a2d96b3a77b5f2bcfe7bc13f4df90e833ed5c3672d285323685b2b28dc806638f7d764a54f5edba470b74cfaf32ea860d0bf6c1867234b7895a0222632331febcee7f23276ee10bd5d6f05b33105b0dafb87114cf610678f4ce952ff2c8908566ddecfb46ea80efeb0911f7f6be47fe6fc4b3ac703fa67acda7bd3c5bda5bb688fbceec456bddc9fca7d12674f214de2ec397c3e79c5ca5ee26c1a67afe1fb84e92dfcf96ec934af3a24aa6861360be9c327487d10fc153bb76606aac620a46c1ea206bfaef5589b263cfe31cefb35adb98849c538ad1acb3f6de17fe7fc3355c670cb54fce0059df0fb8ab9aa2659bbd5947dc6d95750a6ef90dc9745205fe18bf1cdcabffa96f0a6036d83f5bf416cb3add5c15665685595be5fbcafdd95946dc7d9ce52e7d61c4be8dce3ca05ff8b66fcde25fca762fde5c12ed35f9a2a3f73b553593ebeac9d39def555e7507ee39a0d667d66ae96f6bcaa79ad7aa37abd50239f008dfb7fed5b32cd4bd6073755e7533a672ae853466f73cdbd2c57020126925ef3deff5811bcb66403d7acfb966b4ee62f36a9a24cffe1a32ef3e9fe9efeba7e69c2af57356c52e984146c1a0763565bf51b65bd36828593390cc9bb8e9f41a54cc336a9825f811fc4d9619c1d55d2b125799b07bff5c895418fb99a4e1dbd46ae3957673f620dd5c4711e3cccaa93395c19f02daff9c3d6fe8c8320553dc383bf7fbeaaa0ff1fb670ad83e95317f756eb81e35d5f451655a17f68097ee6c1f25e76dfcc99bd7f71761a67674c83f0a733b417c1bc393d73d95e315d5b62846529cb322469909d3a072269c5ba54bbf872d5f215157318c433b371deaf0ba1aa7375cb91dfff66937ee56b36ef8f7cd634f8ffd45404562adea6fccc1575542544a1ba6a41f3aa03bb7baf7cd0bc30a4333f3373d059befb90eec29f0e3a8dac87d48833e7f4b5e2cc75989d90ba96aa1196b5a84a833e9b295c2fcee390a2556bd7afd8b9737ea90ae3459c2715c592fe0d57946ff9aff26f73f5c3b0ad875de6cb322366f1ff63f3febc7ecd96cbab5c533b0e045d15b91af3bfadaf466deacb3e6c19f33c085a7549dd3af35a98a7719e05fd3ba3b6993aba7fe5715e58528465f2cba797d382c14c73baa2d5687ad5ddbaaee89cf5fe2f087b62ceec9b33673b983fcb4bcef969a6f0cbc1bfbdbe687ddcf697f668b4faffa7617fc448fd30aee0306e189eeb35c418abf3006fe1bbcd0334829eb5302cf3e3b326477875766316ed0c76311ffae4d5eed62b5c3e8af3719c3f7885cb1fe3fc29ce27e1f339ce5fe27c1ae7af96acf15a71fe1644e6dd4b563ef3039afc23cee7fed37f9f05fe5e51b58fa52e5a17efb4c17fefb1c7af48ae57dc1dff933cb8b2def9dc8af3af70f103ff3bf7ff5dc612cd970bdaec8bf11de78b5f469696fc7fbfc365735e1caed705fe9af98ff45d49f3f57cf4437fa3deea732914a2f987f97a70b8da81a1067af0187c3e1fbc20e4e3adda15eddc5e48d3e082beae8fbcf5f3f0ddba4dd7989b5e64f2be9f10c8b7bcdee4db5e99f29df0b9eb552adfa325a3fd5bb79411bbfb8cf13a4b3f0d95628f3963ff5533a0498935cdae86102bc18ef561d65a8cbf5c1a604b0809b927da47826e0d397530e68489cd93d4110a81c778cf715b3b7c3669d26e190db9ab5cd382a9f3bf551845419390497ee0c76d50bed1729c07d7549309526eccd828c2d20a42d40f72c44f71af0a07fc3ca8f89ff31559cb0fe3fcc8f7f85041a69fbe9c492584684d9c4f96eae5956011e7c7717e12e7aebb3f0d7fcea910632ad059f8afbb66102eb6cb162b3ab4b4c7bb9541dbaaa9c6af2aca87d84aef17753103b6d48c1fd3325527567e43f591a59ade9934cd1b786df3c9a9d33915b7b55ae073f51ca6791d06cd2ac9c7b007aba9cea449b2b5b9b4b4a2768795e9b45f6135cadeac04cebb71ee7c9ccb38bff2135af975103d9338a9d4685533669574e667bfdcaffc0f4f312b96dfc4f96d4857215d73864c126d5f8ef05b3f8566f36aa73e2d2b643579d8a1feada5366a75fd02c627fd63de21395397df070f73833306ae181bac6d15725a992ef59d936d95b05b49d34adaab74c195b42671eacaab925575fc9c225aa471399db607bef2936ac4d26c8959d628e8746d45e3bdb21e8499e8ed3f0d0fdce37869b42cad4dda2d35a06251569ea2fab03db8dcae8f593345faf97a3e1fab906a27bd84b5fb479b37f523bfbc4eedac68deb2b3713dc4a935de66257d2f936bfc5f92e699ee57fbfa466580a88934b38e6630ee287a4dc61a862b3288c9aad87ff93d752a11c2a0ac5e6c5d553aafccf95c6d7f8db2f2a9fd47528071cd4af59639f84ca4641d16fb9ea6cbfaa16a26d5ac7e923b4ee0c9da3597c612633b1bed5954f330d4b3cd4e5435efa13aa76f8d3760e39f7224e152a792f22017261ad3bf4757959162d54dfa29714b5df96d80f57fc61ed797b12800d4fba1cd55cda07bbc3635b88cd154fb925f35ac027d6760dfed4f1a7b9f8e2a295a3a01f6a901a8f2b43a57f5bafe2f77024dff7619473d0f3a772ae5b3c6ab8cedd1f9d67c2ae290223ff22892104fab8538db61c55655b5b045d15eedeb31d669d1bfea04016faf24d339a89dccc99aab761b72e8d0540c79415533a894febfd4a4a5f6fcb44fc10249599717b73838bb5bf59cababd32c3829435eabf804873ff880e3bf66a524a679c74c3518bc22f5633bfc70460b6dab84964e78683c5335d32dff3d0cef8bec87f29dd21d9a06390a9265a20483b73a9459311bab818cbfa605607b4ebcaf6536d87d716258e45e12bd3c764324b072812ef35017ecd2664ff1afe54fa6fc7c65d2b84abf7a5dfed6e7693ab4663b7bab1a564d8774bc2b9a676a2acdf31d92e5500bd59bc6451152eead9d4f5dfe6a5eb573d5141aaf2857921fdb5b54ad55494d1f6473ff72e3fc74839182c3ca5cf080825f4d412f7ffab190f41ffe1bbcb84f4e7159583d820df0f2188cae8fac4721dc6e9745b80641f7c3ca7f0ff82f41fd6aa129695a9acfd5c4dfaed8b006865f78e45f536da96deb13e555bbb881d0b10f5ab611ba2c862186f2e21314f7b512bb79a90c82abdea624d4841442d75d8ab324d78b92eb545d5f3a0e22162155c776cb5868fc8b3ff6dff36770715ff9458ad58b8b87209bdd40a83d56da15cd6369f5af356d5e51b2ca8dd6eac17eb566da97aef51f490fae9a59d74babbdc7b8788a8b495c3c33bdf80734b5f3b7b64cbe973123d339068cacdb9c787d2aa6becd5dcb2f1bffd127c7fdbf1e436c2dc4d956a4af510916dcfd1052a58dca4f34cbf55353435a0afec18aea40e7a443a63d8b8a6eadcd7b1d5652c4745051df1fffc218abb172af95515a65a0b61cc9fd4cb2c19ac31b543cd5c315f3e9fa33f479e3b878f5c5b35b5b5618a1defad12a16733e5434cf1c3f1f6fe4884ac9e9969227a1375f27eccaff3badd945385abfa669c5005712fce1535a5fa615db9c2eed877d97cd568275f9718dc65b4b2720d8f8951164c566ffe915aff9b7d1d26bf5951caf56f2e1aae6a95fd9656d8c5787770b8567adf10e43679a061fe6c9c70cfdb4f255983d2ffcd4b98ffe7df8ef36a5be1e31a9afaad1daf20d8daba48ebfaa6625c9dd5d71c33656536d997c189ec9f9c6de437e0b52fcb6e22d2bb90cdde7caaf8cdfaea63b0ebc169599010d0aff4ecbdee59615528d73deadc7399d87af5435c9b8e088498ba631d4b36ef3342edef9e91e6ce6e384c5870f18facfb3b898f3f35f809fa1a77e0abdf66350c1a8a2493fc2774b4b10adf8607f6adebff581e6af8a58d5242850d039ef2abf509033feb7a29a4bf54a57946f39961d5426b58339847318ad8cdbfeea63d6afa18fbd6e11e9be2e8b9d05a75a29facde61d337e6bde663a093306ceda7df9ced47fbaefdf61266137fc7787330c13ccf3251fde10269be173cbfb81c5c277d3c5a6371245dfcb4eb1e5c334c5b677e78a9d40fa5eac969f8eecfef8dcf383ce62dfcb7e71e085b1380ce488df6fc37f03298e7d828a70b4eae5b756d1d75bcf977366f73e84ef7f75bf1cd72e059f17bb0b70fd576545c1616571caeddfca57ed57362a7ee9cfb08b69aaf9ba5cab92068beb6fb1e66d2ab669015eec5c3f0afa340e51f9c3d0b047a19d6b81d442c0be46eeaacce9a5bbde69aa53c7415c9cc7c545f8bc8c8babb8b826b1ef3771e1aafb2e7cde54aeb90adf8dd87f5d7b6cc4452d907ab8a611f26984efcd70c756b863235cd30ebfda58d5cb9f664f23d4535ce07318849c2f42ce9721dd867419c820dccbd28317ffc2fdca0d377b3e9571f8de89cb282e13ffdd1183651a97595ce67159845486e4be0c432a2bc9c1515c8ee3f281290be9c1e7593ef28e21737fd3a7b89c84f41cf277c9c2634b71a876d0ed1f66295ce334ac7c59dd36ec0da99c86f45a4981e882b584ebdf427aafa43f37045cfd39ef629aa4644ae6f526d82dffa51f97b3e59c59f9f17b726aed74bd9cc7e5675c7e317dc7a57be4cdb874996c85d40f7fbab41d973b71b9cbb413c85e5ceec7e501d3615c1ec5e5715c9ec4e5bfb83c6572dfcfe2721097e7717911979795741597d771791397b7216d55523fa4134ba6793ffc49d3b0f570b885ea136a86a5762535426a5592916625d52ba98654de21f9bd5ad200dbc8aabc0ff9acfdd0b26a20550d1e142e0b26a4a8c4864e97a6b4dc40f28a7e4bcdbbaefc794dbd74d5ea8a570ff2de607a0e691294a31314255d4d55dd6ac6a57b8a765c762abad8ad5c9343cf7c3e2199ce796d0e77713ae735be5bb9d7d892392c9548bc05181172bc5b49f6dfb2170fe378188594ac2468ccdb8a467ae5f8a15bf6f3b53f97290dffad6ad8141af94bfa8887999f8c36dd5adaaabbe5aaaca52e069b37ccbdbd74fd87b39d4edb8645d0b6b9d7b361190f87f170140fc7218dfcc06bf8100f1f97090a71eb956ff814b4444a133466388987cf54af814fc3179f4cf386d3909ef9e535289925fbf91335fbb6a2e8f6df2b7f97e15b3c749566cbdd9721b86a202e5e0d0a306a3e9c05f16cff91aa9a21d5bcfc916e2b225f4dd73e0d5d7bccbdc80f3fbd7d759fc3aff0e7b74fdee256a04b88add4bd87365cc44357a7fd78b8e5c74c2ba142458bd6c2a1755ee97ebe1dd2a292dc9f3b4b6df3b687c914c26b43b4b47f0e0e77a14fc33d24f71d29982b77812558af64252daddd73e5be93e54df12b1c2f31fc3d0df7e3e14125edfb69b3a113d5232acd5b254d2b5fa62bf6cc6bea11d371482721ad41fdeb5f3c74127a160f9dcc9e7bffd3d2f022a44b0ffdbfaec23567611ad2e293079883f6ea721de2444a2f4816305212f7e97925a8647125379c1dde784be6754e86277c19dec6c3bb78781fd286ffd3946f580bca518f878d90ea813483ed5c7855b3843f5bd42a2529dfed2fc96b7fdb92695efc5b38ee47b4c5f46fd8a14f58fb43e11a9514c8b0eb136c0cd5cb5b9455859399712ab54c9f41e17af128aea4c827073d4fbc7e8cd2789441e146793c2ae25159d1a46d8c9c2c346afaa43fa19ddda0b2a6b54a9b7e38eb6ddea4e267ca09ec2c75c59ba8276f1147437ffd68148fc6d03f5335f7e7e821704b0f9e40f9e265ce4bdf52eee5cf54b754b179eb16aebb32a12c9b377af4ca21afb26ae4d6a01c4ee8d6098c8d591aa403a4a5e199c7a3a778348192b92fcedf1b3dc7a39778340de9b592de7cf2b1d90917373e7189e333e2b4a377a46ac01ed1da10aa756a8af90afe1081dc10cb75033b68c62555cdd22d15ee8e3a7703a7d469aa3793af41abce7d1acdfc776f0b99461f503bffafa79504cfb61f7cd76d7ab07b4ba33b9a5bb2c68bfe988812a9cc118f3e3902a363e91c424b2b7e66355dac0441562220bfa5fc7c39d7e5a3ef21f43efa0a611d8bec887c86f4f87bc24f1e4326a36520df4b7d35511b9c383bf33672b2e25479337c7e0783f7b49aa401c9aae64dbcda8dfa210d83ad7a5a0e0afd356194e6afd90a6908dfb5fa7d45c39ea1cac833645bf9b3ea6d5666d4d6882d15f1d3dc5d1f2bf1a3a2aada49f37ef5065fe1e32dfdbd3bced7ff0c24de617e6e39dd75b8fafa605479a729fa7b6d75755d68adb2ee2d44499cd4bbe435c08cc703d36b85bb46dd0e3a7443d9d7306b2bd8bf6dfe6926f0365c13467e23975c3fb9e7bfc35206bf14ceea360788db34a51c23e2e2fe6f3957948f234b69deda9c5375226a4df3f64300a2b5ae76ffa17936eac2d82ba8dde860999601750b453e040f50538613af5ba3c390be90a0824a9f7f240560472bcae72d907b90e37874128ffec5a3d3dfd2593c1ac423d7e35dc4a34b2fe94e0fccecc1b66d512d4c8dfafce2d2553cba8e4737f1e8361eddc5a3fb78b4118f6ae1cf7a483721d503b90df937c22d1a95815d8fc6efb97223d3bc6b4b1661e9728ebbb280b3ba34b1fa67b15b89b0ccb825bba5f75f928f490e57d42e631c1dd3021b95b8e26d882556e7bdaa6a575d459257a635f23f5275ef950a1f35e3913336ed78d48947dd78d4f3691cc7e3281e27f1388dc759f8fc7f947dc772f33cd3ecc5783fe51c96ca59ce71e76ce51caffe4c4f0040d9cffbfda7aa8b0541144512684c04c01f3fa8f329b4a824865d2e72c298547208993a5fd4f916fc64d1c9a26b0047cbf62f66471692eb57a22ba7d313f415ff2df3285b29a77506f0f8a584fb1fccbb06bd3a43ea8ca833a6ce843a53c7cca11f2782b9f9f7d4663219338c3e8edf32a3b3f83f600920b7fa8a3a2beaac051bea6ca993a34e9e3a05ea14a953a24e592ab752e0ca4a560e2562cc34c3ac18039ea953154a3d3a4b1e7f950f13e49db8df8ec2af8f7c873521e85d967929ed52f2598656480853e695b2ccfb8b6dbbcc7ba14e9d3adcf04deab41234b26802f044ecf8125324a225c80ccfe9f80be9e2459e64dd6953e7923adc8ad772bca1ce2d75eea4926beea9f3409d47ea3c49f9d9bb7fa057c5c458bc9f9416ca0c7ee47d47df7976201f5fa4e6308299c7083f47f9085233ba4c4bf12ff0ad5d599957ffcba4ab9ba9a7a2225432f33ac7bfd826ca67e7e42f1c43a4817929ed9464632f04169e52e74cf4bd5ff402c86480c918efadff64db39752ea84b062e1b05f3c2b63575f7a8fb2afccb53f70dccc3b1202794e558424de8f88a8c782b24322f904398d17d0720ff5cf8a51f999ac64e9779e1faf62f4756f99b82c6dd4765dec656f700e7b65e3ea7ee8794d79206b915e6c982046cae29d4196fee92a6d8707f81a55af71354fb6a53f74b8edff0a9777fe0dceb76a8dba56e0faef76e9fba031831da07336ad89370f10935f8f648baa7f4d97fd2ae9b259f4c19d4eb7487a05777048061d7e05f772c2c6c1bf0f196ba93686c99b2e754cbdc5b22a2ba53e1d9a1902cf0ac2bf53f9088dd1975e782990851bd4e57ae30106d568edd85d717c42ed47ab97f8855dd5c9419d05dca7105c984e390baeba43e7ccbf51ba885dd2d757382bc17b65266141c5c59840209cffa075ce94ca96e0926148e5b90ac5b4e6a7256c33d517b5c1472f94c67b4eeff2703521cedf668ad51d5ce4cb1c4964aff2b32ec3b19008e3272f75fe783f1e7bfc6807393bb999a0b00eaf41a1e22d8a66fd090bff352f90e8599cbac6977b94f5471445947115db2917bbda126e824a825e8802bdd3a0458b7415d11515d915e3872b92d17b914025d49b98d5fc1b93011e3e911bd4911ca6a4b29b4460540d4be82fd54c9888710480bf53b8802a398e884e55dd52efe45f1975e27ff628e8fc75f4ec87ca27026ec446af3d4a72c69e2c9d4271b8cb319988a37f7f8f4b2197be35f2e21f1b5fab8a2cc9b4730c98055826552b9068170dab588a83393527c64ea4086cdadbe7b23f5339c09479c1846daf733d4f90b5d1eacdcf449254a8655df09fe7da9dd5fe5b344c97e1bfd1a43bbe1bf19ef62d894e1a3dd3b54e16ab306dba2df2ea4f23c43b8208fd52a355b56a035dd7b403f061b97d17d10a8cc43b4b70e61a340e4d761357e8256220a25212bf823342275257ebc16bc122ab4be98e34f0825a39c684ac6aaf22f0d2de9e9dd67e85a906abd843de5e868f8bf62475b2b65989a4a4d3b7347ad2ddac9d1dfa171b57b737206574b783485ad121196c4f8cccee0dd592bf0c1cec11ce307991a3fb005cf50f3692b03e8b758962aaef9228d073f5ec0d67c7a404e64d24b82b280159003ea1e52f788bac7d21fb7c2802e7a2edc8305b9545e8ea9269676f6ac248bca555eb4afbbe4639637a9e2f73f91f9c7701b72fdae20d5f4e28d15ec3630069cc8c39e4ae1283324c4e144cfbcb531a3cbe3ff5942b50b7c44e5bfc0fc3b97c20528d5239cdfdb137a5dd8b1f74abd37eabd53ef837a9fd4fba29ee6b0801c65eafd48af5fa087ea11aeeb0af53ae041af2bc70e7a6b0c28e7a527aabb7d3fe9b0d9cc8e543e658450d9f446780213aaedd83df1b709327c3dfa1b3bd789fc2827fff8d799c1d2fa2961180832d21e39e752b06c57e3737a3d800b8ccc4a343b4b42a5f53ed1b7d7073e2a115ad31b0886022e8c90cc873cbfa6661ba9ccabc12ec1f1d1cd88022c7fd4dca35bf5c6e850e1d89bc8712c86cb839c5915279e7aedee511f4fb87704e742e26eb033a78270c123732574b3f853740526fd86f1e02e433523d351a45d646128df66d09b09f96e138e1e25d7d40b066ade9a4c02573e05af2ea54c5619350d0492f5e6d45b24980b96d45b516f4dbd8d1c5752b9cd322f38d918bd9c818d123ea2b223664a3ff10b74bdbe633f310b464fdb872ba197ffe55048dd7a875ee3e7dbc9e28c88ae84a3c8929f8470a9d0fa0f28b7526914f8642c7741685f09cf7a05ea15050523939e8cc126ef113b5150ffb849a9b41593d20571554a8505ccc2b26db2c6c627374c897a3cb0550465f958a55e4d3ed6a9d7a05e937a2d5462ad8e8666f2e9b0a93cb8cf3a050e9d1693c80c654faf4dbd4bea5d65c135d7d4bba1dead9fa0e032f3f55e30b5bfb0cb06e8f5ef0cb1d71f094e1ce1e3a9f7f4936ccd81cba7d34c65ef01885ffdbe78a84f2b8f9c49e939a7c95777fe9393e4df0f44327d3ac954da3d247454b9f5e1d28b2519bfd227e159e0dfb37c7ca1debe94957c07727c1315f483be751d16ee473dc94244af2f814cea26b0fa125862f54fe62cef1d52ef887ac7d43ba1dea98065ec39f52e0467092edc1777202c3c4c08fa92f5011e18fe69b73d253e8e14bfecb38c7c2dff92b8a53f14e094d03b42d1e2735931a97434095a329907b2167eed3bf1f38b8b61351939ed73233cab46fef589fa7bd47fa5fe1bf5df4141aed17aac9873acab04aaa9a076d8566cacb28ce9a225426ffccee88d9a47655ef343e36b1069190997483ee365cad7b6735471e3b80641ad5f878e1f70f20f68f70f249bfd0f285132673e9854cb30e93421f4a9dfcc5d725a3879e77f5f3308720e54db21a580c558ff4324df1e0afd4fea7f51ff1b934650f84425aba3ac8542117d34e6752bcabc63eaff789e852736a17c9249780a39173ceec3b7f69338ebf86f3ad4ef8ad74ec0650b6bfd50bf47fd3ef507022918655304fa9efde110313e15a35b2493b92c29c650fff289c7a492d56cd36ba6d189a2ab91850c7dff70d614b31e99d2dfee1886f9547faf1a13b6a198661735e2d735f4e315f5475802a63fc654bcfe04ba256a1ad49fda3231be26ae324fd2e8bb6bf161063fcb3f9c2c488dfaceb84b62bec6300b75fd1d529f6f8b5b77e158527fe55c6cff22df4da2c5edf049f921c2263501a3432495434759fb2c954c27f1b226a84e3227a88c8c92524f08a6e79f4a69623206399761de5936b2b134b74b97ecab9f352a6dde881c51739e1c1796bff3c35c5c535f1bafcfb4cd513f4ffd82a3281f73094a09cad4e7f1b74afd1a32a8f888b2a22ea87841cee973afe1eed3727087baa43e77b16bc18de3d6a0f958fd346b5f19a69d3d44b43dd1d8a2db21b5e4cff903493c3a43c75476ee0411f3d1aafb337b8cef30402d5d7d1bb6ce92cc658d4897604a4ec04c579d25726a190b71258cecb29c3679b1111212d4540811b553f1499e7ad46d9cc0036fdd92fb5f369e68b5cdf86520172db150ca47d4bf17e6299485423ee0c1902aaea9332563cfedc4b70a591efc167b0f09ab12e164026cc7cebbfd4b0a9e18e7e2c93b21efefc4faf4fa10b28757330d23242e4d2b4bf04165988831891b7c18d2f4d134a7b4ff28ccd3c6eb3f0bd55e9001dfdf17e63d0bc30e847fcf723c90fa7d39475380674807c65747727238328f59889e24c753ea9f39cea97f012e0e488e7b0e3280a915217719bf1dbcd2e08d06ef00ffdde043fe4233910f30bf06323825683eeb9f2cb843f231897d3b7d354a10846566cec0bdf3e9596ea9e6034c9d069f78a2c1170dbe01943fe59e7dbcd104d7b0c44c5859264d57b04405422afa7b2ece170456c9a2ee013f42cd747d0b5d635a63453c92f6be71e432f28ed7d217ee69f043830e0dbaf2adf40efe968f839e1df9e34042508301c25183a11c07e829a82fc4c90311d283f452e1633807b9cfb94c4d268bb960371060999c2a0fd6b8ffde17ee39b8e483cf5eddf356b3dec54e5e68480dddf5f7a749697dbf66f2efca157e099aca8d80dc275ee3cf97e033be46bcb43e0d4634183b2634980afa9e005e97d6a983a6f8971fbbdb6fcddb4c731ac3d22a36f933ac3ee47b72a0538415939229a9c80fab65a0d376302b2e3b8547e79da2afd9fe00f83645bcf2739ce6c3e77fbfdb84a0f4e2ba0a7ad86a27cca9f8388e0b1cc5e598343dc7975a4a2740e96fd3e598c29a677fac8778618b3829ab625eab9e2cd36bf501d379813143f525f31206331acc1d0b40eb91c99033d6b28c1c2cb118e26015ee443d2c92d90f86fd780791aec16c0bd04aed53e82c53702e836916d96f314ceb482d053b7f1d2f6527289e041b819edcc7c9f1b7c99f1a0bab16fd3254adb74686d5638de54daf337c027b34a57a90615b88abf1c0a3087fa1d7d472e03497071b20f314824ce53a791b5b414e3002f43155fee1afbfd499695aabdf89e6b084f57f6ac9fa263fd6f20c2e0cb883f0f058a441e90f268549dc71def74bc2c8ec8c6f3e937fae04b25e9924737e24d3e9f4b2ca5de69cfe8a0b83320db86ff16baad1808510cbce260d5ae0dccea281814961f645ca1863645800f3d4a8630b8f8555404f93b5d3fedcaae434a6dcbd7fff9a1aefc8bc87645c19b4697029c72bc1b5bf495deff62499edae4b805a3e9f345eecfb6beb14d6af0782b553a46f65538a025f9d9da6297d3a3e4c28e282b9a467e9c87e23c71ddcd85f64c4a46b5c410d0b8a99c93c278ab2214e51587959081178132459ca54e35f1de740c6df02dadf8d61bfc86d2cac46e845ec7d0ad5067702e5dc3a43b8805d81d73704e98ee74dfedddf80365e057d398813ebddf72e81f271aeb7f14937b5596757f6aa6775a16491228ce3d7d2b31e68f098e0412af9db271a3cd380fbe03eeec4181f36d6097a57b8be4fc2d3c941317b3a5daa2199e814d7077cf9b5464cba1460b2125f5cade138d1124fa3ae08e2ba65168d33957f3b89e12ee476c6a400bc9c8521e80190850e7e21e97062eb3ea96f136dce9c38a0c1a1e3483e8e1c632fe4d0715451540d6ac0dafc89e0d48f67343897e3a97ccba4bc008614a135f8979cf7b889140ed043f9b7c33d1abe3ab8fc0668ef8326794bc3773fe7c34fe09a4f00df4a21d0827f829a373f730f270762a96aaa5433740c41d864045e4253d5335399fab3cec839136f4ab29dfa2747c2c5549cffa18de7534d5b1bef89865fd2fe57999177f80d449608305e87754394016f32c56d62654c491de088496f47b2665887863f34e46397863d1af6fd5f428fbbc65fe0db0116bf1b0e693832e80662bae74aa8dc819e8069416fce3f85afb604e5f92099b4b0b3f26e605bba6a68ba905856bca50b179a727b6afc36b5f3d7d4f8cc648cec9247819ae95c2a13f6bf172814ce41f900d4485f2748bac6706c83f540cb77328e4fcd22b48ef96d9a58ecaadf516cf4c4b2d1dfdab89fd5beb83e7c3b9cd0704ac3190de7345cd07049c3951cb9bca6219fb095724e2ab772cc430103ab984c051a160505f9f81909a43713c9fa6e044d1fc1f4c9c051a7329f039a8ad598aa94466bff554acaa85a6711e4df2079767e6aa80ec73e74fdb82671eccdf19468dd19cddcd7dbc4a4d08e4c139d0a6948c83415f6fc08b7b4fe55440e59478ba64f58e4ee385964cb3fc6f5fb6a71614cacac374022e20fb7564950a6618586551ad66858a76183864d39b6a4a62d47aeb9942397af2430d6118fdf57b2f9ea6122f676167d3ef2650ad325c4820e79e497ba768fe251b248cd4932854ae5df456616b1eab1dfb5accd9ac8b01dcd3cdaca39d721c2465e1b94d3a5d1b0c49a73d7afa3c3e6193a1ab73c3adab1f4d31ff3a7845cdd1f1521157761242a9975fc0fe9f2d72e870afef1438e015c7923dc2acaafaea5cc17e16e784fc3071a329378187fa6e10b0df7697840c343291fd1f0988627343c9523dff3390d2f2412a6d2ee3d43973018640498caad44738bf2ec4b7efb9ef0f2f6d70fef338aa54ac4f41cbd66e4d60eee763f2af3d487657fda7505fe241199ebc40b3371fd7f9dec25649ba3ea6e41af12857a97f8537ad4aeeddb99d82eeab29bebfb9c4624526a6ee5d11e3e7e54c195d12b8dde68f48e8fa30f3b82555734fa443d7fcb7c1a7dd1e89b463f34ead0a84ba31e8dfa341a38b43c3420b3a34423897e65561b0cd39a8eff5a78fa3c4efadddd186167938774f1ccd4ce73a1186897996375fad774dfe75d911699b7ca7a70d29577f3d120865222fa010a4f4a6b69bcd1984693cc1102e65424cd991c4fe3b7fcd5682a27ac5d146979e1f229e762297c14268d66349a0b8784495c1e2d68b4a4d18a466b1a6de4b8a5514e087748a33cd886e321a8362a08e104a3223e8e4ac8e9404ee367861f01a9f6983223b5db02ed54daa527a7a454660472a71aa9d5bfca282283caa8eca808aa8e9ac875077f1cd5a199f335470dd390551986ba7e2ee78f5df33f847e3e6a4ad98c669de255424ea06110d305410801f206477eda4078f3268c79b3bd78462daf69653f0adb466d1a5dfa91f97425c4ba96e30d8d6e697447a37b1a3dd0e811c952a327499c62563d23650ac792675669725559723af8e1b913ec4b54eccffd138eb306dc8913313d276558b2d7414658268b646616eb0db376755ba5338c3418720e00dd6b6bc4bdf008c0be7761b5ee643f3c16f918f3be7d1eaf6c1acd1ac04816f5665543f573d5fc4727e2ff6c2b9479f30874f3045a839e7e8aec253e8ecea0e319f936c248a1a3116ee31fd7f2712d7ce54e7461c731d1788fc6af347ea3f13b8d3fa4e6538e5f34fea6f10f8d3b52e8d2b827e8d37840e3a1540ea5ac1f470012aa3eb3cc08bae27ba273de4aa59263cf0dbe1daa7df969af2e9e151fbfa4b5e2c62195e3318d2710dbe3298d6782398d17345ed2780540979e1a29b53c5ed37823975ae395e2adde4003186f0573392707ce8df3342ed098ffa514cc656dbc7e1427e3b274ffa64894baf4fa3a7afab80242f0b1bf2759bd2524df3323df3f21bd20b15c7a817922c34cce71f354695ca3719dc60d1a3713f0c7168ddb34be145cd1f89ac63772bc45d6d4f80ee953f8ea9ec6fc521e51460ddfc9b3945f51401a48ddba6d66a7bdb7c4f3f22efc1072c4ccad1fdf0c4f934a7477a1917c3548722cc39e7cba71eedc186696e8dc2a55cc8f5f68bc4fe303009af3102af4f810803a5d4e546b7eab47a8c7153ef0a7e363fcc5f804971a9fca0967b005c6e734bea009d1648f26af60e4e48d8fd2782a5a809479fbf2711fb4835e77ee5267df18c9328c25d9e41d3f9f7cc8c907385af9d865db4cca52e093eda33018a49ca030f9a4c9174dbe45dc1e985689f239be62ba4f7ee4062622eac2b1288259460270a5e08a6b510a374e17e54aa8cfc9af0e709fb8f927bb2bdcb61c1910cc2f56c60daffe1782801730ff02a042dff9bfdffe8d4987265d9af468d2a7c98026439a8c6832a6c984265339f28df18b5dd0644993154dd634d9d044dd63417f0b50fe19055b8ea6d4abbe37880864c54f867ec2a37057527d41ca3799de32c876f690d0d84932ae06969acfe4d6d47ca00c20bfb1ef1f4b56f921b3726c1b69dfd8dd765f56511418e35b4df36fed417a061e1b78ecc10851f571a81f6b7480f90d15f0e90e7cb6335f02dbef5288fefb5bc624476f8f34c9d3a42028d2a4e428675151843de595794e26d852470905836a57742232c9aa4ed3bcab82fba6fe05151138749db0201df9005c61023140a963e9e0a7ceb363291c587decfec7c65ae5817e0b2a3c198c34359ad469d2483c322e804d0d5e894766eb279cc5c78141f9ec6a6d52b60779768bf32f407f7684dbc61d322d9a0668d15bdc27587efc07262d9ab4697299e0ca714d939b2c6e057734b967822af31ea5274a470bddd08815e838b06fa13426b44b698ad3fa72425b4e96af189307e41ff6c7721cc132fb5c83311096afe22e5176bee2c8e5c9635474b9ac886736c5e75217f0633fc13a84c3e5125408b448955e38652ea3f6cb7cb5516467b0d979ea605c7efc03ef7f231d2d74ca0f8f19fcc87f5e64c2a287bbe67e8203c7a1e048702c381130415994683c2f4ab284521922e693ce782427071cbaa6aa2c546ae6708444d472d201ad9f7a4f54c1037c4431938a9c0c5464be44218acbb20c38875f86c967dcda8285930b61648da694a5e6b1fb684eb20fb2ff87be6d35ff60de9f4c62e0ae7e910f98fd81e91e003eddfcc27542be5b9abe3ade68faeecc537e2852aaa52221150699f3b56f2a23b5d0354c3fc457722f44716ec16a5479568954d3fad09d6162a65dfbc3a4a0fd7ce827bce2caccbce9a7916ffa05864db5fc2d1e9c9a812b4742c75e5660dbfdf7ede6d327b572ef9fcc8b367198452730915c32e3388867dcff2f4c7f847c816d0905a79d2cba061690d31e4d750524e3d9be493874c94404eab8cf1c5232a552c108e70c838b4491f39a254d07341d261809c6828960ea72746ee40e6a9eca1215992ca84c21141551bb36bc332b9acea4201d5c6561e8e976f2d604a45dcd9f2283e7cc03a60f9e1990b2f23e9ac8c9c8a42f819f0b9007d41a7d873b98ce69baa029bf287e90b56023d8d23497209fa000fe4dae829d27ae42b3ea8262f918b9657d30ab9e4585533b6947d8a6024f7b7417e49b16695aa269599c29eab754b49daf8f99bfdea59d6b9e2c3920ae8646d940442d432e7ed80c5285320094cd923895d699f16610e5dfefcaffc20e8307f1a5eda8afbf31add0949b90c7863a4d1b346dd2b445d3b6e0527025d09a96e05a24dfa1db79b1df89d04267591aa637000a53a314c8343186852e868ffa93b5699be8984a3ee5d940cae187b9e45f724e7d919a2a1dc118ee8cb70084c787936f9b15241bc736d698b0d9269c7b8fa4344e4c93a1e23f01c7ec3a0e12f898f32be4eca38d3137f2804b7bd2ddbf58ca1b56717be4afee8ea6f7c2ad079a3ed294a5c0334d5f68ba2fc7039a1ed2f448bed51318c70a693c380cab609e7537552cdb1057d39308b81f853a69597dffd6c594553d77f937a403b6939febaf027e9140f555e69009b90f178aef2626994faa8206e1673ed80f178dc3c8b348c1521442809aad6e869aaafc9851a133088af4201990b21f338afaefc1494806a3b96a33ed78a4d1516d7a4ad333271c33ec9ca61734239aed49e1556a02ff04b33785fb3631b22f451a0d69f64eb30f9a7dba701a64a13412d1655dc91533e528ba5ece048676b7d917cdbe053f022d7f49b943b3ae1cf9638f667d918bb7341b186f4cb06d5c92ad108b980de538709937b0b16177b4f807938284569914ce0f638cf16662f4c2ed85dbee241f7f928f7cff23c1179e02cf123e8e1c7ce6181eddd9447ece579ed16c4e337e167e4b2b9aad69b6116c055a132ad752b3122e02da78cf59efc9d0c66ba38b4ab25487ecb93127b3a7d1954ac2b30ef8049e95336c33af66c3fd99359ae56896c7913fce0a525ff39aba286c6c27f1c722c00520471f45235f581d41b16b6e3e1a8f03b7945e5a08548b5c4f5c4556194e962bcc4a19976cfcd870d4c579ebc083e8b3849a9cc15e450d2194599966159a5569c627d4050d01ff458b666d3936a5fe92665772d4735e15da7839431cd027a09789a89c0cd0f3bf1896171f4a11bfe29a38fabb32a9bc9c5d0bb8bbdd4827ed498f637add4941fbe954d0932e29b4835a782aee9853f761be807ffced6c68b2101cbdc750617aec383b3c04560d92af6e92c24d42b2c93fc83749468e30666841868a0ca68ebe3f575a1fe8a8cffb207814e6a5b44b48860253909ffa59c08517918b80cabc9687cdaa26fcd013bb2ee18202e923b84e9deeef21ce30db97f05b49baf3ad8849ee5007a25b76e4e416420400b7df21c208dc73b90f227a772751bd87a49f2a3bcb22a86499848f82d32e87b2ae4ec2324f65a1ba5a70abed44ccf4a38c49b5e5f808edac4cda512f7f7b7ad378483df928244390f2d2b9251ff57122c239f9588ea71d098e697622540b3cbb12da35856a5ae96059284898b7a36daa4a19318d5aa2699eae6daab0643189beef3d5a754b9c9017ce9dd2ec4c704eb30b9a13cdf768feea78a3f9bbe00322109d7de0224d35cf177790ce200561d82d8c7fccbc20f3c27d06555015dac8453d6dc7e20ce27c92e88a3791c44c35bd49dcf927cdbfe4f82695fc20df72fc948f9ff2f12b0b3d879ff787e61d9a77053df9d8a7f980e6439a8f683ea6f984e6539acf045c980b26022d2fc04bd339357b0cddb925e2a42ebd5be44d4f3d026df46ee6d0b02dc71688983a334d2f6d9b6f051dbcecf52e26b993ce97e0dc7c45f335c014447943f32dcd7334cf4b60af85d346c17bd2343f27ecbcb2c4130a125818fdf22e0ef1173df9177e10be208f22383e8222a09746f02f77d9a9740c0895fa2c187234d6ff40f30208372fe222f31248c36566debc2cdf56a45c0593b88c73d26309c903f31a8699395fa441f3a61ceb107b73bee136cdf9343e874fb8a1f9ad942fbd7c27e57b9a3f48fda3188580da792bb1846ad2a909c7e1233abe1ee74f7684f154b78414286ceb5f364dce6bd6760ef75cd65ae7cf72358f0398c7e4c515c84dc607c8957c0ff8bb739abfd07c5f8e07827d393ef9b7073882a33fe8f233e9f233e9e92c57b8b3dbb1875ecf8207c79ee0cb054fcf15c21f571a7710645b4f4617616a3c0ef02d7314c781d48c44c27d8830d3e3a7c8757e09dc5f8f50a3d781122ec3000b3f10f1588838108e9e08594f8497a75efef6f21904de9c1f5f874d0d1c23bc9444aae0807fb39095ad61d7411cae3f44e60834ccba93afec61bfba094efe76acf9264d21e5ab44b61e3cc4f5e5eb4cfe48f9c18200ef9f1ebcbef7b08026c27cda9dd82dbd653fbea25f2f085d9bb1d8435f5ebc02dce5adde6b1410b7574229c595d45c6605552eaa8b6108513a06040337c65bba2e80836b3718b53faea80fe47595fd1535849135dc6a803e0b50027df54150cf8537f86216ef0c693c48970584075384b1f8a0c5272dbe04ca9ba1f0e3c323e0ea957f4e78761463ee8b6f5925eb19d925ac6a42fccccc5c532985f22c89cf6d71037c8eba28ed4cb9255326ef5db11ca2ccb7875bbab71b5e48a746ef0e78707cbbf92816154ebb15f45c03d4d3a6893698da67ae5efe36704d6a0eb21a6c38612ce6f207a8b6f891634728f8218af108ef04afab24dabbdac15fc978a0373673ad35bddb292dbab4e8d1a2cf90c683c3a22b528d5fcd00f6d962086f248e65d460e87f952e337292857898e47ba9e6a9e95c8b9124983ccbd23d626cc1b5211170f586a80c538fc947d953d6c2da7683bf7c92eee4842c94489e3a33e17cb9971efd10cd4435c5d87c044aae22ee185bf5c4dccc67f4c0a8faba791aacc35d9fe7af90a769b6214c1f8828de637e4548779357b418d36282b7d42bfdcaeb496f2c671f838ebae0f69bd162ce506d73296dfe6ea3333ae9911861efd2e07af411dc3ad1bb1952107e73cfab7c8ece72f3fe494861b4328fbeba489467e090d01d749c996ea94aa605f3de77a362a8716fa7e9a20bb9bdf7a4930631163a726a69ed5863a18f27bc341e3fc4f383fe1ce91528388a9edb583f716377e42aae87144c51580bf30a784b789ffde4e67bc91d26f760f7f920cc5b2a74d82ca197a5dd108d7ce53d573d0297189a67155aac60c661106f8b0fb39978084324bd63369f3a33594735a749297a2c274fc2a1a679328d8812778661278aa5fe2484c450534a62694259edecd19c7a1031762d08824d3f06099796fd0456fcecb46bff4a65e183abd3bf90b11db3d1c1a8847b520186a8922fe757060b910657110b3bfdd3870437268cedb9a43cadd262ad113e693cb3ba3a02353ed422f976f4f171b1a1c59616dc59f2b42848471865e58a1cb9e7f2b738a7480b1e7b79e0ad801ce6af595aaf54f7298e1f2e3fa6e2a399c7649934b8a1c2d5fc2041d24ce23951f0b887362d9bc3560b4aaf875df2ed8accdf986659f295f5703a9491f68f01ef3662a93f48ddc278a2713cc1ac4f8f7db2bc042f3fe2cda3921b8fb51bd659ead278aaa1c104a98b92d672f5ac21684a7d53ca5cdfa6c525cc147496cbe8cd43efd03e7e470b56ffae697123c75b09e67d78ef6b7a1ef4a33b424b8213b108cbb6aa64c6dd1a9c2641baf43ddfabecfea02414b7ebc64c137004f02896bd5f3f24cae7b551f03722391ea2af24231d1398fcf30403b3177f4ce1b48f3d77a5a6867280eaab45f155a5011999c2b1b843546171af8df7e0367f2f6bff77ac069c7b4850103ee5056511155361e1cc3ae6e2514e28f8994fb478968e7313e3cbdcf5a0863d83978b1709628ccd7713c5494a9a8f24e211c83a49e288d9508085b307ded90731ac1f459a334f051e4c3187e9a509f8a1580fe06360ad9d990ac89ed970e90013554d29439ff890fb0971cd1bdc2178f682a39d2cea052a2b8267575cb9665fa1c366cd6d0832cee1b807f7811a19c17e52a8e4838fa091f82773e22bc94165e21e0ad1587159f26321089b75509671bf6ef142eb5c9d644e503bb1995204ff884f11827efb942c0d5bb72887e677a3a6e9bc943c520dda05df63d0eb947c7ff02cc5f55f27a4a231782f83b3749089f399ef494617d6cf835aae1333ec5683bcecba97ca591b5cc78b038536de61d4b8b47f01b789d931cb744648be43c791b0b32f7e8d0bf1fe7dcb09c7221d8f84a979b9e083fb32c4f7817e7a27bc2cfbdff93dec20caa1bb08dca758424a5035f860987e78e4fdddd2cbcc113a40e54c84e5ae5ee7ccd3cb1ab712766210faf1a1a8138722fb98057ef811a5571072fc11ec79067bf071e2f906fb96278ebbdd5a3e1cd4ef61b46b1727f274a7b438a3055bd2170a3515ee7dcece35ca60ccad94dbe85018a36fa4e5afed08d79c60210e3a90b2e434adc2e90712efb9d760cfe2764cca25c19f89631eaaacf5e58af5653e325f977bdec1bd1e5d5b3b75c92da17ae2dd6f8882eaf622aba3504af3c80eed0f51c00ace9e39c94766bf7a3ee74b0f25bacdb7abf5b9d9a7c3129e4e10bc36c10fc2cf18462678705c380507a9054487d12165311c99f1347988a9adcb575abec9f11595cb7764baf21185291e8a9f68a9d99ebac634db5b5369e499fa569ea5917fa4cd3bd2ec72342fe587106247106e50b3fc9442aaa01e8182cb2f513b1f132f86ea78a99be341385dc6c91993ebc1837c1da38571741af53d8da787408466af58c6cac69d3533877a1495fdd324b278f74f25331304d84bb4f19f443308cac1c699378eae16d51553e1976aa1e63c1a243e5e4d73fd88ae2884330f3c5bd59e5799f761a91f0892b53137753104342539a26e5105f8d42b2e209582a2852ebf69f943cb0e2db9217bb4ecd37240cba15107bdbb643184f956027bf9c482b9324d959917a40b4870293668417e95b7dfee0061bfa2a31081ecec7d5a0a0595884ba9c174a71b8435c218a09c8e1661aa73564c0f373da096108efe601e748272cc8d330fa720388155df0e6154442e7d60b02144f36e8a52a94f97b7882697f9b9042af3dc6dbf64da4e683915cce4e39c960ba95c4acd4c7c89dc302bc19a961bc156c01f796ccc0b0ab42cd2b244cb72d2553b8935f993556e3b56a39d57098daffa12247b472c50037e1648fbb208d94c9c35769f0b14e6fb12737892e9ed8f1682d09a29895c5177e254b8ee2629333e08f55db9cbcf5bf1475e499951f542807ccbf70cd9d949428643137ba66706e7e7bb111492983cb9dba3257af3f8b82f4fa7984813a8674a4d8561c3128a635abf4c79d53803e6de5dca39df484c9e3cc1ce03d55ce0a1035620f396355ad669d9103469d9121676a4ccf54c4d0971c5aeaae663533a3589d414c1a9be7f74f91648895fe54062c84bbece152dafed8888a048389b61a453eec632d3ae954513ab767d3cd2f206d1ff711b6145302fe792af99a88e590fa709f2b248be92cbbf72e4df0ef04337582324d92056b6dc186d59ce00dff6ac68711bbe5b96791f0f52ee4266bfe98e26557148f5c1d7cf8dcb3c88b72f5ade8ab43b41c38eac79e3b7f84ae20c4b1edcb8b3f36be577f144cb6739325e68c9dde4406a9ea57048cb2304ae4094be8b8dbe702b67c292e5e2f2188080dcb81dc95438114e544423fd11c5720265d522671e5163709fc57cd4743e9c2ec512a6adca6a13e331bec5a485a6e75beab4f790779324b6a486a34a4708e054d17d48bc330f516be56fe39bd157712a3567b43c97f7c6850bfbb8225aed897af12c2f5f7466d32d3ec58b3b9290ce5242ad37a254bf049fb3ce492f5b78dae6e37cc4e904b6cd4dd97c92eaf8b755dc7545f78eedc0884ad98db1af5b34cabea9bd1c9673e73ebe7a150295d18551a822368dfe5b885d587539f4fd9e4d7288193465b1e1d269e921d1f443a6fa1ddae229c0914c2d3ff379e561ef675d5074840e8e29beefa0201b5b1a0fb11cb852862b66953693e4f1ecfc61ab779f8ee673aede68f54eab0f5a7dd2ea4b0adf52f326f8a155478e3ff2b19bcd63db49bb1e267c95002a1caa1682f0781ed4b05b27d98705f6cc73ef735e54c9e1c2aa27e0bb1c08fa49cd506a46b41ad36a42ab29c8078fdf0384ca6a46abb9f83ccbee7c51b745c9fca5a8294a373ca1d542b0140a3e9b3f30666d4fc115a8c1a726ea4c42bbcc83fca8035c30e17160a1793cec243b95696d0973a61c7e9a5a68f6d94f04cbad144a9a50af0ea3d58a56dc5f3760550a506d2be51c38878f7910d4827c43f1aabcd0aa203ea91781d885e6a71dd8eda99b66aed39a551fb30cc9a24d4005e172a867f322581b6a8ec4cd83beb17942dc4e41b888c254b62a912d4cb067424b54cd0a34c9c595d891127e43e04d353d112dd0459738a2bb79ee9a2175d0c8bc78238af8486dde8244d575cd17cc061ad806592c087b7ddbb5e74dd3615a3e35a2ea7e9996c5462c153aa43c0f3d933a2544c8114db260c29c0dbe55239ca2e8288164c63ca566119b48ac3cf7154fa4ffd8f3f91b81e2adecdd5aeaa92a2c4f19db5e13b3186a73048329a499ac2a8e2aad6a090b7b525917e6e9b181c11dfd916fbd09daad5a28805e79d3eb60bd49f001c243bc1ee6d07bb2aea79ebdc086884feb83e6f43b91e3a9490e90f2d3ea8385ba58988e672ed3e03f74df070a4fb46a0b0ae66cb413f4962ace063588137e44e605b6e5b2d8c8712bc2ef4164a168066118801afc611787b4fb8c4f9a19093a0ab5f3464ebb42cc93e41a66e45226b26ac26488abed6c5862101662632ed98c8bc9a7926f756991ee189a72db0ee4d388843835d49e03f3fa9e5a594ed2647c82c16ea861902c5f91e47dabc33ec4db32d18656f473c6f493760c0298ef3f9dee94cc93b2ca54440de2ad9acc1361067aa9b4136097a553ecc1b4ba921d24c286127b2274f72cf120c3b6ba05582c5d4ffc32960fae467a940762f0415a84f9dd5b880d98800bb1f39628805ed742ac1b5add0a6e0423083988ba3b39b2d8bb477931497af1b377d88a47066edc1e1ac42080f662ebce2fce3ce9833b9206e40baec899f058a21910a55e084e4bf3d17c26242b18c95218c35e1261d6f18e1f92539e2329952b2a8db8068fcf0ffe8081c75e8bbe28fd5891216ae0fa41df66d9ab1b96350f4b23fa9015a2165ef3899ad9d0f207901674aed963b2a3a9e56f3d88a9344db619ee426058e2970812259c714b38a7620ffbed09d5568fb47a92e33336d23307f9309306c2c73e77cf17a824504c5eb0d80aab7f70b1d764f47f740120bec19808da76a9e0228125a5396e721efaaf2713091a3169c57c9883c4611f1c8f4ebe10b8c8cc58a85a9e8e65ceb5b2f92cbaf445cb28024d5b46a6d53ead0e687528e00273ee189b48e8fe12ab1383b93175fc2bd884fd30b9097afebb4d4644764fc1579ad6159056a7b43ac332db2bbee205ad89d67bb47ea5f51b0a5cb97e97e307c04a5d2ad2d0bfa652ae0aae937a65de44fa63100f13b4166837c82638df6433b16e4cb9421f77216457a8083926525391be5fb2e8c42e44b2e25b3da1646a6de4ee8b4bb2270b3a669c20c964280b1c865b1d66e42544d4209e006ef569fd096ef171fd0558f933d1cf6b065326845246b25333bb158b335a7f4b48e11396372bcfeb1f366a9579240b68bd673755d8f73562ebbe8e906ebf30c59e1fc1c253cea18b1dd2ba83feb5961a30b263dbe3e9a4590d0763025159faf8b3c7e1ead1cb674a604d923b74dfc65622e43c07324c44d20982316f2c99b393ce0ac87850af32f99629ccb60bdbd7394cfc945d27acd86dc7756a242765fc68860dbf8481efd7827d94641317ddb5859907fef1bbea09bac048158b9ce8f903cf166f457fb24eea57e6c19764eb5c4be3456205cef581e18314c838c7e0d358e6ad074eb8a914f8b4a18ce93def5015f00f9562edc17cfc92ee33320fce541742d01c328dc39df8587f92cc9653cdea252147c5e9a2858e0bc88ebb0a3396509661e1572fd98bbc98000b7a9dab73f6d19aa4e0673a5fa352aaa9021f9628c62f613da6f584d6535acfe438a735bfb725ad57b45ed37a43eb2dad738e3cad0b722c62db8bb883946c81c195eb92789be762b036e0335a9719cabc9dbd02c2e277b280399c14fbbefeabac268bfd2bc5bc0b3aa7cabf7525d92af6001f59e6ad652932c42b5a385a1a59d126fe843d89558fb5251f926982968bf6e31969e964c19ea7af8998e4ce1b8e2c3c409aa19765c3473e721927d74da98b616ed74e2d0e90a4bef15fabd8b351a1ee3181469cc06763c3a36df4aa9b0dad758b33dd8b2c8f0d8c6cfbcb926dea8c0d31654f4cac5a71e969e021457d905d14ad258d7a8b25ad0725d9e042d798c6b2cedc41eab46ed0ba49eb16addbb4bea4f5951caf697d23b8a5f51da423771fa3ddd464dbfa9ed60f8247d7b544cfe48f5c89515b62dc70960ecc64d4d90b9a46ada99b23f1ef303bd1979d13a60d863e5e4972905538dd58c4998704662debc37c119417e24cb9f5e30bae0fcfcb0cfe4c88aea1299c7a4d4bedfafc65ea3dd1fa49bc3c13d74b55008bf0d6afa0732d518328390f39cfceb617a71ad36b1f8daae076c5f651dfa85c1f08b7f2a2c98f4ddb8fab69a7ab98ea4aa73c2e1eca32820bddd124d92aca966d9765a0759d765daafd635f5685160a7ef79d7302e89c22ded647a01ad8766c9c5b9fd0fad47424f871a6e6a919ed83041a170e212b1c75b18790aed2cbe884d6fd5d2c69020b5f90bb2476a16bc10d8f9d8c1b12436805ad2c6e6287d3dab80de59ff953fa3101d5fc29a9b5d78db69d05e41a9959ede6de1c9a1df6a17bf2e57dd3b082ef12966c94897dfe0a711b31dce13d5885563cf3869c63a8c4587a2ef5e70259c61aebe086fdf33624846b3af39a52d3a2cd1e6d5e057bc2c2961cf7d0954c93bca7cd9b093625d9dfc88bbfb126d1353128e1875c4ac16354c004f5082b078bea33b1c644e49836384c929157b826ee4a4150985543c61e350d97e8efb6650dbf1d3892269e4c96c0b4c717d36699528ae065359eb5a36968caf3d8be656cde41a6cd076d3e69f3459b6fdafcd0a6439bae1402b8a6479b3e6d06aa3aca729d12f7c05157099475b7f95ba8fd7a7c1573e08a3643da6830366c83f026f48a6ba10797fcbe8bbd43849d58c8e916ea387e47b1c78453b0a907e1e7fb9e63ebf0b9f060eef38324fca6c62582880d80877b04e4c69eb221fe1d787c42de74c5f25374aefa68646cc6954fe3fe2528ab9efce17b9ca8b47ec5b2996ccb42a993493a8b116c4d362efbef9e6d962e43f37b81957459a410fa9069fbb6d84303f619f6953dc136bcdfc7b2c5a0ec02d82fcb46806f523ef6ad011545da8c0d284f6ccf26a060db39e9d626286f7dbf851765de943633dacca102e138706c5cb17c1086b918db2c68b3a4cd8a366bda6c68b315e46893a74d8136fcf725a929d3467c319b6a0434ae44dddad468531779f08ded04b14de2296d1ad26dbbd23db99336e50e192dc7b77ce4fa364e8046f70c756e73e932463190a32b78fc5fcc09fccb8508e68668c80fee0db975f37482d16273057061c5c30f3fc20d6d6e6973471b1e6c1e1c5a7e1468cd13829d9b67dabcd0669f36075970cda1e348c08563ac68bb394970ea389323d79cd3e642702ecbe86e75355cdd824df769eefbd6ac05a194ee66de971d944f33d8126df768fb2a8537dabe0b3ea4ccf8948f5fb4fda6ed0f6d3bd86d151ad7a36f2bf9e428f8e6c725d9edf8c834b1af2a7db5e8eb9ab65dd91f73269b66e669db93ad307503dba28025ca217dddc8c59f7c57d88a4914dd54dd3692154dcfb632cfcbd3fd6487901f314fbffdd95fe24eeebd73daf60503da0e693ba2ed98b613da4e693b939aa194a728f42e645beb91dd3c1fb773ea7e02b8ed9cececb9f59d784f682b0bb66f97b45dd1764ddb0d6db7b4cdd1362f2808b49c93afa067eaee648179dfa21a2d841c6b688fab13d91ff44cf6ea6da2f76d4b16a602f3d68285f06c23280a1d437d412a73a0a0716200aa6dcb00b4afad706299583f5b23e2b642db2a6d6be8aadb3afaecb641db266d5bb46d4bf9121dd6ba701b34c50585550c507923d70c4655cef9ade43e3756adc50164baf1d895e7444fde5e01786a8d069c493440712119051a1cd7401dc9f11e2f737b2d3ce3fbbfa1edad3c0ee38eb6f720253f1aeaaf71ff5bfe9747c1136d9f23c318db17abb7ca0b9cc01f6117b0f13ed3adb66f04f74611a6a07a29d9508300fb1607795722c245e9869f0e66dbbee33d615ef88afbd481efd7fa94ddbbbce2ea56d805f9c9397a23fdf4d03a6fd83d9a3fa2729e01cb15dbf1b5683b31836a79dffaf531d9c8d9f53d23d60b38076bb5030f91e603807c2ec2e19fecc8c987d8d81db1942b7849b687e8d6e8ca87d8767a7524c703ec3c0d8f490f3bd9eacdf391c78fef3175bbc0f688b6c7b43da1ee00430bd77f5de1496d0b3dd9e2cc1672efd1f654b658bab65dceb667bed1d93d6db909f80634e91652e4cbe584f4569570e87427e09ced8fdd12fe1d528e28b727326f9945210b2565c965cf3a11a5ea5f580bed5e28f74ab937c1abd0f447f8d4cda29908bf6614782c17f90a19b1fa62a388fd632a5f6b2818bd26f29837e28fad8bcc73cbd55468e5a5e403b038e46bf2697c937c3e5f9c7fc896dcaa47b97771a93ce35bfce942eeb69d08ec96a8143391e51fae824e4dffe4a125f7e1f8147c1958bce5f8cc91e896502f29f7e33523d7367f16f4ddf53dc46527e38e860ea4dff1209eeb482cf853c8c7ffd185c0cbf5c0b35c1f051cfbce3f957f8a77ca0d5cbce5c16993acf9b811b95686bdcef96495c1901c27b219f38dd748c124b4c3766bbe8b9b2b2b89bf9f5c84e7a2ac5511a8e1fee0955d4bf60d08e7a1121e78145c06651f6453e713e1f11617e437c617843ec9ff35c50ee95ce6dbd0db63e641cf3c00507f235cfc91f30f20a4bf0ffdab5b80b5cadc9072dc3663ca4da415bfa4a9a6a8619e0daa3801db1c2aee75fb5c65de277a449446eeba4407d4c1fd02233bc6f435868bdc8c7273ca2d28b7a4dccab116680d7fb589586f4c715566b3fc537e8028978628fc56de55bfa4a024fb968f5af90995185dd81199bd944b3995a1820a5056b9ab2270ede2f6c5b9a26af0c6e5ae10d4ce5c9a8acba20b37f0e222ad0bb9c50c8354ee88846b4acdd459a583c734d18d9b0923a7f22ccf406e8b61309783030b6eac1b78b5ccbc6e8b79dd4c9c5f57819aae6da2438953000c78f088410723782e4fb9028e08fe0e9073912b528e9b900b15ca55bd5013849a7a4466fbf29cf4e227f8fdb8c31a519ea5f3fa46e4da2bcd4e9a02e8a15be1e244c6898181cb2041c9870d15783991a3cfb66b3950c34710286fcaadee8a6eb7e1b0fb0c9ab0cae303db1a9e85130b30c8b0918964a8947393ca2ce1b8926b184c35bd79a55da02318a9cc3b4a4879e39b0ef6e963848d4cc647b21b4315e5cfb1ec41b84decbc9fb0096daa6dae12db6e2a310119eb916af1e4c987f750b18c580de15f433e32e79a946b393652a9746c2786d70e5c56a1fb3f8bb936832051d2f0d174d4010aa85c4a593452a026df2e1321ba71665ffa4f1676821979b22dfd8007f3cb84d6418e06c63f83d07c8e813bfb35e56e28774b397efc7bc703e51e29f744b967393ee01c5629f927b89f41d6e21c2423d04a48af2e50f1a78c2708dae45eccc9a0fb287e575193db17af8a877ad6ca48789ea5f1d0bb8f45d393c19dc76ed59af4c82a56ee00a916c8bc1840ef02f38a106639565e8e28c73527943bcdb00d504656a4ef579d6afbe26baf5a25d8268453772dfcf11548afbeebbd4150810ac11c14a38d0b1da19149bbfd781d659b9ecfb6638feff60c4736f2d88e046b4f9c0453294ca57c62b25629ae05807542d6009ad46950b7419dba21774eb90bca13e5f7a4f04af93768c5f6321fe5fe1fe5716a782e7dc000f8a6bfd09974ef4b6c05f62c3e2c770cc5ddea5f7c3fa3a7a4e644992782c4faaf80a59d69623742bb47a31dc45e8ef2ef94ffa0fc27e5bf28ff4df91f397628df95ca145cd3cbc6b1129113a49d920faaa670d1923e1a2e77c5e501bbf3cc229c16e4f46402ede3a0da2b80ab6d8c9d70dbcb8bc3fbfa16fe6d28df77c56fee789697f0e195cfee999c99b403d4384b712d5e1235468f01957fd04b6f4d71c500762339066c80dd537e40f92102ebf99107d687b60a3d038b3bbdf8b484b1affbe4e9a661de88cd2d51c7747e4cfd23110c3efa23d5822c031a84eb09e78e24c990cd9409e527d46953e78a3ad7d41de2c8e5fc14e88e283f337099816e78677c325609324494f7ab8c610dd0f23f45ee6a525a2f2f918a230956542d3b46b345f0ab8aa32ad7179ac29f229c03ed0aa06047bc2da6a3de2662f548dec091bc8ab2f81bdf30bae6e7828560e9d08f2b787cf26b297387d8c20ccfe7d0d8e83a6f267ad078c1f0ef580c5dcdca100db53d5d46e2f5fd4e968a1a381e2274f650afea73158c796150de9ad341c59e25d69f89c013648825dc0205bfa410c8978fe7c0cb5e4bbc1e2e81941c41c50544d953c2e9f32bfff8c93757423bb2341e2eafd5206bb832191ca739231c426507f617a640cab8922fc8ebdeb82be7d66884f2bd34c04b0494ccef04ada8f406a1687cfd34bf2b5ee0d88dc53b98cb3c482031e24c9c56eab792514407927c11f35df32524aa6cdee3b44a9d7419a75e4e6c02e6986fb24c639d5c6916c99d8bbd47cfcc543bef4c120e2fccc989ca5b908fc105a660774c9d1b21e213e52b40e7de0b6c328a106599a4e33e5013234cbd9dea07713a424814cca70a1cba9ba30f4f23f2d29e2d6ab8aec8b75f924de3faa4d979fbeeafb9cfb86fec01ef1367e3a1f86eb6e2323d410d7f153c3bc12da91aaf49c76350d66ccd2efd14a9cb1aef92ba4fd4e3e1a12b1ed4bc44574e28cf5cac51be4ef986a049f9162ad7a7925a27e0b22d4dff6eeb3b61c9a96f99253988c8fbbc49ac4c75a96b7228f3c4da08ae45960d9a33a31e1636ece06471f7267f95bfa43c0f92d794bfa13cb7df9de33e8b07f9f63663dea96d672230703db81fd55a487aa889b70bf7b58a90337fff9d0514d5656afae726fa8982e198f9af2d08977f4c98776f8e471b1b1f31061ae434445a5ca1c538716031103daa4c45efd9b72ec26383e662e9f8afee37f50660cc3cc0b73a846a4ae06284b094ce7ae9bf031aabc22a3bcfd8664e779ad33931e30a66b0e69927ca3c185589e39f553bebece2e24324e11c4e1606f38febf32f94dfa7fc01e5b9efb38a7524c7637c341c53670f959d372028962a50a33d2714098a25ff17775b6595e148fae6093ab2f9f80f7783884c4db3cff266994565f53952dc9c38ea2b61623d82317c44f91405660ff306ecf9019f94555c0f953549550dc30064f013007a558555274e322e9ce2b6e193ba844f0ae51f39be8bc0fe96e39bfcfc6c77f57b84ef75e98864e35c5b22a22333f7f9bf9842eadb846c089ef509fa3544cba1e97526668ec0039c367587c82af16b544dea18ab524a0d442accdd63124ed87a6ea72893e07a5384d925f85da008fe081ca28c74ffadcf72135f3ee28b1a143c70f285acac81111a2cf9b4419b0bdaf72184ce31ba409a5e58b29ee12c82ff77d5a2c21e66dc33b85078a5c21b15de317bbbf0e113483b287365e113bb324226c9868d08c1cf24a53829e39c47dbbcb1f0858f0cfe49c04e8d7e8ce03ffa6648e359ca733ac7a78ff42fd3e85e44d9cbe11cb0fe38f15c043ea5f2663ff19ea8a4b949dc7d4a3591aca66efd8823f144c4aa50bc77e89aeda9552a565ff2ed294ee8f74507567462c288b94c0b1ec4288aa9578e095b78ae4f9bbf83abc93fe223bff71f4107bc6142e82cba4217b3060b3d419f0a032a0ca930a2c2588e43668054ea571399cdbbb37a602dbb72dfaf05973299a5e9a48e876ceaa9635ea0c294a1cc93ac2f8d606d4435426ee8211a925b0bcc3b71193316db65101d19eaf5d00e6e4add26712b889c28cc12c5ccc52a426bd2cd55a02270a1b18bb6c531cc27272e02854d7aa3645eee29a01934b8f37393d6aac5c5273a37a8bce4eb18a10f01fe3bfbaf1eec2246611e278214165458ca146d01970b2bac95907f9615135ac2bfb5d0f15df8b7347e806ab308fd88cd531f22ab74bf552d80828e50f927f0bf80a6bbef47cb03b43bb4311d1addbee87bdf3e034f00d1722f7e8de7446eddb9ea78ef2e8f80c3445513da694215aedc05c376c02cc4f118fc53167219358719b0e909fef54529e83a8325326e69002ff141207b028a121ee9c6a9aaccb3c2c6622636afc7bf2d6cb1d0934dc07f8debcb6066ba4ea52f60ae2fa6fb166dc6fdeefa64e90af0d99accca67bf5727bcda5d824981e9c480349ec58b4fa47bba2da552c124c199459f37729a661b4601e37e198d99a9e267d69bb27021ae93cb182e479ee7bde993a1fb330a39c004db994c1c7d144353a66f2fef9299a51b9fee9603c974a8486775c0b1d74864b6579aabfd00dc8a0cd372cf7bc320769a421efb0e63651259a204524d795610c917ca01af7f082aa3d15316770ea79dd607f2a59576e61590619e296fd924e8a05f85fc0e5376bb167c50c79d524d61147c74f5cfa3e4e6d87c72cee53ce7f33b61d2115028e265e1cd5e622c0d635aff5a06b4ef64badb779cf4add9d921714d7986b26a832d57051b546055a82c828dc558558e3fe01cd04966b4ca445695880c2cab56ceacf56ccccb56da14fb6256743d241cbafe07b26b9b851a5b06aa220bbcddc5f5de407140ed3c619ee6589af675ee924ff5cc86104ee4229f60e9dcfb09f372eee3df0ae7f6cd0cb28c604d1ea988e3cdf9c1cc460b090ab52cea49b6d62dca8586d437052c8458f6b4a9a03fbc42d3327552715550af5e98bd186a44c1d1b2ce704447b972e77bcfc41e2e7283cbeab798cd3b373532f2e0695756a12ca22ed51bc339f8d53f6458ca2a83d6c84e22bafd78dccf6085824099e7b35bcd8e39905e7c64f67f9866c7f243a71fb0f286e0594e64db8bdba741b74c12c53473e4a7227e071e52aee5823a75af8bce8e2ecf6dc32ff78e0af71030c09d436bf84c16f28fc999a15200228adc522d510b501acf9275177e7c19868e9f732635efc9520d1f8ecf045fb60c7086460f7fa8826131c1ddfd4b1efec1bc9b84614e3283d440d65e0198cb7f89954bb17e69841ae922e7d69a8733f3295b073260666708aa6ba0afdefa813b4d2e2d7e1d52b5948e4c41a46ad5cdb387149d8e5ddf240dabd74f82672ab0f5b32f38a0c2a1573e39d59a52c9471e5a8ffd574f527998955247aec8f4ec5f32dcbab69a5899173d5306002d984414bee2fc2ba79a72e2c96974f597000bbcd142dbd973f35f585e814f28dffa4f6e7c8d9f95914f17dbd295f794854b8de7a98480cd2f12828f285fdaac8398012d3e171855f716a78e9e2149fc52832f060dfa463b9b2e742a8ebe860b9b13a191728b09742a60adef5c2a6f9d64cab0ad7cdcca5777c9b7c2d4c03685b12d9d15fe111370f0f133116f9fc9573e793cae96d2c5f97101eeb0ae6dcd9632cc2c411836f2fa9ff5b5b8e067ba8c7c5ce0dda718ea2219ba6046d45acb2a0895793e4d52f51430efc054cd0018645762e7352c03c552be5ec5c3521309779038183d80806c2db1c3d8b4621b4ed53cc89543514f985e1754242aee51f1958a6f42be178712719f8aef54fca0e267165cf305b08e632852f15bae792cd73f02598b3fc2dd04c1700c5c0cdaa60abc543ae2db37f33aaa13327cc42c675f6d9f31ae386e13719542f8040e5dd9c25bc6b95f52cdb07146ca092aeaf8349dd2d6df53233da86742b5ce81f953d4ed12dca96156b585cdaa161d660a826a3a114673b6d4af18a283a2a4e02df42405a683746390e61128761c5d21df390a40cfc095c53e1507541c0a4682012a41d3739794c25124328f25a979e459cc01fcab3110d726d21552be126997567e41e7646d336ca999d942bd9facf49eddef6447c30cf24cd54595610c5d27d8245c257e0539b712f5f2563efa9ac1712d50bb076d3c4f7a506b5dbd9af0478c3dae36f6351ec48b1fc3022b73721af36a36a9d01c89ee450365f724bff80e05b82edbc209611bb8f542c54984120e2c0cb49b3af33ea4fc85ca28269f9c6acab316509c4961919594cfa0a69aff2c179567816ab6c2c6b5d3d1e5a5faf2b5bf2bb774b9ab50d6853802028db0ba1dc9ba92b2d8816e76655b5e25ac523ada32b269bd2b96463e27b432beafa97ff044f4cd598e79ad07e6bf0763f63d8153f28b11583f14bb6ddf15cb070bc2d9948092f91211c596fc11fcf04b5ecaa5c595d86ec33b3da2e29c8a0b700edc5a0a56545c47da1911374632a39d702ec50eed945ecabfa24c2a30a979ef4aec4654cdb744fe05c7ca47220b9da099fddfc32a9a9d5dc2596527d9e4e1ca36a3502bed8fb57b73bf3c9f97261dc37a50a9ecb4e5b06d490c55584ecc7bc26c83b7e2c8744b9d06af4d081c8923666c41035626d57ad32c8475cd9cd4d14e7f14fda52163e6a5255cc3875237bbadb875f2b1d8cb09f2542c50b128653e96a858a662858a55f958166a56a55e5115a6be2464bd90abbdfde2ee97f1b5f8ed7eed5bb3e4826e9961dead91926173c054b63d99784ba9a60b0dd85a0315d321339bcdad7c6dd68ded4317ce01b11299a752cd7826a69e5e47cfc7b71b5b74675cd1487a1f9452373fdcf007b0c960db152102994070721e81799813eb8443f3a80d57f1890715d87f5d1e9ab861ea829a5ceac35438b8106fc55c1380431b2316d0f023d73785643cfab5a978299c6b4017053599975742cdb56ba7a74ed66b4147ca5df915ffcbade306d75415779776dd6449b00f9f9ee1cbf36576d4ebfa64dddb5dc2c595d26eb2fec974f786cbb8991168a4d4dc3107939f83a92217f5b7b6d38c79613c01892556be0f5985f04d4172df9e50cf7ccacfa146e2b82fd9387d24e7f4cb92392a79a5df531a7ca0067306259d942f822c8109e29c5fb2c2a27637ed382603f22863f4cfcb2a384baca6ca5f6151d425d65d652181851e4916455dc38bcfddb0b04a8e4bb18adade31afa356a6578e1b41356da1635ced2adbbb538f46db719bd118b5efff890c57aead4645a3d1348146c90377ed9c97449eddc64780bcbc729a66f555ac15fbc3d0594292a6f8cd5df58e8af7547c40581989c9279ee43bb576b2742bc9e3400ed622662ee3221e8f2eb20ef9246016bec89a0a379985a459002852ed8b0bf8b832579ef5b8444258870dce0ef759a8e6164f76352f3a03e5b26117939d4df2765769f9e5c5cf44da12ecaef6f260122e1234dda7c4f5d2c8d4b0fed2af8d55e212dbc9e2bbe15f167b08225a245d8d6b8c8405cb0367e9a573dd2cf1cba7d868d9f28ed30c8eba25bcaa2e1393d89fa0c4b2cc50d71f3c11edc464f9b5d4b72e1c9eda3ad6af955857f1e7aac899e626bb96a29fae3376959a53ea9850c2d975dad1f791ea8476262557965b725fe22e8237249862aa34da0a5cb5c4f2abb898245fec35a062969ffe697809f6449b0823e24a965d67e85e42105135381e91dfd8b3f54134f4cca24ee70d85693e502fd34ccb8a37d89345e976d44e2cce527559bd95059d7d27f1ccbe559719c1f0676439a3c2a59b8b643714c96ce77593b5902e7f71255108ffc9bcab7f20bb7c6170c4a4fb16858502c3da693bcc037c40d271484791e0f00c03158622795edb97b31598f762a9799af9aae11b33b75f3cddb86e892120dcbe440fb61e9f93842a0da9db0cd54f739bf53bb2ef4a7009b6a32616cd9776e20c6cefbad2957c7abe1225eda1ca2a93109b4cffb57e7a95c88f954944fd18697de3aec51de7c87ffa24e3081124a888bde079099c53f9176dc4a0a0ba5d18b581adb9345365353c82de30165c0754e6ddf99cee646e385390b98844e38a2d2c0262853448279f8d99c14878b0c9e05fb2b60febabab47498abac938dad5c449891536c5caf8ef7776f35132e92e61ea65bfb42dc582600b9dd43639fabd3157c55d1be544fdab655c8e7f84bcff44baf19ec707f0bf3b9b7725ab36a53b7a193afec83789a87b88323e735702acd00db89da7d13bcdc4d6308225161e67d617d484c990ea1b5742f3b09f9a8996d7ddf5ec848af4cddb845ba2e0ed8ce9c1000add2d1deeb5dfa1726bd6abee2daa9b789b90a00cab524606522a2fd5c7f1db7991b2ed3f94cc1d5a0457888aae60088615cdd5320b9c8b2b9dbb5d187c9e1965f82a8b10a3b0bbd5c67bb600b42d1eb60f974a776abecd34c3c522e01d4f2ff31466c3b1ad801417413a81a98441bf966c881a3af5b577d5a0583eb82cbcfe25d8ae63d7ce6c2076b5cbad28e17eefc155899223b37f9e8bae5db6fd43cfcc68a7be5f8b460340a36174ca64d6504a76748ecb2b75937d2a77768fdec93fcbef0c48ea1ef3e57042240fd4d100fab1af2fa8eee94321563789cc757d05abaef9b233b9143fe2ce9061dd081776a39005c283c74fbd7f3ae2834f5beb86e396edeca62aa56ef116f6edc599fead412e62ac6a45a1984ab81d19a91132f83212e9b2cba71dc58fec114c47bd8af28fcb61f380b8c49c2f748542dd17fd2fd932743150b723b37790b7fdab0c39693c665b40706cea6ad1c80bbe4cc87469ec8c343df0f93bd564c9bf7d5fc7645f7240c2dec9d9ed93219cae6c7f656cf87899e8780fc96e9877518ca5fbf6454b2825ca4da44226c69d44e382504977680ed4f92d6362cdcee6479789c84ccf49779ffcb58659baafba89c0abaca2fb3bda9e9e701d9e4b874df1a9f764c10a24bf9eec26e2edc0ea8f63f21d7e78ea2784943d47b063d07d720957b6e8f2d04225ef83fb3ece599a24d35e06176dde87b5a05934773b84fe2496f3a6b36554cdb569b6a110acc6183f4b44632044b0fc6c2564ef8241eec64e2931d5b01ab32d651cd62fdf59eed11128953e4b5c7bf917ff7ce53a6d3c6d21494fc6f2ff5f49c4d953a98024ca6565cfb2b2b5223eb33b0978602c0a83548a5cca2b56512c493818a60a725a92b5a86130f5c2ecfa0c7714d120241a361ac773d26dc496c9ebaebb5b44846566ebd746ec227183bdd4caacfc0d8c108926a9abc49bcc4b3c2ce9eaf1611bbf185e6fb84bcf07c9b47f78344323e9b74966c7759cbe6cd3ba02998ead9941b52369ec335fdc4ada1e441c64921ef5fcc8a47cc6323306dc09f954cbca0bd5d2bde793c12add033ea5602a754c81bcb2a4e34c56f2836dec60447f329fbdf9f5db89bcc92723442e4bac644ff298df903676290a39db7da36a9e945d29e84b1fef46fe5c8e06574e8cf605e6012af3ce7d6b8d631f39c3da2b25fb36ae3d766627442206927d267e7acd049154ada0495adfcf67e473786546bbabe8f30c31b0b091a5a98b413515b5c5c6967c3421d057f2bf524252a175651b659a53f452f8aa7b5936ec36a2829a95437fefe51ce468ee8f2d816c2704dff621dd48161fb33719b77f6e268f906a9b264a7dd88c2d776c3958d012d33c8eeb24ef23247ddcc4e817f33510d438776a133333ea93aa769a86f599cd5abc36332ea5571ce84a711c0b7a6960b0764f534d97ae736e13e32f48dca5532a69e925650c35dd1131522db129337228b7a3fed93f9ab659ca6ec1567523afbcbb35db4e3f8ed1f6c4cf992a9c2e2cb5f1024b34fbeac7059ee72623efe3cb56b8c36c1da5e3a9251360903c919a23843a03905f2419d0d6244d77fdd5e551b7f6ae83de01f3a81d9d201a6750add2c25abe9765d0002dbe95f75e799358723796001274d7d873b30e9118e3bef94b9e95337e4513ae3b4e99c46d042df73159913e0d290c76e968fb94fc9ed8e063c3ef3d6c01b31475d83c4b6652c9f889577f1c1ba038451b8448343274bf2c3749c52432479ac84c29ee53f1808a87543c92325fe404ddaa784ac5332a9e0bb8704125a2d21e955ea9f446d32a95deb1896de9039d91fb57712eeb23ce1c437c441739939bf439d6fa312a81858458b95f4471a52e2ea9df4a560a6fc7f58a752d701c452dfce705b36659caf2bf71b5fbad398f288e19a9066b3a4b2ecbbf3c953e15cabc90c4e1d04c104dba2a7d25f8c611e1f582997d2af6345babd8a1d20f95f8d8a5528f4a7d2a0da834c44cced2884a632a4da8c4179cd19cf5f53b2acda9b4a0d252c02a25d7acb102fc762299640f9299d28d19d3f1263d0f53679cf24bdfc9534e0db2e0328dae1357057723e09dc4266bc78040c6db99c8a45dcb2ff86cffe10bddb9b15873934436eea2984f2321a9d375ab193a63d536838aa8b2eacc1706952e5fda48a6d01c05348cce70cc7bb6a0bc47cdb343cbfd582e42692b8dd797f6ce214a8eb038b725779c82d40cad97d9d021d0e588b567d9faa47d949567d1e874c50aab0cc8ba1669c70cbae2aea0f2fab804b16f7c1db7e468c52d6882a2b8238182b615656796f4d100cd225a72a58c1c8dd6ea8e705d9ae61598a7b7512a2aa4f1c274189b23fa6d13064afc1ecb9eb0a569932d2ac9cc1a4cbe96f9d79afb5caa023867e469237c668d4a752a357c47e736959ac042f678c67ee26a8469df97ad4a1603ccce5e25f310e26c84774feafa8ed385d622a4ff70003eb877e6b7c0b8fcb71d96f81ee3165ec33f1c2e6a1bec8620d2d0fcff0ff37613ab03b353aed7a20d9a615e9ccca8ccbb00e7347b8e8f182d5b821f64fe201daf9b64c98991a0276b12ad65ad4b6a10b289144b491feac945e6e83885c4cc376b24dcc6b90bb614e73ed7f92c4e74466f2b99fa132447e8b93bbd3e30437d8c994d2e921d2ee2d688bedf60cada9407a93698d109737f23a334e6fff1f31d07e63273e7fa431f9354e6ed6cf6f626c98d3796e568a95d1b108b99c4c46292153a9eca2f9c8058ba074dc1d41b231f73b478492526dc25241f86d3856822b22273cc90bcfce594798fab26c449aa3feefa79f79577bd1e7a63de5c531626bcfc25909288fceede783ddbc5246c9bb7b3d9d01f04ca45dfe9ef19b0ff8a42ec9e909d5bb49bed594e6c4ad77bd5d044022aa0cc3b8d4e4bf59598cc93f5b0f98d83765f22d2fa68035b187b600229b378f6d0f443236b4b7e7e45259682dceadca277b6b878e9de569ceb0e65d1b9635989ae8f6f757632d2cec21ce5170b5431709347ee893d03f360ab6d63943c04a3a34332db85331b5bb4e2c616c1e518d5d17ac2bc7c648c4abe3f04ea3261f92feccab6525658a61729ed7a18523f8e27f0070f4b7620d2cc7e34c334c984ec49c2e455a20a6e77e70960d8d47a1f24d1840f547aa4d21395d81878a1d2be2c57f6286bb5bc53e9804a8782232a1d63d14e5bd1efc876ded1c982588de504e10b5b1042bd3c1f122f94d0843e7fd4b0f3bf7c1309f332116d8f745b9ac98fef22d4b5f55032d22899d4936a9829d1532e6678f9db252b35994cea24812c46efae33069fcf5fd4c63b96e0c08de435b7918e8e44ff85586f4fa26a762cab15aa635746bf85289f27905e30079f7c525d328b0ef5ac5b9ecacc042e9c812e988f7283d5b24be754baa03251798fcaaf547ea3f23b953f40385dce17cb8c16914ba8cb2e9665411a6cae28ae73cd7a06e367319210e600984b70e351b7654673dbddbe346c4a9a6c2f930604226976c4675aef641a37b3522a179d35bb2c747fa9b9499b09e19ae647cca8b24bbb944da31925be4db84bc25a1632270323e14838341255538c36d3594292f23819428b6e3f9ec9703ab3fd07f81c7e29853936a42a7f51f99bca3f54ee50b94be51e95fb541e507948e51195c7549e50794a653e734ee5852585161fa9bcc4bc72562f750ab92a9c9afe6cba5f29364f268099e64ca8733cc9808e726e67e7ca7ea27f66e78ca791fd9d5433fbf62ab1cfb21e93cc6fdd59aa1963998c82cb4c3a5a86dc0f59991783733d4fd09719a7688c3361980ab00d95579839c047609d4cdbd15971f2138c69c7a6349a26c9bcd9601fa657fed596ca392ae7a95ca07291cafc5599ca7ccd2a956b54ae53b941e526955b546e53f912ecd424e0afb2ad5da5da66216ffd830b7fd873f95d39145a0eccab2748dd8c6193c3bd8c1f3286901a59a431d89d48482e8aa848a6fcaeb1612764a761aa088f81fe9024e75105534706bfb54d31ba6da2cdc49d1dce3333bdb901ae927975d73e196e245644c714429df4dd63565d53f986cab754bea3f23d951fa8cc4c7aa2f233955fa8bc4fe5032a1f52f988cac7543ea1f22995cfa87c2eb8a00a51650ff9d7df3de45b60d8fc14cd682c8276f0cb2b96cb8e4be1ddf969a947dfe6ba0dcdb30aaa85ed9f9b3e84fe8a4898ac2a67b54177914447492539a7fc4bda3d248ab1b3caae9ccf38717699a726d963125588b185239b62aa963cb815501194ad507975f209ff58bc953c78a473c6f85d8ff6a9f2469577aa7c50e5932a5f54f9a6ca0f553a54e952a527e53e550654195265449531552654995265469539551654595265459535920a57fba2675ee08f54e071215221ab9eed52c1eddccc26f7219da41a773fb5afca965a999220a5f5aebfff777d3a00e43299d199607d3e53ce64e5fc29f332ccdb31b34aee0e9e46a797fabdc03c275f867fd7388169b71ddba41bd60f35b765ca0db6a1ca962a39aae4a952a04a912a25aa94a9c2cd5fa54a8d2a75aa34a8d2a44a8b2a6daa5c52e58a2ad7d27e37825baadc51e55e26eebe880b26cc55ef66e89569bf46b65d1d7fa6339b6fba9dd9105a75961d12ec6499a6f58a34689c6a9b993976e9248410f7481cb0991848503545aceecabc349ec76570eed48e9969e04ab807c1ab019553003c288aed55941d25e648dbad3c52e5892acf5479a10ab3f0802a875439a2ca31554e04a75439a3ca39552ea84a54dda3ea2b55dfa8fa4ed50faa7ea2f1aa5f54fda6ea0f1496750f6303f423bfb78c129806ffb27d36e88471abb5ac4b25ee385c8a13099057f99b5e5b4b1ffdd386fb8334b9440097627fda4d57c9251fb7ff47e6a5d928a55feeae47083c08bf8ed9e9d50e55bbcec2adf112341d43958059762a5b1cf431d6557b54e59f0ca83aa4ea88aa63aa4ea83aa5ea8caa73aa2ea8baa4ea8aaa7ce686aa5baae6a89aa76a81aa45aa96a85aa66a85aa55aad6a85aa76a038a15df3a73ceecc8af7faca6b083546ea957fa575ea5f95cc2a6e7c16cd8f13da6db42677760dff59504774c3dd14d42b8bc91f1565baa559a08fa0f9997311582633a7a117d75d460b3738bea58ca165eb549d5169c26d536552f0104db2ea4d92ad8c6f0ed04fb3b7c1c51f58aaa7cda0d06c6ea2d55efa87a4fd507aa3e52f589aacf547da1ea3e550fa87a48553eff98aa27543da5ea1955cfa1c5542fa84654dba3da2bd5dea8f68e5e5978138fdd44624f3fee7148837fc3c4dd13364a9bd9ee6931812a2c99a32ed6335f333224854804316e2c1ab6b46ffe6114861487b80c4f9a2652f214afa2c7b6827338b987d816e771194b8d7b03671e15079479255fc83669367bc2746904f9277e17b50faa7dc2e955fba2da37d57eec46310fb647b50e7d8c697440b52e0cb81ad7f4a9c6852108571b516d4cb509d5a68219d5e6545b506d49b515d5d668e9da866a5baae5a896a75a41daaf48b512d5ca54abc0fd317e10d353fc763c1ec4851f7e37de34b33284aad0312ef191cd900b53d1bfec6da8669b46c6a380ec4b186b18779d0d91a63f52e84af1256b599bc45c7da7d9850e8f927c9413772769fd85345e26aa709e2c017e16f917c89782df0813ae5695964b1bef132dc7a3e5db3b765679e5175da35a9d6a0daa35a9d642e3d5f8879754e356bfa61a37d22dd5eea8760fe6d51ea8f648b52769bc67aabd08f6a9c65f1d52ed886ac730e46b27543bc5ac89da19d5cea976417572c36694906ce098f9b202a3b8be4024dcd72f04c6846cc74f8b35eea462827fb26577d89dd4be1afa6f4bc94502079482176e0d1f7aa25e9aec9ab6df89378ab422aef6fd7f1b367ff71a34de8cea7b547fa5fa9b0d9bf5773ba7fe41c31afdcce8a347f54faa7f51fd9bea3f30e9ea1daa77a9cef57daa0fa83ea4fa88ea63aa4fa83ea53a5f734ef50506ccfa32d378f515d5d754df40feb1e550df525df66eabe7a95ec06ad7751976fe6ebcbe6d349969bc711ca08c0a6183b21dae14ad39337e6a31e1c39465b625a0e6a4e3ea20d22b336e7dc6e17167904b87bde05e8ef710c60609b5b2519e714cef8ecee1cf760696a2653c30d5ea25345e4d427d2a11196f5d6cdafbbea5ef2baa97a95ea17a95ea350c83f53ad51b546f4249a9b7a8dea63ab73a9f764df51baadf52fd8eeaf7547fa0fa23d5b9b19fa9ce0dc38d7740f543aa1f51fd98ea2754e7d63da3fa39d52fa841d4d8a3c6ab35de6efb25426eebdf46e62532266da70c053debc2e45c0b5aa8b69c2e85c405a8a3adac441c64df61ba6cd67796f121bcf59e7cfb9d04c242f0eb3d53afce93ede47fcabc1029f51195bb339494b6b4dca3f568be21d656de3fa9f1463f7d6abc53e3831a9f18361b5fd4f8a6c60f353ad4e852a3470d3e61408d213546d4185363428d293566d4985363418d253556d4585363438dad1c73d4c853a300cb4f1baf51f4c62b4968a91b4692ec9247c149344e64de38791d9fbb438b0d3fe799345473c46443b83a66ea4eeb21e6ae2367267f35457699d0ccfa2fdfc9601e1abbfbab693fa3ffaba8322f44e602423c0f1f4f6d59af42d17d2e0bc92f92589d9ec396d34751b690672a94a951a146951a356a70e335a8d1a4468b1a6d191b6fa971498d2b6a5c53e3861afcf18e1af7d478a0c623359ee082693c53e3851afbb0161a07d438a4c611358ea971428d536a9c613f87c639352ea84968b9e65e5ca02a0c8f61a884f5f9e9791f9f4952da34517384a9e161f9184f1b664d9124693a2c2810e7a9c80981eb2976c680cc7d861e36ca62bc0b3bc7d4319d933edefd65fccba937e1596c5438a97b1612e247e5d163f200bff3fa9d3ed9bc236abe52f38d9aefd4fca0e62735bfa8f94dcd1f6a7660d235f975f7a8d9a7e640c01f87d41c51734ccd0935a7d49c415e36e788393417d45c52937fb5a6e6869a5b6ae6a89937c2b1b845cb85c648041b20778e9ef7e481aa27e985c770a35b5b0e93861cda93e231a7f17d85184d98e2a4892a3b465b70ac6cc7d9571aba48b2049adda1345b488f4b7f981682cd9d59594d15964c77485b789ae9d1b11f6d102752457cd4c6e8312bd2fb237dd7e98bd950a066919a256a96a959a166959a356ad6a9d9a06613e46bb6a4c1dad4bca4e61535afa97943cd5b30af7947cd7b6a3e5093cb4fd47c76bc50739f9a07d43ca4e6912ccf5e140bfd5bd6449a7b1c3f49f2e40688cbff1dbbabf654fc32df165f4ce9859c017fa196f8e42f6bc7cc4ff38232f6b8bb4ff12b795d78e30f7ecd6ed25a8ff65521f5f3ddc545282d0de526bb926c587ecbf2b2bcf14258c0fee03785535e2ec4349607d65cd509b3e1983e0bf4cdaffe849aa7d43ca3e639864d34c605b5885a7bd47aa5d61bb5dea9f541ad4f6a7d51eb9b5a3fd4ea50ab8bc66bf5a8d5a7d6805a436a8da835a6d6443085106dcda835a7d682e6879851df5a526b45adf53f1b2f160626f0625fde79a264f80a7ea5d0893393f6d2c6db997ae2ee6ff8a4c6d9c61bc7c2ef91d05a2b2c222a2dd7da00b1f15258bbeab079ed39b53f49c6c3757449ef6039c402f433cd331059fdc6ef7d4bad1ced9d532b4fad02b58ad42a51ab4cad8aa04aad1ab5ea5029d91867f987366b508bdba0452dfe780985a57545ad6b6af1addfa2d55b77d4e2e303b51ec1e3d613b59ea9f542ad7d645bb70ea87548ad23d1789361335aeba364e4483aa5ad78d573af7a2fbb5464d7be52df1b5fdc56deafcab2dc85b03eb7649f7efb5785085cbce30be2757d51adecc52dbb55de27febaeff99521dd6b1457ccb36c3ccfc9f3ec13693cbbcb9dc6cbfe81414ec32dd62573a401afe0845fe831bd72e39d50eb945a67d4e226bc00da04dab5f7a8fd4aed3769983db45ffb9dda1fd4fe44a1ba46733229db5fd4fe16fc50bb43ed2e5ab4dd13f4a93d90b197af36a4f688da636a4fa83da5f60cf7e3da7316b3a41583081fc6e7b2f49cae272a769367f750093f6fa6f114b21e835586460d8d776617098d87ffeaf96abea7bb0b8a861bc0f134bbee68723376b79dacb619ee32365ee7bf9837d7c15dd4e2f69cda0b7aeb5d33175ff9a52fa9bda2f69ada1b0c802cedda5b6ae7a89d17bc51bb80b191b5ca7691da253996a18bb62b704c3335db556af3afea8206bcd8eda680cf69539b9bf38adad7d4bea1f62db5efa87d8f25f2a33c4fc7bd446d330fbbb49fe5c3a53db597c49677d0f325f865157e2b9405e9c7ff43e3a5ad652d746a638025bb9e26cd79fa774320f49dbac7d233763a5d6064c86367685c0346cf80da0f34fdb99e97aff949da8fd4e65679a6f60bb5f7a97d208d7748ed236a1fa309793c445b1e50fb84daa7d4fe7fa47dd792e34aace4c7e01d216f1ea56eb5ef96b76ff2de7b7dfd66a28a947a66cebdbbb113080e9ba228b2b2002480aa625a7f320661c6823c7c3dab45d5a268b1abc59e49df64a0c5a116475a1c6b71a2c5a916675a9c6b71a1c5257bd223bb7b5c6fd3594ebfea66d333f2bba90cdacb3dec9f28068d78147b91c9b7bdc244ee2f35713b1ec2ff0bb3f9ab19a7bf510c34cf6bdbccdfdb7dacd0f4ded57e83776159f55ee271e5d6a9c5035393b12fbdbed85a896056c79dee525a5ce9f1a2c5b576214b2d6eb4b865d1b5b8a3a32aee59092a1eb478d4e2498b677ab222cebf6af16692a300b9629ec8159f081e9867f1598b052dbe68f1558b6f5a7cd7e287163fb5f8a5c56f2dfe68b1a8c59216cb5ac4c95523788fae2ea4e30ff584908f500bd31c49e5c42fcf6a8ff6f8a7970b8fd82a6d77f1af7d9a3fececb458732f67d2629ddf72cde8beeedbed7c6fc33f841fad82b562dd11fbe93fee905bb792ec2fb369dff905ded8909b05f805e0b9419b6e4a2ad40ec86d3b5a6c94d1f58a68fd9616db5ac4910863bb629424135eaa18d362dc1bcf62821ca498d462ca92610db39c4ef30e7478c5b4160167564baa25d152574b3d2df5b534d0d2504b232d8db534d1d2544b332dcdb5b430cd9bde4dc5aff0d640bd8fa42e5163d8c12fec85ae2fe2f1d1eb0b45e30b9ff74fc3553d8147280ea7d292f2c79f0eb927fba21b6c1082f75cfaabbb045de4a5746f586ecbf6dd09bf4eb50bef731a8c5b70ca17a6c77e39c3077103a5f9d1fc978fbdd992a34c262db4b4a2ab938d96d65ac276aba51de1f93c6969ef85b4e5dd8e2f2870789f47b28f92cb8799c08a968efc08817c09df3d6be9a2a5ab966e5aca6929afa5272d3d6ba9a0a5172dbd6ae94d4bb8e6877677345fa54f2d7d69e95b4b3f5a2a6aa94471292574b252594b152d55b554d343912eca0d5aa411332bcab029cd6d5876be6d82edfc8128fe96d069fd298f06f0818ffcd7751c247eac5733d89ffa32f8dfdbc0773af07ed3cb5f129ada0747c8a6a9f3f50b3db44b434740a8a9a59696da5aea10895284a538e21725cba76d4c91a7001e6c11893bfc4a310bece6dc81e0383f4527886b29a1a5a49680685a4b192d65b5ac5a162d77b5dcd3725fcb032d0fb53cd2f2985a05f0dea69c0e589e6879ea47673b27c7102d4ee44070ca332dcf79fe63faea160464bfe49101657e51c1bb07fa2f30fe2093ff0dbf933f82f7bb796ffe5b7e81e7ef69fa8bd2fca98b2185f9d6f28255b4fc970edeb4bbd731da14adb6d2f29a027d825695375ade6a7947f358de7be4c85392dc0796249c29cb876d4ded0e7624a9e583968f54be32e4ace58b96af5abe6939a7e5bc969fb4fcace582965fb4fcaae5372dbf6b7f6084d33a7bf983e051f94cf068f8a80cb399d0f217912b7ffb0cd6af04d563cae3710c7ff33778e95f5cffbf34ef915cfc2241ff05de6f92fc376dbedf9ec95fe0cdefe0ddede4dfbcb9ccaefa9ed6f20fe712acd63ad9a914b55ca4ab2b97081e4ddf3bad251c5bb9ace50aab3c40ce81172a9fd345071efe749a4774d10fa022352dd7b5dcd07253cb2d2db7b58ceb47b41cd5724ccb712d030c5c1f3d033793d1d5175f97729e50e1005e39ab15d58a50e06640082b5ddd7d9938f0b67f695bd840b72017350bf22c0ff4dd07d43667ca83fa973c32d55fcafabf82f79896dbfe0336d7bd822f86a1c2a3cd0ce38c47f50ff0c3c3547acce88f5bdac5b6a695be56065a196a65447ae91c1b90ab8cb532d1ca94e08536d32117821762896d6566470e5ac1fe422b4badacb4b2d60a7e71ab959d56f65ac1a747ad9cb472d6ca452b57addcb492d34a5e2b4f9ccf5079267815a0f5a29557adbc69e59d440e546597660e0f246b3dff4bc94ccf7e4d94b9f9a933cfff0378ffa579e1c9e9dfc6f6bfc1fbbb27fd03bc99bfb75fe08591dc633007f973d5f4b2d7bc5b4f2bf6b68b9e55ef2a9f5af962540eb503788cedd0ebbf091ecce6d70ba302a7798fe039c0422d84ce39fbf90a187eb452d44a492b65ad54b452d50aba485d2b0dad34b5d2d24a5b2b1dad44b412d54a4c2b71ad24b482ee92e262bd707895b456325ac952aaaa55e133433b57455d0f8399b7b37b737869fe3e1e24a6ffcb6cfe328c0f727f2f52fa5fdffa9bf8fcad5e7f5bcbc7fbf4bdc4695e38036fe4e72414921c0fc91d139789765127be5ced7214c2a8aabd95567b5aed33f4ae0e98bdac0e2d07ad44ae3ad2ea98e05527c403613b828747f979f2074144214cbe2c98cfac4eb53ad3ea5cab0bad2eb58a5f596b75a3d5ad56775add6bf5a0d5a3564f5a3d6bf5a2d5ab56710339ade6b5fac45251f559ab05ade2a75fb5fa46f0aaef9c21f6dce09ae5e7d9dd34f91ac2ecc1cf3dae62e0daf1ff91b0fc0dd5ff0edea36efd81df2378ce9e3f82e7e10966930036be1fa6e75fcbf43ce29c12e0eaa60b15d0161f5afde46af0d52fad7e6bf5c7926135cf361918d40db3a2564bb62d3360a73e198410bfff64d996a861d6e0177104217cb5a2d5aa5681625dab0dad36b5dad26a5bab1dad46b41ad56a4cab71ad26b49ad46a4aab69ad66b49ad59a6a4db846fd5b516b5dadf5881f8c67adafb501ad0590abd9fa3261f1f33948f9b3751edfd8f7a094ffd9e8ffe1f3420278e77db3ff3ff0c2bee5aa42bf34cfa80a67dd0dfcebb39e773609e870573ed6cdcd90e2fbb591d6c63a42034db43665dd152d5e9b696d4ef08a176a2178caf793d616acac420589d353a070112f40d4c1f6adfe5398dcda526b2bdda6b5b6d6da466b5badedb4b6d7da416b47ad9db476d6da456bf8c59bd6725acb6b0d3ff4acb582d65eb406a8ec5d72e02c355ced839a57fb24783018e873b5af60b4fced57bdc6d7c966bfb5d0b1bb6b90ae9cdb4e5001f84fc2f25784f09ff9e8946f52ff1ebae683ff7b34dde11b75ec60c03f1e12d3008f80b9592307436bfef06316693e5b8529dfd1494647689a6fadfd68ad48b6f2952578b09c00af56d25a9909975a8536906e2feaf1732039e5fb897ac0a07340111fc178d6aa5aab9156d4d04b1a5a6b6a0dd76933aaab75b416d15a546b31adc5b596d05a526b29ad01e98cd6b25a57ad8bd6bb747e9737adf78cb9a4b5dea7d97ccfd0dad707fe1dcc219ff424a5f660976a0ff5cf9b5567160ff9fec087fd4fe0fd3390ff3bd2701eb1fef02ea4bf68e79f9168f30fb33909e61f5f83973395ff4538677e2988d946eb43ad8f3817ab3ed6fa84d51fa811d40ee0c1843af0ea53ea657da6f5b9e5332f1ce2e0729bf091f505690eb6f893431f828fea4badaf74ddd75345eb6bad6f54beb5bed5fa4eeb7bad1fb47ed4fa49eb67ad5fb48ef371a99cd681ca93d69fb55ed0fa8bd65fb50ef0dea970884aeb1f5affd4fa17f1c3f66e826e418bdc1eaad8217e2178576f0c7f11c8f96f4af2207f22f7588a7be02ff78f6ebfc0fb13bfcd836376c6c0f792c75021480ffacae1e2214878e84ab8503ea27534e88fd68b5a2fb15cfe86e62b13b93a5abc4af088594deb75eed0720e0cbc3a41fa31f07e62048f34f5c68fa8bb75eec3d8d61b3a78d5534f571f9affa1d49b5a6f69bdadf58ed6f1eb51adc7b41ed77a42eb49ada30f41bd004c561baa0dd146571b3d6df4c950ce4d06a600af31a04005ffc14a66f7f7f9fdb9f252e397ce852f3ffa13b3c750e19fc83d9cf927ba0f0981dbe601bcfac33ddc1eec81bf940bd21f7a9373b07fd804deeecacf6cc69761331b436d8cb431d6c6441b53da3d685e6346f08a6d82076bd9986b63a18de5ff021e95ef42ab0bfcc85a7fb4b1e228c2d9c15e1c55e7af4375e0a87623c6738db53636dad86a63a70dfce8411b476d9cb471d6c6451b576ddcb491d306ce7cd2c633e3bfbac5ef2e842d14ff45c4ff6eb847f0d2f7aa8daf775fffc7e0e1bf34ef8f983dace33f0c40badf43f33fc1fb15e7dd419add49b0f3ccfef89aebaa340adc412b4c12da78e1ccabc6ab36de38440cee0aaeebfbcd83d778d7c6070711353e4dff96ff369b4e802bcda681c778032dfea56be1eae3d0920fa8d1b7367e187497ed95cc9bb8368ada2869a3ac0ddc036eaca68dba361adac02fb6b4811be86823a28da83662dac0f909624fbbb2d44632c8ca3f8c3572aee517b5abdfe5d75b3283b0e1f9ef92dbefaadb3f3ddf1db9c778faf19d9b9bdf7de85f66f3cff4d8dd583f8077b70099e07569738e4f9dc03aa5b491d64686531110d2b9ac4a234bf0a07600afa9da140f1ef68128cca913a79acd2eb7d86ff6b4d96715b039e09f082dbe77ba89f0051c7057cda13647da1c6b73a2cda936ed019a736de2a3a53657da5c6b73a3cdad3677dadc6bf3a0cda3364fda3c6bf3a2cd2b83f7e68da3a49e70027e251f64a4360155990545f6b0c9fe00effa3028e16192f73f94e9ef9cf063e93cfd6ffcfe7873e3a3f2fd5f1096d6c33d3d0cc8e11d9f83aa60914926969ad27c315721abcd276d3e7368d757da42b428332c3f3d6a0f8021784acbf9d5f8059b43ce09912b10b9e68b070f7f22f068be6af38de041f39aefe4facd0f6d7e6af38b411b628075559bdfdafcd166519be807656d56b48983e828756d36b4d934fc5adac44f74b419e1409b66549b310a0b78cda03b3b841a0f4586bf2da7e59a5d12c353b9ff3283e5df59aadf10fe3bd29ffe3778ff152af857761a78cdb877e6109792f72f0145bb24b4899e9bb23e9bd666469b596da9b6445b5d0ead241e096df5bcf28552b4612c0e2ad846ecd3e1d5b943ff77bddb4f1c215bd9f138f6c15d5b7d6d0d3890775de203bf94b435d4d6485b636de1d3296f1d741f7d68b5d6d64c5b736d2db4b5d4d64a5b38b2d1d6565b3b6dedb575d0d6515b276d9db575d1d6555b3796fdfe7045ffc8023e68cf1fc39fc35435cbd437abaf7efa454edc2004e2d4fc357830c4237c19ea7d54e0ceb77c2b4729b43dab6ae5fdd6ed38da5cb38f1002b51056b9a5f95bcf1e3f5746c107bc1bec14e8215a2fda7aa5b50178ad376de18a1fdafad4d697b6be69215b3f3e63e2ca72ac2ad47c3c473c8c9b38c2e2100dc123a8319ee07ca103125ad8c24f03b0b2b66cb192c393b6aa347a68f4568de041f00c7898cab3ae00585d5b0d6d35b5d5d2565b5b1d6d45b415d5564c5b716da16fe129521c30d14a53f30a9f77dee152cc7ea199f5c3aba01fc49ba9c68329734598b12f91d326adee6571175085a1881b830b907e81d7b8a702000f2399077198b5325624093073a7b5b2c4c86a960ebc276d2b0fb5c58babdf17acf45eac53f3da5d6df7b4ddd7f640db436d8fb43dd6f684e071c48ab1cd52c497e558b17361f88d829d62d46ba48bd3b18378bc3da510f520b7892dc06bcfb43dd7f642db4b5bb2f895630b3836c4c67ab457865f9e8f54b25735b6d7dade687bab6d5c73afed83b68fda3eb16cd43e6bfba2edabb66fdace693bcfae70e78aceee3dbec77bf51bbf2030a0d7b8de03bec7f4e61f01c03d63f287315cff1edcfcc041be84f56da77380ca69218e0030274eeddc47de40f24f038f6a6835b0f6939fbbe516396d3f735029072516b45dd0439debd4b6d1b8afda7ed3f6bbb63f6815bf9f590a607ef9702fcb014b884b5803128e787fff351882a6751f64382d97cd3c599d2374db9fdafed2f6b7b67f6c0d68a5ad7e5af83120bccf95ef9b88b82fb81374bb92b6cbdaae68bbaaed9ab6ebda06a84dd66cdb2d6db7b5ddd176a47ca870511837e6e557d52df3fbf5cf7f840127ba0fbec6f6cb228d80bcfc51f409c90e473adf0ca17061bdd57d70d4f36f3e02449db5041ea19df44ff7c923f8c859d410b640119de64d9977af40e7a2c1a829b3e9c0cc2d1fd18e693bce95a0d173dbe8ce496d4317d3dace68db06d7bee57c71dc21c7e24ed48701b0904c5daa87cd5512a88b0edd881d34e470118eb0ae6947b523dae96aa7c7952b0eefdae9ebd3d6bb160e74c8fae72c9b83e90cb433d4ce483b63ed4cb433d5ce4c3b38bed0ce523b2bedacb5b3d1ce563b3b953c99e79d42af030d5bfc7afb701812e01761ae3b7be20727c248e3d38f23f2e0051ae627654d6d807ac3564119066bb3c5edede22dce91f09322c239057bed1cb473e47a889d93c999c23f2fdab96ae7a69d1cf771043a0a5bfad1e7b6e1160867d1597de999e6bbc84742f7e1825875836dc2d1ec7db4515e3b4fda79d64e413b2f4c2223ca667232751f8402f07cd1e0e6c173c84135dd7160066bd979b59242c45b4b6ade0b350ffeaff3a61d00f6a11df7f68e32c7263fadace3af681e68db951d103d1146a2f3a51db4ef8f768ada29197e65ed54b453d50e9aa0ae9d86769ada6969a74d8eba35b6ed330f952075f99804794c50a0353bda8910bf4ed4185c22707241bed04da1734b139e9bbee4e4156b6ff35d3ef5dad26b952f18279036cd8562135f3a31edc40da4847692da49d91692d64e463b598da8464423dd407a1ae96bc481c79b33014371dce928b6dcd29439c69ead1926358d0c3532d2c85823138d4c593dff6953bd680c6dd01147d066ac44bef0c51da65a065624aab1500e7123219c7642dc7816378685d3c03ec8593ef02b338dcc3562f316f7363c19b744a271b249d5e259315d7a49234b8dacc8aaf65f1a596b64a391ad46761ad96be4a091a3464e1a396be4a2912b2b150e3c9f390addd843b1fb9e1971e0453572d348ce24af91a760109f0df072f31fb968d0334bc197e41d3ca7919c6676d46b85c2b7c34f6cee52cb565474f395dadec941059dfe459e810d118d1434f2421423af1a79d3c8bb463ef4faa439c0e9de68c23e152178912f3294c39bbd6467a9f3956e123a18e9065ffed6c88f468a1a293132fbb958dc9630f6f1420cde123602f3d9c6f199aab90c35d0a5d94c05c358527752eac6fab96164c01e57889479c1484523558dd438ff01bd870b6096683c9f570178051b1fd6e20347ea1a6968a4c919433827d2d2485b2378968846d0e8318da00970e5a446521ac18364b8f68a73728f19937b7e321de06a46153d2692d5a86a540cc23c9bcb83e72649dbfc55be6ef7d9de2c1f6712ca33cc75601e977e82aa5f8b2f657f06d3cc604242260971aece39361f4298a9a4154d5211a35dbda2a3888187c70678d19e46fbb44e6882f50f47d346071a1d6a74a4d1b146271a9d721c5f74e60b409cb8d5a0a0f5a3731bb55ee00eb487bcc386db22f4feb2e926bfdc613250b5603c04813cf8919cf8627441e58b2eb59bd73ec01b53f960395d28c6e9d4258daeb8742e5c0576a26bae4e016ebcf9a279177cbad1e856a33b8dee357ad0284e3b69f4acd18b6e939cdfe46d63ea61c0473825e777c906dd059845af042f8a1d533e97bb705c91eb274ffc4b9321177bab4838b5d3cd3d73733cfd7c335b32cdcfa9341d0536211fe17ab2463b6b03bff3a897f08550cadcc29604ee39c252a3c17454e5606f538ee63959121d3ffaa4d1678d02951743ee55a36f36e439e19123c33c789d73130f80a51f0931a48e62eb007621841bc9e2542d1cc6f2380c97e0d91a20d10f9d6cb59bd1f58014e370f38b64453fb98a4ff48b8b1ee379dce458c8d95ef8b0fed628e447a3458d02c532c3736016ade8112856355ab371827f570032bf18ff2378309b1e39030f3eef4e58dc3ad73d1b63d1a1fef15d83fd80ad042f39c00ec15b07c3ef77bfd2aa616cee8965c61f713b77c9f8c1c4d1ba461b1a75abfe71ccfd928cdcaf9af4c2c9925df4dc9646db1aed30010600d0b8afc032c2c000ccd0b535548d82c78b71ca01671db42c5b66832198b7ec112a379be427add1b8cd2f297088184ee67e9a3bb848c504d77ccb6834a1d1241773e91fb537e6ba8f9b6fab120fb9840f4c65a1c12560603959ae1bdc3bfeea93124d5140af76658da639e2368a6b6635a61a13068e8f9885b1c13f86a238cdcb133f4298fb4558bcc90d094bc2bf13f23c0c26c2079a77b3b4e2af89830fd1c22378c0c6857d21542184ee1c0802a4ca877eba97dcfbd555ddcb6e069cf813eb6aaca7b13ee795c7064c3d4351e09062436ec12c009e8bea9cb6c546042f3626121c84b933e4061a9bd0359295a43d72b12985b0153ca2dccf98b3fca6e08762338dcd35b6a0c55eadb43724c5d817fcd074f83c104e101610ced6131d436cc90574632b82b71bf19d287e454d5b560f7ae6a610c4d61adb30dbc7760f4ae13eb772fd87ce79b6f94986e2780a60c3d6e70e4f7e2484776fabfbf22bf7392e8f4bf8ec1f16535fdd97a68010a1dcdd3c7af09c0a86f2005ef987433a626eae02174f6b735ef90030ec34b6d7d84163478d9d381995762f4bcc1cc5205db44c0a9a1eed0ec062678d5d881ff6010fcf7922e32778c65970c42b9ce107f1e03d9bb3cc78458cddbc7c9cb9f0d1674763395dc7b59b266dd97cfa91fa881310eaddc7443738a62fc4cc0f2e72b5e55530fbe6f46bffae6a61b4b0fc93b078e4163ebde2c23b27e147bcc2d40fd972cb8d7a7ff6c78cdc709affe261759f8785f161fc5d00178a8bd943cd0b932f2e428fe52975172af436dafbe4c483d893c69e355660c639f6c209aeb5a215dbea9613315ff57ef1fcd0194922f76ae0bdd9fe94439e095ea079cdaec199f674c6dbcf82b7937f82f74ef9c4d53e34f6a9b12f1d4c987d9e2fb80691cb08bb201d3ae7e4e9668bf7a5fd7a79aeb94b3f1afb66d81ac34e5163258d95f9e4ad678beb036ef218983f565cffa0a03ce1f34f8f4839da18c99dbd1fab7f1ffbf3c74cb33fd65fe276e5bda05b2005b4cbc5dda17b73d996105487a54b8f5500504563558db9d5dd37498dd535066bd9d4588b34fd7ba3b1b6c6d0f723e4264c1cef39d02116e5b4710fdbeb036c319357d3b010bcbe070fca4a058d9b768e6cc7f6e129b9733619d914d909212478098de15b291d8c594aedd92af9ae94d55e193669931295e650e7dc9f5886b611cc8bf9eb312596d5b86a5c8859bcabf19ec6fb1a7723211e6aaa8f55bac791428f5537ce1c0b5c17e4e56283b5b65cf4f715571eda74b869f0faa4ef5f5631042facc93d3b2e9af26b038776d259ce906d3a50dda70c15ce1ac76d8c343ed6fc4ee313032f3ed5f84ce3734e8dac6367c115324134e0ea7e2cfdefd82320892f3996d98f7136ed81ab0bc58397f4e94a0409cd02f32cf195c6d78650dcf03e0762c8c537e60b5fef539ce35b4e2f8ae3fef63a1b68fca0c30bdf31c4863e9bda5961a16d794e1c41601a3f3285163f7115d738ae79d1f855e3f8e99cc6f31ac79d03bf82c65f081e95ef64c895ac4ae7463e5efc6c3cfe8aedb3be33f22322f912bab60d64fdd2670d24c985620b6e269f1964f0764611e5bfd6030927fe341e6abf815d0d0de36361a8bcf05cfa3dab37d51bdc01607a4578a7f137937703ef0b607e68fc53e36ea1e06ff2115656235c02208ed6fce132a65caaa164d3c65d12f985b4135614122f52e808530fc1408cfbf112e1899703857bf5ae118614a6d2b93d4747b1c53e6cf21dbc8a2ebfc9fed753e60dd8d00b1296789569586ce33506ec8fa3a710f6c5eb1a07844d8db734ded678871942e057e8683cc2a601ea152b9ee00a7e11bc825f0a2f1eb56dcc16347ce32a5d5c99121d28ce6b224a8927349ed478ca244ede8b3349a026bc20afd6e3905fb71822d30845122b27388e23ae86c34f9b9e30e34f8e6feb71c74508d842f36e5dc25688f0bd2ff1340183c24d9b9a7bd1db447305038f6bd09ac4331acf9a6434612ba760ebf6011e74eec70dce6c589cf7ca19b02e6c70694912995830fdc091c9b426c490bb583811d84967789db88c36d950cc4fb44c74393426d1d3042878cae2bc2ab3e44e27c2e93f2e1fcb56535f34713d1776c6a57a8159a4cfac6e62c09c13fd47ce1a4b3cf0808a120b24fa6f092b656db9175e8019239612f77dbaf5c983e7902b7f582433f5c2945083075df58d9f36edb4a95d50780257e4eb7b5757e951e70a757ab8c450a70d4d8c34e10c265a7502fc9cd9043c534dcc4ca606a109e0e47177e487738ea1791c9c19804779b150ddd25d64a447cf2ac3950288df9c7e91a63500cf6741d31e3c079b4fb24434b1d0c45213f8f5b52ebfc88141498ee2338d77e4c49787d06d1f2bce61b48b86b8a7ea8fdef97302dfe44171bbff2944d7a4fde46bd4d48f0f57c5363c9a779c42f14b22167c0ed68b1d29940d6963cbfea07508af824d7b6f4f8db70ad87233bfe5425dcf54b8c446135b4dece8f3005ec2ad749b386802fdfdc41da85da882777574409e0921d4d1f933ae7053f383d5dd4c49b4bb038f9c33ed11f281c49b2137f266d3c5762ec00f3103f610e8f1cb93262e046f93d2739a4bd22100654936635505d7ee26649e134fa043712ae82c0fb654c4a32fb240a25697f803390f52d48bd7cb9a37cbe1bb909c0d2c15bd9684683d0a8f8c08d22f0803f09c8d0dd5d4d9dbfb75c6013d51b24a6cdf330ce9eee05d693c61361360b383ff00cf29a2c32c14184f8fdfc2d7573d91516ff71cef778433710b42c000bc10397ce4c3be674ba944eec2bc68835433015b97d7c4938e6d3d41a6c7dcdcd773609dc4b7427972cf0786e28e3036c8799ec63cfd3377001e5bb617acd4fbd0d0ed9527418fe691a5e9c0be39e5739ae732e361a37b31fce826df68877db708ba5ae2d98c73eda18b54f95b5e8fdb770172349b190a340f663351206cb33591830bbc4503f0420d730885e0392bea307342b51bfb710c7e8e41001ef9a7a54b5c1a050881a7dc43f8b73bb724f39cde233f971d75f91a7abe1dc3f30f60fcc24557b9d6788184c5af025032cc9eeec831cf92fb37782e49e1348fe6e8606c45cded3dddc5058e8ec4fe133ce7bd9ce50c6de65de79cc56b0656746c1af6e67172dccab967ef5683830e3fe7ed48641e9264e0567c51dd9024d3b195c42bc58107da9978d3dbd855150c12d2c8b19194b301a677da0281c285e039b573c8b9160f93963e6c3f1b6ce320847751a0691ec0739ae7129bd8860ecf25af095e9b55a1c4bb263eb4b72561419c705ad96c8ab13568f0c08e0b8409a43f72b8a42d562183ce2142c2965ed0be1512101ff24f193b3eb29250583bfcf8f3ca8e5660ebc465c69d10c291b1d6ee1d242777131d8257331b30b1a28f99ca77db616c30d0c4a726be181b5c4f7a0528df7c451d541054132c2cd27766f3ecc924043bdeb11990401407b125780ed11f6f2d9db723cb4f05b1b9f9b97b481048e287c240304e44819f3bd341c812fc476039adaa80202151d444491365edd9cb98b9a2fb37b3502f67ff4a006fa3aca7ffd17cae6521209910169d7bac84455e58dbecc4cd8795bce052de6cca2f2f156a36f4ecb12e135259c72cc2383afc692ebaed82992743c80697382fcbe3b5e05317a81488b4777266274b75eeb3e21365c515985d2f86dc97468065c564e024d03c867181e6019e103f778486d44c280f66bd7372bae2430257cc8b06ac244e86094190004954a97908c01d788cc70bc1c263cfbf1664a1cf8337ae716e5802b6bec105275816b6572673a6679fc520f82de7d81f73f077e5cb78fdf0f5e88b8d337072a10a22044c98301cacdb2b351b168455fdbe338038c290b16915ed670f12013b113997d07237f0c73d40539da7e4d622136c692de0f65abc7900c673c46c6cc3286587027ac9f0a063ebc02a29250173d236d8f684cd31afced18157f2e2d4ee1e921b907487d9c0ff9dcd6cc6ee129d7bde5109b32d0ebfcb0378736a1e535f239f58f129e942005ec4172b10efbf7e734a66a2a309c40c515d77b976b37b4312677d8ed8a0241dfd7b67bf974e3277e4c2aa4aa88861f18f383582d7a01a602ced36282ced06fb384e8c6336bae446ad4dc4296e3810b88fcf26e7eefed5fd2ec7f135f9e97bb03a05b66e1f5b7703cec0f2de8e1adbb25050f9b05acfb3a554864c8311302709fa39f421f43c749d2067e6e2bc25c581e7f82410a2b57441ba21e759a8639b16868795019672107624b9857a2552e6e1de0c3f78da0cf713599ee0e23c6c3d78863a17620c8466b3a149d5a468f749935d5d59a1ea7062259db3ab93d6b8cda08dacb73af3453904e1b94908a4c338c4fb3eb020f856a855ecd14150113acb5b04ec40933d3622c56c17fe84ef61d64aa8282e2c737ac35b3a70eb626db2c71e6fe3663f71ebdafd389ed5e19f1fcf9aec53108f27079a2b5818670e2f39bc5bfb88d3b946185f3e80e77c9bd7b6c08a92bc4c3de70c998b4b8039f0d0fa000fc038f088e24f809f032fcd7d80e7352f00cfc7e919d3e08337c56efc0bc11b6912ed3561a1c7bd248984c556ad70b19403c0b5daa36e3d2ad9fdf8d103e31c9557c7f04898bc7f1c7c77b87b32975db491073ec708ee707dd66b9eed4be2d7338aa1f622e3c00002891bab6ec4098a852d40c2dd7e66590a4f4e35dae4a7b19a4e2b3a2d9389804f2667145c1f578ebf9adac52dbd673ae7ec042d07f17343ff8a042f39d7e4822ecd3bbf8f5fbae8994b891ff9282de313d3d036278e9800394812175c69724d21783f3e734d1999838c6b72c3e4d9b7cb67163900095bf8bce496ab6225779adc7396e53ec6d7ce159e7c82dfe993f7137536d31fa30442e7f7c8231e81f43a77f6e3b49c0ff38aeb8e1fef269191a21a7e5dbf8522a259af4f7abd920a325335f2f8b99c08e041649d3c983e1d0db93c0fd6462cfa631f47f8e940a7459dc2ad4e187d7fe5353fd2dc59932703cfe889b396d039fa6633f2d8f9051ed1ca6af2cc8a0f20247e968076283a205d6213c29df4433535f0733489b1c060be19728110bc949d10567f32c64e4ddc1832c75938c26cabc98b26af9abc7174f3fc830eaf90e79ac06e9e8e43828d28d6bb95287a6c7e9bc14753e9f13bfed23c82678cc6f1b7fbf1e3fd0ab81adfdbd0d5dc9cbfe8b48a5a3832363131e319a5977227e096004f32a7c93c91ab8db9cfed51934f9a876ec1481634f9a2f981e64b7c4d35ff0cc5e239af736fbc3275ee7c77c9d0bc2027e74205f55181c38cef41bb79f2e2ec67c8682000ef711c8ad339879fe7266953b895291fe4cdd4316be0bd0666b340d85c46c68ffeb38a44f29d6b98253f885cf293f3b2f8be900f5bcdb9e8e7cebb3625785d034f889fcfa10c4c9e8311c7875fd1981f1579be7b41871fd947dc52d8813a86c3961dbaf46a0b065e14eb2bf06110d28a289d1fdde19be95f84d990247cd537677e277ff8f28e645193259de0e9ca9aaf69128eadaa49ecc078368862b2c9f78d275b4c3d23928324db86dfc458923d116073ef22f1b10dc31b032fd9211ff9faa46f4b466c1ba5b54cc6885f326ef6f36a31c3d556c55c1a7ec1c093d8d0e3e7522a0e4257a1f5263441f1719e155de9fca63e730dd8602d93494da6f8468cef960ef37a68eb20cfeaf9f9c54a9a0b16a99f9a775ee7bc1d7c06b67ffab0e39d82dead68e6214a7b44d4f063efb65882f5078b285c3acde925094b943c02b405d800c24284c8c5aae4ee6ceb3493c58030f7c10c4832a3798061b0a55453a2a9aea67a9aea9b0c3435d4d4485363db4e68362956a54b994385f221c8c3653b290b52e377fc98ca29b937ca1878a41243a31bdfc18acfb6a5319c9bae986fe391980fcec26cb2131f2ac43da86e7c83cb93c1c0729def0117024fcdb8907bcaa0c54fa4169a5a6a6ac5c51dbf329c1e0daa925aebe5c866a2ff1f7a3e86f6428bc3afa4369ada3ec886853aea5925e89bc5bb79f17ee22112f052f583cf7872789ac57c2e36a0342da0fc227e4993d99609e2fcd60a3415cdc534b5d3dc927e0bfbf894e76c483df029cce3b4aff1774ded3575a06ea58e86d6d8503c69eaac2934c895a715e29aba692a470f0ac05279924c48e2d3550f8c25053eb5540a978f766c73f390877cbd8f57a03e45fd78053746c1011cae70fa18f0b9d2ab1f136d0ecc0fa83d72f1ef9f3e912378df949879cad493a69e3555e088d018807ce1cb2f52e874074dbd99e0e13f4c3e35f5a5a96f429502fc4596559da44a41a1e7e3577afe31e5087904f531aa0b03731ffc552d726f103657d485e639e4a6550a765265be7d0a8c2355e13e8f578c7a9475b6d2699b851b782fba347090b9e6c79a2f1b8a134d554dedb0ad99d4e9f6a064a986a69a848d63a213649834987b33c581372595b5fc0b078586e079d61e0c797611980bc2c2a1d0ce42bada7798870c873cbbf9066e4cad5b7fd1cd3b211389702d7eaebc3fb4e5f8fb7c2f4dd4529da996a6da7c4d546cc0819a35b445878bd1c110a5804ad4c003c6719384a19834145304329536f9bec7677e947f20ffc899d9998f66f63124f83b22746ed246fb682a6345eda5e6e24c16d342be93dfd34bc5d9e17247cd817f7e1a6033cd0f4da06a59cdd735ad6624ab81f1c411b16d97d92f378fc41bc99c779f3e0209596e97f495a6e8f1156c1cb37533cbf9fd1bb082af12dc07eb99976236e4c3673543f01eff74d96a37149ac555e53b13e83b8b1e3f4738d33d4df7b9aceaeb0fdfd7d6514d0fb43760d3a4879a1e99926d0ca19461f949498f295e231314ce83caf92408e3d99bcbdb7ade710f031e42c0c722ade329707bcee1b914f69db03c1b998cd066ba1c3fac596e6f71c2c1e60c5c353dd1dc975e5f353dd5f48c9a070ee9246f0100348f96d3904bcf29800d9a975e10515c27a2362128e56700f18716778573e321202e76fcf5da51a7670e3397ec77eeca15bbdd683e8f9fe9e8fbc5cfe8f1459ca02ce0ca3a7e3443cb6b2163b82065935e92f2fcbcfa1ffafcd2f44ad36bce434f6067a3dd678e8f46ef26785b4defbc61849da4878b10c5f45ed30793a399d694cd8f8a07831eaeb61f908e5ff885621c3204895bcb7b455e347df2262bec0adc4ff1232656e2dcc2b2256df2150821d405fca2930e98a1654658e9de113916be37dc499f4d2e249ce9abc94dd3394de7092494f57a318632b40cce9bf158a1e6113f830d3b0e4b6ae123789e680423cffdd0928ccf83fc314c16027208e573450027617e2bcc2f872e102896d7b69463c92771183b16783cfdc4b7eb01b9f4b3a60b1c7b987ee1d85f743a4042f706fc5e4df37e0c39d3421e899ad811c0ec2384c143a8f0c72cc5f33d967061d32f444f049bc00799eb307870022099e648dcd14517716aeac6c8e07c6ab38d1d6244f8e2e36e50ff69934538b0150403f4760342987ed3f4bbc98dd102d0055bf1e1dd2703f39b1b7dd4b3102500cf21479ff7f80ab6d0f43d8e02f27c329c32997a38186016329790bff8a02de2270139cb19ffe6122d1ec23285935160ee3f4832111b54a75cb22a0d93f8a58b15dfb2c814d4dec2a68acf3fb9889532b6adf30a035fb1bc4bc49fe349dae3f151f075f7addec377074167ef06f1f8c0ff04ab10230e1a4b7f6bfac7e49b7fb228e10e1679100495735f2aec1330add316619bd64961c83cbb9a8f6bba645473444997cd66d60927cd6cdc9415e754587a855b8597055182a3753ae75074e0056f2a756633f56f0957cc77ab7a87d03e221d4eb60bf90b4e704ed1b3182578e9aa5f81da8107e4e29f543b2ee3b2e75a49693800c0d9e010cd79d6d2be23deb48390ad397900acf7d0f491005407cc8478fb4acae421833c31f8ddcec42797dd69d8f2788427b0e6b2b7ae33a1054b1a7d801f024280c79590484483888240b6358dfb872169134568612e45d81c72dcae190f00bc3054008ae98e49c4b03c9881ddfa240bf0e35887674a21123ce9f02103f7089e1fc490f2ba122ec3fe28e162d06e8e6be90142bf4e7bed01e38337a1cc5fef395ab078e0b2727cd5fdd22034f02aa01e514dc7b8c0661dcf1fe73c6680b728e962c17715637b2ed90b8ced65c68bf9bf251816e02164eb4f82c487ab5e1a1291cfa0c2f249ef021be5622997e522c663ff5d1aaea9c1bca7fd84a98c039b842959d2404a112760e9e2421e873dcf50e01173afa66d75db362dda3b3093c250611268dec234af669cb36a4675ef85e3c326841c3c36f716f45d339ece1da035f85eeea48117a20554bee066b29478e98e65b842f423608fb085908793ed1e57862875b8ac1560ab8c28504457fac9a86644335dcdf4f8cacb4c5f33032e02f174f0ef9a76e02d9614ee0468611f82d39cb0c5c777e5731ae65256f7fd8ac78f50853b86657830c4d8ff59f1fa8af08bba9534714ad634b452a67645c3f5db4308f28228823a57f63633bf232408097c9060711e3073a102651c645b0e0cfb406db0cd17c96939742511a44f47de25fbd7a1bb251bff5864e3be24adbd89846b6e044b42bbd12ba17b0b63031f211cbd770ccda9b79ca673ac4e64fcb898a89d862001543333d4cc483363cd4c3433651988081960dc59d8cbc417baa8fe1b3c1ccf252cf04a59ecf5e6c32f788e304fc85461907c62fea9c0739cb01063278322baadfb1684c37e0a6cbb4eda134ea8208493c46dda3fa94ddcf3521f9ce4a8b2f479250a216c518d1027906dbe195b99d3cf656626f3406686e2d0d03d5011a17fac1059dfa2f5bed96f198546834ca19a2ece73735cc3717c7e6aa48dece340a3a76055e1a81ff417aaa333a73e188fddc1bb7b4d3beeca84002fb360bef4ebd3d2a105860a99a566562ad03f7b454366a399ad9e10e544cd789603cd036695bbaa3d0a4e207829f313efbf0070c0789c5e0d5713870a8fbcf86c24e52dd87ffd1345341f87c07c1ad59cd8f69333fcddbefb941afce2d53757b0844b89d996fc9eb413715ebe617142805fe6415cd87087b0ca883ef96cdf2d784bc01fea794a3c9dea145bb7884eb830d1e34ad06e01e1c72538dc424638c1adebe0df67b1f5d6d2bf4ca6f64b239d096578f06a32677a250390f64c08640e9a396ae6a499335f139cb9e8e86afa77d553528f5b3d6e74d3d4455737753d1fb9a5b8236d5df4f8b27200ecf31d6f7f82e7f5ecf54f810a3a68f995947ddd49e2d7a5428dc43e9a0ffb34a705e20485e058aeb805ec49e356715a6f771d66cb203fa679cd3b78bf34ef11bf9b66005ede122e799ec6a0fec5ea0caffca19c85f04cc158f26c3a367195f470c5ee3fe56149e8fbaade51af738f0ed2c9dde1c57ea5ca92718f1c5f4039d0b7b8669e982ccd3c6b06ae0e3baf9a79d34d46c703be32385fd06387727ed2f38f1e5ff5d8b63f7feccf2da1bdb4f47c22ba00355411671e1d60e46c07c6bfb96fcb5a9d35071ef843c9bc6bbecfca19cec1c9f8168de4d874d1c9fb6f0954f6d7a7af9627334e81efbaebf060920a07d85c9ed3cd31f06673ee910bc123547943ee43339f94470ae32c270dfeab4f7b46cc7e9e637a8eeac5adb7c9a567ff257e099cab5ff3cd2fe417f59a17ea9f6337103739c8f14c4f552cd8601569c07a42e68b6f8bcd40e77e9801cf143553d24c593315cd54758807a869a6aec7b4a1f56a50b5f410a7608758fe4b5c90847e0a5ee7847d7647c206b1a96c364b63e43f051770b9abc72a28ff6cfdbac8fd52235e0446cc5d0d3b8c044ad42dfe099fddb004e6c8aae1032636b143eadff2570061219f1cdc85b0e57c9c9e696aa645cdcbb42dfe2b3396488ca9b2e81334126dbfac0e0811f003728b9a8e6a01db74ab323c1a4f9ac760c1b7afba5f039af83db1640ac01262b326a786d0924046e316ad1b99e40cae99cfab7dcf08dea7158352f0d21d0e78c9443413d54c4c3350c4846692baaceb2da3cb67bd14f454d57392f6739136d8ce7aeee82d469d7b5253c18b1e0b7acee959780ee0619b362c3ab60039fcd3b176ea41c95c519107c711c65e8b84b5e98154906cf070171e395bbdbbcc4433dfccee7295165373aad550a73d5df6347fd0715c27471d2f751cd32b1428a599b45ea77a85212d06571ede75ce2197c96826ab593511cd7635dbd36c5fb303cd0e9942cbd7ad37146924602ace378ebd386ff572e365736ec9c6af3575223b622b43beaa9a1d6b76c2812d6e4884cf8cbc3362cb4e353bb37501c6c42f3bb7495c368e3636f20300b19f5df03420c4519ab89ba56657442ebb66822dbbd1ec56b33bcdee357bd02c9e1c61ec51f31736c478678ddbd4719b0d7d99d133cd0ee4ee8b223be0539139aae72eb74f00d296c585a03f8e5bdc5ac7d451c38e7474f1a68b777e346aeae8494715ed210e79e6cccd45923f9a3f69bea9d993e6ca9a3d6bf6a2d92b9b123a91bd6936a7d93c53ccc42f4a1e7f1de9354259e635fba4593c51c1e445b3af9a7de35abcfdab5ebb7af9d06b4c6f30b9195f060260c4ec5db31f9afdd4ec97ed7c9bfc68b6a8d99266711b158b1f869abfe9ed958d337ed76557f30824d47a809b5c99055a35cdd68962b6410184d9a6bd3e79c491102ead5c6a6bb6a5d93667ba02956c87c861ebab80e3a092beb14f838f7ed095225eedc056589b9db30c04aa928d6a36a66bd8b11c9b0fbd782a5cc07a92bc0b6b9b16309159c47d18e7065232704e9186c1070066e00d9cbc4428218a6e273ca797d1be52c597052fb92c5b241bd76c82b60b4e289b34fc92d41286d8afb47e8b0feaebb2afb7ba5e5573e87c29cda2a766340bdd51216fee8af6043f507f131de866a71bb8de96e6d00faea243d19129d9a7f0dd7513e133cf4ce61003cf215777053f1816882e81dc8b0ede757430037bc3a5089ee85274c52686ce9153c04e56856b746ff81ed7f4d28f3e4a2e341615dde2203e12dd89ee79c27797153b567cba2c1aa497fc2274171f91aaa0070c440ff6a2dc1355f32da1df4da1bdbb08dae0bad24b8d76e0fa619924e2c77129402e1fe5d62599c817123e1877192cf02eb2f6845ea6a65eefa6610f42b49c98f22d87ba48e972ac978c5ef29c3cb6fce2f69ca2dab177a35377a92279609013fc071b8d1684b6e15bfce2337bd800b701a89e7584fb2f88be88be8a02aa771b28ff6995409b092765636163ede7a1d3c237199784ef70ac08d759ac09dfe1d110aec60de1eac180cdcd96301d05a21dd1889904b47654736b5dbe1ac109c0b3f70d52d8e8c0cfd40ee0d1727e05f8a5cd84621fa8b8f7bb621f9f7e3689190238f049f7ae73000671a51f1ec183c5605819de7d0b87f126a12e78e6a47074475afb391d803d5ef5b2a48b067708c70ae4e34ce9527a36cae3dd7342a6420a3e39025b7a99d32452d5dea91c8bd7400cb00becdbbb5e72b635182e6b3da6f438d0d3d164cb9fbe0ef5dad6eb416f3503f24a2c6f882f6f3a4801366136288b076030335969772afcd715e989f489990c448622232d3545c622134ef64ff44570e64c073832178137c15796222b91b5c846644bd86427b2173938f10616c6003d2987dfed103c396a6e4b75277200c22d5fe5de940ce144932b05adef0023512c52be67d4363951db9c92011b07a1fbf3bb6beab831984784136821244f4645ce221791abc84d2447d693398aa07b3fe9f6a2bdb82ecf54bb739d2405adece221e61aaa4c06926777e969401f4016c8dfda96b6685be5ace05ddd2ff51a5100d5ed85ee9d3de3eac1bb962c0e99e871aa474493431307e44e4f7b9bce99d05e56fb631db4696081d6774e65c977c14b4de459a420f262c8bd8abc89bc8b7c8800bf2f916f83f347a4285212285f1ca85444aac2efd6451a2230a1b0b02d43b12dd2118988a0a1629020cfd2a7335ee47491e716b6fd96a589bad4c2ec8c0b154a4643a6c188cd120130c5f2bae86c69a891f8d4691b60767a493d1bf97d6f2a5f7d27f841bf8b8b244492222991b4484604f77e90ae0a1dc49aacf21c2775bc15f4d2f494cc0db4626c7461d12b5fb1dcee81d907373bdb6d81a2b7991f7a7937d8c6d436e044cc72a66d2322ea6ce6ad64c835f5f8647cd50247c41b4414e6746c5166460735e9767550956e4fba7de90ea43b94ee48ba63e94e046ad79d49772edd857497d25d49772ddd8d74b7d2858ae0b43d74918eb00b4d2a4bf728dd9374cfd20515ba48f74accba37e9c2b996a4cbc05cba4f411431f7353f1873f0146a7f52af5bbd6e74f9a1b99bcf8ba66dd53fe93e4bb70021250190108e9ec62fbd48f755ba6f242f8ecb8074fccc69031d24dd7788fe4cf867f72338f88923f853ba5f3c8147bea5fb23dda2744b5aaf48170f832dda050d54d70c1e18b4706d21c145cf35da2b9a0b2311f03bde21ddec61cc9a2d5ed81f9703eb98095a489ac7778f50288090580ecd057e70077f02bc6b5d9f71574de9229078d127a082b0f299109e92d2ed483722dda87463d2c56909e9e2604aba69e9664cb2d2536a57af2bbd9ef4fad21b486f28bd91f4c6d29b68f428bda9f466d29b4b6f21bda5f456c4afb796de46f33dbd35a83ae0b13e3776e1a351d54e26d7e0796f66c36bdcc99940f972b9301d6ae0f5b6d2db496fef0b377c9913e989f4e005f7d23b9ac2ad1ca92191e99d680009c93701eb9d6d7b919e194662f661f2496debdda497935e5e7a4fd27b965e417a2fd27b95de9bf4dea5f721bd4fe97d31e30585b8b618cd80ce39f0bc648ccd5ffcf3f0d9e624fa8b275d14d82b811f90a3da0dcdd57d5860d009a84aa891268b8c3ee117bfa5f7a37064a76f3dcdf4fc4d2d3c36a557945e497a65ed00958a4671db55e9d5a457975ec3b638a725bdb6f43ad28b482f2abd9849dc201c50ff7a09e9e1c153d24b937cf632d2cb4a5fe119a5dfd5fe97f47b464306ace7ddaa3e4672fe15821d52a793ed5c355762a4414ee7f07b35bc6f41a8f0d3957e5ffa03a2d81f4a7fc4220ea2023026e81f4c7f764cccba6fd2879215a53f254efd99f4e72633071b15ae0f033b35154c4a7f29fd95f4d7d2df481f57de497f2ffd83f48fd207fc2f0afb897eddc74f5c02c3f5cc8c179e1c41126e143fd73fd35ce0d6613196051e27697e25691e8c29e03b887ea876af413c17860aeecfc82f08e1569f7ea47f237efd9b3e8d28d0bf4dc314ae23fd9cf4f3d27f92feb3f4f18b2fd27f953e9efd5dfa1fd2ff14b63ef6f1755ca7683b25e997a55f917e55fa35e9d7358ac76c48bf29fd96f4dbd2c76523e02fd28f4a3fa64b345d9c9010b33ad56ef94dc9757e095c2f0f82870fb87dda7b094cab4b4ce357138124a98225fc58ca8ce7dc7b380edf2b9ae72b1af5883b0d3383f9fe0bb61ec0484b3f23fdac0c94146cd095418ff80dfa3218c860288391807d0d26329872f44372afd7bea5c45a040ffc05fc93687d1342ec003f33fa06de2b23fae197f63bdc224c86e651e73e3c5aa1f8832e8430d3ca239f9acbebf3de56ecfed2758bd9ed4d1db0e911373c93c15c060b192c65b03259cb6043f006b8ff5d207b191ca867c0d229dce048fcb01d9c647096c145065719dca87f831c43c0415e064f32789601fcfa970cc0a4aa341b8e6c273e188383d662cb9d2491f361cc81bd93e1f981c88112bb1c697aeecce69eef702a1e88dc00060d77063f3715f4ee1f1b3584080f2ae898e47749061f32f89401eee05b063ff46783a20c4a76040f5011f87938fc415d060d193465d092415b061d1944641095414c0671192464809fc3b3a575876f65649095a1926c8329f48ada83d34a1bf74bdaf3244c00ea139317505688036f1c350bd90aa41dc4e39187fd4ea0852d0b362a2c049e4bba86826ea9fae9860cbb32ecc9b02fc3810c87321cc9702cc3093dd9702ac3990ce7325cc87029c3950cd732dcc8706bb293e1dee420c3a30c4f323ccbf022c3ab0c6f32cc69f4c470629897e1930c9f755c966141862f7c9c5e5b4778f05766e421890627738f3f48e5d07701ded3de2b9fd33fe6db1ec063d2ab91055b21786083b09cc3370e39a9e0eedf65f821c34f197ec9f05b863f322ccab02443fc7c45865519d64cb05397219ebf29c3960cdb446ed8916144865119c66418976142864919a6649896614686594444e06532eacaa8a70550ca898cfaecfea38155852a54c780f5f139c1dac9e0730a73e7c083f2c1b48eaa3aaa9b583ec5e3e77266f5e048c77b41c4152effe990eea173a4643494d148466319e11ea66615b03f93d15c460b42355aca08dbb58c3632daca6827a3bd8c0e1420373acae824a3b3206c1f5d657493518ef88df2327a92d1b38c0a262f3242ec9b2a1f9e89dcf8835982097ee2cde45d4686198e033f0890037ef90575ce6dc106963d23a58c2582295eb093a34fb2cdefb28cbe64f42da31f1915655492118e54645495514d4675193564d494514b466d6ad8085f8cc8282aa318f11bc5e9e1460919256584464913b35146d0b9c6cac875dc95714fc67d190f643c94f148c663194f643c95f18c6bd326f754bef15cc60b192f658c26eb53c66bf38e6745e71d6f201c3931ae29e2e3c5c427c01621724ecf1e332ceffec8a226e3ad8c7746796e961bcbc9782fe3838c8f323ec9f82ce38b8cafb4f0e39b8cf1695ec6f8d167191764fc22e35719bfc9f85da01fe34f197fc9f85bc63f322e9a94848a15977145c65519e3e7ea326ec8b829e3968cdb32ee083a1622bc7154c68883f1f8383921e3a48c53ba9dc9382de38c6ea7bafdd4439411b0f7e829cb89176df0f55193cf0178b08a00cf2657c2dbc9382b139589c8a42b939e4cfa24be93814c863219c9644c373699c8642a131c9f53f3260b992c65b292c95a261b53c1b34cb632d9c9642f93834c8e3239c904072f32b9cae426939c4cf2327992c9b34c0a327991c9ab4cdeb45496c9bb4c3e64f24920614e275fb4ab061e91830fc18f623baee8f016a4a16b77fdf34046bcaa85096b7c8a369a7ccbe447264599946482dfaac804f75f93495d260d993465d292495b261d9944641295498cc84de2324950f326b8424a266999641821c04e12b01fca242b53654665da95694fa67d990e643a94e948a663994e643a95e94ca673992e64bad4af846e9f65ba92e95aa61b996e65ba93e95ea607991e7575d2d54d2f3bcde13a27bdec353f61056adab3dc938bf3988a9c58ae0457e44813995e647a254d9adea822d39c4cf3327d62420181ce14bf57e0dd4f5f64fa2ad33799becbf443a69f32fd92e9b74c7f645a946949a6659956645a95694da675993664da94694ba6b87247a611860dd3a84c63328dcb3421d3a44c5332c59533fa9c2584d3accc5466623c10e12dbb2adf050c0f0f01845041efdb5a018af5bbb5bc5bce3073bd935957663d99f5653690d9d06424b3b1cc26329bca6c663297d942664b99ad64b696d946665b99e1bb7b991d647694d9496667eae5ec22b3abcc6e32c37e5e664fc46cf62cb382cc5eeccc5799bdc9ec5d661f32fb94d917172c8fb464f62db31f991565569259596615995589e8f6551120ce6a0a2e3268906d5ddff5fa4601722c133ebbb184065e1ff7cdb9208c01660d993565864bb765d691594466519919c598c589df2c21b3a4cc52446e969659c6242b7365ea6ede95794fe67d990f643e94f98806643e96f944e6536ade7c465d9ccf65be90f952e62b99af65be91f956e638be97f941e64799e3ccb3cc2f41bcdc20a1985fb123f31bc063a6718e701546334b5eb31c5b02e537e7f42ca66d7fa6ccfedc98bde4b08396ccf3327f92f9b3cc0b327f91f9abccdf64fe2ef30f997fcafc4be6df32ff917951e6259997655e917955e63599d7658edb68ca1c1769cbbcc338bdbba46d9c47641e95794ce678ea84cc93324fc93c2d73dc6d56162a0b914557163d59f4653190c55016238d9e653196c544165332f0c50c7e511673592c64b1d44449162b4e9e5aad75b0d45e8bfe8fcf9b30f010592fd6a4fe8b8d807a2d76b2d8d3e82d0eb238cae264db33edc3c0ac04cc0578c4e2422609f706cbb0b8ca0217c9c9222f8b27593ccba2208b1759bccae28dcfbc7897c5872c3e65815ff996c58f2c8ab2c06d9565519145d5b6b8665d160d593465d192455b161d5944b49b839fd3e44eba3d4de257a224358b98035516716696cf19bd0cf40c20fb74f264a76d26274170c0745840f8e447901c7e346145bba42c9254be055a2a2d8b8c2cb2b2a433926557963d59f6653990e5509623598e6539a1615c4e995b41a0b69ccb7221cba52c57b25ccb7223cbad2c77b2dccbf220cba32c4f143c35cc0ffc2282fae5599617595e657993654e9679593ec9f2998c1421ecf24596afb27c93e5bb2c3ff8a3f056cb4fa635d0bf975fb2fc96e58fb64be503be5594a52de521cbb22c2bb2accab226cbba2c1bb26c928cc09fc1df2e5bb26ccb12bf1d916554963159c665992078388db605cf9094654a96695966649995953269beeacaaac72350d0555f5603590d6535321993a18182af26b29ada9199c9903fb19acb6a21aba5ac56b25acb6aa30970b6912d31806b6e4d76b2dacbeac0e8f0f24462e6b8998b6dc76f3e60a2bc59d86491133ecddbc41c165c107e3db1f4b33a12bfd5495667595d647595d54d56389e97d593ac9e4989570559bd98bccaea4d56efb2fa90d5a7acbe64f5cde061f5c3e0615594554956655955c8b1575576563e7b4d56759386ac9ab26ac9aa2dab8eac22b28ad244af70725c560959256595a2dae04ff8dd159a2e23abacac95458875976679dd6300ba36b629eb81c950d623598f653d91f594e00139e8df7a26ebb9ac173408d01534ee7a4981fec11593926c65bd6248072573f1c07a2deb8dac717c470f07eabcdecbfa20eba3ac4fb2c6352fb2beca1ac773f49178423acba2acf3b27e22d35b3fcbba20eb176675d7afcc24aedf40c060331948e49f6df4911ba174b302c27b9018739994b125a65d01e8e12317aabbf12ce0dc8c794794dc4da155eb77597fc8fa53d65fb2fe96358ee0964ab22e33e05b57646da9b235a44e35ea7f333ce75334a873eba6ac5b748debb6ac3bb28ed09bf089d06231da95759c900bae9f90355a2925ebb4ac33046c9db588c264a324baa0658889375d5a3eeef42cb9884ffbb219d03e2ddf1d7843d90c6939372322b719130cc6671d327e80079ddb4c08de662a9b996ce6142047a5c4470bb27fb8313833c236a16303729b255510dc72b392cd9aa466b3e10e042812ad370a70a515350881251cea664b8bb1d931b7b4d9cbe6a0d957d91c6573e24203f90247ffad5b7c35165f8af5c9a4094baf11cf4ab01f2633bd237c0d7ce1070bcf6e32d539c154d979c3da5e66aa9b846cceb2c1dd5e6573934d4e3679d93cc906ed5590cd8b6c5e4937366fb2c1837c987c52f9602d41df10f96dbe64f32d9b1fd914655322554144c1b4e7583665d9546453954d8dae07fe6f53a7f201b94d43364da20552b3691133e825f350c0af6d5b2559dd74081b422cb0904d84b1c026e2cc26da2b4a8fc59d1877a04608309926c0f3c409129f0d9fa664932633de6418e26cb20c71802e1cd85619272042d88a6cbb54c16d4fb67dd90e643b94ed48b6630ac1dbc87642b4c8487f881f91fb162816a21c68e4f0425bb19dcb7621dba56c6182bb5a6b687727dbb51e8f543b78f28e4ddfee04839dc3f1b5e1784bee8c3974ce8d040c87d13d9598927efae2cef94bd1dc5bdcd256b6b8fe5eb607d91e657b92ed59b617d95e657b936d4eb6792b262877b64f0cdec1f22140685b20f9dcbec8f69551e01647de65fb21db4fd97ec9168f869f4013959826dd96593f1ae28215d956b9056c7dfc624db675d936648b366c91c122ead8b6592cc4feb6c348711ba10a6ea3b28dc9d6b1cd2d1a3ac9f4d53625dbb4357a86e1369083f1dc66293b253cd0bc9dc8ae4bcf07e49884ad1145301af8458477d042a82cb410e0ed7a34a1bbbeec06d4addd90980145d84f02f649e3e90c260de9de4717bb110dce6e4c9f813b019050447993dd4476537068dded39129093e4d29c33c071caed87c1d16fc138e80f1b54f96228bedaf0c0573ffcf99963186437d3a71eab0ae54fd9cd65b790dd52762bd9ad65b791dd56763bd9ed657790dd517627b295dd597617d95dc91e7737d9e5d877e1d17779d93d51ff76cfb2c3f64576afb2c33dbfcbee4376b8fe97ecbe65872b14196bed4af47c5ea5b6864a9b4776652a2580dc55685d0198c36c57955d8d6945ec40f37675d9356467ef12925d8b847ed7965d4776f82c2a3b9c8723002069fcf08b6a8116dfa5482e76b85ddc4156f6ead3b24cee6df8187b917d9799857d4ff67de61af6038287688fbcab22fba1ec47763029fbb11d99984cf9e77e26fbb9ec17b25fca7e25fbb5ec37f4b8fb2d59c37e27fb3d675f42f36cecbeec0fb23f06f39b939c2e9bfab2a9b3269c0cfd651fb9b9ed1f3c21b1d7a76f5fc6dbc371e23ecfb2bfc8fe2afb9bec73b2cfcbfe49f6cfb22fc8fe45f6afb478fb37e3c625d9bfcbfe43f69f14b80c589dfd97ecbf19f5023f682198e7fe47f645961af6903205ae0e3495b4a526fb0afbc1be6a526374c1cbd64926f60d9ab4ee8ab107947bdf947d8b055ea8874b05902d4664df967d47f6ce6ceea3c40cd1cc3e267bb44882ed8e7684bf451313b622f92e7405c4698f464fc91e3865649f256cac92bcf35e0f4aa307e4180f950dc219510178c0005703ae202fd87740727f60700e49cc001b7e8e6338ba72e8c9a12f87811c86ec3487911cc67298c8612a87197dde8d6f0594c35c0e0b8f1c717a0b66afbf1978516ce5b094c3ca9f907eb5c515f27258cb20a31dfcd0460e5b39ece480330f7238cae12487b31c2e72b8cae126871c71422473c0b79e88dce1590e0513dcc02b6dd2e18d0f7e78a780bf1c70ce273bfae14b0edf72f89143510e25464487b21c7029ecd4e4509743430e4d39b468d2fcc59f68db105a1cdab4cc878e1c227288ca21268738439443420e4906a0077bc9bd1cd272c8307770c832150439aa1c458e5d41c73cf649a58e03db0ee53892e3588e13394ee53893e3dc6420c7851c97a45bc7956dd772dc181243aa14700278c4b562ea38267e40119839e5a369b523c7ad1cf1437b391ee478e445a0f71c7d036d7b96e35926af5cc7f1d4d66b8dd38b0b6d9bf5ebe6f5b811e9094ef5e0b4019b53c289a62f1c3908bb9a9ab218bb2aeb302fc78b1caf263739e6e488234f72c44f14d8cac71739be921b3b92056b0fda853f8f6f727c97e307610383c39f00f5f849fc400eb003b77dfc92e3b71c7fe4580ca444c88f65bb72418e153962a766398a15d59ae0b5a87cc73a53db5041128b3415118ee9d89063538e68d5b61c3b728cc81167c60c3c36347e3841fc8e4993941cd372cc103f629665350bf09c94809d84f777eacaa927a7be9c06b63f34c84dd015d0214e2382073060fd6824e7260eb611d19a8fa8971ebfa1b79c27c8444e5339e187e672c28f2e39c2e0b492d35a4e1b4148de2e72b0c9b56fc32694f3d8fcc4ad573fb3cbcd0ee1aa4433ce58489e383fc16d2f1139edcae8c8fa22a7bd9c0e723acae924a7b39c2e72ba922d9f6e72cac9292fa727393dcba920279cfcca1b3ebd51e14e0e3f9c605b12822ccd3b381db6a74f39a17d0cbfd30f69f6a9c82b9f4a722acba9c2d49283f05495534d4e75393578cd5393973db5d8274e6d327c32c43833a864f8593975684e4f114bd6a881778a123c26ee76dc3fc5e414a7ce9d12724a1a7868c1141b11da76022a193965e5ac1c1576eecab9478ccf7deb017122771e303f8440f53ca4c0959e47721ecb7922e7a99c67729ecb7921e7258f809b2c4f34ddc0f8bce23d9cb1b391f356ce3b6681c1c2cf7bf2baf341ce47399fe47c2e1f9eb8b8dc25afab0b33b6574b0072dc51c487772e48f0e3915c7a0c279cf5a2ac1e9c2f72becaf926e79c9cf3727e9233ae5f90f38b9c5fe5fc26e777397fc8f953ce5f72fe96f30fef99bd0d8f509473c9c02813b9739924e25ca10184e22eca72aecab926e7ba9c1b726ecab925e7b69cd108382d2ae7989ce3724ec83929e7949cd372468b65053786af5cc47febd2a5aec365c0f5208e84e982db020b817dbef4e4d297cbc0695e522e43469700005ba820b4e732228497b15c267299ca65c62dace5652e97855c96ec9897955cd672d9c8654bfb06cc2e3bb9ec6de72097a35c4e7239cbe5c2be7cb91a6cf8ee8db05d7272c9f3209063b52f4ebf7b79e2af5f9ee55260e5f3f22297578277796344757997cb875cb0f325976fb9fcc8a5c817a3e63a7ae8e875a1abb35ebf982dcb15f57462010ce8e69f38ca16fb38721deaa52297925ccac29daa5c6a72419335e482f66ac9a52d978e403b2f51b9c4e48216c0fda07d5276ff1376c1b932ae9d58288c186998661c0dea4165aad23c5ed272c9c8254b95bd2ac71d5cbb2ca75c7b72edcb7520d7a15c47721dcb7522d7a95c67729dcb7521d7a56d57725dcb7523d72d53c4f8513003fc2eb0bceec83fae7bb91ee47a749a876f9ee47a666a07bdfe7a61edf17a65edf17a936b4eae79b93ec9f559aeb89b17b9becaf54daeef72fd90eba75cbfe4fa6d7ffec815972ec9b52cd78a5cab72adc9b52ed7865c9b726df1f9b1753a776d9b3499c6057ed03980c76d9246f8daa17dbe46e862fb6f56cbb6817582df8ab2b8319a5985050f1f936b9c2f22ebb38cc971128906cbeb238e72946b4281f735a9572b720e22724dc9352dd78c5cb372538e24bd75e5d6935b5f6e03b90de5366287bb8de53691db546e331a8fdbdc64c100c619123428c2d95192595f30fedb526e2bb9ade5b691db566e3bb9edf980b783dc8e723bc90dd7bcd8ce556e37b9e5e49697db136bdab767b915e4f622b757dbbec9ed5d6e1f72fb94db97dcbe190e8c32344eb71faa205ce3ad283797db042fb895e586ab54e556935b9d98dd1a94154e6acaad65825be9c82d22b728d1823db9c508de2d2eb784dc92724bc92d2db78cdcb292fb3f4d7d4973f2c0b6e4be7f46e79ef03c44af34cf084920817736669ef10038e2fdf7ce2cf1ddfb222a2aca428252659df99c72071660bdc3fa80353698cd85137710a9902c48f4b7d675ee26ae05e747e4383fee2feb13d604d614d64cc811426b2e2d5776552c4d9a2cd45a2822632d61ad60ad3b79d3190c616dd0e1b3fc869de9f7b00e1dead9d611d617ac6f794aad1f65e459bfb0f8f8596e8e353fbac8c0e596b2fe6059a03a6a39b0f82b1e2cdf0c02792c69c058a1dea26524b46b6907d350dbbf2bb6b5e29747b062f1498b3f9ac2ca607561e5b07ab00a5825ac0a561fd600560dab81c53b47b0de60f11d6fffb53bc166dd9bc71f603dc27a82f56cc2a29cea8b7264f8521f6dad82f50abba39e28da80fd0efb43f8d963d89fe25df604f614f60cf61cf602f612f60af61af64680d95bd83bd87bf544cb3ec03e9af605fb1b36bff357981198d6d12ef937bf7221fb04fbac8b2dcf24f3a4f2625f60f3d72dd991b62d83c476a4b390f5d31aa13a6ebb720bd0949c3ec9b36a7bb039c90076089b9fc6b013fdb75fca643b859dc1eec2ce61f7943f69172a2df858c877631bef865d29b966c29bfbb0075252ec1a76037b28bdd71ec17e837d03fb16f69dac4f92202537f19bbc19f7fd9f7410929d7d0ffb01f6a38262f693541efb19f60bec57381d3880f30ee703ce18ce2768653a5381e7cc849c3387b3306d096705670d6703670b67271e2001f40d676fdac118df098d37031e5925d1728e70bee0f0a61f93b2c1877fe19ce09c4582c4d2b9c0616fc1b1e138705c8904c7136d393e9c403839219c084e0c278193c2c9e074e1e446f3e48c7b700a8dc97f9cd2f495ae53d03a7d3803d92ab437b67c931a4ea39eb06d17824d99fc91c023df682d48876f3e82f326bf2da5cedcb86e9d1bd3df0a15e74ebec1ad2bb636367e4202c6fee3010e67fe20e7a1f308e709ceb374010a72e705ceab614225dc8e44099b0b2d996da274a43ff75d7b911b6e7a6ffcf25bb81f70c7703fe14ee04e15d4a482e3cee0cee12ee02ee1aee0aee16ecc80f7efe0eee11e849f7b84fb05f71bee0fdc5fb8fcb933dc8bc073ffe05ae64b6cb88e20745d05b449fa14babb9d01cff5e0fa7003b821dc483a9ef2355cb831dc046e0a3783db157b7473b83db87c01be5b05b70f7700b7368306ee10ee08ee1bdc1bb8b770efe0f29107b88ffa366e0e4a5392b5b8349f7a9288e51e779f75c57dd1be715fe175e4dbf500ef5d76028d16ef437a1375a8f6a2ec997ba3dceee18d8d35f221ab94ab4f0d8b76a4f7299b920a973751d47bfe64be70aa9e636f262f8437973be273a4a8f7fc56de09aa24de02ded2f42b29299e71f4d0e6d11ca666c72cd4a873b229fedc13ab27f398bdc3dbc0db2a9ac6dedbc1e3dc0ef08ef0be8401459df70def07de6f27dcb1c13bc13b9bfe02ef0f9e05cf86e7c073e179f07c330ee085e2b75e042f8697c04be165f0f83a39bc56e679fc98ef5cc1ebc31b88e03c4ea28137843782f706ef06de2dbc3b78f762921e5f9eefc6577a86f7222cbd57e5d0fa80ff0eff03fe18fe27fc09fc29fc19fc39fc05fc25fc15fc35fc0dfc2dfc1dfc3dfc03fca3b9f805ff1bfe0ffc5ff827992b527a1f8cf7e02865d83fcb7be05fe4b0f7ff740faffb9669b61a75aef93d7ce7fa2707dc7cbe6bb605bfdc83efc30fe087f023f8b13215fc44e11b3f15481bfe7a06bf0b3f87df939063f30b71081aa67ea9840f399b4a71452a237e25862f816df42fa2e5f78d94e2970c44761457d43309a1b44d2e480dbf813f94b4f3f9a36ff06f3ac1ab19df0a399f6f772ff0fc07350d1e859fff2449e93f1ba9c9777fd197f8af085a3b2fa0faf68ee043d9895432c52d7f4428c1589eaae013c144428edc32984ad405330473040b044b042b04bcb241b045b043b0477040c067bf107c23f841f08be06460e39533820b823fe11458086c03dbfadfe0d7807abc1a2de2b13d9117cd762244fc0247b005ae691e02ff0a6710885b70db513d268727c3e79f4188204210234810a40832045d0d08619023e821281094082a83dc8fc00bfac24f7d4f6a4b3040508b1069a1afbbf29ecbb73e11724163b479a3301336aa9417938adc42c88190abaff8b10f860846ca2ea0421bbc21b841706b60bb91f00bee10dc23e06d8f089e103c9bfe058436eca80889844b33237cd7f5f0430f525f0d6e0d78e1f85ffb94900b27e272dcbce41b3400c2a98c01eacd14da347a081e055e38433847b8903e162e11ae10ae116e106e419e10ee111eccf523c22f03c946f811b9f0dbb41f014908c35f8427dd109e115e448ee19fb1d3c757e42817430ba12de92819598828434ec045c89ff6110608c32bc3670b23fd19c608138429c20c6117618eb027e4c242bb332c055e5889f8766f08fb0807086b848dd0e2400a277f74887084f04de6338db6f046867378ab541d2217de99fe5e8009393e680053e2ffb7619bff40257834f2c2479992e19341cb804714c3670d88071bc10b5f040f698b8085af883aa687586ef48ee803d158b7459f88a8efb4da6634453433b9a40785136701a239a205a2a5d688529afa9514e5adde938418ad24baa235a20da2ad721aa39d386db447744074148fa29c23cb8abe04c6e960489933f8d60ddcfbe4c9faf347cf92d75129680d15aa4e6477bfb7576ed93a4889d9f744e28d7a60f42b7da145515ea12f9123f1a0c08e4e57cca233a28b682efa337f5e1059886c21471aa5fe153986f80ab5c8951947ccc82d8916c98e100acb81c69187c84714c8888e42c1260f4863ccaff4aacd9331924f4611a2d8b4c43c9822ca1075851f5928713df37773443d4485382791238a5189a83298199a3b0f054f8b1c698e28467d831cbfbfd658b8f2628388778e5a3bef535e8ce84db1c4e95e423eba31e0dd22ba4374af4dfab5d64b92bd9c0f322aa8799e8c094f039fc44a4563e60986e841789071d1e4e0a74462fea04fa34783ee93444ef48ce845f8b5d709a164956d4c146840b2933eb2bb4a35c5169eaffe5242482a242d5ee19caa3fbbd296a357fd62ab24c71d35a2d56226681f041bc1133b2dd55a69c716437446b619bf6bb929f6b8fa82b38bf803f1584c32fe94e3836447e4e289fc26a43c9ad2f1545a0959252df178a60c3982c77da007e757f05aba2478f142944703265e225e49db8cd7868bbefc97cec2b687c1a9236e196f106fc542791bd12553e58ed1f7b7da66bc47cc2f3a22fe9246177feb8a069c1017e22419c33dcecd2e77f3ad8206a454621c734217c47f7a30b61441e695996daedba2e399af8fb876b1a3b5a328224f268be39ac6ae9635f644315c53dec345a75919f391403e55f6d41bd9ebcf7b699e31bf9feb15234eaed77503c7a914e698afc4e5ce359e9a0475daa9fc5da138d1f7f357c854f9eb710fb1a13932121a006c544c486aa2b3ccb454ebae052a05de853f5d89fe687d5f0ea2b9b88f78a0ed4fd8a84cd2123f8fe40e2572718db83156da468a3ec7f150ea7e3c92a21fbf21be417c6b7ab63bc4f742347e40cc576e07cf880d7991cdc6afca0622d7e5a749472233819879f28ec494358b4f2663249f5a1d6ae4048ff4a75c8ccc647adbfa931709673241324532433247b240b244b242b2fe5f6d23f26d43c9c95691655e2190a44b25fa6fb5a08490c249984562740452709e24abb8d0c22f9679406008a1225390a9d0ce2ad9093fee1edea3d04747c603716ab51502bfcdaf7505c95eca8b7ee88ce480e488e40bc937921f24bf484ea2bce42c93605b4ace112d8247b4920fe177456eaef15f8ce47225bee44f2e5952126163238a8985c43636d95cc8258e604b5cd9d78987c447c2a50865a82591004ef86d0992144986a46b5a8ea4679c739f4288f8b14f0a61b9f6855c529a8f2a35ee1872082a22765b5c9970060324b5a2e7ab27792e567d994449a384da9d251b99baf2ee624ae34dbaed91531922199941a33c80e44d1fb1d7b8d1f5cd41691da44b6e0e6d0b13e793a1f67ddd13c98da1f82f917872abbd72a5fb58a63a81919db7bdbac8933bb39fba86e26dddcfc6819eea88218b1b3f891babefc872a048a61c6dcd4a32e4845fc27579147224be1397e349829c2681d0e2767c36e0bd08394298bc5e8124db24667f1ed28ef82465183123b724c111b914822d7d47fa81742c2b2dfd946565ef904e904e91ce90f2868572c6d325d215d235d28dcc83742b4e4860d29da1bc4721c7b1fe7c1266e95e572829892e69917752c4a66c4736031eed4da2927ea9d1b095353a53c86d67cbb85146d78bf048bf0549fa73cdda58b8422bfd5546f077280fc84fa247d82f32555710ecf98beef70c8f15d1186edc82471e7b2577839f9008851c614b7657d2e795ff18ec2d33e747448bcf522a1f22316d8d1fd5d213d2b31428aa48e9451234e5808bcb35e2b45da49ea2f3a92f0df37c14ab64a32c4f03a3a78c0415c1235a698834421a5fe124e5a589204c536309d4f27b519924b5a5995825f14bbba611bf5cc8c9df645c8669cf2057202d65650be34a6e97b42fbbcd378681a8ed59d1289a83a433da15340aa99d926792f288a8b034ec5458f6e5584eb90f06ad6ff3a294e70d2757236de4e853c69849f73b7614cc4d878a01aedee4d79fae95f4978e94e1abf0f19bd062bf19c90bd566580bb9572137e3ebbd890467e19552555c135d33ae36dc6237ca354e6f45a3fc74cef9dd2981b56d938d84abaa1a0f0a086f39e97ba312a7d2b0f827af939a53ee56bee19380f9e3baf04b5e649ba6afc83a3a9d217b47f6816c8cec13d9c46822ef6a042f9b8a04b39938a7aeb4cc732ef0b2b9884f14f9673cfdbef117675756293e6958a5c73b176a1a2c91ad90ad916d906d91ed90ed911d901d917d095762a99bbf55bc91fd20fb952ccc4ecab15b3bc8cef28faf4364172583e9ca1f324b81c0cc46e6a83fada410652e5b4b7926eb599580a6ae8703e711992790562f2ab2fea991f9c802e56c1f7af2a367a18a68f61da5f72acdf22207631699f1485192ed9d5210b31859822c155a5926c0fe03615baad2e6ed105d7dea9be62981a7959d6de398e2938d3a1155a1e9977293095bd655ac9112f19bc0e4a671690a795cb352ce202e9ce36be0dd21ab90f5450d9931bd65c30da467526dc9eaabbb5958ce8c91505f15165221b9a890e3fc1bd906e4966d944762ec4f03d2d315b9213222f1868c6b7d2bccce77f20067fcf57b035e89ec419c33e3f23e217b46f682ec15dd8e4efe585be8be0bb3c550897787b1525e278f2677f2f39aca4cfc081e379938e7a14dfd7bd6c324bbee87288f24b8b93774138be6ba635336cf4f3fd19da03b55f6e7d624fc7667aa5d5e8ed09dab8a7033117edd8552b5bb4b855ab66fe8aef46d649ec44952d0134e44ae15a8aa33f20dfbfdf92f84e740ed7fd359772de4a4fb9c755185a9ff88926a7077235778778bee4e318dee5e836bcf3f8fe8f29e6f453cba3fe8fea27b42f7ac46feb9dc093f72519ab3e49f44913db55062e9ad643f902269c6b1b5161bed3932c956b1f44ceb5e4cfb4397ab6fa3ebc817ef724d5c743d747d7403f3d39c43882ed78753e5537ca90cdd2ebab901afa7320f0241c0ba05baa589bcdf0ab0f95140ee67fab35bc94a91034fed1fe5adffb4ca2a441ea0db37bc8e000cc427bbb5b2bb3f6ed06dd01d2af977f1a654df2ee7f7d6b921843782aacbafbe33edde5c7940f75135e9dd27511ed15a18d8badc282f4a512554adb2433ed9aa39c48f62356d2d9016aa3fa541d2006d1b755745d503c351b74297d0869ec0ebbe22ef28889103f93bf20fe463c5a4f24fe413e453e433e473737d817c29df4a684cbdf397c9345c5f612384f90af95abcf46b234594eae85fa6a816fb7c837c2b7b8e2ddf21df1b321a223f08bcfc68f08b91f377bfe5efcd7f845cfeab608bc5899dcca767e417e4bcdf426e237790bb6298a4b6dc13542dabcc7d31c91de71ca87140e69987c823e384cbd80c7879ac46088f26dd96f8e589721189dcf71bf21439e7dd459e23ef0945925a5e202f4dab90f791f3911a79837c68dac8fcc967f97bb7c8ef545093dfff2babe1f801f9a34e53c89f903f9b7330ee953ca814d083a2af2ae0e712bc207f45afa393847406438cdebb62ebbd0fddc031af50a9e98dd1fb346d821e3f9dfd6bbc32476f61064bf4561a13dade5a0447b2eb99ec502244fe49909c5c0382a7648ea306fab4406fab36eba8506d51a3b793c5d6dba37740ef88de177adfe8fd48e091f27abfe89dd03ba37741ef0f3d4b63f1801f71057dc47b1cf4f80d1e7abe84dfe655dc52c46709057241c9bc0f511b19260951d2ce48bed9bb406d7d6fdede80d70b5445bebf557a3239672f14e5916d2ab33d536a3019e66621cafb185173d13915bd08bd58454abd04bd14bdac73f32c087b5df472f47a82adc7d72ed1ab5449dbeba3371072848d987ddc5dab34dad6667eaabe7baf609e8c93465c91b28d7446d8f8679bb8f6b3525664af167e04eff35bba6baf1149f5860a228ac888dfe8df80087126b7e8dda1772f0ae83da0f788de137acfe8bda0f78aa2830228decdf843614f7e5a8c352e3e514ce437219d155314331473140b144b142b335e8bfe8a8d48b0d8a2e06d7b6d26f2f0e280e288e20bc5b7520b8a1f14bffac5e284e28ce282e2efdaf6772a3420f32b2c14b6ce5f281cc30b7baa6d57e2cc4af922a78582186c72e0b1d506bcc9505ae2d468fcbf6fe272852b1b80aa2675486a2e545bf69c9c67d20bc36bb176e12b0be19393085084282214b1829c545278bd4874900579e678204d95b2d344ee95c4406ecc3f8b547aecef569ba3bd483d96f295ea0ccd95366797068c379544a4e9a9aa22cb14e266324b48a024d613972643d145914b84143d14058a124585a28f62a0905651a36814b22886728217bcf286e206c52d8a3b61a995bd47f1a03fd9f3caa594ee533ca2781230a4ade21905d7fd1565475a620995fb1272b2d6d864093b95b2117ea762bce5bbc8abfc403946f9a9cd41b6fc7bab5823053c6504f7e8945f32413955911829a79c09b672ae62e8e3ed35d6582ee41a6c3dbaa125a76eb944b942b946b9616b65dea30c83726baa114ce6e13a47b9337983735305999bd4d2507012dd722f60ca834a5dd89747b58f07945f025579254b0df827b1a445b17f15117f0d942b5e7e2baf74f223d854ad9299cc94f48adfc71c25dfea57e50aca965828c94509d74be147385b5f012525df99444c522e4f28cf282f28f98b164a2e8183d295d9a7783297db43e9a30c508628398118658232152d9619caae68a2cc35ee1938c9df881c195dd993f4221b2c0b9425ca0a651fe540c85150910a899c7da790b2fb249f5cb2977fd5e7046a63063c8ab5925ecbc69c2f50691772cfd9bc618892d87025b9ecb7b298db129f92ed5ef5ecf35b940f0a782d8fda137f95fcc9e5a302d7e5134af62f285f0d78ceb312a10e306522e6f00d0eaaceb5578262a8c16aa5eaa10a3ad847693f2b54efe690bb4ce940c752e59dd5874a25d8542a91aae0e55869077067285ddcd6fe38bc2a85949be02b55fdd16ea9122425ad3aa6f67ea2f0b4f5a81ae85feb7f25997594f65a8dff1513fd995ddcc837547da29aa09aa29aa19aa35aa0322a49b552ec2276e495aef82e1b545b543b547b540754475167f585eadb5021bfe707d5af08b13a09bfea2c2a240111aaea82ea0f9585cad6e108649b9573d54e496d3f7be1a76c9277199de48d95ab072b4fecd739c8277c1acbc3405940995df9a8f82e5cd548193a53fbaab0a8bf513d34f1f3e626fbf9fe9a3b52c5a812e147147dbe458aaa5558f8f07faa7bda623b62791c0bb0534f8d88ea800753c74cede35828ff4ea7dded345e46eab78d0e3c207e1cb7d52e849617bf1b545d54b90ed7a9b82285f09b3eca90e7a611bb7e4455eaa749d6d3270daa0a159775204f3c212472330848b2fefd568908eb4815468b9ef8e78a77d6e29c55239ba91a2a06c2e6ff99bc8a177938632ed648c457bda1ba1151ba8990635fddea4f8e65e93f295da5ba53da076d475ea9eea591561c70924faa4fb79e95cb553d2b5798e0b529e16ca28f42b1adefb1116927542f42319b4af7696393ec933b253157af57fdebd3d411ccb7c686fb53bff955624ebf635258ef155a69439b243e82d746cd1484d920fc33e0f5a1d2729d5634b85a7b5cd6c92ffaefe87f28559b887e5606bc1bf9563e27e88fd1ff447fa28297fe14fd19fa73f4174a6aee2f55c2d45fa1bf46dfe4757f58e86fa5e3f2db4e23a148ade9d72854d37b1937c44f36e941bb6fed88cff47752eafa7b652a52c7537f77cdaaa60c57b583a9275a55128afd03fa47f4bfd0ff36fd8ff6ac3350f3de4d1adc87323cfabfa2bcfe4941287ed43f2bb52228340e2a859ca85e7289454c33990a94528ad93a5a9cfe45a5f74a323bab605845332b93653abce6d1786689c933c33ff4ff44dc7d4b7e9fbe8dbe83be8bbe87be8f7e807e883e9722168f9dee34435ae5fd44f600754b6a985c01556ccdd4f8139cc679a2e939863fcb55db3784de96356b4ebfd7343a9d8bf3a8bd4056796a09e5fdea76e16d5aeb5765070bb914fd0cfdae6a968e278127e46602af9feb38c3f757f47b2af02105cbaf73837e21f0d8f74b533cbd53195feb50106cb6b4645aacfd4aac2989d4fa7de963734232106cd2beb626bdda5488b5594094edfddab4468d7faa363537c1a9f01a6d707da50af4878a3eea201c5b0622078127ef36518c2365b0fdaeb552ec03473e552277bc93e24d8e42858b729aaca275e41e4d4a1227209d6226ce46f9249a7015e37463f439ab3783dc8d323f9594cce5ba35ed4ebdc7cd7daf3c1a0a3cdac7ebd0d87967638f4fb559a9587e993292ef57cd8783ad2141123af5a39fd65420c2f6490f7069dae45792edac94d640e2250bb65ecca93024c407cd980a489f7bea49fd3850cdd984b03d5f6be6759c61634e341ca97dfe0aa1fe8b3c784af67e97b3b5f5bdeeb83d5f31e8c84add7674082cf9d2e60583770c3ec40307630c3e31986030bda2389849a4733e9c5bcb5ef8275ffe3f4af660ae92d4c10283a509467ea9da61df95d8bb5c1439b2c7d7fa87e456567ffc63e256b7f2e3c417e319b8c83fc7bebb961d72b4e5113c5eb42fb9475bc58aaab2f368c22f85e63058c95f43ab9194ea9bc4bbc1da2453ed95db6173561b0cb618ecd48235067ba5ff0c0e181c31f8d2513d87b54e13187c8b8a283828b9c8edda42c6e99fd4d49f279342f78181396782a439b5dafabc9d1211277702afad1ce0761efc4a61a5dac331578a53248a2ae01b9be3b8be643f10aa71ff7a5a9a80eccb16942334906b4da75ecc657850035e72f627c1439082915ce6046f70c6e0a23324067fba2e204f922e82cdc2c0961813909fe28a0347fc90285292736edc46048ffb8c0b97132dae97677a1f830083d08077543e8742ca3f267c182ade4b14279b6b09446c09b94360bca95b397406915c39c9da14b8babaed6326e63f88c545d8c8510689397b85d3484597ed7c7488c008834c1c9b2ad2a02b1597ca914fc0720cb89e0506a56915067db5ec16830106b50cf3edbdfc8bdb579dcda6436a56627e920e2b5354b5900b374e14e3e44035a76aadb659986c8317532ef4704d21a1a81413b7ae3c972c85c44b363268e46bd6a14bae38c9c65495a9bae949fc84461b3549aafe2a59339a2475c8eebb9c08448892bf6b40da1d0d54dc927ce1370c6e4ce3cbdc61708fc18354c7c1230626cd7bf02c61362045beca8aa00efdf580ba733507d97476c59faca51aa8df517f5c3de0f518f5a7a24ed102f544e143724b8594df4c09ab393985eafbf205f5546eb96b5db92f371ecdcdf4470aadede810969aad950b6b89837aa1365fe810ca7a2972af57e2dbdc61ca667b572a65bd46bd518a064d08b23baa1bade4abb74a82753c93b2dc95515fef747a42bdbf1edc31bfc8cfd5d69453967d99d2d4b6468e7052ccd74639983cfc034f993cde35a5ce3fe94a9bf643f6ea990a55a2a844ca47537df9a42399a8d750d7d7391e4b9179694e13a0de48639faa3f75571a063a81ec4d1a30098b80b5f8d59ce89750e48094577fa3fe41fd8bfa84fa8c9a57fe505ba86d1970b583da35cd9330136c4b4152fb5a7aee242e716b5cd240d4216f967c7b6dac919fb251ec2d8d2346f90091a2bbf2a98e84ae007b513c72f9fcdf30322fea389c833ce9df1d6d476256073afde977a7527f36aad9649b52616a99d575a8bdc5d95275aa23d1711da34e509bd0551048ac52105268d59989602c94fe5c7ccb22acbb7214d739ea1eea0275a9b08cce0abc3787063e1ad896828d02abae1473a53948fc0eadc292af1516512a6325bd961ab08a9a1ea57dd14669dded31e426e06da43fcdb591e0a9fbe25afcdee39b928869537f996abc2f5398749848e4ea5c0013dda034ce2e4625217d0caead3d80877cafaec55d374fa81bd443d348496fa86f50df6a45ea3b736e149fba976bbbfb8cfa410434eeca26a91f6556b6560ab93a55626a16b6abe60c8d83c694ec52ec27268848ea6c6355343775f2cb400c834f2d1fa59ee8e2467d6a1c4ccbb30e5cac9fd4cf2e0a5efe92b09eb565b953f9167c85962b50d0d42ff21ed4af683a6880e65d4c38bd9572c49910bf8129ba6f3e8c136e2eab633bd281c69b50079838b73a104967958572727d9b5eb37a164b68c6683ed14cd04cb99bdb7358466866c2695b2a14b2f9318edaa3a0a299c25fe29f324837bac83ba9d171a2541fa8ce3473494aaaf22773c018a1e2981c79d631d524675da7124cf227fdd102e9f674b012192909977ddaa059c83eb12ed2c8e5e23b6b09bc997e825ba45cc80c2772e472e466e46c84ad59a259a159ab6e4fca5147a77713c2432de740f5a13a1a82d75292e82f35a1f94c2a28595cb3117893a1782c59eeda1c6f4a2d7abe1384bbadd64b7c2533319699c862e3a2d9a2d9a1d9a339a0e13a7c294043e5be056f31965b4bcead7bb9dac7954ed969bee51a1cf7f48587a5b6053f6d7e24980f8fda919411fb3b34bf684eaaacd8f257ce682ef2618d07e654ba40c87103ed2c7997b817c9699a3fb19ff2d78047738466a9652b27b3b1a4da923ba7be295130ed3a86745fea548d8dc69142df182f6de5a8e7566a5c9591b50ea1c643e32b80425b9bf63e19299123ab219fd1be5e68d7f742f5322e47267cbfd2f22d0d97f88e8c273030277b5c14361a470a4434019a108d3922a3897556f799734e7414a22ccbdca885f36b2598fe81416a24dfbd21d93b1dc347526e32c5bfa8e37102d2f45e64b450bb236fd0d125cfc28f2ca1e92ac1a0c9d1f4d014684a34153a5ce8beb2f69a019a1a4da36d47ceb1fe3367783dea60af0fd2c750fb691fab1a94ca6a33d2410ecb3bf98af74636179cff1b9a1b39819b5b348490b83ea079d419a73b12ee139a6785b5f9c89144fc626a9d639d3f447b97a682d7b2cdf4724d8e4eff04a1fd662cca1bf95b89192d15c246664d7bd34d55bad0bc8a530f3bfaaf0eb9a37ef82ecd70f881e1588ef6de1ec34f213a9cc8d0266f594cc488248a02450a5bc99419e1c45d49ad870acee64d18eb7c0ccbf8bddaeca6b7eb51c0b6ad439cb99787530c6718ce31e4f72f315c61b8c67083e1d698981be984dcefdf6f18ee30e44c0e181e855f9189e1b3d1a8281c71e9e1977a320332f6c9a3c03b18de501a372307d40b86fcc51f0c7f313c6178c6f082e19faa0bfc11bc1e8696ceaf2172e41f4a5c08b515169c9e7db577b999960fd7a3388f15868e0ec5216ff8cf912b18ebacae219b87a18f61a06380dbbaf561886124d561b7beba18d9765f18c66ddaaa016f986098aaaed5bb5121e8d038872a4eb76b7a03d83037ad1d73d28582521a9418724e7d0c071a53020f6b6950c3463ef5e110c39109d00fb51f298dd838a051d17aaba9a9ea14843b29aeb49fd84834a72fc58f86fca11b91daf016c33b0cef317cc0f011c3270c9f317cc1f015a38efe21c8e81da30f8cc6187d6234c168aa93f5463379f22a18ede61ea3b9941d49a68501cf18856c3aefee510c9ceb4eb41497bee88ac078562c6db4c06889d10aa335461b8cb618ed30da6374c0e8881199e71b46dff2bcc8837883d10f46bf3a8452c74bd8189d303a63c4f9fc616461c42b8eced71eb91879bab2aef5bf1746be0a0747818a3447a18eda1d45aa701fc51825fac2df910e1af8e623a90e0130f594fff77ffedffff9ff7dab242e - - - - - pbnCancel - clicked() - PluginGuiBase - pbnCancel_clicked() - - - pbnSelectFileName - clicked() - PluginGuiBase - pbnSelectFileName_clicked() - - - leOutputFileName - textChanged(const QString&) - PluginGuiBase - leOutputFileName_textChanged(const QString&) - - - pbnOK - clicked() - PluginGuiBase - pbnOK_clicked() - - - - pluginguibase.ui.h - - - pbnCancel_clicked() - pbnSelectFileName_clicked() - leOutputFileName_textChanged( const QString & ) - pbnOK_clicked() - - - diff --git a/plugins/fishing_spots/pluginguibase.ui.h b/plugins/fishing_spots/pluginguibase.ui.h deleted file mode 100644 index 623d330dd376..000000000000 --- a/plugins/fishing_spots/pluginguibase.ui.h +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - - - - -void PluginGuiBase::pbnCancel_clicked() -{ - -} - - -void PluginGuiBase::pbnSelectFileName_clicked() -{ - -} - - -void PluginGuiBase::leOutputFileName_textChanged( const QString & ) -{ - -} - - -void PluginGuiBase::pbnOK_clicked() -{ - -} diff --git a/plugins/fishing_spots/sample_data/test_page.html b/plugins/fishing_spots/sample_data/test_page.html deleted file mode 100644 index c3557f26ec05..000000000000 --- a/plugins/fishing_spots/sample_data/test_page.html +++ /dev/null @@ -1,1152 +0,0 @@ - - - - - S C M O - Lat/Lon Coordinates - - - - - - - - - - -
    - - - - - - - - - -
    S C M OClick Here To Visit Our Sponsor
    - Advertise - Your Product at SCMO
    The Offshore Angler's Online Home ©
    - - - - - - - - - - - - - -
    - - - - - - - - -
    - -
    - - - - -
    Hot Spot Table
    -
    -

     

    -

    Ever been listening to the radio and hear of a spot you don't - know? Have you read the Fishing News and wondered, "where - the heck is that"? The answer is right here!!

    -

    If you don't find the spot you're looking for, email - us and we'll add it!

    -

     

    -

    Points And Ports

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Name -

    -

    North Latitude -

    -

    West Longitude -

    -

    Oxnard -

    -

    34° 09.30' -

    -

    119° 13.67' -

    -

    Pt. Dume -

    -

    33° 59.59' -

    -

    118° 48.25' -

    -

    Marina Del Rey -

    -

    33° 57.87' -

    -

    118° 27.71' -

    -

    King Harbor -

    -

    33° 50.30' -

    -

    118° 23.80' -

    -

    Pt. Vicente -

    -

    33° 44.20' -

    -

    118° 25.00' -

    -

    Los Angeles Harbor -

    -

    33° 42.50' -

    -

    118° 15.10' -

    -

    Long Beach Harbor -

    -

    33° 43.40' -

    -

    118° 11.20' -

    -

    Alamitos Bay -

    -

    33° 43.00' -

    -

    118° 07.00' -

    -

    Newport Beach -

    -

    33° 35.10' -

    -

    117° 52.60' -

    -

    Dana Point -

    -

    33° 27.30' -

    -

    117° 43.24' -

    -

    San Onofre -

    -

    33° 21.60' -

    -

    117° 33.60' -

    -

    Oceanside -

    -

    33° 12.10' -

    -

    117° 24.43' -

    -

    Mission Bay -

    -

    32° 45.54' -

    -

    117° 15.38' -

    -

    Pt. Loma -

    -

    32° 37.30' -

    -

    117° 14.70' -

    -

    Marina Coral -

    -

    31° 56.36' -

    -

    116° 40.00' -

    -

    Pt. Colnett -

    -

    31° 04.74' -

    -

    116° 19.55' -

    -

     

    -

    Islands

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Name -

    -

    North Latitude -

    -

    West Longitude -

    -

    Anacapa - West End -

    -

    34° 01.00' -

    -

    119° 27.00' -

    -

    Isla Todos Santos -

    -

    31° 50.00' -

    -

    116° 49.00' -

    -

    Coronado del Norte -

    -

    32° 27.00' -

    -

    117° 18.00' -

    -

    Coronado del Sur -

    -

    32° 25.22' -

    -

    117° 14.89' -

    -

    San Clemente - Northwest Harbor -

    -

    33° 01.00' -

    -

    118° 35.50' -

    -

    San Clemente - Dome -

    -

    32° 53.00' -

    -

    118° 27.00' -

    -

    San Clemente - Pyramid Head -

    -

    32° 48.92' -

    -

    118° 21.25' -

    -

    San Nicolas - East End -

    -

    33° 14.40' -

    -

    119° 12.40' -

    -

    Santa Barbara -

    -

    33° 29.20' -

    -

    119° 00.75' -

    -

    Santa Catalina - Avalon -

    -

    33° 20.83' -

    -

    118° 19.42' -

    -

    Santa Catalina - Cat Harbor -

    -

    33° 25.23' -

    -

    118° 30.21' -

    -

    Santa Catalina - Church Rock -

    -

    33° 17.80' -

    -

    118° 18.60' -

    -

    Santa Catalina - East End -

    -

    33° 17.94' -

    -

    118° 19.07' -

    -

    Santa Catalina - Isthmus Cove -

    -

    33° 26.80' -

    -

    118° 29.30' -

    -

    Santa Catalina - Slide -

    -

    33° 178.80' -

    -

    118° 17.90' -

    -

    Santa Catalina - West End -

    -

    33° 28.96' -

    -

    118° 36.62' -

    -

    Santa Cruz - Smuggler's Cove -

    -

    34° 01.34' -

    -

    119° 32.24' -

    -

     

    -

    Favorite Spots

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Name -

    -

    North Latitude -

    -

    West Longitude -

    -

    Airplane Bank -

    -

    31° 52.00' -

    -

    118° 08.00' -

    -

    Avalon Bank -

    -

    33° 24.50' -

    -

    118° 13.30' -

    -

    Boomerang Bank -

    -

    31° 59.00' -

    -

    119° 01.00' -

    -

    Boot Bank -

    -

    33° 40.00' -

    -

    118° 43.50' -

    -

    Butterfly Bank -

    -

    32° 22.00' -

    -

    118° 15.00' -

    -

    Cortes Bank -

    -

    32° 28.68' -

    -

    119° 12.90' -

    -

    Dumping Ground -

    -

    31° 42.00' -

    -

    118° 28.00' -

    -

    Farnsworth Bank -

    -

    33° 20.40' -

    -

    118° 31.15' -

    -

    Finger Bank - Lower -

    -

    31° 40.00' -

    -

    116° 52.00' -

    -

    Finger Bank - Upper -

    -

    32° 04.00' -

    -

    117° 03.00' -

    -

    Footprint Bank -

    -

    33° 57.80' -

    -

    119° 29.20' -

    -

    Harrison's Reef -

    -

    34° 02.00' -

    -

    118° 56.50' -

    -

    Hidden Reef -

    -

    33° 43.60' -

    -

    119° 09.69' -

    -

    Inner Bank -

    -

    31° 40.00' -

    -

    117° 15.00' -

    -

    Mackeral Bank -

    -

    33° 02.40' -

    -

    118° 23.20' -

    -

    Mid-Channel Platforms -

    -

    33° 34.95' -

    -

    118° 07.75' -

    -

    Mushroom Bank -

    -

    32° 04.94' -

    -

    118° 29.61' -

    -

    Osborn Bank -

    -

    33° 21.60' -

    -

    119° 02.40' -

    -

    Potato Bank -

    -

    33° 15.00' -

    -

    119° 49.60' -

    -

    Santa Monica Basin Buoy -

    -

    33° 45.00' -

    -

    119° 04.80' -

    -

    Tanner Bank -

    -

    32° 42.35' -

    -

    119° 08.01' -

    -

    Worm Bank -

    -

    31° 24.00' -

    -

    116° 52.00' -

    -

    9 Mile Bank (North End) -

    -

    32° 39.00' -

    -

    117° 26.70' -

    -

    9 Mile Bank (South End) -

    -

    32° 32.50' -

    -

    117° 20.80' -

    -

    14 Mile Bank -

    -

    33° 23.92' -

    -

    118° 00.20' -

    -

    17 Fathom Spot -

    -

    33° 43.70' -

    -

    119° 09.60' -

    -

    43 Fathom Spot -

    -

    32° 39.30' -

    -

    117° 58.30' -

    -

    48 Fathom Spot -

    -

    33° 56.00' -

    -

    119° 51.00' -

    -

    60 Mile Bank -

    -

    32° .03.67' -

    -

    118° 13.14' -

    -

    1010 Trench (North End) -

    -

    31° 42.00' -

    -

    117° 38.00' -

    -

    125 Fathom Spot -

    -

    33° 29.00' -

    -

    118° 42.60' -

    -

    152 Fathom Spot -

    -

    33° 15.70' -

    -

    118° 11.06' -

    -

    153 Fathom Spot -

    -

    33° 55.20' -

    -

    119° 28.80' -

    -

    172 Fathom Spot -

    -

    33° 30.30' -

    -

    118° 50.30' -

    -

    175 Fathom Spot -

    -

    33° 36.70' -

    -

    118° 57.00' -

    -

    181 Fathom Spot -

    -

    32° 54.40' -

    -

    117° 53.00' -

    -

    182 Fathom Spot -

    -

    32° 41.25' -

    -

    117° 42.30' -

    -

    209 Fathom Spot -

    -

    33° 05.62' -

    -

    117° 52.28' -

    -

    213 Fathom Spot -

    -

    31° 51.00' -

    -

    117° 51.00' -

    -

    220 Fathom Spot (Twin 220's) -

    -

    31° 37.00' -

    -

    117° 35.00' -

    -

    267 Fathom Spot -

    -

    32° 30.40' -

    -

    118° 40.90' -

    -

    270 Fathom Spot -

    -

    33° 40.70' -

    -

    118° 34.50' -

    -

    277 Fathom Spot -

    -

    33° 11.90' -

    -

    118° 04.72' -

    -

    279 Fathom Spot (Old 267) -

    -

    33° 17.50' -

    -

    117° 49.00' -

    -

    286 Fathom Spot -

    -

    33° 34.50' -

    -

    118° 36.00' -

    -

    289 Fathom Spot -

    -

    32° 56.25' -

    -

    118° 05.75' -

    -

    295 Fathom Spot -

    -

    31° 39.00' -

    -

    117° 25.00' -

    -

    302 Fathom Spot -

    -

    32° 26.40' -

    -

    117° 35.00' -

    -

    311 Fathom Spot -

    -

    33° 37.00' -

    -

    120° 16.00' -

    -

    371 Fathom Spot -

    -

    32° 17.00' -

    -

    117° 32.00' -

    -

    390 Fathom Spot -

    -

    32° 05.00' -

    -

    117° 50.00' -

    -

    425 Fathom Spot -

    -

    32° 16.00' -

    -

    117° 26.00' -

    -

    499 Fathom Spot -

    -

    33° 16.50' -

    -

    118° 44.30' -

    -

    711 Fathom Spot -

    -

    33° 08.00' -

    -

    119° 03.00' -

    -

    -

    Note: Any mariner worth his (or her) - salt knows to use more than one navigational aid. Be sure - the other one you choose is Coast Guard approved.

    - - -
    -
    -
    - - - diff --git a/plugins/fishing_spots/shapefile.h b/plugins/fishing_spots/shapefile.h deleted file mode 100644 index 677aeb78748a..000000000000 --- a/plugins/fishing_spots/shapefile.h +++ /dev/null @@ -1,361 +0,0 @@ -#ifndef _SHAPEFILE_H_INCLUDED -#define _SHAPEFILE_H_INCLUDED - -/****************************************************************************** - * $Id$ - * - * Project: Shapelib - * Purpose: Primary include file for Shapelib. - * Author: Frank Warmerdam, warmerda@home.com - * - ****************************************************************************** - * Copyright (c) 1999, Frank Warmerdam - * - * This software is available under the following "MIT Style" license, - * or at the option of the licensee under the LGPL (see LICENSE.LGPL). This - * option is discussed in more detail in shapelib.html. - * - * -- - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - * - * $Log$ - * Revision 1.1 2004/04/24 00:59:39 timlinux - * Added shapefile builder libs and start of generic shapefilemaker class that Ill eventually move into qgis core. Modified makefile to build this stuff. - * - * Revision 1.1 2004/04/05 15:39:45 timlinux - * Initial commit of new plugin to build graticules - not working yet! And thus not added to higher level makefiles yet. - * - * Revision 1.1 2004/03/31 11:54:03 jobi - * ** fixed small bug - * ** renamed plugins/grid_maker/shapefil.h to shapefile.h - * - * Revision 1.1 2004/03/22 23:38:26 timlinux - * This is a c++ first draft of a port of a perl script by Schuyler to import Garmin gps dump files as a shapefile. The resulting imported file will be displayed in the map view. At the moment it only generates a point layer of the waypoints but a future version will generate polylines and perhaps polygons too using similar logic to that used by Shuylers perl stuff. Note this plugin is still under construction and I am commiting it mainly so that other developers can assist me when I get stuck. Also note that the plugins Makefile builds a standalone app based on the plugin gui that can be run separately from qgis. - * - * Revision 1.15 2000/02/16 16:03:51 warmerda - * added null shape support - * - * Revision 1.14 1999/11/05 14:12:05 warmerda - * updated license terms - * - * Revision 1.13 1999/06/02 18:24:21 warmerda - * added trimming code - * - * Revision 1.12 1999/06/02 17:56:12 warmerda - * added quad'' subnode support for trees - * - * Revision 1.11 1999/05/18 19:11:11 warmerda - * Added example searching capability - * - * Revision 1.10 1999/05/18 17:49:38 warmerda - * added initial quadtree support - * - * Revision 1.9 1999/05/11 03:19:28 warmerda - * added new Tuple api, and improved extension handling - add from candrsn - * - * Revision 1.8 1999/03/23 17:22:27 warmerda - * Added extern "C" protection for C++ users of shapefil.h. - * - * Revision 1.7 1998/12/31 15:31:07 warmerda - * Added the TRIM_DBF_WHITESPACE and DISABLE_MULTIPATCH_MEASURE options. - * - * Revision 1.6 1998/12/03 15:48:15 warmerda - * Added SHPCalculateExtents(). - * - * Revision 1.5 1998/11/09 20:57:16 warmerda - * Altered SHPGetInfo() call. - * - * Revision 1.4 1998/11/09 20:19:33 warmerda - * Added 3D support, and use of SHPObject. - * - * Revision 1.3 1995/08/23 02:24:05 warmerda - * Added support for reading bounds. - * - * Revision 1.2 1995/08/04 03:17:39 warmerda - * Added header. - * - */ - -#include - -#ifdef USE_DBMALLOC -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************/ -/* Configuration options. */ -/************************************************************************/ - -/* -------------------------------------------------------------------- */ -/* Should the DBFReadStringAttribute() strip leading and */ -/* trailing white space? */ -/* -------------------------------------------------------------------- */ -#define TRIM_DBF_WHITESPACE - -/* -------------------------------------------------------------------- */ -/* Should we write measure values to the Multipatch object? */ -/* Reportedly ArcView crashes if we do write it, so for now it */ -/* is disabled. */ -/* -------------------------------------------------------------------- */ -#define DISABLE_MULTIPATCH_MEASURE - -/************************************************************************/ -/* SHP Support. */ -/************************************************************************/ -typedef struct -{ - FILE *fpSHP; - FILE *fpSHX; - - int nShapeType; /* SHPT_* */ - - int nFileSize; /* SHP file */ - - int nRecords; - int nMaxRecords; - int *panRecOffset; - int *panRecSize; - - double adBoundsMin[4]; - double adBoundsMax[4]; - - int bUpdated; -} SHPInfo; - -typedef SHPInfo * SHPHandle; - -/* -------------------------------------------------------------------- */ -/* Shape types (nSHPType) */ -/* -------------------------------------------------------------------- */ -#define SHPT_NULL 0 -#define SHPT_POINT 1 -#define SHPT_ARC 3 -#define SHPT_POLYGON 5 -#define SHPT_MULTIPOINT 8 -#define SHPT_POINTZ 11 -#define SHPT_ARCZ 13 -#define SHPT_POLYGONZ 15 -#define SHPT_MULTIPOINTZ 18 -#define SHPT_POINTM 21 -#define SHPT_ARCM 23 -#define SHPT_POLYGONM 25 -#define SHPT_MULTIPOINTM 28 -#define SHPT_MULTIPATCH 31 - - -/* -------------------------------------------------------------------- */ -/* Part types - everything but SHPT_MULTIPATCH just uses */ -/* SHPP_RING. */ -/* -------------------------------------------------------------------- */ - -#define SHPP_TRISTRIP 0 -#define SHPP_TRIFAN 1 -#define SHPP_OUTERRING 2 -#define SHPP_INNERRING 3 -#define SHPP_FIRSTRING 4 -#define SHPP_RING 5 - -/* -------------------------------------------------------------------- */ -/* SHPObject - represents on shape (without attributes) read */ -/* from the .shp file. */ -/* -------------------------------------------------------------------- */ -typedef struct -{ - int nSHPType; - - int nShapeId; /* -1 is unknown/unassigned */ - - int nParts; - int *panPartStart; - int *panPartType; - - int nVertices; - double *padfX; - double *padfY; - double *padfZ; - double *padfM; - - double dfXMin; - double dfYMin; - double dfZMin; - double dfMMin; - - double dfXMax; - double dfYMax; - double dfZMax; - double dfMMax; -} SHPObject; - -/* -------------------------------------------------------------------- */ -/* SHP API Prototypes */ -/* -------------------------------------------------------------------- */ -SHPHandle SHPOpen( const char * pszShapeFile, const char * pszAccess ); -SHPHandle SHPCreate( const char * pszShapeFile, int nShapeType ); -void SHPGetInfo( SHPHandle hSHP, int * pnEntities, int * pnShapeType, - double * padfMinBound, double * padfMaxBound ); - -SHPObject *SHPReadObject( SHPHandle hSHP, int iShape ); -int SHPWriteObject( SHPHandle hSHP, int iShape, SHPObject * psObject ); - -void SHPDestroyObject( SHPObject * psObject ); -void SHPComputeExtents( SHPObject * psObject ); -SHPObject *SHPCreateObject( int nSHPType, int nShapeId, - int nParts, int * panPartStart, int * panPartType, - int nVertices, double * padfX, double * padfY, - double * padfZ, double * padfM ); -SHPObject *SHPCreateSimpleObject( int nSHPType, int nVertices, - double * padfX, double * padfY, double * padfZ ); - -void SHPClose( SHPHandle hSHP ); - -const char *SHPTypeName( int nSHPType ); -const char *SHPPartTypeName( int nPartType ); - -/* -------------------------------------------------------------------- */ -/* Shape quadtree indexing API. */ -/* -------------------------------------------------------------------- */ - -/* this can be two or four for binary or quad tree */ -#define MAX_SUBNODE 4 - -typedef struct shape_tree_node -{ - /* region covered by this node */ - double adfBoundsMin[4]; - double adfBoundsMax[4]; - - /* list of shapes stored at this node. The papsShapeObj pointers - or the whole list can be NULL */ - int nShapeCount; - int *panShapeIds; - SHPObject **papsShapeObj; - - int nSubNodes; - struct shape_tree_node *apsSubNode[MAX_SUBNODE]; - -} SHPTreeNode; - -typedef struct -{ - SHPHandle hSHP; - - int nMaxDepth; - int nDimension; - - SHPTreeNode *psRoot; -} SHPTree; - -SHPTree *SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth, - double *padfBoundsMin, double *padfBoundsMax ); -void SHPDestroyTree( SHPTree * hTree ); - -int SHPWriteTree( SHPTree *hTree, const char * pszFilename ); -SHPTree SHPReadTree( const char * pszFilename ); - -int SHPTreeAddObject( SHPTree * hTree, SHPObject * psObject ); -int SHPTreeAddShapeId( SHPTree * hTree, SHPObject * psObject ); -int SHPTreeRemoveShapeId( SHPTree * hTree, int nShapeId ); - -void SHPTreeTrimExtraNodes( SHPTree * hTree ); - -int *SHPTreeFindLikelyShapes( SHPTree * hTree, - double * padfBoundsMin, - double * padfBoundsMax, - int * ); -int SHPCheckBoundsOverlap( double *, double *, double *, double *, int ); - -/************************************************************************/ -/* DBF Support. */ -/************************************************************************/ -typedef struct -{ - FILE *fp; - - int nRecords; - - int nRecordLength; - int nHeaderLength; - int nFields; - int *panFieldOffset; - int *panFieldSize; - int *panFieldDecimals; - char *pachFieldType; - - char *pszHeader; - - int nCurrentRecord; - int bCurrentRecordModified; - char *pszCurrentRecord; - - int bNoHeader; - int bUpdated; -} DBFInfo; - -typedef DBFInfo * DBFHandle; - -typedef enum { - FTString, - FTInteger, - FTDouble, - FTInvalid -} DBFFieldType; - -#define XBASE_FLDHDR_SZ 32 - -DBFHandle DBFOpen( const char * pszDBFFile, const char * pszAccess ); -DBFHandle DBFCreate( const char * pszDBFFile ); - -int DBFGetFieldCount( DBFHandle psDBF ); -int DBFGetRecordCount( DBFHandle psDBF ); -int DBFAddField( DBFHandle hDBF, const char * pszFieldName, - DBFFieldType eType, int nWidth, int nDecimals ); - -DBFFieldType DBFGetFieldInfo( DBFHandle psDBF, int iField, - char * pszFieldName, - int * pnWidth, int * pnDecimals ); - -int DBFReadIntegerAttribute( DBFHandle hDBF, int iShape, int iField ); -double DBFReadDoubleAttribute( DBFHandle hDBF, int iShape, int iField ); -const char *DBFReadStringAttribute( DBFHandle hDBF, int iShape, int iField ); - -int DBFWriteIntegerAttribute( DBFHandle hDBF, int iShape, int iField, - int nFieldValue ); -int DBFWriteDoubleAttribute( DBFHandle hDBF, int iShape, int iField, - double dFieldValue ); -int DBFWriteStringAttribute( DBFHandle hDBF, int iShape, int iField, - const char * pszFieldValue ); - -const char *DBFReadTuple(DBFHandle psDBF, int hEntity ); -int DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple ); - -DBFHandle DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ); - -void DBFClose( DBFHandle hDBF ); - -#ifdef __cplusplus -} -#endif - -#endif /* ndef _SHAPEFILE_H_INCLUDED */ diff --git a/plugins/fishing_spots/shapefilemaker.cpp b/plugins/fishing_spots/shapefilemaker.cpp deleted file mode 100644 index e698b8f82272..000000000000 --- a/plugins/fishing_spots/shapefilemaker.cpp +++ /dev/null @@ -1,219 +0,0 @@ -#include "shapefilemaker.h" -#include -#include -#include -#include -#include -ShapefileMaker::ShapefileMaker(QString theOutputFileName) -{ - std::cout << "ShapefileMaker constructor called with " << theOutputFileName << std::endl; - /* Open and prepare output files */ - mDbfHandle = createDbf(theOutputFileName); - mShapeHandle = createShapeFile(theOutputFileName); - mCurrentRecInt=0; - //test the write point routine.... - //generatePoints(theInputFileName,mDbfHandle,mShapeHandle); - //generateGraticule(mDbfHandle,mShapeHandle,theXIntervalDouble,theYIntervalDouble); -} - -ShapefileMaker::ShapefileMaker(QString theOutputFileName, double theXIntervalDouble, double theYIntervalDouble) -{ - std::cout << "ShapefileMaker constructor called with " << theOutputFileName - << " for output file and " << theXIntervalDouble << "," << theYIntervalDouble << " for x,y interval " << std::endl; - DBFHandle mDbfHandle; /* handle for dBase file */ - SHPHandle mShapeHandle; /* handle for shape files .shx and .shp */ - /* Open and prepare output files */ - mDbfHandle = createDbf(theOutputFileName); - mShapeHandle = createShapeFile(theOutputFileName); - //test the write point routine.... - //generatePoints(theInputFileName,mDbfHandle,mShapeHandle); - generateGraticule(mDbfHandle,mShapeHandle,theXIntervalDouble,theYIntervalDouble); - return; -} - -ShapefileMaker::~ShapefileMaker() -{ - DBFClose( mDbfHandle ); - SHPClose( mShapeHandle ); -} - -/* DbfName need not include the file extension. */ -DBFHandle ShapefileMaker::createDbf (QString theDbfName ) -{ - DBFHandle mDbfHandle; - //remove the path part of the dbf name - QFileInfo myFileInfo( theDbfName ); - QString myBaseString = myFileInfo.dirPath()+QString("/")+myFileInfo.baseName(); // excludes any extension - //create the dbf - mDbfHandle = DBFCreate( myBaseString+".dbf" ); - //create an index field named after the base part of the file name - - DBFAddField( mDbfHandle, myBaseString+"_id", FTInteger, 11, 0 ); - //create a second arbitary attribute field - DBFAddField( mDbfHandle, "Label", FTString, 255, 0 ); - //close the dbf - DBFClose( mDbfHandle ); - //reopen - mDbfHandle = DBFOpen( myBaseString+".dbf", "r+b" ); - //exit this fn giving - return mDbfHandle; -} - -SHPHandle ShapefileMaker::createShapeFile(QString theFileName ) -{ - SHPHandle mShapeHandle; - mShapeHandle = SHPCreate(theFileName, SHPT_POINT ); - //mShapeHandle = SHPCreate(theFileName, SHPT_ARC ); - return mShapeHandle; -} - -void ShapefileMaker::writeDbfRecord (DBFHandle theDbfHandle, int theRecordIdInt, QString theLabel) -{ - - - std::cerr << "writeDbfRecord : " << theRecordIdInt << " - " << theLabel; - if (! DBFWriteIntegerAttribute(theDbfHandle, theRecordIdInt, 0, theRecordIdInt)) - { - std::cerr << "DBFWriteIntegerAttribute failed. : " << theRecordIdInt << " - " << theRecordIdInt << std::endl; - - //exit(ERR_DBFWRITEINTEGERATTRIBUTE); - } - if (theLabel != NULL) - { - if (! DBFWriteStringAttribute(theDbfHandle, theRecordIdInt, 1, theLabel)) - { - std::cerr << "DBFWriteStringAttribute failed. : " << theRecordIdInt << " - " << theLabel < -#include - -class ShapefileMaker -{ - public: - ShapefileMaker(QString theOutputFileName); - ShapefileMaker(QString theOutputFileName, double theXIntervalDouble, double theYIntervalDouble); - ~ShapefileMaker() ; - DBFHandle createDbf (QString theDbfName ) ; - SHPHandle createShapeFile(QString theFileName ); - void writeDbfRecord (DBFHandle theDbfHandle, int theRecordIdInt, QString theLabel) ; - void writePoint(SHPHandle theShapeHandle, int theRecordInt, double theXDouble, double y ); - void writePoint(QString theLabel, double theXDouble, double theYDouble ); - static void writeLine(SHPHandle theShapeHandle, - int theRecordInt, - int theCoordinateCountInt, - double * theXArrayDouble, - double * theYArrayDouble ); - void generateGraticule(DBFHandle theDbfHandle, SHPHandle theShapeHandle,double theXIntervalDouble,double theYIntervalDouble); - void generatePoints (QString theInputFileName, DBFHandle theDbfHandle, SHPHandle theShapeHandle); - - private: - DBFHandle mDbfHandle; /* handle for dBase file */ - SHPHandle mShapeHandle; /* handle for shape files .shx and .shp */ - int mCurrentRecInt; /* current record number */ - -}; -#endif diff --git a/plugins/fishing_spots/shpopen.c b/plugins/fishing_spots/shpopen.c deleted file mode 100644 index 6cab92600183..000000000000 --- a/plugins/fishing_spots/shpopen.c +++ /dev/null @@ -1,1632 +0,0 @@ -/****************************************************************************** - * $Id$ - * - * Project: Shapelib - * Purpose: Implementation of core Shapefile read/write functions. - * Author: Frank Warmerdam, warmerda@home.com - * - ****************************************************************************** - * Copyright (c) 1999, Frank Warmerdam - * - * This software is available under the following "MIT Style" license, - * or at the option of the licensee under the LGPL (see LICENSE.LGPL). This - * option is discussed in more detail in shapelib.html. - * - * -- - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - ****************************************************************************** - * - * $Log$ - * Revision 1.1 2004/04/24 00:59:39 timlinux - * Added shapefile builder libs and start of generic shapefilemaker class that Ill eventually move into qgis core. Modified makefile to build this stuff. - * - * Revision 1.1 2004/04/05 15:39:45 timlinux - * Initial commit of new plugin to build graticules - not working yet! And thus not added to higher level makefiles yet. - * - * Revision 1.2 2004/03/31 20:36:46 timlinux - * Fix for knock on effects of change of filename from shapefil.h to shapefile.h - * - * Revision 1.1 2004/03/22 23:38:26 timlinux - * This is a c++ first draft of a port of a perl script by Schuyler to import Garmin gps dump files as a shapefile. The resulting imported file will be displayed in the map view. At the moment it only generates a point layer of the waypoints but a future version will generate polylines and perhaps polygons too using similar logic to that used by Shuylers perl stuff. Note this plugin is still under construction and I am commiting it mainly so that other developers can assist me when I get stuck. Also note that the plugins Makefile builds a standalone app based on the plugin gui that can be run separately from qgis. - * - * Revision 1.26 2000/02/16 16:03:51 warmerda - * added null shape support - * - * Revision 1.25 1999/12/15 13:47:07 warmerda - * Fixed record size settings in .shp file (was 4 words too long) - * Added stdlib.h. - * - * Revision 1.24 1999/11/05 14:12:04 warmerda - * updated license terms - * - * Revision 1.23 1999/07/27 00:53:46 warmerda - * added support for rewriting shapes - * - * Revision 1.22 1999/06/11 19:19:11 warmerda - * Cleanup pabyRec static buffer on SHPClose(). - * - * Revision 1.21 1999/06/02 14:57:56 kshih - * Remove unused variables - * - * Revision 1.20 1999/04/19 21:04:17 warmerda - * Fixed syntax error. - * - * Revision 1.19 1999/04/19 21:01:57 warmerda - * Force access string to binary in SHPOpen(). - * - * Revision 1.18 1999/04/01 18:48:07 warmerda - * Try upper case extensions if lower case doesn't work. - * - * Revision 1.17 1998/12/31 15:29:39 warmerda - * Disable writing measure values to multipatch objects if - * DISABLE_MULTIPATCH_MEASURE is defined. - * - * Revision 1.16 1998/12/16 05:14:33 warmerda - * Added support to write MULTIPATCH. Fixed reading Z coordinate of - * MULTIPATCH. Fixed record size written for all feature types. - * - * Revision 1.15 1998/12/03 16:35:29 warmerda - * r+b is proper binary access string, not rb+. - * - * Revision 1.14 1998/12/03 15:47:56 warmerda - * Fixed setting of nVertices in SHPCreateObject(). - * - * Revision 1.13 1998/12/03 15:33:54 warmerda - * Made SHPCalculateExtents() separately callable. - * - * Revision 1.12 1998/11/11 20:01:50 warmerda - * Fixed bug writing ArcM/Z, and PolygonM/Z for big endian machines. - * - * Revision 1.11 1998/11/09 20:56:44 warmerda - * Fixed up handling of file wide bounds. - * - * Revision 1.10 1998/11/09 20:18:51 warmerda - * Converted to support 3D shapefiles, and use of SHPObject. - * - * Revision 1.9 1998/02/24 15:09:05 warmerda - * Fixed memory leak. - * - * Revision 1.8 1997/12/04 15:40:29 warmerda - * Fixed byte swapping of record number, and record length fields in the - * .shp file. - * - * Revision 1.7 1995/10/21 03:15:58 warmerda - * Added support for binary file access, the magic cookie 9997 - * and tried to improve the int32 selection logic for 16bit systems. - * - * Revision 1.6 1995/09/04 04:19:41 warmerda - * Added fix for file bounds. - * - * Revision 1.5 1995/08/25 15:16:44 warmerda - * Fixed a couple of problems with big endian systems ... one with bounds - * and the other with multipart polygons. - * - * Revision 1.4 1995/08/24 18:10:17 warmerda - * Switch to use SfRealloc() to avoid problems with pre-ANSI realloc() - * functions (such as on the Sun). - * - * Revision 1.3 1995/08/23 02:23:15 warmerda - * Added support for reading bounds, and fixed up problems in setting the - * file wide bounds. - * - * Revision 1.2 1995/08/04 03:16:57 warmerda - * Added header. - * - */ - -static char rcsid[] = - "$Id$"; - -#include "shapefile.h" - -#include -#include -#include -#include - -typedef unsigned char uchar; - -#if UINT_MAX == 65535 -typedef long int32; -#else -typedef int int32; -#endif - -#ifndef FALSE -# define FALSE 0 -# define TRUE 1 -#endif - -#define ByteCopy( a, b, c ) memcpy( b, a, c ) -#ifndef MAX -# define MIN(a,b) ((ab) ? a : b) -#endif - -static int bBigEndian; -static uchar *pabyRec = NULL; -static int nBufSize = 0; - - -/************************************************************************/ -/* SwapWord() */ -/* */ -/* Swap a 2, 4 or 8 byte word. */ -/************************************************************************/ - -static void SwapWord( int length, void * wordP ) - -{ - int i; - uchar temp; - - for( i=0; i < length/2; i++ ) - { - temp = ((uchar *) wordP)[i]; - ((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1]; - ((uchar *) wordP)[length-i-1] = temp; - } -} - -/************************************************************************/ -/* SfRealloc() */ -/* */ -/* A realloc cover function that will access a NULL pointer as */ -/* a valid input. */ -/************************************************************************/ - -static void * SfRealloc( void * pMem, int nNewSize ) - -{ - if( pMem == NULL ) - return( (void *) malloc(nNewSize) ); - else - return( (void *) realloc(pMem,nNewSize) ); -} - -/************************************************************************/ -/* SHPWriteHeader() */ -/* */ -/* Write out a header for the .shp and .shx files as well as the */ -/* contents of the index (.shx) file. */ -/************************************************************************/ - -static void SHPWriteHeader( SHPHandle psSHP ) - -{ - uchar abyHeader[100]; - int i; - int32 i32; - double dValue; - int32 *panSHX; - -/* -------------------------------------------------------------------- */ -/* Prepare header block for .shp file. */ -/* -------------------------------------------------------------------- */ - for( i = 0; i < 100; i++ ) - abyHeader[i] = 0; - - abyHeader[2] = 0x27; /* magic cookie */ - abyHeader[3] = 0x0a; - - i32 = psSHP->nFileSize/2; /* file size */ - ByteCopy( &i32, abyHeader+24, 4 ); - if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); - - i32 = 1000; /* version */ - ByteCopy( &i32, abyHeader+28, 4 ); - if( bBigEndian ) SwapWord( 4, abyHeader+28 ); - - i32 = psSHP->nShapeType; /* shape type */ - ByteCopy( &i32, abyHeader+32, 4 ); - if( bBigEndian ) SwapWord( 4, abyHeader+32 ); - - dValue = psSHP->adBoundsMin[0]; /* set bounds */ - ByteCopy( &dValue, abyHeader+36, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+36 ); - - dValue = psSHP->adBoundsMin[1]; - ByteCopy( &dValue, abyHeader+44, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+44 ); - - dValue = psSHP->adBoundsMax[0]; - ByteCopy( &dValue, abyHeader+52, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+52 ); - - dValue = psSHP->adBoundsMax[1]; - ByteCopy( &dValue, abyHeader+60, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+60 ); - - dValue = psSHP->adBoundsMin[2]; /* z */ - ByteCopy( &dValue, abyHeader+68, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+68 ); - - dValue = psSHP->adBoundsMax[2]; - ByteCopy( &dValue, abyHeader+76, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+76 ); - - dValue = psSHP->adBoundsMin[3]; /* m */ - ByteCopy( &dValue, abyHeader+84, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+84 ); - - dValue = psSHP->adBoundsMax[3]; - ByteCopy( &dValue, abyHeader+92, 8 ); - if( bBigEndian ) SwapWord( 8, abyHeader+92 ); - -/* -------------------------------------------------------------------- */ -/* Write .shp file header. */ -/* -------------------------------------------------------------------- */ - fseek( psSHP->fpSHP, 0, 0 ); - fwrite( abyHeader, 100, 1, psSHP->fpSHP ); - -/* -------------------------------------------------------------------- */ -/* Prepare, and write .shx file header. */ -/* -------------------------------------------------------------------- */ - i32 = (psSHP->nRecords * 2 * sizeof(int32) + 100)/2; /* file size */ - ByteCopy( &i32, abyHeader+24, 4 ); - if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); - - fseek( psSHP->fpSHX, 0, 0 ); - fwrite( abyHeader, 100, 1, psSHP->fpSHX ); - -/* -------------------------------------------------------------------- */ -/* Write out the .shx contents. */ -/* -------------------------------------------------------------------- */ - panSHX = (int32 *) malloc(sizeof(int32) * 2 * psSHP->nRecords); - - for( i = 0; i < psSHP->nRecords; i++ ) - { - panSHX[i*2 ] = psSHP->panRecOffset[i]/2; - panSHX[i*2+1] = psSHP->panRecSize[i]/2; - if( !bBigEndian ) SwapWord( 4, panSHX+i*2 ); - if( !bBigEndian ) SwapWord( 4, panSHX+i*2+1 ); - } - - fwrite( panSHX, sizeof(int32) * 2, psSHP->nRecords, psSHP->fpSHX ); - - free( panSHX ); -} - -/************************************************************************/ -/* SHPOpen() */ -/* */ -/* Open the .shp and .shx files based on the basename of the */ -/* files or either file name. */ -/************************************************************************/ - -SHPHandle SHPOpen( const char * pszLayer, const char * pszAccess ) - -{ - char *pszFullname, *pszBasename; - SHPHandle psSHP; - - uchar *pabyBuf; - int i; - double dValue; - -/* -------------------------------------------------------------------- */ -/* Ensure the access string is one of the legal ones. We */ -/* ensure the result string indicates binary to avoid common */ -/* problems on Windows. */ -/* -------------------------------------------------------------------- */ - if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0 - || strcmp(pszAccess,"r+") == 0 ) - pszAccess = "r+b"; - else - pszAccess = "rb"; - -/* -------------------------------------------------------------------- */ -/* Establish the byte order on this machine. */ -/* -------------------------------------------------------------------- */ - i = 1; - if( *((uchar *) &i) == 1 ) - bBigEndian = FALSE; - else - bBigEndian = TRUE; - -/* -------------------------------------------------------------------- */ -/* Initialize the info structure. */ -/* -------------------------------------------------------------------- */ - psSHP = (SHPHandle) malloc(sizeof(SHPInfo)); - - psSHP->bUpdated = FALSE; - -/* -------------------------------------------------------------------- */ -/* Compute the base (layer) name. If there is any extension */ -/* on the passed in filename we will strip it off. */ -/* -------------------------------------------------------------------- */ - pszBasename = (char *) malloc(strlen(pszLayer)+5); - strcpy( pszBasename, pszLayer ); - for( i = strlen(pszBasename)-1; - i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' - && pszBasename[i] != '\\'; - i-- ) {} - - if( pszBasename[i] == '.' ) - pszBasename[i] = '\0'; - -/* -------------------------------------------------------------------- */ -/* Open the .shp and .shx files. Note that files pulled from */ -/* a PC to Unix with upper case filenames won't work! */ -/* -------------------------------------------------------------------- */ - pszFullname = (char *) malloc(strlen(pszBasename) + 5); - sprintf( pszFullname, "%s.shp", pszBasename ); - psSHP->fpSHP = fopen(pszFullname, pszAccess ); - if( psSHP->fpSHP == NULL ) - { - sprintf( pszFullname, "%s.SHP", pszBasename ); - psSHP->fpSHP = fopen(pszFullname, pszAccess ); - } - - if( psSHP->fpSHP == NULL ) - return( NULL ); - - sprintf( pszFullname, "%s.shx", pszBasename ); - psSHP->fpSHX = fopen(pszFullname, pszAccess ); - if( psSHP->fpSHX == NULL ) - { - sprintf( pszFullname, "%s.SHX", pszBasename ); - psSHP->fpSHX = fopen(pszFullname, pszAccess ); - } - - if( psSHP->fpSHX == NULL ) - return( NULL ); - - free( pszFullname ); - free( pszBasename ); - -/* -------------------------------------------------------------------- */ -/* Read the file size from the SHP file. */ -/* -------------------------------------------------------------------- */ - pabyBuf = (uchar *) malloc(100); - fread( pabyBuf, 100, 1, psSHP->fpSHP ); - - psSHP->nFileSize = (pabyBuf[24] * 256 * 256 * 256 - + pabyBuf[25] * 256 * 256 - + pabyBuf[26] * 256 - + pabyBuf[27]) * 2; - -/* -------------------------------------------------------------------- */ -/* Read SHX file Header info */ -/* -------------------------------------------------------------------- */ - fread( pabyBuf, 100, 1, psSHP->fpSHX ); - - if( pabyBuf[0] != 0 - || pabyBuf[1] != 0 - || pabyBuf[2] != 0x27 - || (pabyBuf[3] != 0x0a && pabyBuf[3] != 0x0d) ) - { - fclose( psSHP->fpSHP ); - fclose( psSHP->fpSHX ); - free( psSHP ); - - return( NULL ); - } - - psSHP->nRecords = pabyBuf[27] + pabyBuf[26] * 256 - + pabyBuf[25] * 256 * 256 + pabyBuf[24] * 256 * 256 * 256; - psSHP->nRecords = (psSHP->nRecords*2 - 100) / 8; - - psSHP->nShapeType = pabyBuf[32]; - -/* -------------------------------------------------------------------- */ -/* Read the bounds. */ -/* -------------------------------------------------------------------- */ - if( bBigEndian ) SwapWord( 8, pabyBuf+36 ); - memcpy( &dValue, pabyBuf+36, 8 ); - psSHP->adBoundsMin[0] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+44 ); - memcpy( &dValue, pabyBuf+44, 8 ); - psSHP->adBoundsMin[1] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+52 ); - memcpy( &dValue, pabyBuf+52, 8 ); - psSHP->adBoundsMax[0] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+60 ); - memcpy( &dValue, pabyBuf+60, 8 ); - psSHP->adBoundsMax[1] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+68 ); /* z */ - memcpy( &dValue, pabyBuf+68, 8 ); - psSHP->adBoundsMin[2] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+76 ); - memcpy( &dValue, pabyBuf+76, 8 ); - psSHP->adBoundsMax[2] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+84 ); /* z */ - memcpy( &dValue, pabyBuf+84, 8 ); - psSHP->adBoundsMin[3] = dValue; - - if( bBigEndian ) SwapWord( 8, pabyBuf+92 ); - memcpy( &dValue, pabyBuf+92, 8 ); - psSHP->adBoundsMax[3] = dValue; - - free( pabyBuf ); - -/* -------------------------------------------------------------------- */ -/* Read the .shx file to get the offsets to each record in */ -/* the .shp file. */ -/* -------------------------------------------------------------------- */ - psSHP->nMaxRecords = psSHP->nRecords; - - psSHP->panRecOffset = - (int *) malloc(sizeof(int) * MAX(1,psSHP->nMaxRecords) ); - psSHP->panRecSize = - (int *) malloc(sizeof(int) * MAX(1,psSHP->nMaxRecords) ); - - pabyBuf = (uchar *) malloc(8 * MAX(1,psSHP->nRecords) ); - fread( pabyBuf, 8, psSHP->nRecords, psSHP->fpSHX ); - - for( i = 0; i < psSHP->nRecords; i++ ) - { - int32 nOffset, nLength; - - memcpy( &nOffset, pabyBuf + i * 8, 4 ); - if( !bBigEndian ) SwapWord( 4, &nOffset ); - - memcpy( &nLength, pabyBuf + i * 8 + 4, 4 ); - if( !bBigEndian ) SwapWord( 4, &nLength ); - - psSHP->panRecOffset[i] = nOffset*2; - psSHP->panRecSize[i] = nLength*2; - } - free( pabyBuf ); - - return( psSHP ); -} - -/************************************************************************/ -/* SHPClose() */ -/* */ -/* Close the .shp and .shx files. */ -/************************************************************************/ - -void SHPClose(SHPHandle psSHP ) - -{ -/* -------------------------------------------------------------------- */ -/* Update the header if we have modified anything. */ -/* -------------------------------------------------------------------- */ - if( psSHP->bUpdated ) - { - SHPWriteHeader( psSHP ); - } - -/* -------------------------------------------------------------------- */ -/* Free all resources, and close files. */ -/* -------------------------------------------------------------------- */ - free( psSHP->panRecOffset ); - free( psSHP->panRecSize ); - - fclose( psSHP->fpSHX ); - fclose( psSHP->fpSHP ); - - free( psSHP ); - - if( pabyRec != NULL ) - { - free( pabyRec ); - pabyRec = NULL; - nBufSize = 0; - } -} - -/************************************************************************/ -/* SHPGetInfo() */ -/* */ -/* Fetch general information about the shape file. */ -/************************************************************************/ - -void SHPGetInfo(SHPHandle psSHP, int * pnEntities, int * pnShapeType, - double * padfMinBound, double * padfMaxBound ) - -{ - int i; - - if( pnEntities != NULL ) - *pnEntities = psSHP->nRecords; - - if( pnShapeType != NULL ) - *pnShapeType = psSHP->nShapeType; - - for( i = 0; i < 4; i++ ) - { - if( padfMinBound != NULL ) - padfMinBound[i] = psSHP->adBoundsMin[i]; - if( padfMaxBound != NULL ) - padfMaxBound[i] = psSHP->adBoundsMax[i]; - } -} - -/************************************************************************/ -/* SHPCreate() */ -/* */ -/* Create a new shape file and return a handle to the open */ -/* shape file with read/write access. */ -/************************************************************************/ - -SHPHandle SHPCreate( const char * pszLayer, int nShapeType ) - -{ - char *pszBasename, *pszFullname; - int i; - FILE *fpSHP, *fpSHX; - uchar abyHeader[100]; - int32 i32; - double dValue; - -/* -------------------------------------------------------------------- */ -/* Establish the byte order on this system. */ -/* -------------------------------------------------------------------- */ - i = 1; - if( *((uchar *) &i) == 1 ) - bBigEndian = FALSE; - else - bBigEndian = TRUE; - -/* -------------------------------------------------------------------- */ -/* Compute the base (layer) name. If there is any extension */ -/* on the passed in filename we will strip it off. */ -/* -------------------------------------------------------------------- */ - pszBasename = (char *) malloc(strlen(pszLayer)+5); - strcpy( pszBasename, pszLayer ); - for( i = strlen(pszBasename)-1; - i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/' - && pszBasename[i] != '\\'; - i-- ) {} - - if( pszBasename[i] == '.' ) - pszBasename[i] = '\0'; - -/* -------------------------------------------------------------------- */ -/* Open the two files so we can write their headers. */ -/* -------------------------------------------------------------------- */ - pszFullname = (char *) malloc(strlen(pszBasename) + 5); - sprintf( pszFullname, "%s.shp", pszBasename ); - fpSHP = fopen(pszFullname, "wb" ); - if( fpSHP == NULL ) - return( NULL ); - - sprintf( pszFullname, "%s.shx", pszBasename ); - fpSHX = fopen(pszFullname, "wb" ); - if( fpSHX == NULL ) - return( NULL ); - - free( pszFullname ); - free( pszBasename ); - -/* -------------------------------------------------------------------- */ -/* Prepare header block for .shp file. */ -/* -------------------------------------------------------------------- */ - for( i = 0; i < 100; i++ ) - abyHeader[i] = 0; - - abyHeader[2] = 0x27; /* magic cookie */ - abyHeader[3] = 0x0a; - - i32 = 50; /* file size */ - ByteCopy( &i32, abyHeader+24, 4 ); - if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); - - i32 = 1000; /* version */ - ByteCopy( &i32, abyHeader+28, 4 ); - if( bBigEndian ) SwapWord( 4, abyHeader+28 ); - - i32 = nShapeType; /* shape type */ - ByteCopy( &i32, abyHeader+32, 4 ); - if( bBigEndian ) SwapWord( 4, abyHeader+32 ); - - dValue = 0.0; /* set bounds */ - ByteCopy( &dValue, abyHeader+36, 8 ); - ByteCopy( &dValue, abyHeader+44, 8 ); - ByteCopy( &dValue, abyHeader+52, 8 ); - ByteCopy( &dValue, abyHeader+60, 8 ); - -/* -------------------------------------------------------------------- */ -/* Write .shp file header. */ -/* -------------------------------------------------------------------- */ - fwrite( abyHeader, 100, 1, fpSHP ); - -/* -------------------------------------------------------------------- */ -/* Prepare, and write .shx file header. */ -/* -------------------------------------------------------------------- */ - i32 = 50; /* file size */ - ByteCopy( &i32, abyHeader+24, 4 ); - if( !bBigEndian ) SwapWord( 4, abyHeader+24 ); - - fwrite( abyHeader, 100, 1, fpSHX ); - -/* -------------------------------------------------------------------- */ -/* Close the files, and then open them as regular existing files. */ -/* -------------------------------------------------------------------- */ - fclose( fpSHP ); - fclose( fpSHX ); - - return( SHPOpen( pszLayer, "r+b" ) ); -} - -/************************************************************************/ -/* _SHPSetBounds() */ -/* */ -/* Compute a bounds rectangle for a shape, and set it into the */ -/* indicated location in the record. */ -/************************************************************************/ - -static void _SHPSetBounds( uchar * pabyRec, SHPObject * psShape ) - -{ - ByteCopy( &(psShape->dfXMin), pabyRec + 0, 8 ); - ByteCopy( &(psShape->dfYMin), pabyRec + 8, 8 ); - ByteCopy( &(psShape->dfXMax), pabyRec + 16, 8 ); - ByteCopy( &(psShape->dfYMax), pabyRec + 24, 8 ); - - if( bBigEndian ) - { - SwapWord( 8, pabyRec + 0 ); - SwapWord( 8, pabyRec + 8 ); - SwapWord( 8, pabyRec + 16 ); - SwapWord( 8, pabyRec + 24 ); - } -} - -/************************************************************************/ -/* SHPComputeExtents() */ -/* */ -/* Recompute the extents of a shape. Automatically done by */ -/* SHPCreateObject(). */ -/************************************************************************/ - -void SHPComputeExtents( SHPObject * psObject ) - -{ - int i; - -/* -------------------------------------------------------------------- */ -/* Build extents for this object. */ -/* -------------------------------------------------------------------- */ - if( psObject->nVertices > 0 ) - { - psObject->dfXMin = psObject->dfXMax = psObject->padfX[0]; - psObject->dfYMin = psObject->dfYMax = psObject->padfY[0]; - psObject->dfZMin = psObject->dfZMax = psObject->padfZ[0]; - psObject->dfMMin = psObject->dfMMax = psObject->padfM[0]; - } - - for( i = 0; i < psObject->nVertices; i++ ) - { - psObject->dfXMin = MIN(psObject->dfXMin, psObject->padfX[i]); - psObject->dfYMin = MIN(psObject->dfYMin, psObject->padfY[i]); - psObject->dfZMin = MIN(psObject->dfZMin, psObject->padfZ[i]); - psObject->dfMMin = MIN(psObject->dfMMin, psObject->padfM[i]); - - psObject->dfXMax = MAX(psObject->dfXMax, psObject->padfX[i]); - psObject->dfYMax = MAX(psObject->dfYMax, psObject->padfY[i]); - psObject->dfZMax = MAX(psObject->dfZMax, psObject->padfZ[i]); - psObject->dfMMax = MAX(psObject->dfMMax, psObject->padfM[i]); - } -} - -/************************************************************************/ -/* SHPCreateObject() */ -/* */ -/* Create a shape object. It should be freed with */ -/* SHPDestroyObject(). */ -/************************************************************************/ - -SHPObject *SHPCreateObject( int nSHPType, int nShapeId, int nParts, - int * panPartStart, int * panPartType, - int nVertices, double * padfX, double * padfY, - double * padfZ, double * padfM ) - -{ - SHPObject *psObject; - int i, bHasM, bHasZ; - - psObject = (SHPObject *) calloc(1,sizeof(SHPObject)); - psObject->nSHPType = nSHPType; - psObject->nShapeId = nShapeId; - -/* -------------------------------------------------------------------- */ -/* Establish whether this shape type has M, and Z values. */ -/* -------------------------------------------------------------------- */ - if( nSHPType == SHPT_ARCM - || nSHPType == SHPT_POINTM - || nSHPType == SHPT_POLYGONM - || nSHPType == SHPT_MULTIPOINTM ) - { - bHasM = TRUE; - bHasZ = FALSE; - } - else if( nSHPType == SHPT_ARCZ - || nSHPType == SHPT_POINTZ - || nSHPType == SHPT_POLYGONZ - || nSHPType == SHPT_MULTIPOINTZ - || nSHPType == SHPT_MULTIPATCH ) - { - bHasM = TRUE; - bHasZ = TRUE; - } - else - { - bHasM = FALSE; - bHasZ = FALSE; - } - -/* -------------------------------------------------------------------- */ -/* Capture parts. Note that part type is optional, and */ -/* defaults to ring. */ -/* -------------------------------------------------------------------- */ - if( nSHPType == SHPT_ARC || nSHPType == SHPT_POLYGON - || nSHPType == SHPT_ARCM || nSHPType == SHPT_POLYGONM - || nSHPType == SHPT_ARCZ || nSHPType == SHPT_POLYGONZ - || nSHPType == SHPT_MULTIPATCH ) - { - psObject->nParts = MAX(1,nParts); - - psObject->panPartStart = (int *) - malloc(sizeof(int) * psObject->nParts); - psObject->panPartType = (int *) - malloc(sizeof(int) * psObject->nParts); - - psObject->panPartStart[0] = 0; - psObject->panPartType[0] = SHPP_RING; - - for( i = 0; i < nParts; i++ ) - { - psObject->panPartStart[i] = panPartStart[i]; - if( panPartType != NULL ) - psObject->panPartType[i] = panPartType[i]; - else - psObject->panPartType[i] = SHPP_RING; - } - } - -/* -------------------------------------------------------------------- */ -/* Capture vertices. Note that Z and M are optional, but X and */ -/* Y are not. */ -/* -------------------------------------------------------------------- */ - psObject->padfX = (double *) calloc(sizeof(double),nVertices); - psObject->padfY = (double *) calloc(sizeof(double),nVertices); - psObject->padfZ = (double *) calloc(sizeof(double),nVertices); - psObject->padfM = (double *) calloc(sizeof(double),nVertices); - - assert( padfX != NULL ); - assert( padfY != NULL ); - - for( i = 0; i < nVertices; i++ ) - { - psObject->padfX[i] = padfX[i]; - psObject->padfY[i] = padfY[i]; - if( padfZ != NULL && bHasZ ) - psObject->padfZ[i] = padfZ[i]; - if( padfM != NULL && bHasM ) - psObject->padfM[i] = padfM[i]; - } - -/* -------------------------------------------------------------------- */ -/* Compute the extents. */ -/* -------------------------------------------------------------------- */ - psObject->nVertices = nVertices; - - SHPComputeExtents( psObject ); - - return( psObject ); -} - -/************************************************************************/ -/* SHPCreateSimpleObject() */ -/* */ -/* Create a simple (common) shape object. Destroy with */ -/* SHPDestroyObject(). */ -/************************************************************************/ - -SHPObject *SHPCreateSimpleObject( int nSHPType, int nVertices, - double * padfX, double * padfY, - double * padfZ ) - -{ - return( SHPCreateObject( nSHPType, -1, 0, NULL, NULL, - nVertices, padfX, padfY, padfZ, NULL ) ); -} - -/************************************************************************/ -/* SHPWriteObject() */ -/* */ -/* Write out the vertices of a new structure. Note that it is */ -/* only possible to write vertices at the end of the file. */ -/************************************************************************/ - -int SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject ) - -{ - int nRecordOffset, i, nRecordSize; - uchar *pabyRec; - int32 i32; - - psSHP->bUpdated = TRUE; - -/* -------------------------------------------------------------------- */ -/* Ensure that shape object matches the type of the file it is */ -/* being written to. */ -/* -------------------------------------------------------------------- */ - assert( psObject->nSHPType == psSHP->nShapeType ); - -/* -------------------------------------------------------------------- */ -/* Add the new entity to the in memory index. */ -/* -------------------------------------------------------------------- */ - if( nShapeId == -1 && psSHP->nRecords+1 > psSHP->nMaxRecords ) - { - psSHP->nMaxRecords =(int) ( psSHP->nMaxRecords * 1.3 + 100); - - psSHP->panRecOffset = (int *) - SfRealloc(psSHP->panRecOffset,sizeof(int) * psSHP->nMaxRecords ); - psSHP->panRecSize = (int *) - SfRealloc(psSHP->panRecSize,sizeof(int) * psSHP->nMaxRecords ); - } - -/* -------------------------------------------------------------------- */ -/* Initialize record. */ -/* -------------------------------------------------------------------- */ - pabyRec = (uchar *) malloc(psObject->nVertices * 4 * sizeof(double) - + psObject->nParts * 8 + 128); - -/* -------------------------------------------------------------------- */ -/* Extract vertices for a Polygon or Arc. */ -/* -------------------------------------------------------------------- */ - if( psSHP->nShapeType == SHPT_POLYGON - || psSHP->nShapeType == SHPT_POLYGONZ - || psSHP->nShapeType == SHPT_POLYGONM - || psSHP->nShapeType == SHPT_ARC - || psSHP->nShapeType == SHPT_ARCZ - || psSHP->nShapeType == SHPT_ARCM - || psSHP->nShapeType == SHPT_MULTIPATCH ) - { - int32 nPoints, nParts; - int i; - - nPoints = psObject->nVertices; - nParts = psObject->nParts; - - _SHPSetBounds( pabyRec + 12, psObject ); - - if( bBigEndian ) SwapWord( 4, &nPoints ); - if( bBigEndian ) SwapWord( 4, &nParts ); - - ByteCopy( &nPoints, pabyRec + 40 + 8, 4 ); - ByteCopy( &nParts, pabyRec + 36 + 8, 4 ); - - nRecordSize = 52; - - /* - * Write part start positions. - */ - ByteCopy( psObject->panPartStart, pabyRec + 44 + 8, - 4 * psObject->nParts ); - for( i = 0; i < psObject->nParts; i++ ) - { - if( bBigEndian ) SwapWord( 4, pabyRec + 44 + 8 + 4*i ); - nRecordSize += 4; - } - - /* - * Write multipatch part types if needed. - */ - if( psSHP->nShapeType == SHPT_MULTIPATCH ) - { - memcpy( pabyRec + nRecordSize, psObject->panPartType, - 4*psObject->nParts ); - for( i = 0; i < psObject->nParts; i++ ) - { - if( bBigEndian ) SwapWord( 4, pabyRec + nRecordSize ); - nRecordSize += 4; - } - } - - /* - * Write the (x,y) vertex values. - */ - for( i = 0; i < psObject->nVertices; i++ ) - { - ByteCopy( psObject->padfX + i, pabyRec + nRecordSize, 8 ); - ByteCopy( psObject->padfY + i, pabyRec + nRecordSize + 8, 8 ); - - if( bBigEndian ) - SwapWord( 8, pabyRec + nRecordSize ); - - if( bBigEndian ) - SwapWord( 8, pabyRec + nRecordSize + 8 ); - - nRecordSize += 2 * 8; - } - - /* - * Write the Z coordinates (if any). - */ - if( psSHP->nShapeType == SHPT_POLYGONZ - || psSHP->nShapeType == SHPT_ARCZ - || psSHP->nShapeType == SHPT_MULTIPATCH ) - { - ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - for( i = 0; i < psObject->nVertices; i++ ) - { - ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - } - } - - /* - * Write the M values, if any. - */ - if( psSHP->nShapeType == SHPT_POLYGONM - || psSHP->nShapeType == SHPT_ARCM -#ifndef DISABLE_MULTIPATCH_MEASURE - || psSHP->nShapeType == SHPT_MULTIPATCH -#endif - || psSHP->nShapeType == SHPT_POLYGONZ - || psSHP->nShapeType == SHPT_ARCZ ) - { - ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - for( i = 0; i < psObject->nVertices; i++ ) - { - ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - } - } - } - -/* -------------------------------------------------------------------- */ -/* Extract vertices for a MultiPoint. */ -/* -------------------------------------------------------------------- */ - else if( psSHP->nShapeType == SHPT_MULTIPOINT - || psSHP->nShapeType == SHPT_MULTIPOINTZ - || psSHP->nShapeType == SHPT_MULTIPOINTM ) - { - int32 nPoints; - int i; - - nPoints = psObject->nVertices; - - _SHPSetBounds( pabyRec + 12, psObject ); - - if( bBigEndian ) SwapWord( 4, &nPoints ); - ByteCopy( &nPoints, pabyRec + 44, 4 ); - - for( i = 0; i < psObject->nVertices; i++ ) - { - ByteCopy( psObject->padfX + i, pabyRec + 48 + i*16, 8 ); - ByteCopy( psObject->padfY + i, pabyRec + 48 + i*16 + 8, 8 ); - - if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 ); - if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 + 8 ); - } - - nRecordSize = 48 + 16 * psObject->nVertices; - - if( psSHP->nShapeType == SHPT_MULTIPOINTZ ) - { - ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - for( i = 0; i < psObject->nVertices; i++ ) - { - ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - } - } - - if( psSHP->nShapeType == SHPT_MULTIPOINTZ - || psSHP->nShapeType == SHPT_MULTIPOINTM ) - { - ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - - for( i = 0; i < psObject->nVertices; i++ ) - { - ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - } - } - } - -/* -------------------------------------------------------------------- */ -/* Extract vertices for a point. */ -/* -------------------------------------------------------------------- */ - else if( psSHP->nShapeType == SHPT_POINT - || psSHP->nShapeType == SHPT_POINTZ - || psSHP->nShapeType == SHPT_POINTM ) - { - ByteCopy( psObject->padfX, pabyRec + 12, 8 ); - ByteCopy( psObject->padfY, pabyRec + 20, 8 ); - - if( bBigEndian ) SwapWord( 8, pabyRec + 12 ); - if( bBigEndian ) SwapWord( 8, pabyRec + 20 ); - - nRecordSize = 28; - - if( psSHP->nShapeType == SHPT_POINTZ ) - { - ByteCopy( psObject->padfZ, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - } - - if( psSHP->nShapeType == SHPT_POINTZ - || psSHP->nShapeType == SHPT_POINTM ) - { - ByteCopy( psObject->padfM, pabyRec + nRecordSize, 8 ); - if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize ); - nRecordSize += 8; - } - } - - else - { - /* unknown type */ - assert( FALSE ); - } - -/* -------------------------------------------------------------------- */ -/* Establish where we are going to put this record. If we are */ -/* rewriting and existing record, and it will fit, then put it */ -/* back where the original came from. Otherwise write at the end. */ -/* -------------------------------------------------------------------- */ - if( nShapeId == -1 || psSHP->panRecSize[nShapeId] < nRecordSize-8 ) - { - if( nShapeId == -1 ) - nShapeId = psSHP->nRecords++; - - psSHP->panRecOffset[nShapeId] = nRecordOffset = psSHP->nFileSize; - psSHP->panRecSize[nShapeId] = nRecordSize-8; - psSHP->nFileSize += nRecordSize; - } - else - { - nRecordOffset = psSHP->panRecOffset[nShapeId]; - } - -/* -------------------------------------------------------------------- */ -/* Set the shape type, record number, and record size. */ -/* -------------------------------------------------------------------- */ - i32 = nShapeId+1; /* record # */ - if( !bBigEndian ) SwapWord( 4, &i32 ); - ByteCopy( &i32, pabyRec, 4 ); - - i32 = (nRecordSize-8)/2; /* record size */ - if( !bBigEndian ) SwapWord( 4, &i32 ); - ByteCopy( &i32, pabyRec + 4, 4 ); - - i32 = psSHP->nShapeType; /* shape type */ - if( bBigEndian ) SwapWord( 4, &i32 ); - ByteCopy( &i32, pabyRec + 8, 4 ); - -/* -------------------------------------------------------------------- */ -/* Write out record. */ -/* -------------------------------------------------------------------- */ - if( fseek( psSHP->fpSHP, nRecordOffset, 0 ) != 0 - || fwrite( pabyRec, nRecordSize, 1, psSHP->fpSHP ) < 1 ) - { - printf( "Error in fseek() or fwrite().\n" ); - free( pabyRec ); - return -1; - } - - free( pabyRec ); - -/* -------------------------------------------------------------------- */ -/* Expand file wide bounds based on this shape. */ -/* -------------------------------------------------------------------- */ - if( psSHP->nRecords == 1 ) - { - psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = psObject->padfX[0]; - psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = psObject->padfY[0]; - psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = psObject->padfZ[0]; - psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = psObject->padfM[0]; - } - - for( i = 0; i < psObject->nVertices; i++ ) - { - psSHP->adBoundsMin[0] = MIN(psSHP->adBoundsMin[0],psObject->padfX[i]); - psSHP->adBoundsMin[1] = MIN(psSHP->adBoundsMin[1],psObject->padfY[i]); - psSHP->adBoundsMin[2] = MIN(psSHP->adBoundsMin[2],psObject->padfZ[i]); - psSHP->adBoundsMin[3] = MIN(psSHP->adBoundsMin[3],psObject->padfM[i]); - psSHP->adBoundsMax[0] = MAX(psSHP->adBoundsMax[0],psObject->padfX[i]); - psSHP->adBoundsMax[1] = MAX(psSHP->adBoundsMax[1],psObject->padfY[i]); - psSHP->adBoundsMax[2] = MAX(psSHP->adBoundsMax[2],psObject->padfZ[i]); - psSHP->adBoundsMax[3] = MAX(psSHP->adBoundsMax[3],psObject->padfM[i]); - } - - return( nShapeId ); -} - -/************************************************************************/ -/* SHPReadObject() */ -/* */ -/* Read the vertices, parts, and other non-attribute information */ -/* for one shape. */ -/************************************************************************/ - -SHPObject *SHPReadObject( SHPHandle psSHP, int hEntity ) - -{ - SHPObject *psShape; - -/* -------------------------------------------------------------------- */ -/* Validate the record/entity number. */ -/* -------------------------------------------------------------------- */ - if( hEntity < 0 || hEntity >= psSHP->nRecords ) - return( NULL ); - -/* -------------------------------------------------------------------- */ -/* Ensure our record buffer is large enough. */ -/* -------------------------------------------------------------------- */ - if( psSHP->panRecSize[hEntity]+8 > nBufSize ) - { - nBufSize = psSHP->panRecSize[hEntity]+8; - pabyRec = (uchar *) SfRealloc(pabyRec,nBufSize); - } - -/* -------------------------------------------------------------------- */ -/* Read the record. */ -/* -------------------------------------------------------------------- */ - fseek( psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0 ); - fread( pabyRec, psSHP->panRecSize[hEntity]+8, 1, psSHP->fpSHP ); - -/* -------------------------------------------------------------------- */ -/* Allocate and minimally initialize the object. */ -/* -------------------------------------------------------------------- */ - psShape = (SHPObject *) calloc(1,sizeof(SHPObject)); - psShape->nShapeId = hEntity; - - memcpy( &psShape->nSHPType, pabyRec + 8, 4 ); - if( bBigEndian ) SwapWord( 4, &(psShape->nSHPType) ); - -/* ==================================================================== */ -/* Extract vertices for a Polygon or Arc. */ -/* ==================================================================== */ - if( psShape->nSHPType == SHPT_POLYGON || psShape->nSHPType == SHPT_ARC - || psShape->nSHPType == SHPT_POLYGONZ - || psShape->nSHPType == SHPT_POLYGONM - || psShape->nSHPType == SHPT_ARCZ - || psShape->nSHPType == SHPT_ARCM - || psShape->nSHPType == SHPT_MULTIPATCH ) - { - int32 nPoints, nParts; - int i, nOffset; - -/* -------------------------------------------------------------------- */ -/* Get the X/Y bounds. */ -/* -------------------------------------------------------------------- */ - memcpy( &(psShape->dfXMin), pabyRec + 8 + 4, 8 ); - memcpy( &(psShape->dfYMin), pabyRec + 8 + 12, 8 ); - memcpy( &(psShape->dfXMax), pabyRec + 8 + 20, 8 ); - memcpy( &(psShape->dfYMax), pabyRec + 8 + 28, 8 ); - - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); - -/* -------------------------------------------------------------------- */ -/* Extract part/point count, and build vertex and part arrays */ -/* to proper size. */ -/* -------------------------------------------------------------------- */ - memcpy( &nPoints, pabyRec + 40 + 8, 4 ); - memcpy( &nParts, pabyRec + 36 + 8, 4 ); - - if( bBigEndian ) SwapWord( 4, &nPoints ); - if( bBigEndian ) SwapWord( 4, &nParts ); - - psShape->nVertices = nPoints; - psShape->padfX = (double *) calloc(nPoints,sizeof(double)); - psShape->padfY = (double *) calloc(nPoints,sizeof(double)); - psShape->padfZ = (double *) calloc(nPoints,sizeof(double)); - psShape->padfM = (double *) calloc(nPoints,sizeof(double)); - - psShape->nParts = nParts; - psShape->panPartStart = (int *) calloc(nParts,sizeof(int)); - psShape->panPartType = (int *) calloc(nParts,sizeof(int)); - - for( i = 0; i < nParts; i++ ) - psShape->panPartType[i] = SHPP_RING; - -/* -------------------------------------------------------------------- */ -/* Copy out the part array from the record. */ -/* -------------------------------------------------------------------- */ - memcpy( psShape->panPartStart, pabyRec + 44 + 8, 4 * nParts ); - for( i = 0; i < nParts; i++ ) - { - if( bBigEndian ) SwapWord( 4, psShape->panPartStart+i ); - } - - nOffset = 44 + 8 + 4*nParts; - -/* -------------------------------------------------------------------- */ -/* If this is a multipatch, we will also have parts types. */ -/* -------------------------------------------------------------------- */ - if( psShape->nSHPType == SHPT_MULTIPATCH ) - { - memcpy( psShape->panPartType, pabyRec + nOffset, 4*nParts ); - for( i = 0; i < nParts; i++ ) - { - if( bBigEndian ) SwapWord( 4, psShape->panPartType+i ); - } - - nOffset += 4*nParts; - } - -/* -------------------------------------------------------------------- */ -/* Copy out the vertices from the record. */ -/* -------------------------------------------------------------------- */ - for( i = 0; i < nPoints; i++ ) - { - memcpy(psShape->padfX + i, - pabyRec + nOffset + i * 16, - 8 ); - - memcpy(psShape->padfY + i, - pabyRec + nOffset + i * 16 + 8, - 8 ); - - if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); - if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); - } - - nOffset += 16*nPoints; - -/* -------------------------------------------------------------------- */ -/* If we have a Z coordinate, collect that now. */ -/* -------------------------------------------------------------------- */ - if( psShape->nSHPType == SHPT_POLYGONZ - || psShape->nSHPType == SHPT_ARCZ - || psShape->nSHPType == SHPT_MULTIPATCH ) - { - memcpy( &(psShape->dfZMin), pabyRec + nOffset, 8 ); - memcpy( &(psShape->dfZMax), pabyRec + nOffset + 8, 8 ); - - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); - - for( i = 0; i < nPoints; i++ ) - { - memcpy( psShape->padfZ + i, - pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); - } - - nOffset += 16 + 8*nPoints; - } - -/* -------------------------------------------------------------------- */ -/* If we have a M measure value, then read it now. We assume */ -/* that the measure can be present for any shape if the size is */ -/* big enough, but really it will only occur for the Z shapes */ -/* (options), and the M shapes. */ -/* -------------------------------------------------------------------- */ - if( psSHP->panRecSize[hEntity]+8 >= nOffset + 16 + 8*nPoints ) - { - memcpy( &(psShape->dfMMin), pabyRec + nOffset, 8 ); - memcpy( &(psShape->dfMMax), pabyRec + nOffset + 8, 8 ); - - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); - - for( i = 0; i < nPoints; i++ ) - { - memcpy( psShape->padfM + i, - pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); - } - } - - } - -/* ==================================================================== */ -/* Extract vertices for a MultiPoint. */ -/* ==================================================================== */ - else if( psShape->nSHPType == SHPT_MULTIPOINT - || psShape->nSHPType == SHPT_MULTIPOINTM - || psShape->nSHPType == SHPT_MULTIPOINTZ ) - { - int32 nPoints; - int i, nOffset; - - memcpy( &nPoints, pabyRec + 44, 4 ); - if( bBigEndian ) SwapWord( 4, &nPoints ); - - psShape->nVertices = nPoints; - psShape->padfX = (double *) calloc(nPoints,sizeof(double)); - psShape->padfY = (double *) calloc(nPoints,sizeof(double)); - psShape->padfZ = (double *) calloc(nPoints,sizeof(double)); - psShape->padfM = (double *) calloc(nPoints,sizeof(double)); - - for( i = 0; i < nPoints; i++ ) - { - memcpy(psShape->padfX+i, pabyRec + 48 + 16 * i, 8 ); - memcpy(psShape->padfY+i, pabyRec + 48 + 16 * i + 8, 8 ); - - if( bBigEndian ) SwapWord( 8, psShape->padfX + i ); - if( bBigEndian ) SwapWord( 8, psShape->padfY + i ); - } - - nOffset = 48 + 16*nPoints; - -/* -------------------------------------------------------------------- */ -/* Get the X/Y bounds. */ -/* -------------------------------------------------------------------- */ - memcpy( &(psShape->dfXMin), pabyRec + 8 + 4, 8 ); - memcpy( &(psShape->dfYMin), pabyRec + 8 + 12, 8 ); - memcpy( &(psShape->dfXMax), pabyRec + 8 + 20, 8 ); - memcpy( &(psShape->dfYMax), pabyRec + 8 + 28, 8 ); - - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) ); - -/* -------------------------------------------------------------------- */ -/* If we have a Z coordinate, collect that now. */ -/* -------------------------------------------------------------------- */ - if( psShape->nSHPType == SHPT_MULTIPOINTZ ) - { - memcpy( &(psShape->dfZMin), pabyRec + nOffset, 8 ); - memcpy( &(psShape->dfZMax), pabyRec + nOffset + 8, 8 ); - - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) ); - - for( i = 0; i < nPoints; i++ ) - { - memcpy( psShape->padfZ + i, - pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfZ + i ); - } - - nOffset += 16 + 8*nPoints; - } - -/* -------------------------------------------------------------------- */ -/* If we have a M measure value, then read it now. We assume */ -/* that the measure can be present for any shape if the size is */ -/* big enough, but really it will only occur for the Z shapes */ -/* (options), and the M shapes. */ -/* -------------------------------------------------------------------- */ - if( psSHP->panRecSize[hEntity]+8 >= nOffset + 16 + 8*nPoints ) - { - memcpy( &(psShape->dfMMin), pabyRec + nOffset, 8 ); - memcpy( &(psShape->dfMMax), pabyRec + nOffset + 8, 8 ); - - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) ); - if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) ); - - for( i = 0; i < nPoints; i++ ) - { - memcpy( psShape->padfM + i, - pabyRec + nOffset + 16 + i*8, 8 ); - if( bBigEndian ) SwapWord( 8, psShape->padfM + i ); - } - } - } - -/* ==================================================================== */ -/* Extract vertices for a point. */ -/* ==================================================================== */ - else if( psShape->nSHPType == SHPT_POINT - || psShape->nSHPType == SHPT_POINTM - || psShape->nSHPType == SHPT_POINTZ ) - { - int nOffset; - - psShape->nVertices = 1; - psShape->padfX = (double *) calloc(1,sizeof(double)); - psShape->padfY = (double *) calloc(1,sizeof(double)); - psShape->padfZ = (double *) calloc(1,sizeof(double)); - psShape->padfM = (double *) calloc(1,sizeof(double)); - - memcpy( psShape->padfX, pabyRec + 12, 8 ); - memcpy( psShape->padfY, pabyRec + 20, 8 ); - - if( bBigEndian ) SwapWord( 8, psShape->padfX ); - if( bBigEndian ) SwapWord( 8, psShape->padfY ); - - nOffset = 20 + 8; - -/* -------------------------------------------------------------------- */ -/* If we have a Z coordinate, collect that now. */ -/* -------------------------------------------------------------------- */ - if( psShape->nSHPType == SHPT_POINTZ ) - { - memcpy( psShape->padfZ, pabyRec + nOffset, 8 ); - - if( bBigEndian ) SwapWord( 8, psShape->padfZ ); - - nOffset += 8; - } - -/* -------------------------------------------------------------------- */ -/* If we have a M measure value, then read it now. We assume */ -/* that the measure can be present for any shape if the size is */ -/* big enough, but really it will only occur for the Z shapes */ -/* (options), and the M shapes. */ -/* -------------------------------------------------------------------- */ - if( psSHP->panRecSize[hEntity]+8 >= nOffset + 8 ) - { - memcpy( psShape->padfM, pabyRec + nOffset, 8 ); - - if( bBigEndian ) SwapWord( 8, psShape->padfM ); - } - -/* -------------------------------------------------------------------- */ -/* Since no extents are supplied in the record, we will apply */ -/* them from the single vertex. */ -/* -------------------------------------------------------------------- */ - psShape->dfXMin = psShape->dfXMax = psShape->padfX[0]; - psShape->dfYMin = psShape->dfYMax = psShape->padfY[0]; - psShape->dfZMin = psShape->dfZMax = psShape->padfZ[0]; - psShape->dfMMin = psShape->dfMMax = psShape->padfM[0]; - } - - return( psShape ); -} - -/************************************************************************/ -/* SHPTypeName() */ -/************************************************************************/ - -const char *SHPTypeName( int nSHPType ) - -{ - switch( nSHPType ) - { - case 0: - return "NullShape"; - - case SHPT_POINT: - return "Point"; - - case SHPT_ARC: - return "Arc"; - - case SHPT_POLYGON: - return "Polygon"; - - case SHPT_MULTIPOINT: - return "MultiPoint"; - - case SHPT_POINTZ: - return "PointZ"; - - case SHPT_ARCZ: - return "ArcZ"; - - case SHPT_POLYGONZ: - return "PolygonZ"; - - case SHPT_MULTIPOINTZ: - return "MultiPointZ"; - - case SHPT_POINTM: - return "PointM"; - - case SHPT_ARCM: - return "ArcM"; - - case SHPT_POLYGONM: - return "PolygonM"; - - case SHPT_MULTIPOINTM: - return "MultiPointM"; - - case SHPT_MULTIPATCH: - return "MultiPatch"; - - default: - return "UnknownShapeType"; - } -} - -/************************************************************************/ -/* SHPPartTypeName() */ -/************************************************************************/ - -const char *SHPPartTypeName( int nPartType ) - -{ - switch( nPartType ) - { - case SHPP_TRISTRIP: - return "TriangleStrip"; - - case SHPP_TRIFAN: - return "TriangleFan"; - - case SHPP_OUTERRING: - return "OuterRing"; - - case SHPP_INNERRING: - return "InnerRing"; - - case SHPP_FIRSTRING: - return "FirstRing"; - - case SHPP_RING: - return "Ring"; - - default: - return "UnknownPartType"; - } -} - -/************************************************************************/ -/* SHPDestroyObject() */ -/************************************************************************/ - -void SHPDestroyObject( SHPObject * psShape ) - -{ - if( psShape == NULL ) - return; - - if( psShape->padfX != NULL ) - free( psShape->padfX ); - if( psShape->padfY != NULL ) - free( psShape->padfY ); - if( psShape->padfZ != NULL ) - free( psShape->padfZ ); - if( psShape->padfM != NULL ) - free( psShape->padfM ); - - if( psShape->panPartStart != NULL ) - free( psShape->panPartStart ); - if( psShape->panPartType != NULL ) - free( psShape->panPartType ); - - free( psShape ); -} diff --git a/plugins/fishing_spots/utils.c b/plugins/fishing_spots/utils.c deleted file mode 100644 index e8fad3fcf12a..000000000000 --- a/plugins/fishing_spots/utils.c +++ /dev/null @@ -1,98 +0,0 @@ -/* Taken from txt2dbf 1.0.2 by Frank Koormann, see - * http://www.usf.uni-osnabrueck.de/~fkoorman/software/dbftools.en.html - */ - -/* - * $Source$ - * - * $Author$ - * - * $Revision$ - * - * Description: utils.c - * collection of useful functions: - * - getline - * - do_nothing - * - tabtok - * explanations see below. * - * - */ - -#include "utils.h" - -/* getline -------------------------------------------------------------*/ -/* reads a line (limited by \n) out of stream fp, returns last - * char, esp eof */ -int getline(FILE *fp, char s[] ) -{ int c, i; - - i=0; - while ( (c=getc(fp))!=EOF && c!='\n' ) - s[i++]=c; - s[i]='\0'; - return c; -} - -/* do_nothing ----------------------------------------------------------*/ -/* dto. */ -void do_nothing( void ) -{ -} - -/* tabtok --------------------------------------------------------------*/ -/* like strtok, breaks a string in sequences delimited by tabs, but do not - * overreads sequences of directly followed tabs: like "\t\t\ttest" is - * divided by strtok into "test" but by tabtok into "", "", "", "test" */ -char *tabtok( char *s ) -{ - static char *b, *e; - - if ( s == NULL ) - b = e; - else - b = s; - - if ( b == NULL ) - return b; - else - e = b; - - while ( (*e != '\t') && (*e != '\0') ) - e++; - - if ( *e == '\0' ) - e = NULL; - else - *e = '\0', e++; - - return b; -} - -/* dtok --------------------------------------------------------------*/ -/* like strtok, breaks a string in sequences delimited by delim, but do not - * overreads sequences of directly followed delims: like "\t\t\ttest" is - * divided by strtok into "test" but by dtok into "", "", "", "test" */ -char *dtok( char *s, char delim ) -{ - static char *b, *e; - - if ( s == NULL ) - b = e; - else - b = s; - - if ( b == NULL ) - return b; - else - e = b; - - while ( (*e != delim ) && (*e != '\0') ) - e++; - - if ( *e == '\0' ) - e = NULL; - else - *e = '\0', e++; - - return b; -} diff --git a/plugins/fishing_spots/utils.h b/plugins/fishing_spots/utils.h deleted file mode 100644 index befd0203569a..000000000000 --- a/plugins/fishing_spots/utils.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Taken from txt2dbf 1.0.2 by Frank Koormann, see - * http://www.usf.uni-osnabrueck.de/~fkoorman/software/dbftools.en.html - */ - -/* - * $Source$ - * - * $Author$ - * - * $Revision$ - * - * Description: header of utils.c - * collection of useful functions: - * - getline - * - do_nothing - * - tabtok - * explanations see below. - */ - -#ifndef __utils__ -#define __utils__ - -#include -#include -#include - -/* global variables ----------------------------------------------------*/ -/* action of a program after evaluating the command line */ -#define ABORT 0 -#define EVALUATE 1 -#define LIST 2 - -/* function declaration ------------------------------------------------*/ - -/* getline: reads a line (limited by \n) out of stream fp, returns last - * char, esp eof */ -int getline(FILE *fp, char s[]); - -/* do_nothing: dto. */ -void do_nothing( void ); - -/* tabtok -------------------------------------------------------------- - * like strtok, breaks a string in sequences delimited by tabs, but do not - * overreads sequences of directly followed tabs: like "\t\t\ttest" is - * divided by strtok into "test" but by tabtok into "", "", "", "test" */ -char *tabtok( char *s ); - -/* dtok -------------------------------------------------------------- - * like strtok, breaks a string in sequences delimited by delim, but do not - * overreads sequences of directly followed delims: like "\t\t\ttest" is - * divided by strtok into "test", but by dtok into "", "", "", "test" */ -char *dtok( char *s , char delim ); - -#endif - diff --git a/plugins/http_server/COPYING b/plugins/http_server/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/http_server/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/http_server/INSTALL b/plugins/http_server/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/http_server/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/http_server/Makefile.am b/plugins/http_server/Makefile.am deleted file mode 100644 index 6066c5d2b311..000000000000 --- a/plugins/http_server/Makefile.am +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - - -AM_CXXFLAGS := $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CFLAGS) $(GDAL_CFLAGS) $(QGIS_CFLAGS) - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libHttpServer.la - -## qt designer user-interface files -plugin_UI = pluginguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = plugin.moc.cpp plugingui.moc.cpp httpdaemon.moc.cpp - - -libHttpServer_la_SOURCES = plugin.cpp \ - plugin.h \ - plugingui.cpp \ - plugingui.h \ - httpdaemon.cpp \ - httpdaemon.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libHttpServer_la_SOURCES = $(plugin_MOC) - -libHttpServer_la_LDFLAGS = -avoid-version -module $(QGIS_LDFLAGS) $(QT_LDADD) -lqgis - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm - - - - - diff --git a/plugins/http_server/Makefile.in b/plugins/http_server/Makefile.in deleted file mode 100644 index 3fb985f6e9f8..000000000000 --- a/plugins/http_server/Makefile.in +++ /dev/null @@ -1,632 +0,0 @@ -# Makefile.in generated by automake 1.7.6 from Makefile.am. -# @configure_input@ - -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . - -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_triplet = @host@ -pkglibdir = ${libdir} -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BOOST_PATH = @BOOST_PATH@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GDAL_CFLAGS = @GDAL_CFLAGS@ -GDAL_CONFIG = @GDAL_CONFIG@ -GDAL_LIBS = @GDAL_LIBS@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MOC = @MOC@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -QASSISTANTCLIENT_LDADD = @QASSISTANTCLIENT_LDADD@ -QEMBED = @QEMBED@ -QGIS_CFLAGS = @QGIS_CFLAGS@ -QGIS_CONFIG = @QGIS_CONFIG@ -QGIS_LDFLAGS = @QGIS_LDFLAGS@ -QT_CXXFLAGS = @QT_CXXFLAGS@ -QT_GUILINK = @QT_GUILINK@ -QT_LDADD = @QT_LDADD@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -UIC = @UIC@ -VERSION = @VERSION@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ - -libdir = ${prefix}/lib/qgis -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ - -AM_CXXFLAGS := $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CFLAGS) $(GDAL_CFLAGS) $(QGIS_CFLAGS) - -lib_LTLIBRARIES = libHttpServer.la - -plugin_UI = pluginguibase.ui - -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -plugin_MOC = plugin.moc.cpp plugingui.moc.cpp - -libHttpServer_la_SOURCES = plugin.cpp \ - plugin.h \ - plugingui.cpp \ - plugingui.h \ - httpdaemon.cpp \ - httpdaemon.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - - -nodist_libHttpServer_la_SOURCES = $(plugin_MOC) - -libHttpServer_la_LDFLAGS = -avoid-version -module $(QGIS_LDFLAGS) $(QT_LDADD) -lqgis - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -LTLIBRARIES = $(lib_LTLIBRARIES) - -libHttpServer_la_LIBADD = -am__objects_1 = pluginguibase.uic.lo -am__objects_2 = $(am__objects_1) -am__objects_3 = -am__objects_4 = $(am__objects_3) -am__objects_5 = pluginguibase.moc.uic.lo -am__objects_6 = $(am__objects_5) -am_libHttpServer_la_OBJECTS = plugin.lo plugingui.lo httpdaemon.lo \ - $(am__objects_2) $(am__objects_4) $(am__objects_6) -am__objects_7 = plugin.moc.lo plugingui.moc.lo -nodist_libHttpServer_la_OBJECTS = $(am__objects_7) -libHttpServer_la_OBJECTS = $(am_libHttpServer_la_OBJECTS) \ - $(nodist_libHttpServer_la_OBJECTS) - -DEFAULT_INCLUDES = -I. -I$(srcdir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/httpdaemon.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/plugin.Plo ./$(DEPDIR)/plugin.moc.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/plugingui.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/plugingui.moc.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/pluginguibase.moc.uic.Plo \ -@AMDEP_TRUE@ ./$(DEPDIR)/pluginguibase.uic.Plo -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ - $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DIST_SOURCES = $(libHttpServer_la_SOURCES) -DIST_COMMON = README COPYING INSTALL Makefile.am Makefile.in \ - acinclude.m4 aclocal.m4 config.guess config.sub configure \ - configure.ac depcomp install-sh ltmain.sh missing mkinstalldirs -SOURCES = $(libHttpServer_la_SOURCES) $(nodist_libHttpServer_la_SOURCES) - -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj - -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) - -$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -$(ACLOCAL_M4): configure.ac acinclude.m4 - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -libLTLIBRARIES_INSTALL = $(INSTALL) -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" = "$$p" && dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libHttpServer.la: $(libHttpServer_la_OBJECTS) $(libHttpServer_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libHttpServer_la_LDFLAGS) $(libHttpServer_la_OBJECTS) $(libHttpServer_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) core *.core - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpdaemon.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.moc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugingui.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugingui.moc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pluginguibase.moc.uic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pluginguibase.uic.Plo@am__quote@ - -distclean-depend: - -rm -rf ./$(DEPDIR) - -.cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -.cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` - -.cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ -@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ -@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@am__fastdepCXX_TRUE@ fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ETAGS = etags -ETAGSFLAGS = - -CTAGS = ctags -CTAGSFLAGS = - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique - -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - -top_distdir = . -distdir = $(PACKAGE)-$(VERSION) - -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } - -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print - -distdir: $(DISTFILES) - $(am__remove_distdir) - mkdir $(distdir) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkinstalldirs) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist dist-all: distdir - $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - $(am__remove_distdir) - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ - && rm -f $(distdir).tar.gz \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @echo "$(distdir).tar.gz is ready for distribution" | \ - sed 'h;s/./=/g;p;x;p;x' -distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) - -installdirs: - $(mkinstalldirs) $(DESTDIR)$(libdir) -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) -distclean-am: clean-am distclean-compile distclean-depend \ - distclean-generic distclean-libtool distclean-tags - -dvi: dvi-am - -dvi-am: - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-libLTLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags dist dist-all \ - dist-gzip distcheck distclean distclean-compile \ - distclean-depend distclean-generic distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-libLTLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ - pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ - uninstall-libLTLIBRARIES - - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/plugins/http_server/README b/plugins/http_server/README deleted file mode 100644 index e794b646a5e4..000000000000 --- a/plugins/http_server/README +++ /dev/null @@ -1,15 +0,0 @@ -############################################## - QGIS PLUGIN TEMPLATE DIRECTORY - - T.Sutton 2004 -############################################## - -Please do not edit the files in this directory -unless you know exactly what you are doing - -these files are used as the basis for creating -new plugins. Altering these files may break -the automated plugin template generation process. - -Please visit: http://mrcc.com/qgiswiki/PluginDevelopersGuide - -For more information on creating plugins. diff --git a/plugins/http_server/acinclude.m4 b/plugins/http_server/acinclude.m4 deleted file mode 100644 index 36d5243f72a7..000000000000 --- a/plugins/http_server/acinclude.m4 +++ /dev/null @@ -1,229 +0,0 @@ -# Check for Qt compiler flags, linker flags, and binary packages -AC_DEFUN([gw_CHECK_QT], -[ -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PATH_X]) - -AC_MSG_CHECKING([QTDIR]) -AC_ARG_WITH([qtdir], [ --with-qtdir=DIR Qt installation directory [default=$QTDIR]], QTDIR=$withval) -# Check that QTDIR is defined or that --with-qtdir given -if test x"$QTDIR" = x ; then - QT_SEARCH="/usr/lib/qt31 /usr/local/qt31 /usr/lib/qt3 /usr/local/qt3 /usr/lib/qt2 /usr/local/qt2 /usr/lib/qt /usr/local/qt" - for i in $QT_SEARCH; do - if test -f $i/include/qglobal.h -a x$QTDIR = x; then QTDIR=$i; fi - done -fi -if test x"$QTDIR" = x ; then - AC_MSG_ERROR([*** QTDIR must be defined, or --with-qtdir option given]) -fi -AC_MSG_RESULT([$QTDIR]) - -# Change backslashes in QTDIR to forward slashes to prevent escaping -# problems later on in the build process, mainly for Cygwin build -# environment using MSVC as the compiler -# TODO: Use sed instead of perl -QTDIR=`echo $QTDIR | perl -p -e 's/\\\\/\\//g'` - -# Figure out which version of Qt we are using -AC_MSG_CHECKING([Qt version]) -QT_VER=`grep 'define.*QT_VERSION_STR\W' $QTDIR/include/qglobal.h | perl -p -e 's/\D//g'` -case "${QT_VER}" in - 33*) - QT_MAJOR="3" - ;; - 32*) - QT_MAJOR="3" - ;; - 31*) - QT_MAJOR="3" - ;; - *) - AC_MSG_ERROR([*** Qt version 3.1.x or higher is required]) - ;; -esac -AC_MSG_RESULT([$QT_VER ($QT_MAJOR)]) - -# Check that moc is in path -AC_CHECK_PROG(MOC, moc, moc) -if test x$MOC = x ; then - AC_MSG_ERROR([*** moc must be in path]) -fi - -# uic is the Qt user interface compiler -AC_CHECK_PROG(UIC, uic, uic) -if test x$UIC = x ; then - AC_MSG_ERROR([*** uic must be in path]) -fi - -# qembed is the Qt data embedding utility. -# It is located in $QTDIR/tools/qembed, and must be compiled and installed -# manually, we'll let it slide if it isn't present -AC_CHECK_PROG(QEMBED, qembed, qembed) - - -# Calculate Qt include path -QT_CXXFLAGS="-I$QTDIR/include" - -QT_IS_EMBEDDED="no" -# On unix, figure out if we're doing a static or dynamic link - -case "${host}" in - *-cygwin) - AC_DEFINE_UNQUOTED(WIN32, "", Defined if on Win32 platform) - echo "$QTDIR/lib/qt-mt$QT_VER.lib" - if test -f "$QTDIR/lib/qt-mt$QT_VER.lib" ; then - QT_LIB="qt-mt$QT_VER.lib" - QT_IS_STATIC="no" - QT_IS_MT="yes" - - elif test -f "$QTDIR/lib/qt$QT_VER.lib" ; then - QT_LIB="qt$QT_VER.lib" - QT_IS_STATIC="no" - QT_IS_MT="no" - elif test -f "$QTDIR/lib/qt.lib" ; then - QT_LIB="qt.lib" - QT_IS_STATIC="yes" - QT_IS_MT="no" - elif test -f "$QTDIR/lib/qt-mt.lib" ; then - QT_LIB="qt-mt.lib" - QT_IS_STATIC="yes" - QT_IS_MT="yes" - fi - ;; - - *) - # determin static or dynamic -- prefer dynamic - QT_IS_DYNAMIC=`ls $QTDIR/lib/libqt*.so 2> /dev/null` - - if test "x$QT_IS_DYNAMIC" = x; then - QT_IS_STATIC=`ls $QTDIR/lib/libqt*.a 2> /dev/null` - if test "x$QT_IS_STATIC" = x; then - QT_IS_STATIC="no" - AC_MSG_ERROR([*** Couldn't find any Qt libraries]) - else - QT_IS_STATIC="yes" - fi - else - QT_IS_STATIC="no" - fi - # set link parameters based on shared/mt libs or static lib - if test "x`ls $QTDIR/lib/libqt.a* 2> /dev/null`" != x ; then - QT_LIB="-lqt" - QT_IS_MT="no" - elif test "x`ls $QTDIR/lib/libqt-mt.so* 2> /dev/null`" != x ; then - QT_LIB="-lqt-mt" - QT_IS_MT="yes" - elif test "x`ls $QTDIR/lib/libqt.so* 2> /dev/null`" != x ; then - QT_LIB="-lqt" - QT_IS_MT="no" - elif test "x`ls $QTDIR/lib/libqte.* 2> /dev/null`" != x ; then - QT_LIB="-lqte" - QT_IS_MT="no" - QT_IS_EMBEDDED="yes" - elif test "x`ls $QTDIR/lib/libqte-mt.* 2> /dev/null`" != x ; then - QT_LIB="-lqte-mt" - QT_IS_MT="yes" - QT_IS_EMBEDDED="yes" - fi - ;; -esac -#echo "QT_LIB is $QT_LIB" -AC_MSG_CHECKING([if Qt is static]) -AC_MSG_RESULT([$QT_IS_STATIC]) -AC_MSG_CHECKING([if Qt is multithreaded]) -AC_MSG_RESULT([$QT_IS_MT]) -AC_MSG_CHECKING([if Qt is embedded]) -AC_MSG_RESULT([$QT_IS_EMBEDDED]) - -QT_GUILINK="" -QASSISTANTCLIENT_LDADD="-lqassistantclient" -#echo "host is ${host}" -case "${host}" in - *irix*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE" - fi - ;; - - *linux*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes && test $QT_IS_EMBEDDED = no; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -ldl -ljpeg" - fi - ;; - - - *osf*) - # Digital Unix (aka DGUX aka Tru64) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE" - fi - ;; - - *solaris*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -lresolv -lsocket -lnsl" - fi - ;; - - - *win*) - # linker flag to suppress console when linking a GUI app on Win32 - QT_GUILINK="/subsystem:windows" - - if test $QT_MAJOR = "3" ; then - if test $QT_IS_MT = yes ; then - QT_LIBS="/nodefaultlib:libcmt" - else - QT_LIBS="/nodefaultlib:libc" - fi - fi - - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS $QT_LIB kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib shell32.lib imm32.lib advapi32.lib wsock32.lib winspool.lib winmm.lib netapi32.lib" - if test $QT_MAJOR = "3" ; then - QT_LIBS="$QT_LIBS qtmain.lib" - fi - else - QT_LIBS="$QT_LIBS $QT_LIB" - if test $QT_MAJOR = "3" ; then - QT_CXXFLAGS="$QT_CXXFLAGS -DQT_DLL" - QT_LIBS="$QT_LIBS qtmain.lib qui.lib user32.lib netapi32.lib" - fi - fi - QASSISTANTCLIENT_LDADD="qassistantclient.lib" - ;; - -esac - -if test x"$QT_IS_EMBEDDED" = "xyes" ; then - QT_CXXFLAGS="-DQWS $QT_CXXFLAGS" -fi - -if test x"$QT_IS_MT" = "xyes" ; then - QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -DQT_THREAD_SUPPORT" -fi - -QT_LDADD="-L$QTDIR/lib $QT_LIBS" - -if test x$QT_IS_STATIC = xyes ; then - OLDLIBS="$LIBS" - LIBS="$QT_LDADD" - AC_CHECK_LIB(Xft, XftFontOpen, QT_LDADD="$QT_LDADD -lXft") - LIBS="$LIBS" -fi - -AC_MSG_CHECKING([QT_CXXFLAGS]) -AC_MSG_RESULT([$QT_CXXFLAGS]) -AC_MSG_CHECKING([QT_LDADD]) -AC_MSG_RESULT([$QT_LDADD]) - -AC_SUBST(QT_CXXFLAGS) -AC_SUBST(QT_LDADD) -AC_SUBST(QT_GUILINK) -AC_SUBST(QASSISTANTCLIENT_LDADD) - -]) diff --git a/plugins/http_server/aclocal.m4 b/plugins/http_server/aclocal.m4 deleted file mode 100644 index ae4e6bc39ec9..000000000000 --- a/plugins/http_server/aclocal.m4 +++ /dev/null @@ -1,6904 +0,0 @@ -# generated automatically by aclocal 1.7.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Check for Qt compiler flags, linker flags, and binary packages -AC_DEFUN([gw_CHECK_QT], -[ -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PATH_X]) - -AC_MSG_CHECKING([QTDIR]) -AC_ARG_WITH([qtdir], [ --with-qtdir=DIR Qt installation directory [default=$QTDIR]], QTDIR=$withval) -# Check that QTDIR is defined or that --with-qtdir given -if test x"$QTDIR" = x ; then - QT_SEARCH="/usr/lib/qt31 /usr/local/qt31 /usr/lib/qt3 /usr/local/qt3 /usr/lib/qt2 /usr/local/qt2 /usr/lib/qt /usr/local/qt" - for i in $QT_SEARCH; do - if test -f $i/include/qglobal.h -a x$QTDIR = x; then QTDIR=$i; fi - done -fi -if test x"$QTDIR" = x ; then - AC_MSG_ERROR([*** QTDIR must be defined, or --with-qtdir option given]) -fi -AC_MSG_RESULT([$QTDIR]) - -# Change backslashes in QTDIR to forward slashes to prevent escaping -# problems later on in the build process, mainly for Cygwin build -# environment using MSVC as the compiler -# TODO: Use sed instead of perl -QTDIR=`echo $QTDIR | perl -p -e 's/\\\\/\\//g'` - -# Figure out which version of Qt we are using -AC_MSG_CHECKING([Qt version]) -QT_VER=`grep 'define.*QT_VERSION_STR\W' $QTDIR/include/qglobal.h | perl -p -e 's/\D//g'` -case "${QT_VER}" in - 33*) - QT_MAJOR="3" - ;; - 32*) - QT_MAJOR="3" - ;; - 31*) - QT_MAJOR="3" - ;; - *) - AC_MSG_ERROR([*** Qt version 3.1.x or higher is required]) - ;; -esac -AC_MSG_RESULT([$QT_VER ($QT_MAJOR)]) - -# Check that moc is in path -AC_CHECK_PROG(MOC, moc, moc) -if test x$MOC = x ; then - AC_MSG_ERROR([*** moc must be in path]) -fi - -# uic is the Qt user interface compiler -AC_CHECK_PROG(UIC, uic, uic) -if test x$UIC = x ; then - AC_MSG_ERROR([*** uic must be in path]) -fi - -# qembed is the Qt data embedding utility. -# It is located in $QTDIR/tools/qembed, and must be compiled and installed -# manually, we'll let it slide if it isn't present -AC_CHECK_PROG(QEMBED, qembed, qembed) - - -# Calculate Qt include path -QT_CXXFLAGS="-I$QTDIR/include" - -QT_IS_EMBEDDED="no" -# On unix, figure out if we're doing a static or dynamic link - -case "${host}" in - *-cygwin) - AC_DEFINE_UNQUOTED(WIN32, "", Defined if on Win32 platform) - echo "$QTDIR/lib/qt-mt$QT_VER.lib" - if test -f "$QTDIR/lib/qt-mt$QT_VER.lib" ; then - QT_LIB="qt-mt$QT_VER.lib" - QT_IS_STATIC="no" - QT_IS_MT="yes" - - elif test -f "$QTDIR/lib/qt$QT_VER.lib" ; then - QT_LIB="qt$QT_VER.lib" - QT_IS_STATIC="no" - QT_IS_MT="no" - elif test -f "$QTDIR/lib/qt.lib" ; then - QT_LIB="qt.lib" - QT_IS_STATIC="yes" - QT_IS_MT="no" - elif test -f "$QTDIR/lib/qt-mt.lib" ; then - QT_LIB="qt-mt.lib" - QT_IS_STATIC="yes" - QT_IS_MT="yes" - fi - ;; - - *) - # determin static or dynamic -- prefer dynamic - QT_IS_DYNAMIC=`ls $QTDIR/lib/libqt*.so 2> /dev/null` - - if test "x$QT_IS_DYNAMIC" = x; then - QT_IS_STATIC=`ls $QTDIR/lib/libqt*.a 2> /dev/null` - if test "x$QT_IS_STATIC" = x; then - QT_IS_STATIC="no" - AC_MSG_ERROR([*** Couldn't find any Qt libraries]) - else - QT_IS_STATIC="yes" - fi - else - QT_IS_STATIC="no" - fi - # set link parameters based on shared/mt libs or static lib - if test "x`ls $QTDIR/lib/libqt.a* 2> /dev/null`" != x ; then - QT_LIB="-lqt" - QT_IS_MT="no" - elif test "x`ls $QTDIR/lib/libqt-mt.so* 2> /dev/null`" != x ; then - QT_LIB="-lqt-mt" - QT_IS_MT="yes" - elif test "x`ls $QTDIR/lib/libqt.so* 2> /dev/null`" != x ; then - QT_LIB="-lqt" - QT_IS_MT="no" - elif test "x`ls $QTDIR/lib/libqte.* 2> /dev/null`" != x ; then - QT_LIB="-lqte" - QT_IS_MT="no" - QT_IS_EMBEDDED="yes" - elif test "x`ls $QTDIR/lib/libqte-mt.* 2> /dev/null`" != x ; then - QT_LIB="-lqte-mt" - QT_IS_MT="yes" - QT_IS_EMBEDDED="yes" - fi - ;; -esac -#echo "QT_LIB is $QT_LIB" -AC_MSG_CHECKING([if Qt is static]) -AC_MSG_RESULT([$QT_IS_STATIC]) -AC_MSG_CHECKING([if Qt is multithreaded]) -AC_MSG_RESULT([$QT_IS_MT]) -AC_MSG_CHECKING([if Qt is embedded]) -AC_MSG_RESULT([$QT_IS_EMBEDDED]) - -QT_GUILINK="" -QASSISTANTCLIENT_LDADD="-lqassistantclient" -#echo "host is ${host}" -case "${host}" in - *irix*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE" - fi - ;; - - *linux*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes && test $QT_IS_EMBEDDED = no; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -ldl -ljpeg" - fi - ;; - - - *osf*) - # Digital Unix (aka DGUX aka Tru64) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE" - fi - ;; - - *solaris*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -lresolv -lsocket -lnsl" - fi - ;; - - - *win*) - # linker flag to suppress console when linking a GUI app on Win32 - QT_GUILINK="/subsystem:windows" - - if test $QT_MAJOR = "3" ; then - if test $QT_IS_MT = yes ; then - QT_LIBS="/nodefaultlib:libcmt" - else - QT_LIBS="/nodefaultlib:libc" - fi - fi - - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS $QT_LIB kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib shell32.lib imm32.lib advapi32.lib wsock32.lib winspool.lib winmm.lib netapi32.lib" - if test $QT_MAJOR = "3" ; then - QT_LIBS="$QT_LIBS qtmain.lib" - fi - else - QT_LIBS="$QT_LIBS $QT_LIB" - if test $QT_MAJOR = "3" ; then - QT_CXXFLAGS="$QT_CXXFLAGS -DQT_DLL" - QT_LIBS="$QT_LIBS qtmain.lib qui.lib user32.lib netapi32.lib" - fi - fi - QASSISTANTCLIENT_LDADD="qassistantclient.lib" - ;; - -esac - -if test x"$QT_IS_EMBEDDED" = "xyes" ; then - QT_CXXFLAGS="-DQWS $QT_CXXFLAGS" -fi - -if test x"$QT_IS_MT" = "xyes" ; then - QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -DQT_THREAD_SUPPORT" -fi - -QT_LDADD="-L$QTDIR/lib $QT_LIBS" - -if test x$QT_IS_STATIC = xyes ; then - OLDLIBS="$LIBS" - LIBS="$QT_LDADD" - AC_CHECK_LIB(Xft, XftFontOpen, QT_LDADD="$QT_LDADD -lXft") - LIBS="$LIBS" -fi - -AC_MSG_CHECKING([QT_CXXFLAGS]) -AC_MSG_RESULT([$QT_CXXFLAGS]) -AC_MSG_CHECKING([QT_LDADD]) -AC_MSG_RESULT([$QT_LDADD]) - -AC_SUBST(QT_CXXFLAGS) -AC_SUBST(QT_LDADD) -AC_SUBST(QT_GUILINK) -AC_SUBST(QASSISTANTCLIENT_LDADD) - -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 10 - -AC_PREREQ([2.54]) - -# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow -# the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl - -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# Copyright 2002 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.7.6])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright 2001, 2002 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# -*- Autoconf -*- - - -# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_AUX_DIR_EXPAND - -# Copyright 2001 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -# Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50]) - -AC_DEFUN([AM_AUX_DIR_EXPAND], [ -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright 2001 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright 2001 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# -*- Autoconf -*- -# Copyright (C) 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# serial 5 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - : > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # (even with -Werror). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking Speeds up one-time builds - --enable-dependency-tracking Do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 5 - -AC_PREREQ(2.52) - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]) -fi])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - -# serial 47 AC_PROG_LIBTOOL - - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If this macro is not defined by Autoconf, define it here. -m4_ifdef([AC_PROVIDE_IFELSE], - [], - [m4_define([AC_PROVIDE_IFELSE], - [m4_ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) - - -# AC_PROG_LIBTOOL -# --------------- -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. - AC_PROVIDE_IFELSE([AC_PROG_CXX], - [AC_LIBTOOL_CXX], - [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX - ])]) -dnl And a similar setup for Fortran 77 support - AC_PROVIDE_IFELSE([AC_PROG_F77], - [AC_LIBTOOL_F77], - [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -])]) - -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. - AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [ifdef([AC_PROG_GCJ], - [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([A][M_PROG_GCJ], - [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([LT_AC_PROG_GCJ], - [define([LT_AC_PROG_GCJ], - defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -])])# AC_PROG_LIBTOOL - - -# _AC_PROG_LIBTOOL -# ---------------- -AC_DEFUN([_AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -])# _AC_PROG_LIBTOOL - - -# AC_LIBTOOL_SETUP -# ---------------- -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl - -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl - -AC_LIBTOOL_SYS_MAX_CMD_LEN -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -AC_CHECK_TOOL(AR, ar, false) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -AC_ARG_WITH([pic], - [AC_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -AC_LIBTOOL_LANG_C_CONFIG -_LT_AC_TAGCONFIG -])# AC_LIBTOOL_SETUP - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -AC_DEFUN([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -])])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - ]) -esac - -need_locks="$enable_libtool_lock" - -])# _LT_AC_LOCK - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - ifelse([$5], , :, [$5]) -else - ifelse([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - else - $2=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - testring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ - = "XX$testring") >/dev/null 2>&1 && - new_result=`expr "X$testring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - testring=$testring$testring - done - testring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h)dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . - $rm conftest* out/* - rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - case $LD in # libtool.m4 will add one of these switches to LD - *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*) - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64" - sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64" - ;; - esac - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_ARG_WITH([tags], - [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], - [include additional configurations @<:@automatic@:>@])], - [tagnames="$withval"]) - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - AC_MSG_WARN([output file `$ofile' does not exist]) - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) - else - AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) - fi - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in - "") ;; - *) AC_MSG_ERROR([invalid tag name: $tagname]) - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - AC_MSG_ERROR([tag name \"$tagname\" already exists]) - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then - AC_LIBTOOL_LANG_CXX_CONFIG - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - AC_LIBTOOL_LANG_F77_CONFIG - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - AC_LIBTOOL_LANG_GCJ_CONFIG - else - tagname="" - fi - ;; - - RC) - AC_LIBTOOL_LANG_RC_CONFIG - ;; - - *) - AC_MSG_ERROR([Unsupported tag name: $tagname]) - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - AC_MSG_ERROR([unable to update list of available tagged configurations.]) - fi -fi -])# _LT_AC_TAGCONFIG - - -# AC_LIBTOOL_DLOPEN -# ----------------- -# enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_DLOPEN - - -# AC_LIBTOOL_WIN32_DLL -# -------------------- -# declare package support for building win32 dll's -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_WIN32_DLL - - -# AC_ENABLE_SHARED([DEFAULT]) -# --------------------------- -# implement the --enable-shared flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([shared], - [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -])# AC_ENABLE_SHARED - - -# AC_DISABLE_SHARED -# ----------------- -#- set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no) -])# AC_DISABLE_SHARED - - -# AC_ENABLE_STATIC([DEFAULT]) -# --------------------------- -# implement the --enable-static flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([static], - [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]AC_ENABLE_STATIC_DEFAULT) -])# AC_ENABLE_STATIC - - -# AC_DISABLE_STATIC -# ----------------- -# set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no) -])# AC_DISABLE_STATIC - - -# AC_ENABLE_FAST_INSTALL([DEFAULT]) -# --------------------------------- -# implement the --enable-fast-install flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([fast-install], - [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -])# AC_ENABLE_FAST_INSTALL - - -# AC_DISABLE_FAST_INSTALL -# ----------------------- -# set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no) -])# AC_DISABLE_FAST_INSTALL - - -# AC_LIBTOOL_PICMODE([MODE]) -# -------------------------- -# implement the --with-pic flag -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default) -])# AC_LIBTOOL_PICMODE - - -# AC_PROG_EGREP -# ------------- -# This is predefined starting with Autoconf 2.54, so this conditional -# definition can be removed once we require Autoconf 2.54 or later. -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -])]) - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the path to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AC_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no]) -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - irix5* | nonstopux*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - case $host_cpu in - alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' - else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' - fi - ;; - -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the path to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -])# AC_PROG_NM - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_CXX -# -------------- -# enable support for C++ libraries -AC_DEFUN([AC_LIBTOOL_CXX], -[AC_REQUIRE([_LT_AC_LANG_CXX]) -])# AC_LIBTOOL_CXX - - -# _LT_AC_LANG_CXX -# --------------- -AC_DEFUN([_LT_AC_LANG_CXX], -[AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`]) -])# _LT_AC_LANG_CXX - - -# AC_LIBTOOL_F77 -# -------------- -# enable support for Fortran 77 libraries -AC_DEFUN([AC_LIBTOOL_F77], -[AC_REQUIRE([_LT_AC_LANG_F77]) -])# AC_LIBTOOL_F77 - - -# _LT_AC_LANG_F77 -# --------------- -AC_DEFUN([_LT_AC_LANG_F77], -[AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,F77" | sed 's/^,//'`]) -])# _LT_AC_LANG_F77 - - -# AC_LIBTOOL_GCJ -# -------------- -# enable support for GCJ libraries -AC_DEFUN([AC_LIBTOOL_GCJ], -[AC_REQUIRE([_LT_AC_LANG_GCJ]) -])# AC_LIBTOOL_GCJ - - -# _LT_AC_LANG_GCJ -# --------------- -AC_DEFUN([_LT_AC_LANG_GCJ], -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], - [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], - [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], - [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,GCJ" | sed 's/^,//'`]) -])# _LT_AC_LANG_GCJ - - -# AC_LIBTOOL_RC -# -------------- -# enable support for Windows resource files -AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,RC" | sed 's/^,//'`]) -])# AC_LIBTOOL_RC - - -# AC_LIBTOOL_LANG_C_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -AC_DEFUN([_LT_AC_LANG_C_CONFIG], -[lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - -_LT_AC_SYS_COMPILER - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - - -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_DLOPEN_SELF($1) - -# Report which librarie types wil actually be built -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_C_CONFIG - - -# AC_LIBTOOL_LANG_CXX_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -_LT_AC_TAGVAR(ld_shlibs, $1)=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; - - dgux*) - case $cc_basename in - ec++) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - linux*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc) - # Intel C++ - with_gnu_ld=yes - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - cxx) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - osf3*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$GXX" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_POSTDEP_PREDEP($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# AC_LIBTOOL_LANG_CXX_CONFIG - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" -ifelse([$1], [], -[#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 1996 -# -# 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG], -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) - -# Is the compiler the GNU C compiler? -with_gcc=$_LT_AC_TAGVAR(GCC, $1) - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_[]_LT_AC_TAGVAR(LD, $1) - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS=$lt_AS - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext='$shrext' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) - -# Commands used to build and install a shared archive. -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" - -# Set to yes if exported symbols are required. -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) - -# The commands to list exported symbols. -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) - -# Symbols that must always be exported. -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) - -ifelse([$1],[], -[# ### END LIBTOOL CONFIG], -[# ### END LIBTOOL TAG CONFIG: $tagname]) - -__EOF__ - -ifelse([$1],[], [ - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -]) -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - test -f Makefile && make "$ltmain" -fi -])# AC_LIBTOOL_CONFIG - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGISTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) - ifelse([$1],[CXX],[ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux*) - case $CC in - icc|ecc) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - ccc) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" - ;; -esac -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -ifelse([$1],[CXX],[ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -],[ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi4*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; - - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_AC_FILE_LTDLL_C -# ------------------- -# Be careful that the start marker always follows a newline. -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ -])# _LT_AC_FILE_LTDLL_C - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) - - -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) - -AC_DEFUN([LT_AC_PROG_GCJ], -[AC_CHECK_TOOL(GCJ, gcj, no) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS) -]) - -AC_DEFUN([LT_AC_PROG_RC], -[AC_CHECK_TOOL(RC, windres, no) -]) - -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -SED=$lt_cv_path_SED -]) -AC_MSG_RESULT([$SED]) -]) - diff --git a/plugins/http_server/autogen.sh b/plugins/http_server/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/http_server/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/http_server/configure.ac b/plugins/http_server/configure.ac deleted file mode 100644 index ecfa89f65eaf..000000000000 --- a/plugins/http_server/configure.ac +++ /dev/null @@ -1,78 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(plugin, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([plugingui.h]) - -AM_INIT_AUTOMAKE(plugin, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -gw_CHECK_QT - - -dnl -dnl Look for qgis headers -dnl -dnl XXX -DQGISDEBUG should be added iff --enable-debug is true -dnl -AC_CHECK_PROG( QGIS_CONFIG, qgis-config, yes, - AC_MSG_ERROR([No Qgis C++ library -- get from http://qgis.sf.net/]) ) - -QGIS_CFLAGS="`qgis-config --cflags`" -QGIS_LDFLAGS="`qgis-config --libs`" - -dnl must add Qt header search path as qgis headers, in turn, include Qt stuff -saved_CPPFLAGS=$CPPFLAGS -CPPFLAGS="$CPPFLAGS $QT_CXXFLAGS $QGIS_CFLAGS" - -AC_CHECK_HEADER([qgis/qgsfeature.h],, - AC_MSG_ERROR([No Qgis C++ library -- get from http://qgis.sf.net/])) - -CPPFLAGS=$saved_CPPFLAGS -dnl XXX add check for successful link against library - - -dnl -dnl Look for Frank Warmerdam's GDAL library -dnl - -AC_CHECK_PROG( GDAL_CONFIG, gdal-config, yes, - AC_MSG_ERROR([No GDAL library. Get from http://remotesensing.org/gdal/]) ) - - -if test $GDAL_CONFIG = "yes"; then - GDAL_CFLAGS=`gdal-config --cflags` - GDAL_LIBS=`gdal-config --libs` -fi - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(QGIS_CFLAGS) -AC_SUBST(QGIS_LDFLAGS) -AC_SUBST(BOOST_PATH) -AC_SUBST(GDAL_CFLAGS) -AC_SUBST(GDAL_LIBS) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/http_server/httpdaemon.cpp b/plugins/http_server/httpdaemon.cpp deleted file mode 100644 index e2c271faba31..000000000000 --- a/plugins/http_server/httpdaemon.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/**************************************************************************** - * ** $Id$ - * ** - * ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. - * ** - * ** This file is part of an example program for Qt. This example - * ** program may be used, distributed and modified without limitation. - * ** - * ** Modified from QT Original example for use as a QGIS web server engine - * *****************************************************************************/ - -#include "httpdaemon.h" -#include -#include -#include -#include -#include -// HttpDaemon is the the class that implements the simple HTTP server. -HttpDaemon::HttpDaemon( QObject* parent ) : QServerSocket(8081,1,parent) -{ - if ( !ok() ) - { - qWarning("Failed to bind to port 8081"); - exit( 1 ); - } -} -HttpDaemon::~HttpDaemon() -{ -} -// -// Accessors and mutators -// - -void HttpDaemon::setProject(QString theProject) -{ - mProject=theProject; -} - -QString HttpDaemon::project() -{ - return mProject; -} - -void HttpDaemon::setBasePath(QString theBasePath) -{ - mBasePath=theBasePath; -} -QString HttpDaemon::basePath() -{ - return mBasePath; -} - - -// -// Web Server Functions -// -void HttpDaemon::newConnection( int theSocket ) -{ - // When a new client connects, the server constructs a QSocket and all - // communication with the client is done over this QSocket. QSocket - // works asynchronouslyl, this means that all the communication is done - // in the two slots readClient() and discardClient(). - QSocket* myQSocket = new QSocket( this ); - connect(myQSocket, SIGNAL(readyRead()), this, SLOT(readClient()) ); - connect(myQSocket, SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); - myQSocket->setSocket( theSocket ); - QTime myTime = QTime::currentTime(); - QString myTimeQString = myTime.toString("hh:mm:ss")+QString(": New connection established."); - emit newConnect( myTimeQString); -} - - -// private slots: -void HttpDaemon::readClient() -{ - // This slot is called when the client sent data to the server. The - // server looks if it was a get request and sends a very simple HTML - // document back. - QSocket*myQSocket = (QSocket*)sender(); - if (myQSocket->canReadLine() ) - { - QString myLineString = myQSocket->readLine(); - //emit the request we got so it can be logged - emit requestReceived(myLineString); - QStringList myTokens = QStringList::split( QRegExp("[ \n\r][ \n\r]*"),myLineString ); - if ( myTokens[0] == "GET" ) - { - emit requestReceived(QString("Get Request Received")); - //check if we got a reasonable request, if we didnt we will close the connection straightaway - if (myTokens[1]) - { - emit requestReceived(QString("Found at least one parameter to get request...")); - //strip off leading "/" - QString myTokenString = myTokens[1]; - myTokenString.replace(QRegExp("^/"),""); - //if the request is valid we will pass the request down to the plugin and - //defer closing the connection until the plugin responds - myTokens = QStringList::split( QString("="),myTokenString ); - //see if the key part is valid - myTokenString = myTokens[0]; - emit requestReceived(QString("Token 0 : ")+ myTokenString); - // - // Command : project - // - // the project command is used to load a .qgs project file - // this functionality may well be removed in the future. - // - if (myTokenString == "project") - { - //see if the value part is valid (it must include a .qgs file! - myTokenString = myTokens[1]; - if (myTokenString.right(4) != QString(".qgs")) - { - closeStreamWithError(QString("Project request made but no valid project parameter passed.")); - return; - } - mProject=myTokenString; - emit clearMap(); - requestCompleted(QString("Project now set to ") + myTokenString); - return; - } - - // Command : showProject - // - // This command will show the active project - it needs no parameters - // - else if (myTokenString == "showProject") - { - emit clearMap(); - emit showProject(mProject); - return; - } - - - // Command : showRasterLayer - // - // The show raster layer command is used to show a raster layer that exists - // on the server's file system. All paths will be relative to the - // HttpDaemon basePath member. Any ../ will be stripped out of the path - // to prevent the user requesting a file that is not below basePath. - // - // The mProject (if set) will be reloaded and the specified rasterLayer will - // be displayed over the top of that. - // - else if (myTokenString == "showRasterLayer") - { - myTokenString = myTokens[1]; - if (mProject=="" || mProject==NULL) - { - //load the raster on its own - emit clearMap(); - emit loadRasterFile(myTokenString); - } - else - { - //load it over the project - emit loadProject(mProject); - emit loadRasterFile(myTokenString,mProject); - } - } - // - // Command : showVectorLayer - // - // The show vector layer command is used to show a vector layer that exists - // on the server's file system. All paths will be relative to the - // HttpDaemon basePath member. Any ../ will be stripped out of the path - // to prevent the user requesting a file that is not below basePath. - // - // The mProject (if set) will be reloaded and the specified vector will - // be displayed over the top of that. - // - else if (myTokenString == "showVectorLayer") - { - myTokenString = myTokens[1]; - if (mProject=="" || mProject==NULL) - { - //load the vector on its own - emit clearMap(); - emit loadVectorFile(myTokenString); - } - else - { - //load it over the project - emit loadProject(mProject); - emit loadVectorFile(myTokenString,mProject); - } - } - else //something was wrong! - { - closeStreamWithError(QString("Request is not for a valid.")); - return; - } - } - else //request seems to be invalid - { - closeStreamWithError(QString("Get request passed without parameters!")); - return; - } - } - else - { - closeStreamWithError(QString("No get request passed")); - return; - } - } - else //just close the socket again because we cant do anything with it - { - closeStreamWithError(QString("Cant read line from socket!")); - return; - } -} -void HttpDaemon::discardClient() -{ - QSocket * myQSocket = (QSocket*)sender(); - delete myQSocket; - QTime myTime = QTime::currentTime(); - QString myTimeQString = myTime.toString("hh:mm:ss") + QString(": Client disconected."); - emit endConnect(myTimeQString); -} -void HttpDaemon::requestCompleted(QString theQString) -{ - QSocket * myQSocket = (QSocket*)sender(); - QTextStream myOutputStream( myQSocket ); - myOutputStream.setEncoding( QTextStream::UnicodeUTF8 ); - myOutputStream << "HTTP/1.0 200 Ok\r\n" - "Content-Type: text/html; charset=\"utf-8\"\r\n" - "\r\n" - "

    " << theQString << "

    \n"; - QTime myTime = QTime::currentTime(); - QString myTimeQString = myTime.toString("hh:mm:ss") + QString(": Ok - request completed"); - emit wroteToClient(myTimeQString); - myQSocket->close(); -} - -void HttpDaemon::requestCompleted( QPixmap *theQPixmap) -{ - QSocket * myQSocket = (QSocket*)sender(); - QByteArray myQByteArray; - QBuffer myQBuffer(myQByteArray); - myQBuffer.open(IO_WriteOnly); - theQPixmap->save(&myQBuffer, "PNG", 50); - myQBuffer.close(); - - QDataStream myQDataStream(myQSocket); - QString myResponseString; - myResponseString.append("HTTP/1.0 200 OK\n"); - myResponseString.append("Content-Type: image/png\n\n"); - myQSocket->writeBlock(myResponseString.ascii(), myResponseString.length()); - myQSocket->writeBlock(myQByteArray.data(), myQByteArray.size()); - myQSocket->close(); -} - - - -void HttpDaemon::closeStreamWithError(QString theErrorQString) -{ - QSocket * myQSocket = (QSocket*)sender(); - QTextStream myOutputStream( myQSocket ); - myOutputStream.setEncoding( QTextStream::UnicodeUTF8 ); - myOutputStream << "HTTP/1.0 200 Ok\r\n" - "Content-Type: text/html; charset=\"utf-8\"\r\n" - "\r\n" - "

    Your request was not recognised or had an unspecified error. If I was a rocket scientist and could intuitively fathom what you wanted me to do, I would do it, but I am not and I cant so I wont :-(

    \n"; - myOutputStream << "

    Error was: " << theErrorQString << "

    \n"; - QTime myTime = QTime::currentTime(); - QString myTimeQString = myTime.toString("hh:mm:ss") + - QString(": Error - No no request processed\n") + - theErrorQString; - emit wroteToClient(myTimeQString); - myQSocket->close(); -} diff --git a/plugins/http_server/httpdaemon.h b/plugins/http_server/httpdaemon.h deleted file mode 100644 index 68905941ddca..000000000000 --- a/plugins/http_server/httpdaemon.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** - * ** $Id$ - * ** - * ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. - * ** - * ** This file is part of an example program for Qt. This example - * ** program may be used, distributed and modified without limitation. - * ** - * ** Modified from QT Original example for use as a QGIS web server engine - * - * *****************************************************************************/ -#ifndef HTTPDAEMON -#define HTTPDAEMON - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// HttpDaemon is the the class that implements the simple HTTP server. -class HttpDaemon : public QServerSocket -{ - Q_OBJECT; -public: - HttpDaemon( QObject* parent=0 ); - ~HttpDaemon(); - void newConnection( int socket ); - //accessor and mutator for current project - void setProject(QString); - QString project(); - //accessor and mutator for base path - void setBasePath(QString); - QString basePath(); -signals: - void requestReceived(QString); //used to notify listeners when a web client connects - void showProject(QString); //loads the project file and sends result to browser - void loadProject(QString); //loads the project file but doesnt close connection so other stuff can be loaded - void loadRasterFile(QString);//loads a rasterfile on its own using defaults - void loadRasterFile(QString,QString);//loads a rasterfile (arg1) over the current project (arg2) - void loadVectorFile(QString);//loads a vector file on its own using defaults - void loadVectorFile(QString,QString);//loads a vectorfile (arg1) over the current project (arg2) - void setExtents(int,int,int,int);//zooms to x1,y1 - x2,y2 - void clearMap(); //remove all layers from the map - void newConnect(QString); //passed out - void endConnect(QString); //passed out - void wroteToClient(QString); //passed out - -public slots: - void requestCompleted(QString); //used to return text to the browser - void requestCompleted( QPixmap *theQPixmap); //used to return an image to the browser - void closeStreamWithError(QString); - -private slots: - void readClient(); - void discardClient(); -private: - QString mBasePath; - QString mProject; -}; -#endif diff --git a/plugins/http_server/icon.xpm b/plugins/http_server/icon.xpm deleted file mode 100644 index 6bfefdeae5af..000000000000 --- a/plugins/http_server/icon.xpm +++ /dev/null @@ -1,98 +0,0 @@ -/* XPM */ -static const char * icon[] = { -"22 22 73 1", -" c None", -". c #EAEAEA", -"+ c #E6E6E6", -"@ c #BDBDBD", -"# c #909090", -"$ c #707070", -"% c #818181", -"& c #ADADAD", -"* c #A7A7A7", -"= c #6F6F6F", -"- c #5F5F5F", -"; c #5D5D5D", -"> c #616161", -", c #5E5E5E", -"' c #626262", -") c #656565", -"! c #D4D4D4", -"~ c #808080", -"{ c #747474", -"] c #6E6E6E", -"^ c #737373", -"/ c #8A8A8A", -"( c #878787", -"_ c #6D6D6D", -": c #676767", -"< c #505050", -"[ c #4E4E4E", -"} c #848484", -"| c #1B1B1B", -"1 c #1F1F1F", -"2 c #242424", -"3 c #262626", -"4 c #2D2D2D", -"5 c #1D1D1D", -"6 c #1E1E1E", -"7 c #3C3C3C", -"8 c #3F3F3F", -"9 c #434343", -"0 c #4F4F4F", -"a c #484848", -"b c #2B2B2B", -"c c #292929", -"d c #3A3A3A", -"e c #5B5B5B", -"f c #494949", -"g c #191919", -"h c #212121", -"i c #232323", -"j c #282828", -"k c #2C2C2C", -"l c #222222", -"m c #3B3B3B", -"n c #404040", -"o c #1C1C1C", -"p c #1A1A1A", -"q c #323232", -"r c #606060", -"s c #989898", -"t c #181818", -"u c #393939", -"v c #C0C0C0", -"w c #7D7D7D", -"x c #272727", -"y c #202020", -"z c #838383", -"A c #4B4B4B", -"B c #686868", -"C c #E4E4E4", -"D c #C3C3C3", -"E c #B2B2B2", -"F c #A2A2A2", -"G c #919191", -"H c #AAAAAA", -" ", -" ", -" ", -" ", -" ", -" ", -" . ", -" +@#$%&*=-;>;,')% ", -" !~{]='-)^/(_))::)<[^ ", -" }|123145627890ab5cde ", -" fg61116666hi2jklmcn: ", -" -//#include -#include -#include "plugin.h" - - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include - -//the gui subclass -#include "plugingui.h" - -// xpm for creating the toolbar icon -#include "icon.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "HttpServer"; -static const char * const description_ = "A simple http server plugin that allows remote control of qgis."; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -Plugin::Plugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ - startServer(); -} - -Plugin::~Plugin() -{ - unload(); -} - -/* - * Initialize the GUI interface for the plugin - */ -void Plugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon),"&HttpServer", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Tools", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("QGis Http Server", QIconSet(icon), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Tools"); - toolBarPointer->setLabel("QGis Http Server"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void Plugin::help() -{ - //implement me! -} - -// Slot called when the menu item is activated -void Plugin::run() -{ - PluginGui *myPluginGui=new PluginGui(qgisMainWindowPointer,"QGis Http Server",true,0); - //listen for when the layer has been made so we can draw it - connect(mHttpDaemon, SIGNAL(newConnect(QString)), myPluginGui, SLOT(newConnect(QString))); - connect(mHttpDaemon, SIGNAL(endConnect(QString)), myPluginGui, SLOT(endConnect(QString))); - connect(mHttpDaemon, SIGNAL(wroteToClient(QString)), myPluginGui, SLOT(wroteToClient(QString))); - connect(mHttpDaemon, SIGNAL(requestReceived(QString)), myPluginGui, SLOT(requestReceived(QString))); - connect(myPluginGui, SIGNAL(setServerEnabled(bool)),this, SLOT(setEnabled(bool))); - myPluginGui->show(); -} - -// Unload the plugin by cleaning up the GUI -void Plugin::unload() -{ - //kill the web server daemon - stopServer(); - //delete mHttpDaemon; - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; - //kill any connections to this object - disconnect( this, 0, 0, 0 ); -} - -void Plugin::setEnabled (bool theFlag) -{ - if (theFlag) - { - stopServer(); - } - else - { - startServer(); - } -} - -void Plugin::startServer() -{ - mHttpDaemon = new HttpDaemon( this ); - connect(mHttpDaemon, SIGNAL(showProject(QString)), this, SLOT(showProject(QString))); - connect(mHttpDaemon, SIGNAL(loadRasterFile(QString)), this, SLOT(loadRasterFile(QString))); - connect(mHttpDaemon, SIGNAL(loadRasterFile(QString,QString)), this, SLOT(loadRasterFile(QString,QString))); - connect(mHttpDaemon, SIGNAL(loadVectorFile(QString)),this, SLOT(loadVectorFile(QString))) ; - connect(mHttpDaemon, SIGNAL(loadVectorFile(QString,QString)), this, SLOT(loadVectorFile(QString,QString))); - mEnabled=true; - -} - -void Plugin::stopServer() -{ - //break all connections to httpdeamon signals - disconnect( mHttpDaemon, 0, 0, 0 ); - delete mHttpDaemon; - mEnabled=false; - -} -//load the project in qgis and send image to browser -void Plugin::showProject(QString theProjectFile) -{ - std::cout << "Render called " << std::endl; - //do all the stuff needed to open the project and take a snapshot of it - if (!qGisInterface->addProject(theProjectFile)) - { - //let the httpdserver know we are finished and pass it back the output filename - mHttpDaemon->requestCompleted(QString("Failed opening project!")); - } - else - { - //let the httpdserver know we are finished and pass it back the canvas image - mHttpDaemon->requestCompleted(qGisInterface->getMapCanvas()->canvasPixmap()); - } -} -//load project in qgis but dont send image back yet -void Plugin::loadProject(QString theProjectFile) -{ - std::cout << "Recevied loadProject request to open " << theProjectFile << std::endl; - //do all the stuff needed to open the project and take a snapshot of it - if (!qGisInterface->addProject(theProjectFile)) - { - //let the httpdserver know we are finished and pass it back the output filename - mHttpDaemon->requestCompleted(QString("Failed opening project!")); - } -} - -void Plugin::loadRasterFile(QString theRasterFile) -{ - - if ( qGisInterface->addRasterLayer(theRasterFile)) - { - //let the httpdserver know we are finished and pass it back the canvas image - mHttpDaemon->requestCompleted(qGisInterface->getMapCanvas()->canvasPixmap()); - } - else - { - //let the httpdserver know we are finished and pass it back the error - mHttpDaemon->closeStreamWithError(QString("Failed opening raster layer : ")+theRasterFile); - } -} - -void Plugin::loadRasterFile(QString theRasterFile, QString theProjectFile) -{ - loadProject(theProjectFile); - loadRasterFile(theRasterFile); -} - -void Plugin::loadVectorFile(QString theVectorFile) -{ - - // Add a vector layer given vectorLayerPath, layer name, providerKey ("ogr" or "postgres"); - if ( qGisInterface->addVectorLayer(theVectorFile, QString("MapLayer"),QString("ogr"))) - { - //let the httpdserver know we are finished and pass it back the canvas image - mHttpDaemon->requestCompleted(qGisInterface->getMapCanvas()->canvasPixmap()); - } - else - { - //let the httpdserver know we are finished and pass it back the error - mHttpDaemon->closeStreamWithError(QString("Failed opening vector layer : ")+theVectorFile); - } -} - -void Plugin::loadVectorFile(QString theVectorFile, QString theProjectFile) -{ - loadProject(theProjectFile); - loadVectorFile(theVectorFile); -} - - -/////////////////////////////////////////////////////////// - - - - - -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new Plugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/http_server/plugin.h b/plugins/http_server/plugin.h deleted file mode 100644 index 4b4f5d684ec5..000000000000 --- a/plugins/http_server/plugin.h +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************** - plugin.h -Functions: -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include -#include -// non qt includes -#include -#include "httpdaemon.h" -/** - * \class Plugin - * \brief OpenModeller plugin for QGIS - * - */ -class Plugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - Plugin(QgisApp * , QgisIface * ); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ Plugin(); -public slots: - //! Show the dialog box - void run(); - //! Load and show a project file - void showProject(QString theProjectFile); - //! Load a project file but dont return it to browser yet - void loadProject(QString theProjectFile); - //! Load a raster file on its own - void loadRasterFile(QString theRasterFile); - //! Load a raster file over a project - void loadRasterFile(QString theRasterFile, QString theProjectFile); - //! Load a vector file on its own - void loadVectorFile(QString theVectorFile); - //! Load a vector file over a project - void loadVectorFile(QString theVectorFile, QString theProjectFile); - //! Change the enabled status of the http server - void setEnabled (bool); - //! Return the status of the http server - bool enabled () {return mEnabled; } ; - - - //! unload the plugin - void unload(); - //! show the help document - void help(); - //! Start the http server - void startServer(); - //! Stop the server - void stopServer(); - //! Passed by the http daemon when it receives a new request - void requestReceived(QString); - - private: - - HttpDaemon * mHttpDaemon; - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! whether the server is enabled or not - bool mEnabled; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/http_server/plugingui.cpp b/plugins/http_server/plugingui.cpp deleted file mode 100644 index 6c4f73ac753d..000000000000 --- a/plugins/http_server/plugingui.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "plugingui.h" - -//qt includes -#include -#include -//standard includes - -PluginGui::PluginGui() : PluginGuiBase() -{ - -} - - PluginGui::PluginGui( QWidget* parent , const char* name , bool modal , WFlags fl ) -: PluginGuiBase( parent, name, modal, fl ) -{ - -} -PluginGui::~PluginGui() -{ -} - -void PluginGui::pbnOK_clicked() -{ - //bool myFlag = cboxEnableServer->isChecked(); - bool myFlag=true; - emit setServerEnabled(myFlag); - //disconnect any connections to this dialog - disconnect( this, 0, 0, 0 ); - //close the dialog - done(1); -} -void PluginGui::pbnCancel_clicked() -{ - close(1); -} - -void PluginGui::newConnect(QString theMessage) -{ - teLogs->append( theMessage ); -} -void PluginGui::endConnect(QString theMessage) -{ - teLogs->append( theMessage); -} -void PluginGui::wroteToClient(QString theMessage) -{ - teLogs->append( theMessage ); -} -void PluginGui::requestReceived(QString theString) -{ - teDebug->append(theString); -} diff --git a/plugins/http_server/plugingui.h b/plugins/http_server/plugingui.h deleted file mode 100644 index d5eff9c415a6..000000000000 --- a/plugins/http_server/plugingui.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef PLUGINGUI_H -#define PLUGINGUI_H - -#include -#include -/** -@author Tim Sutton -*/ -class PluginGui : public PluginGuiBase -{ -Q_OBJECT -public: - PluginGui(); - PluginGui( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~PluginGui(); - void pbnOK_clicked(); - void pbnCancel_clicked(); -private: - -signals: - void setServerEnabled(bool); -public slots: - void newConnect(QString); - void endConnect(QString); - void wroteToClient(QString); - void requestReceived(QString); -}; - -#endif diff --git a/plugins/http_server/pluginguibase.cpp b/plugins/http_server/pluginguibase.cpp deleted file mode 100644 index 46bf834115a1..000000000000 --- a/plugins/http_server/pluginguibase.cpp +++ /dev/null @@ -1,24244 +0,0 @@ -/**************************************************************************** -** Form implementation generated from reading ui file 'pluginguibase.ui' -** -** Created: Mon May 10 14:07:10 2004 -** by: The User Interface Compiler ($Id$) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ - -#include "pluginguibase.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "pluginguibase.ui.h" -static const char* const image0_data[] = { -"22 22 73 2", -"Qt c None", -".4 c #181818", -".R c #191919", -".0 c #1a1a1a", -".A c #1b1b1b", -".Z c #1c1c1c", -".F c #1d1d1d", -".G c #1e1e1e", -".B c #1f1f1f", -".9 c #202020", -".S c #212121", -".W c #222222", -".T c #232323", -".C c #242424", -".D c #262626", -".8 c #272727", -".U c #282828", -".N c #292929", -".M c #2b2b2b", -".V c #2c2c2c", -".E c #2d2d2d", -".1 c #323232", -".5 c #393939", -".O c #3a3a3a", -".X c #3b3b3b", -".H c #3c3c3c", -".I c #3f3f3f", -".Y c #404040", -".J c #434343", -".L c #484848", -".Q c #494949", -"## c #4b4b4b", -".y c #4e4e4e", -".K c #4f4f4f", -".x c #505050", -".P c #5b5b5b", -".j c #5d5d5d", -".l c #5e5e5e", -".i c #5f5f5f", -".2 c #606060", -".k c #616161", -".m c #626262", -".n c #656565", -".w c #676767", -"#a c #686868", -".v c #6d6d6d", -".r c #6e6e6e", -".h c #6f6f6f", -".d c #707070", -".s c #737373", -".q c #747474", -".7 c #7d7d7d", -".p c #808080", -".e c #818181", -"#. c #838383", -".z c #848484", -".u c #878787", -".t c #8a8a8a", -".c c #909090", -"#f c #919191", -".3 c #989898", -"#e c #a2a2a2", -".g c #a7a7a7", -"#g c #aaaaaa", -".f c #adadad", -"#d c #b2b2b2", -".b c #bdbdbd", -".6 c #c0c0c0", -"#c c #c3c3c3", -".o c #d4d4d4", -"#b c #e4e4e4", -".a c #e6e6e6", -".# c #eaeaea", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQt.a.b.c.d.e.f.g.h.i.j.k.j.l.m.n.eQt", -"Qt.o.p.q.r.h.m.i.n.s.t.u.v.n.n.w.w.n.x.y.sQt", -"Qt.z.A.B.C.D.B.E.F.G.C.H.I.J.K.L.M.F.N.O.PQt", -"Qt.Q.R.G.B.B.B.G.G.G.G.S.T.C.U.V.W.X.N.Y.wQt", -"Qt.x.R.G.B.B.G.G.G.F.F.Z.A.A.0.0.R.T.1.2.3Qt", -"Qt.P.0.G.B.B.G.F.F.Z.A.A.A.A.0.0.4.T.5.h.6Qt", -"Qt.7.8.S.9.B.G.F.Z.Z.A.0.0.A.0.0.4.W.H.fQtQt", -"Qt.##..v.l##.5.8.G.Z.A.A.A.A.0.0.R.W#aQtQtQt", -"QtQtQtQtQtQtQtQtQt#b.o#c#d#e#f.p.h.l#gQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; - -static const char* const image1_data[] = { -"137 300 23672 3", -".Y9 c #000000", -".Yx c #000002", -".2e c #000004", -".Zh c #000005", -".Zg c #000007", -".18 c #000009", -"aR9 c #00000a", -".0S c #00000b", -".0z c #00000c", -".YV c #00000e", -".0L c #000010", -"#PP c #000011", -"#Q6 c #000012", -".Y7 c #000013", -".WR c #000100", -".X. c #000102", -"#e6 c #000103", -".X# c #000104", -".Zi c #000105", -"#5F c #000106", -".0y c #000107", -".17 c #000108", -".0u c #000109", -"#Sm c #000113", -".XA c #000200", -"#e7 c #000201", -".YA c #000202", -"#W7 c #000203", -"#3F c #000204", -".0x c #000205", -"aFQ c #000206", -".0e c #000207", -"aGV c #000209", -".YU c #00020b", -".4h c #000212", -".VM c #000300", -"aZI c #000301", -".5d c #000302", -"#PX c #000304", -"aGU c #000305", -"#Yp c #000306", -".YR c #000307", -"aG4 c #000309", -"aG3 c #00030b", -".2w c #00030f", -".4g c #000310", -".2x c #000315", -".8E c #000400", -"#9X c #000402", -"aHY c #000403", -".4f c #000404", -"#6L c #000406", -"#jR c #000407", -"aTL c #000408", -".50 c #00040d", -".VN c #000500", -"a#t c #000503", -".Zm c #000505", -"aH5 c #000507", -"aV. c #000509", -".0v c #00050b", -".51 c #000512", -"#PW c #000600", -".3x c #000602", -"aXk c #000603", -".0Z c #000607", -".YS c #00060c", -"aFZ c #00060f", -".9r c #000700", -".3w c #000702", -"aOq c #000705", -".5e c #000706", -".XB c #000707", -"#Q# c #000709", -"#.e c #000800", -"a#u c #000807", -".00 c #000808", -".XC c #00080b", -".Zj c #00080d", -"aJs c #000900", -"#PD c #000901", -"a09 c #000905", -"aFF c #000a00", -".Zl c #000a0e", -"#Ov c #000b06", -"#PV c #000f06", -".Zk c #000f15", -"aRK c #00100a", -"aPM c #00130e", -".WM c #010000", -".3H c #010002", -"#.W c #010004", -".1V c #010005", -"#On c #010006", -".3R c #010007", -".7H c #010009", -"aGJ c #01000a", -"#bn c #010010", -".7A c #010100", -"#gy c #010101", -"#aa c #010103", -"##2 c #010109", -".7# c #010200", -"#.Y c #010204", -"#d# c #010206", -".5Z c #010300", -"aK2 c #010302", -"#aw c #010400", -".0f c #010409", -".2p c #01040d", -"#la c #010504", -".0d c #010508", -"#.0 c #010600", -"#Rc c #010700", -"#VJ c #010707", -".YP c #01090b", -"aYA c #010a09", -".YQ c #010b0d", -"#df c #020001", -"aFR c #020003", -"#OE c #020005", -"#gT c #020006", -".4. c #02000a", -"##P c #02000d", -".7z c #020100", -"aYz c #020106", -"#l5 c #020200", -"#ax c #020202", -".0i c #020204", -".19 c #02020c", -".XE c #020300", -"#6M c #020305", -".16 c #020307", -".0g c #020308", -".5S c #020401", -".5p c #020403", -"aIk c #020500", -"#Rn c #020607", -"aHP c #02070d", -"#TK c #020808", -".0w c #02090f", -"#8. c #020c0d", -"aG2 c #020f17", -"#Ou c #02110a", -".W8 c #030000", -".5w c #030002", -"#k6 c #030004", -".3F c #030005", -"#my c #030007", -".3T c #030009", -".Xo c #03000b", -"#.f c #03000d", -"#cZ c #030012", -".UV c #030100", -"#de c #030102", -"#il c #030104", -".0U c #03010f", -".WN c #030200", -"aXs c #030207", -"aK# c #030208", -"#Vq c #03020a", -"#h9 c #030300", -".4q c #030301", -"#jA c #030303", -"#jB c #030305", -"#gi c #030400", -"aG1 c #030406", -"aTw c #030408", -".YC c #030502", -"aZq c #030504", -"aHN c #030511", -"aJW c #030700", -".2E c #030706", -".Yz c #030708", -"aV# c #03070a", -"a18 c #030802", -"#jQ c #030b0d", -".2D c #030c09", -"aF0 c #030c15", -".31 c #030d0c", -"a1. c #031313", -"aRJ c #031610", -".UU c #040000", -"#PT c #040001", -"#b8 c #040002", -"#b7 c #040003", -"#dN c #040004", -".5y c #040005", -".7I c #040006", -"#Vs c #040007", -"#hK c #040009", -"#QW c #04000b", -"#ga c #040010", -"#bl c #040100", -".8F c #04010a", -"#aj c #040203", -"#0b c #040205", -"#OC c #040207", -".7G c #04020f", -"#kQ c #040300", -"#jz c #040301", -"#Y2 c #040308", -"#gS c #04030b", -"#md c #040400", -"aKJ c #040402", -"#gj c #040404", -"#eL c #040406", -"#o4 c #040500", -"#dw c #040507", -"#ie c #040509", -"#Vp c #04050a", -"#jb c #040600", -"#V2 c #040601", -".WP c #040603", -"aG6 c #040605", -"#Ve c #04070c", -".30 c #040807", -"#bm c #040903", -"#Sa c #040905", -"#9Y c #040f0b", -"#SD c #050000", -"aIs c #050001", -"#mv c #050003", -"#OG c #050004", -"aWJ c #050006", -"#Vr c #05000b", -"#T9 c #050100", -"#ah c #050200", -"#Rp c #050209", -"aQW c #050304", -".Zf c #050306", -"#k0 c #050308", -".9p c #050310", -"#hR c #050400", -"#ai c #050402", -"#Oz c #05040a", -"#SF c #050500", -"#b4 c #050503", -"#l4 c #050505", -"#ST c #050507", -"#eA c #05050f", -".W9 c #050601", -"aVe c #05060a", -"#bB c #05060b", -".32 c #050704", -"#bA c #050706", -".5R c #050801", -".2o c #050811", -"##O c #050a03", -"abj c #050a04", -"#St c #050b01", -"aa8 c #050b09", -".XD c #05110d", -".YO c #060000", -"aGl c #060002", -"#fm c #060004", -".8G c #060005", -"aGI c #060006", -".5T c #060007", -"#.g c #060009", -".0K c #06000a", -"##Q c #06000c", -".3P c #060100", -"aZg c #060107", -"#fl c #060108", -"#.O c #060200", -"#eQ c #060201", -"#kY c #060300", -"aNL c #06030a", -".1X c #060405", -"#do c #060407", -"#bS c #060500", -"#dv c #060501", -"aFY c #060503", -"#1v c #06050a", -"#SS c #06050b", -".YW c #060513", -"#e1 c #060600", -".WO c #060604", -"#bT c #060606", -"#au c #060608", -"aUJ c #060610", -".0s c #060702", -"#av c #060709", -"aR# c #060803", -"acJ c #060805", -"aH6 c #060a09", -"aSr c #060a0d", -"aFP c #060c02", -"#VI c #060c0c", -".Xp c #070000", -"aGr c #070004", -"#eB c #07000a", -".Xn c #070012", -".Xb c #070105", -"#mx c #07010b", -".5v c #070200", -"#Qb c #070208", -"#dM c #070209", -".2f c #070300", -"#dg c #070302", -".XF c #070400", -"#ab c #070506", -"#OD c #07050a", -".Y8 c #07051a", -"#jy c #070601", -"aYp c #070602", -"#jI c #070604", -"#Om c #07060b", -"aHM c #07060c", -".Xa c #07060e", -"#Sl c #070618", -".8R c #070700", -".3I c #070705", -"aQK c #070707", -"#h7 c #070709", -"#b5 c #070800", -"aIt c #070802", -"aSb c #070803", -".4p c #070906", -"#jS c #070908", -"a21 c #070b00", -"#Q. c #070b0c", -"aXF c #070b0e", -"aJy c #070c05", -"#2c c #070c06", -"#Qa c #070c12", -"aGT c #07100d", -"acz c #071300", -".VO c #07160f", -".YX c #080000", -".Xm c #080002", -"aWK c #080005", -"#TV c #080009", -"#hI c #08000f", -"#bo c #080012", -".W7 c #080100", -"aIr c #080204", -"#gU c #080206", -"#U6 c #080300", -"#42 c #080307", -"#mw c #08030a", -".Zn c #080400", -"#nR c #080401", -"aUe c #080403", -"#0d c #080405", -".5c c #080500", -"aGL c #080600", -"#2K c #080607", -".3Q c #08060b", -"#jH c #080702", -"#go c #080705", -".0h c #08070c", -"#.X c #08070d", -".1U c #08070f", -".WS c #080800", -"#l6 c #080806", -"#T8 c #080808", -".8W c #08080a", -".9q c #080810", -"aIN c #080812", -".4e c #080900", -"#Rb c #080901", -"#hS c #080904", -"#.r c #08090b", -"aJd c #080a09", -"#oX c #080b04", -".2v c #080c0d", -"aVf c #080c0f", -"abG c #090000", -"#b9 c #090004", -"a1R c #090005", -"aLA c #090008", -"#c0 c #090015", -"#2z c #090100", -"#71 c #09010c", -".0B c #090200", -"#PE c #090214", -".2n c #090303", -".9f c #090400", -"#mz c #090408", -".5x c #09040a", -"#hL c #09040b", -"#jm c #090502", -"a1H c #090504", -"aPN c #090506", -"#bM c #090600", -"aH4 c #090601", -".3S c #090611", -"aJX c #090700", -".1W c #09070a", -"#P1 c #09070c", -"#.d c #090800", -".1Y c #090804", -"a1Q c #090806", -"#OA c #09080e", -"#Q7 c #090816", -"#nI c #090900", -"acB c #090907", -"#P3 c #090909", -"#.v c #09090b", -"##3 c #090911", -"aGK c #090913", -"#bz c #090a05", -"aL6 c #090a0c", -"aM8 c #090a0e", -"#SL c #090b00", -"aYB c #090b08", -"#oY c #090c05", -".YB c #090d0c", -"aJk c #090d16", -"abi c #090e0a", -"#S# c #091403", -".2G c #0a0000", -"aJP c #0a0001", -"aGm c #0a0008", -"#Sr c #0a0100", -"aYy c #0a0104", -"ac6 c #0a0200", -"#SU c #0a0300", -"#Qc c #0a0408", -"a#2 c #0a0500", -".8X c #0a0502", -".9o c #0a0509", -"#mm c #0a0600", -"aSk c #0a0603", -"aPZ c #0a0605", -"aHm c #0a0607", -"aMS c #0a0702", -"#Oc c #0a0712", -"aFE c #0a0809", -"a1a c #0a080b", -"#PQ c #0a0815", -"#h8 c #0a0905", -"#2J c #0a0907", -"#g# c #0a090f", -"#4c c #0a0a08", -"#b6 c #0a0a0c", -"aHy c #0a0b0d", -"aXi c #0a0b10", -"#SE c #0a0c00", -"#.Z c #0a0c09", -".7a c #0a0d12", -"aII c #0a0d1e", -"aJe c #0a0e0d", -"#lb c #0a0e0f", -"aXj c #0a0f13", -"#QV c #0a1505", -".YT c #0a1519", -"#Ot c #0b0000", -"#8y c #0b0200", -"a3f c #0b0400", -"#6B c #0b040c", -"aQi c #0b0600", -"#mn c #0b0602", -"#mu c #0b0603", -"#8z c #0b0704", -"aRQ c #0b0706", -"#Ra c #0b0800", -"a#1 c #0b0803", -"#P4 c #0b090c", -"#jJ c #0b090e", -"a.d c #0b0a06", -"#4b c #0b0a08", -"aTl c #0b0a10", -"#pd c #0b0b03", -"#kG c #0b0b09", -".5o c #0b0b0b", -"aS. c #0b0b15", -"#ik c #0b0c06", -"aZr c #0b0c07", -"aPY c #0b0c0e", -"aP8 c #0b0c10", -"a28 c #0b0d08", -"a0k c #0b0d0a", -"#lc c #0b0f0e", -".Yy c #0b0f10", -"#Un c #0b1014", -"#SM c #0b1107", -"aG5 c #0b1316", -"aI9 c #0c0000", -"aKg c #0c0201", -"#Sz c #0c0300", -"#PU c #0c0308", -"#Yq c #0c0402", -"#9G c #0c040f", -"#SA c #0c0500", -"#n1 c #0c050c", -"#kF c #0c0608", -"#9F c #0c060a", -".7y c #0c0701", -"#ak c #0c0703", -"#Yr c #0c0704", -".3G c #0c070d", -"aHb c #0c0805", -"#VU c #0c0809", -"aK. c #0c0900", -".Xy c #0c0902", -"aVQ c #0c0904", -"#OB c #0c0910", -"#hH c #0c0a00", -"acK c #0c0b06", -"#kR c #0c0b07", -"aNF c #0c0b09", -"#o0 c #0c0c0a", -"#V1 c #0c0c0c", -"#1u c #0c0c0e", -"a6L c #0c0d00", -"aa9 c #0c0d08", -"aZR c #0c0d0f", -"aX9 c #0c0e0d", -"aWI c #0c0f08", -".0c c #0c1011", -"#Su c #0c1206", -"a#C c #0c1512", -".Vg c #0d0000", -"#Os c #0d0002", -"aXX c #0d0007", -"#hJ c #0d0115", -".2m c #0d0200", -"aQV c #0d0400", -"a.c c #0d0500", -"#dn c #0d0502", -".7f c #0d0503", -"#pF c #0d0600", -"#gp c #0d0707", -"aGh c #0d0709", -"#OH c #0d070b", -"#k7 c #0d0711", -".2F c #0d0802", -".9n c #0d0804", -"#OF c #0d080c", -".0r c #0d0900", -"#mA c #0d0908", -"a2p c #0d090a", -"#n3 c #0d0a03", -"aHc c #0d0b0c", -"#P5 c #0d0b0e", -"#gh c #0d0c07", -"a24 c #0d0c08", -"aPw c #0d0c0a", -"#kL c #0d0d03", -"aKW c #0d0d05", -"#id c #0d0d0b", -"aTM c #0d0d0f", -"#3w c #0d0e09", -"##1 c #0d0e10", -"aXo c #0d0f01", -"#9O c #0d0f0e", -"#8i c #0d1110", -".1P c #0d1112", -"aWo c #0d1114", -".2d c #0d111a", -"aIg c #0d1508", -".Vf c #0e0000", -"aFS c #0e0301", -"aF8 c #0e0400", -"#Rh c #0e0402", -".9g c #0e0403", -"#Sv c #0e0500", -"aQQ c #0e0603", -"a2s c #0e0808", -"a1P c #0e0905", -"aSl c #0e0a01", -"#nJ c #0e0a07", -"aRn c #0e0a09", -"aSq c #0e0b02", -"aZS c #0e0b04", -"acA c #0e0b06", -"#me c #0e0c0d", -"#Rq c #0e0c11", -"#0c c #0e0d12", -"a#R c #0e0e0c", -"aPx c #0e0e0e", -"aHx c #0e0e10", -"#oZ c #0e100b", -".0t c #0e1317", -".01 c #0e1716", -"aaY c #0e1800", -".Yw c #0f0400", -"aLf c #0f0500", -"#n0 c #0f0705", -"#Or c #0f0800", -"aT# c #0f0a06", -"aZf c #0f0a07", -"abh c #0f0b00", -"aO7 c #0f0b02", -"aX5 c #0f0b08", -"a2e c #0f0b0c", -"a1D c #0f0c05", -"aYm c #0f0c07", -".VL c #0f0d00", -"aHl c #0f0d0e", -".0A c #0f0d12", -"a2h c #0f0e0a", -"#03 c #0f0e0c", -"aHO c #0f0e13", -"aSc c #0f0f07", -"aOV c #0f0f0f", -"#kZ c #0f0f11", -"a22 c #0f1008", -".WQ c #0f110c", -".0T c #0f1223", -".5q c #0f1410", -"aRL c #0f1911", -"dsI c #100000", -"aIq c #100300", -"a1# c #100408", -".Xc c #100500", -"##R c #100509", -"#dO c #10050d", -"#nS c #100604", -"aZH c #100605", -"#c1 c #100611", -"aQR c #100700", -"#SC c #100805", -"#R# c #100900", -"aRm c #100c03", -"aZ3 c #100c09", -"a2r c #100c0d", -"a1G c #100d06", -"#PO c #100d08", -"#Ro c #100e13", -"a23 c #100f0a", -".39 c #100f0b", -"#Ri c #101008", -"#Vd c #101018", -"#dp c #101115", -"#iu c #101116", -"aJj c #101318", -"#2b c #101a02", -"#TB c #101e07", -"agR c #110000", -"aIU c #110706", -"#Sb c #110710", -"a3r c #110c06", -"aRX c #110c08", -"aHr c #110c12", -"a0t c #110d0a", -"aLg c #110d0c", -"a2g c #11100c", -"#hQ c #11100e", -"aSR c #111107", -"#ny c #111109", -"#8A c #111113", -"aKf c #111216", -"#bC c #111217", -"a27 c #11130e", -"#Sn c #11141d", -"#02 c #111904", -"aUM c #111a19", -"#3v c #111b02", -"aM7 c #120000", -"a3W c #120403", -"#Rg c #120703", -"a#0 c #120904", -"#kE c #120d09", -"#eG c #120d0a", -"a2j c #120e0b", -"a3h c #120f06", -"#9H c #120f16", -".0V c #120f1a", -"#1t c #121011", -"#nz c #12110d", -"aVd c #12110f", -"#kP c #12120a", -"aY5 c #121212", -".3J c #12150e", -"a0E c #121607", -"a2U c #121608", -"#Ss c #121a0f", -"#41 c #121c04", -"a#j c #121e06", -"#6A c #121e08", -"aIO c #130000", -"dpQ c #130200", -"add c #130500", -"#fn c #13080c", -"#SB c #130a05", -"a2# c #130b08", -"aZh c #130d11", -"#Y3 c #130e0a", -"aXh c #130e0b", -"a0f c #130f0e", -".Xz c #131009", -"#gf c #13100b", -"#P2 c #131017", -".UW c #131102", -"#at c #131112", -"#jl c #13120d", -"a25 c #13120e", -"a2f c #131210", -"#mB c #13140f", -"#ZH c #131a08", -"dpg c #140000", -"aHQ c #140808", -".8H c #140905", -"aR3 c #140a01", -"a#5 c #140b00", -"a2B c #140c09", -".Y6 c #140c17", -"aXW c #140d00", -"aVU c #140d07", -"aOy c #140f0b", -"#SG c #141005", -"aQo c #141007", -"aX4 c #14100f", -"#kS c #141011", -"aU9 c #14110a", -"a2P c #14110c", -"#OM c #141213", -"#6G c #141300", -"#pe c #14130f", -"aV7 c #141510", -".1Q c #141519", -"#dL c #14160b", -"#sF c #141700", -".Xl c #150000", -".Y5 c #150300", -"aF7 c #150900", -"#TC c #150909", -"#bL c #150a04", -"aG0 c #150a08", -"aXM c #150d02", -"a3s c #150d0a", -"aGn c #150e08", -"aYs c #150f01", -"a3. c #15100a", -"#mf c #15100c", -".33 c #15120d", -"aWh c #151412", -"a0h c #151515", -".4i c #15151f", -"#.1 c #151611", -"a4N c #15170c", -"#dz c #151807", -"#Yo c #151b0d", -"af9 c #160600", -".0J c #160800", -"#q6 c #160b00", -"#ay c #160d0e", -"aSS c #160f05", -"a2C c #16110e", -"aVN c #16120f", -"aR. c #16130c", -"aJf c #16160e", -"aNk c #161616", -"a1n c #161719", -"a29 c #161813", -"#ld c #161815", -"#WO c #161c0e", -"#9E c #16220e", -"doy c #170100", -"a2N c #170801", -"dtD c #170803", -"abF c #170a02", -"aRM c #170c08", -"aTe c #170d0b", -"aGg c #170d0c", -"dh9 c #170e09", -"a3q c #171008", -"#pG c #171105", -"aQs c #171312", -"a2i c #171612", -"#0a c #171614", -"#hT c #171717", -"aGS c #171903", -"#bY c #171904", -"a1y c #171a0f", -"a1A c #171b0c", -"#PC c #171f10", -"a2M c #180600", -"aGH c #180a09", -".0C c #180b00", -"adc c #180b02", -".Ze c #180e02", -"aR4 c #180e04", -"#bs c #180f0a", -"aTh c #181101", -"aRj c #181107", -"a3e c #181109", -"aP1 c #18130f", -"#i. c #18150c", -"aXE c #18150e", -"aVP c #181510", -"aXq c #181909", -"dgn c #19100b", -"a.t c #191200", -"aHw c #191303", -"aWk c #19150c", -"aLQ c #191512", -"aWa c #191708", -"aaZ c #19171a", -"#ZW c #19190f", -".2c c #19191b", -"#.s c #191921", -"aYF c #191b0d", -"aWW c #191b1a", -"#Ob c #19210a", -"dnP c #1a0700", -"a3t c #1a0b0e", -"#fo c #1a0c0c", -"a3p c #1a0f09", -"aGs c #1a0f17", -"aQS c #1a1007", -"dfJ c #1a110c", -"#Rr c #1a1112", -"a3k c #1a1207", -"#WW c #1a120f", -"aNM c #1a131a", -"aMR c #1a1511", -"#8N c #1a160b", -"aQP c #1a1613", -"#n2 c #1a170e", -"#PY c #1a181d", -"acC c #1a1915", -"aTO c #1a1917", -"#YF c #1a1a12", -"aQ5 c #1a1b13", -"#Xb c #1a1b15", -"#us c #1a2111", -"ah0 c #1b0400", -"dwb c #1b0801", -"aJO c #1b0c00", -"aQ1 c #1b1107", -"a2w c #1b1108", -".1O c #1b120d", -"dk1 c #1b140a", -".UT c #1b140c", -"aVT c #1b140e", -"#eR c #1b1515", -"aOx c #1b1612", -"aNj c #1b1714", -"a2d c #1b1718", -"a8H c #1b1805", -"#.V c #1b180f", -"aW# c #1b190c", -"#1d c #1b190d", -"aY0 c #1b1a18", -"aUh c #1b1b1b", -"a2T c #1b1c14", -"#Xa c #1b1c16", -"#Od c #1b1c17", -"aTP c #1b1c20", -"#kD c #1b1d08", -"#ij c #1b1d12", -"a3w c #1b2405", -"#dP c #1c0d12", -".2g c #1c0e01", -"#Rs c #1c0e05", -".W6 c #1c0f00", -"#py c #1c1100", -"a2O c #1c110d", -"aRU c #1c130c", -"deQ c #1c130e", -"a.u c #1c1401", -"a2a c #1c1411", -"aMJ c #1c150b", -"dln c #1c160a", -"aJl c #1c1618", -"#8O c #1c180c", -"aVI c #1c1815", -"a0M c #1c1912", -"aKm c #1c1a1f", -"#4d c #1c1b19", -"#o3 c #1c1c1a", -"aLR c #1c1c1c", -"aXp c #1c1d0f", -"aZK c #1c1e13", -"aJz c #1c1f18", -"#U5 c #1c2812", -"a7W c #1d0700", -"dxI c #1d0a04", -"#rA c #1d0d00", -"a3u c #1d0f0f", -"aWy c #1d1000", -"aIT c #1d100a", -"#q5 c #1d1101", -"#bp c #1d121a", -"a#6 c #1d1403", -"##V c #1d150a", -"aKl c #1d1512", -"aJQ c #1d1513", -"aV1 c #1d1604", -"aUE c #1d1606", -"aPq c #1d160c", -"aHa c #1d1610", -"#QX c #1d161d", -"#8n c #1d1701", -".5n c #1d171b", -".8N c #1d1804", -"aZ0 c #1d1812", -"aVR c #1d1814", -"#8M c #1d1910", -"aOA c #1d1916", -"aTs c #1d1a0b", -"aUR c #1d1b0c", -"#1e c #1d1b0e", -"#6C c #1d1b1e", -"#dC c #1d1e0c", -"a4P c #1d250e", -"dAE c #1e0400", -"doV c #1e0700", -"agi c #1e0900", -"dns c #1e0b00", -".Vi c #1e0f08", -"duN c #1e0f0a", -"#8b c #1e1101", -"aTT c #1e110b", -".YN c #1e1200", -"#rh c #1e1300", -"aUC c #1e150c", -"ddP c #1e1510", -"dlO c #1e1609", -".9j c #1e160b", -"a0g c #1e1613", -"aKa c #1e1623", -"a.s c #1e1707", -"#cY c #1e180a", -"#k8 c #1e1822", -"a1j c #1e1915", -"#8l c #1e1a0e", -"#X# c #1e1a0f", -"aQp c #1e1a17", -"#YE c #1e1b0a", -"#2p c #1e1b0c", -"#dq c #1e1b12", -"#75 c #1e1c07", -"#nD c #1e1c0d", -"a2q c #1e1c1f", -"#bW c #1e1d0b", -"#gR c #1e1e26", -"a1x c #1e1f17", -"aZM c #1e2012", -"aVJ c #1e201f", -"#70 c #1e2a16", -"dxK c #1f0700", -"acN c #1f0800", -"aSx c #1f0900", -"a7S c #1f0a05", -"a7T c #1f0a07", -"dxJ c #1f0b04", -"aFD c #1f0d09", -"#sY c #1f0e00", -"a5U c #1f0e06", -"aba c #1f1104", -"#5b c #1f1108", -"#6O c #1f1209", -"#pm c #1f1305", -"a87 c #1f1400", -".4r c #1f1410", -"#nV c #1f1509", -".81 c #1f150b", -".9w c #1f150c", -"#gV c #1f1514", -"#92 c #1f1805", -"a0Q c #1f1812", -"a8G c #1f1909", -"aY8 c #1f1b02", -"#76 c #1f1c09", -"aWi c #1f1c15", -"#qO c #1f200e", -"aW. c #1f2012", -"aJA c #1f201a", -"aYH c #1f2211", -"aV5 c #1f2229", -"a1z c #1f2314", -"aQw c #200400", -"dwc c #200901", -"drG c #200e02", -"aVj c #201003", -"aeg c #201100", -"dgo c #20110a", -"aVi c #201209", -"a3V c #201212", -"abJ c #201302", -"a6b c #20130b", -"dcN c #201511", -"aHX c #20160a", -"#.h c #201615", -"#VX c #20170e", -"a1M c #201710", -"#pz c #201803", -"a.q c #20180d", -"#8P c #201909", -"#Xc c #201911", -"#pE c #201a1c", -"a0q c #201b17", -"aHs c #201b18", -"#kT c #201c11", -"a3g c #201c13", -"aVO c #201c19", -"aQr c #201d18", -"aOr c #201e1f", -"#qL c #201f0a", -"a26 c #20211c", -"aZ7 c #202308", -"a6M c #202310", -"a2V c #202415", -"#wq c #202507", -"aOp c #210000", -"aHR c #210c07", -"dz. c #210d06", -"a96 c #210e00", -"duO c #210e07", -"a#w c #211200", -"diz c #21120b", -"a3X c #211310", -"a8F c #211509", -"#ZX c #21170b", -"#YG c #21170d", -"a.r c #21190c", -"aa2 c #211a07", -"#8m c #211a08", -"#ZV c #211a0a", -"#0e c #211a12", -"aRR c #211a14", -"a#o c #211b05", -"aQl c #211b0f", -"#.n c #211c09", -"aP0 c #211c18", -"acI c #211d12", -"aQq c #211d1a", -"#ao c #211e0b", -"#l3 c #211e0d", -"aUQ c #211f12", -"#PF c #211f24", -"#qM c #21200c", -".1T c #212028", -"a#s c #212115", -"aJV c #212117", -"#gJ c #212121", -"#uA c #212200", -"#3E c #21221d", -"#gG c #212318", -"#wt c #212a0f", -".9s c #212d23", -"agj c #220100", -"dpA c #220700", -"acO c #220900", -"dpR c #220902", -"dpz c #220b05", -"aTV c #220e03", -"a4o c #220f00", -"aVk c #221002", -"#3I c #221006", -".7l c #221107", -"aL3 c #22130c", -"dnr c #221407", -"#8a c #22150c", -"aIl c #22150f", -"aWx c #22160a", -"aOY c #22180f", -"#1c c #22190a", -"aPS c #221912", -"#Nf c #221a0d", -"#6X c #221b08", -"a7j c #221c02", -"#3S c #221c0c", -"aPv c #221d19", -"#X. c #221e13", -"#bN c #221e15", -"#YD c #221f0e", -"#wA c #222200", -"#kH c #222220", -"#lh c #222303", -"a8Z c #22240e", -"a6O c #22280c", -"a5u c #223205", -"doa c #230d00", -"#6P c #231103", -"#2f c #231107", -"drF c #23120a", -"a77 c #23140d", -"dkw c #23150c", -"#7h c #231603", -"#9S c #231606", -"#7g c #231707", -"dlo c #231709", -"a#v c #23170b", -"a.v c #231802", -".3v c #231812", -"#pL c #23190f", -"a#7 c #231b06", -"#eU c #231b19", -"aUs c #231c16", -"a3d c #231f13", -"aPr c #231f1c", -"a6K c #232115", -"#o8 c #232210", -"#sA c #23221e", -"#jX c #232400", -"a17 c #232416", -"aJB c #23241f", -"aYG c #232517", -"dtF c #240c00", -"dyD c #240d00", -"#8D c #240e00", -"a7R c #241007", -"dqs c #24110a", -"aTU c #241208", -"dwa c #24120e", -"a8s c #241300", -"a76 c #24130b", -"dnO c #241407", -"deR c #24150e", -"dn# c #241707", -"#1y c #241800", -"#Xd c #24180c", -"a2x c #241a11", -"#dk c #241a18", -"#93 c #241c05", -"aUD c #241c0f", -".VK c #241e04", -"#6W c #241e12", -"aUx c #241f1b", -"#wz c #242000", -"aU6 c #242015", -"aZX c #24201d", -"#6H c #242110", -"#91 c #242112", -"aM9 c #242223", -"#72 c #242227", -"#mF c #24230e", -"#o9 c #242513", -".VP c #242517", -"aTp c #24251d", -"#79 c #24261b", -"aZN c #242817", -"aWt c #24282b", -"a4O c #242915", -"#uC c #242c03", -"dph c #250a00", -"a6l c #250b00", -"a7U c #250d09", -"#5c c #250f02", -"aGG c #250f04", -"#06 c #251106", -"#Z6 c #251305", -"a8. c #25140a", -"a9q c #251500", -"a5h c #251808", -"abL c #251901", -"#9R c #25190d", -"aTf c #251b12", -"aNI c #251c13", -"#5l c #251d12", -".3E c #251d28", -"#ZU c #251e0e", -"#3T c #25200c", -"a80 c #252412", -"a8Y c #25250d", -"#pc c #25251b", -"#m# c #252618", -"aSs c #252628", -"#da c #25262a", -"aIW c #252724", -"#uq c #252815", -"#ur c #252918", -"aRt c #260a00", -"dza c #260b00", -"doW c #260c00", -"abx c #261100", -"a5Q c #261211", -"a4p c #261302", -"#W3 c #261304", -".Ve c #261305", -"a75 c #26130c", -"ddQ c #261710", -"#ry c #26180f", -"#1f c #261a0a", -"a#G c #261b07", -"#.k c #261c10", -"#3R c #261c12", -"aP5 c #261c13", -"aXN c #261e07", -"a#p c #261e09", -"aTg c #261e13", -"#U7 c #261e1c", -"aXc c #261f0d", -"#n7 c #26200a", -".68 c #262012", -"a2Q c #26221f", -"aT. c #262221", -"#iy c #262400", -"#Ow c #26252b", -"aIV c #262628", -".1S c #26272c", -"a0D c #26281a", -"aIX c #262825", -"#li c #262900", -"#6K c #262920", -"a6N c #262b14", -"a2X c #262e19", -"a1V c #262f12", -"dqt c #270c03", -"drH c #271002", -"aeX c #271103", -"dyE c #271200", -"ag5 c #271300", -"a5R c #271314", -"#2B c #271406", -"#YH c #271507", -"#YR c #271509", -"a5T c #271511", -"#5S c #271602", -"dmN c #271707", -"adh c #271800", -"#q7 c #271a0a", -"#8Q c #271c0a", -"#8o c #271d02", -"#pM c #271e0f", -"aS7 c #271e17", -"aMG c #271f14", -".9m c #272016", -"#5m c #272109", -"aR5 c #272113", -"#yx c #272204", -"##Y c #272413", -"#e2 c #27241b", -"aJC c #272622", -"#gI c #272725", -".8D c #272913", -"aem c #272926", -"a2W c #272b1a", -"#it c #272c30", -"a8h c #280b00", -"aTX c #280c00", -"a8g c #280d00", -"#3J c #280d02", -"duP c #281109", -"#uO c #281204", -"a94 c #281409", -"a74 c #28140b", -"#35 c #281506", -"#ZK c #281507", -"a8a c #28160a", -"a5S c #281614", -"#ta c #281700", -"#ZY c #281705", -".Vh c #28170f", -"dma c #281809", -"a8# c #28180b", -"a86 c #281902", -".7j c #281912", -"a79 c #281a11", -"a7# c #281c04", -"acF c #281c0c", -"##9 c #281d17", -"#Sw c #281e15", -"#6Y c #282107", -"#mq c #28211b", -"a81 c #282212", -"aSg c #282214", -"#n8 c #282305", -"aMK c #28231f", -"#k3 c #282421", -"aQL c #282423", -"#.o c #282512", -"a7w c #282806", -"aXG c #282828", -"a9d c #282907", -"#up c #282917", -"a9c c #282a05", -"aZL c #282a1c", -"aYE c #282a1f", -"aen c #282a25", -"#5. c #282b24", -"#sG c #282c11", -"#ut c #282e20", -"#ws c #283114", -"dwd c #290b00", -"#2g c #290d02", -"a7l c #290e00", -"dyC c #291107", -"ah1 c #291300", -"#67 c #291305", -"#uP c #291306", -"aiY c #291400", -"dw1 c #291401", -"dw2 c #291703", -"#Xe c #291709", -"dpy c #291713", -"a#x c #291804", -"#Xn c #291810", -"dcO c #291811", -"#sW c #29190a", -"#cb c #291a00", -"#2Q c #291a03", -"#5R c #291c0b", -"aiI c #291c0c", -"#8R c #291d07", -"#pN c #291e08", -"aa4 c #291e0a", -"#Sc c #291e22", -"#0h c #291f06", -".WT c #291f13", -"aQ0 c #291f16", -"#pn c #292011", -"a2A c #292019", -"aLh c #29211e", -".8M c #29220f", -".15 c #292210", -"a#F c #292212", -"a2c c #29221c", -"#ps c #292420", -"#iv c #292522", -".5f c #292823", -"aKI c #292826", -"#sE c #29290f", -"aIY c #292a25", -"#uB c #292f09", -"a0W c #292f13", -"dB9 c #2a0900", -"dqu c #2a0a00", -"dsJ c #2a0e00", -"#Z7 c #2a0f00", -"dyB c #2a0f08", -"a6m c #2a1100", -"#7k c #2a1200", -"dz# c #2a1208", -"dw0 c #2a1301", -"a7V c #2a130d", -"#5y c #2a1406", -"dw3 c #2a1409", -"acU c #2a1502", -"#uN c #2a1600", -"a93 c #2a160b", -"dgp c #2a160d", -"a7Q c #2a1709", -"af# c #2a1802", -"#s0 c #2a1804", -"dms c #2a1909", -"#Xi c #2a190f", -"#WZ c #2a1b08", -"#5Q c #2a1e10", -"aI3 c #2a1f19", -"#ri c #2a2005", -"aPV c #2a2017", -"a1L c #2a211a", -"aMo c #2a2217", -"a0w c #2a2310", -"#.m c #2a2311", -"aSn c #2a2319", -"aQ2 c #2a2418", -"a1i c #2a2521", -"aFO c #2a2609", -"a8X c #2a260b", -"aUS c #2a261a", -"#9J c #2a2813", -"ae# c #2a281b", -"aRY c #2a2829", -"a#k c #2a282d", -"#bX c #2a2915", -"aVM c #2a2925", -".2. c #2a2a32", -"a8K c #2a2e0d", -"#wr c #2a3112", -"#8F c #2b0b00", -"aby c #2b0c00", -"#07 c #2b0f03", -"#2C c #2b1000", -"duQ c #2b1005", -"aRs c #2b1007", -"dob c #2b1200", -"#Xo c #2b1307", -"aSy c #2b1309", -"a9K c #2b1500", -"a.g c #2b1605", -"dfK c #2b170e", -"aer c #2b1807", -"doU c #2b1812", -"ahY c #2b190b", -"dbc c #2b1919", -"#t. c #2b1a00", -"#tr c #2b1a0a", -"#7i c #2b1b04", -"#9T c #2b1c09", -"#Y7 c #2b1d00", -"abK c #2b1e0b", -"aL2 c #2b1e16", -"aJI c #2b1e18", -"#vh c #2b2000", -"#pO c #2b2002", -"#Rd c #2b201c", -"a#H c #2b2108", -"a2v c #2b221b", -"aa3 c #2b230e", -"#.l c #2b2414", -"aTI c #2b241a", -"aTi c #2b2515", -"##W c #2b2517", -"aJ. c #2b2622", -".7J c #2b262a", -"b.T c #2b270e", -"aTr c #2b271b", -"aJD c #2b2726", -"ae. c #2b2a16", -"aIZ c #2b2a26", -"aeS c #2b2b1f", -"a0V c #2b2c1c", -"#yt c #2b2f0a", -"a5v c #2b440b", -"doX c #2c0d00", -"dtG c #2c1004", -"a7Z c #2c100c", -"#Yx c #2c1100", -"dyA c #2c1108", -"dnQ c #2c1300", -"#W2 c #2c1608", -"#uQ c #2c1609", -"a73 c #2c160b", -"a95 c #2c180d", -"diA c #2c180f", -"dk2 c #2c190b", -"dDk c #2c1a06", -"#ts c #2c1b09", -"#8c c #2c1b0b", -"do# c #2c1b11", -"#aD c #2c1d00", -"#4j c #2c1d0a", -"#2q c #2c1f0c", -"a.w c #2c2006", -"#94 c #2c2105", -"#nP c #2c2417", -"aZC c #2c2513", -"#pr c #2c251f", -"b.U c #2c2610", -"aJE c #2c2626", -"b.S c #2c2709", -"aVS c #2c2721", -"aG7 c #2c2825", -"#Ol c #2c2b0c", -"#jW c #2c2b0d", -".0W c #2c2b30", -"aXr c #2c2d1f", -"#wC c #2c3508", -"#Mc c #2c351a", -"agy c #2d0c00", -"a8k c #2d0d00", -"dpB c #2d0f04", -"dBO c #2d0f07", -"#ZO c #2d1000", -"dpS c #2d1106", -"#36 c #2d1200", -"dw4 c #2d140d", -"dAD c #2d1509", -"aia c #2d1604", -"a6x c #2d1700", -"deS c #2d1910", -"dlp c #2d1a0c", -"dox c #2d1a13", -"#s1 c #2d1b07", -"#vm c #2d1c00", -"adi c #2d1e00", -"#XD c #2d1f04", -"aee c #2d2010", -"a2G c #2d2109", -"a#8 c #2d220c", -"aQf c #2d2317", -"aLn c #2d2319", -".WL c #2d2321", -"aJG c #2d2322", -"#Ng c #2d2415", -"aWw c #2d241b", -"aJF c #2d2425", -"aXb c #2d2518", -"aV2 c #2d2613", -"aUF c #2d2614", -"#.R c #2d2719", -"aTt c #2d271b", -"#9K c #2d2814", -"a1k c #2d2824", -"aWl c #2d2920", -"aI0 c #2d2926", -"a9e c #2d2a09", -".UX c #2d2a19", -"#im c #2d2a33", -"aWb c #2d2b1e", -"a8I c #2d2d15", -"aTN c #2d2d2d", -"#gH c #2d2e26", -"aeT c #2d2e28", -"aea c #2d2f24", -"#Mp c #2d3011", -"a8J c #2d3013", -"a4Q c #2d371e", -"agk c #2e0800", -"dDj c #2e0a00", -"dBQ c #2e0d06", -"a9h c #2e1000", -"dBN c #2e1008", -"b#D c #2e1103", -"#ZL c #2e1204", -"b#V c #2e1403", -"#5d c #2e1407", -"#Xf c #2e180a", -"#uM c #2e1900", -"dmO c #2e1906", -"dDo c #2e1a02", -"dtE c #2e1a11", -"a7P c #2e1b0a", -"aMW c #2e1b0c", -"#1g c #2e1c06", -"a7N c #2e1c10", -"#vn c #2e1d00", -"#rB c #2e1d09", -"abb c #2e1d0b", -"#tp c #2e1d0d", -"#tb c #2e1f02", -".7U c #2e1f08", -"#2P c #2e1f0a", -"a8r c #2e1f0c", -"#px c #2e2311", -"a3l c #2e241a", -"a82 c #2e2516", -"b.Z c #2e2602", -"aRd c #2e2619", -"aPn c #2e261b", -"aI1 c #2e2925", -"aFG c #2e2c1d", -"#o7 c #2e2d19", -"aPb c #2e2d2b", -"#Me c #2e3128", -"#ys c #2e350c", -"#uD c #2e370c", -"dBP c #2f0e07", -"doc c #2f1100", -"#3K c #2f1106", -"#ZN c #2f1200", -"a9o c #2f1204", -"dB8 c #2f1300", -"#Yw c #2f1401", -"dyz c #2f140b", -"a9p c #2f1504", -"dz9 c #2f1506", -"#YI c #2f1602", -"a72 c #2f170b", -"a99 c #2f1808", -"a9L c #2f180a", -"aj6 c #2f1904", -"dlP c #2f190b", -"#uR c #2f1a09", -"ag4 c #2f1b03", -"ddR c #2f1b12", -"#aC c #2f1e0c", -"#tc c #2f1f05", -"#8S c #2f1f06", -"acV c #2f1f08", -"abM c #2f2000", -"#rC c #2f2003", -"#vo c #2f2202", -"b.V c #2f220f", -"aON c #2f221a", -".9y c #2f230b", -"#vp c #2f2404", -"#ON c #2f251c", -"aOb c #2f261d", -"a9r c #2f2702", -"aN6 c #2f271c", -"a8W c #2f280c", -".8L c #2f2815", -"aMT c #2f281e", -".67 c #2f291b", -"aWj c #2f2a24", -"#Ms c #2f2f23", -"#mG c #2f3006", -"ael c #2f302b", -"#lg c #2f311b", -"#wu c #2f341e", -"#yr c #2f3b0d", -".0Y c #2f4344", -"cBS c #2f9a18", -"dpT c #300e02", -"#2h c #301003", -"#Z8 c #301100", -"dAF c #301305", -"#Xp c #301406", -"a9Q c #301409", -"a92 c #30150a", -"#uV c #301600", -"aVm c #301701", -"dwZ c #301703", -"#wP c #301909", -"aTW c #30190b", -"#Xg c #301a0c", -"aVl c #301b08", -"a8c c #301b16", -"#vl c #301c01", -"ag6 c #301d00", -"a7O c #301d0c", -"a5P c #301d17", -"#5T c #301e06", -"abc c #301e08", -"a7k c #301e0a", -"#vi c #301f01", -"#vj c #301f05", -"#4k c #301f0b", -"ag. c #301f0d", -"#tu c #302007", -"aLz c #302010", -"#.6 c #30210c", -"b.W c #30210e", -"akC c #30240a", -"#4i c #302416", -"#Vc c #302418", -"#.z c #30261d", -"#gY c #30270a", -"aI2 c #302722", -"aXe c #302813", -"aSh c #30281d", -"aUr c #302923", -"b.C c #302a10", -".Xx c #302a1e", -"a2D c #302b25", -"aVC c #302c20", -"aR6 c #302d1e", -"aMn c #302d24", -"aWg c #302e2f", -"#as c #302f2b", -"aQ6 c #302f35", -"#wp c #303014", -"aWp c #303030", -"#jt c #303032", -"#Md c #303725", -"a3z c #305a12", -"aio c #310700", -"dBR c #310e08", -"#09 c #311102", -"#08 c #311104", -"#YS c #311200", -"dBM c #31130b", -"#ZM c #311404", -"#ZZ c #311601", -"#Yu c #311708", -"a91 c #31170a", -"dw5 c #311811", -"a8f c #31190f", -"#6Q c #311a0a", -"#W0 c #311b0d", -"#Xh c #311b0e", -"a98 c #311c0b", -"a4B c #311d02", -"#vk c #311d04", -"#8d c #311e0d", -"#dT c #312205", -"#tt c #31220d", -"a78 c #31221b", -"#.5 c #312316", -"b.z c #312411", -"abl c #312414", -"aNw c #31241c", -"a#9 c #31250b", -"aJH c #312624", -"#Y6 c #31270c", -"#Nb c #312821", -"aXd c #312914", -"#pt c #312926", -"aYt c #312a18", -"aSf c #312b1f", -"aRN c #312d2a", -"a9b c #312e0b", -"##X c #312e1d", -"aek c #312e27", -"#iq c #312e29", -"#jc c #312f32", -"#yy c #31310f", -"aYI c #313224", -".1R c #313236", -"#uo c #31331d", -"#wB c #31360d", -"a7x c #313a0d", -"a6P c #313a1b", -"#yq c #313d0f", -"#Ao c #313f02", -"a7y c #31440c", -"a1X c #314e14", -"csZ c #31a617", -"dz6 c #320f00", -"#2i c #321102", -"dz8 c #321203", -"#2D c #321300", -"b#C c #321503", -"#wO c #321704", -"a71 c #32170e", -"a9P c #321710", -"a6n c #321801", -"akR c #321a00", -"#wQ c #321b09", -"dmb c #321b0b", -"#W1 c #321b0d", -"d#B c #321d1c", -"aWz c #322008", -"a4A c #32200a", -"a84 c #322012", -"aNP c #322014", -"dDl c #32210d", -"#XE c #322201", -"#sX c #322212", -"a#I c #322407", -"a83 c #322515", -".9x c #322616", -"a9f c #322709", -"#nO c #32281c", -"aRe c #32281e", -"b.R c #322908", -"baU c #322a03", -"aYn c #322d29", -"#bw c #322e22", -"aQc c #322e25", -"a3i c #323024", -"#jG c #32322a", -"aUy c #323232", -"#6F c #323321", -"#Mq c #323520", -"a5t c #323717", -"a6Q c #323c1a", -"a0Y c #324410", -"cAJ c #329d1b", -"crW c #32a514", -"aiL c #330c00", -"dz5 c #330e00", -"dpj c #330f00", -"#8G c #331000", -"dz7 c #331203", -"#2j c #331304", -"#3L c #331306", -"#37 c #331400", -"dBI c #33150a", -"b#E c #33150b", -"dBL c #33150d", -"#1p c #331606", -"dBJ c #33160e", -"#5e c #331709", -"#Xr c #33170b", -"dna c #331803", -"#Yv c #331807", -"dyy c #33180d", -"dDq c #331900", -"#uU c #331902", -"#YM c #33190c", -"dcP c #331a13", -"a9M c #331b0f", -"dbd c #331b19", -"#uS c #331c0a", -"a8e c #331c16", -"dt4 c #331d0f", -"#uL c #331e01", -"#6R c #331e0d", -"a08 c #331f18", -"dDn c #33210b", -"b.X c #33210d", -"#W4 c #332113", -"#8e c #332210", -"#4l c #33230a", -"aef c #332313", -"#tv c #332405", -"#3U c #33240d", -"#fr c #33280c", -"aQg c #33291f", -".8K c #332a19", -".7w c #332a21", -".8Y c #332c26", -"b.B c #332d15", -"#mk c #332d21", -"b.4 c #332e04", -"#yw c #332e10", -"#ac c #332f24", -"a2k c #33302b", -".8O c #33311c", -"#Mf c #33322e", -"#sH c #33371c", -"a3x c #334619", -"dqv c #340d00", -"dpU c #340e00", -"dvk c #340f00", -"a9i c #341000", -"drI c #341002", -"dyu c #341206", -"#68 c #341400", -"#YJ c #341500", -"#YU c #341503", -"#3M c #341709", -"#Xq c #34180a", -"#5f c #341a0b", -"aPB c #341a0d", -"aQv c #341c12", -"agz c #341d0b", -"dA. c #341e10", -"a8E c #341e13", -"aeG c #341f0a", -"dpf c #341f1a", -"ae7 c #342214", -"#sZ c #34230f", -"#rz c #342319", -"abN c #342400", -"#V5 c #342403", -"abm c #342508", -"aa# c #342603", -"#rg c #34260c", -"a0N c #342f2b", -"aNE c #34302d", -"#yu c #343110", -"#77 c #34311e", -"#an c #343120", -"#ja c #34331e", -"a1d c #34332e", -"#wo c #343516", -"#yA c #34360f", -"#Mr c #343628", -"a7i c #34371a", -"#sI c #34371c", -"a0F c #343829", -"#TU c #34393d", -"cCY c #34981a", -"csX c #34a016", -"crX c #34a91c", -"dvm c #350e00", -"dvl c #350f00", -"dvj c #351100", -"dpC c #351200", -"#Z9 c #351401", -"aSA c #351403", -"#5z c #351500", -"dyv c #351508", -"#Z0 c #351700", -"dyw c #35170c", -"dBK c #35170f", -"#YL c #351806", -"#Z2 c #351904", -"a90 c #35190b", -"dyx c #35190d", -"aiq c #351a07", -"a7Y c #351a0f", -"dmt c #351b0a", -"#u7 c #351c00", -"#uT c #351c08", -"a9N c #351c15", -"#u6 c #351e00", -"aiJ c #351f0a", -"aOe c #351f11", -"dvv c #351f14", -"a8d c #35201b", -"#8T c #352106", -"#t# c #352406", -".Vy c #352526", -"adg c #35260f", -"ai# c #352613", -"#Sk c #35271a", -"a89 c #352a0a", -"aXO c #352a0e", -"#Na c #352a26", -"#vg c #352b00", -"b.0 c #352b07", -"aYx c #352b21", -".7v c #352c23", -"#pq c #352c25", -"#vq c #352d09", -"#mg c #352e24", -"akB c #35301a", -"#ju c #353126", -"#jn c #353130", -".2b c #353132", -"b.E c #35330d", -"#l# c #353432", -"#b3 c #353533", -"aWP c #353825", -"#wD c #353d0c", -"#yp c #353e11", -"csY c #35a618", -"cmd c #35a714", -"cs0 c #35ac1e", -"dyt c #361206", -"dBS c #36130d", -"#1o c #361502", -"#YT c #361601", -"dxL c #361609", -"ajV c #361702", -"dnR c #361800", -"#8E c #361907", -"#2F c #361909", -"b.a c #361a0e", -"dgq c #361a0f", -"dwY c #361b08", -"a9O c #361b14", -"#1h c #361c05", -"#Z3 c #361c0f", -"a9m c #361d07", -"a8t c #361e04", -"dw6 c #361f17", -"#5V c #362201", -"#2r c #362209", -"#xm c #362300", -"#4m c #362303", -"baR c #362507", -"acW c #36250b", -"#5n c #36260c", -"b.Y c #36270a", -"aa. c #36280b", -".7D c #36281b", -"#sV c #36281d", -"#2O c #362918", -"aP. c #362a1e", -"a8V c #362b0f", -"aeA c #362b29", -"#pu c #362c23", -"#pk c #362d1e", -"#n9 c #363109", -"aUf c #36312d", -"#.J c #363229", -"b.5 c #363308", -"aY9 c #363312", -"#ib c #36332a", -"aKO c #363531", -"aWs c #363533", -".3y c #363636", -"aZO c #36382a", -"aUK c #363940", -"#un c #363b1d", -"aaR c #36962a", -"a#d c #36982b", -"ajz c #369a2a", -"crV c #36a518", -"cme c #36a719", -"dpD c #370f00", -"doY c #371100", -"dz4 c #371200", -"dvi c #371400", -"#YK c #371603", -"aj7 c #371605", -"duR c #371607", -"#Z1 c #371702", -"dpi c #371708", -"dnt c #371900", -"ajU c #371a08", -"a9T c #371b05", -"dk3 c #371b0f", -"dfL c #371b10", -"aSz c #371d10", -"akQ c #371e00", -"air c #371f07", -"b.y c #37210c", -"#8U c #372203", -"#yN c #37220f", -"a.x c #372404", -"adj c #372500", -"a8b c #372519", -"aI6 c #37251b", -"#xn c #372600", -"a9. c #372608", -".YY c #37270d", -"ag# c #372717", -"#0i c #37290e", -"#1z c #37290f", -"#xo c #372a00", -"drE c #372a24", -"bau c #372d0a", -"#pP c #372e05", -"a88 c #372e0f", -"#xp c #372f01", -"dpP c #37322f", -"b.D c #373316", -"#gN c #373632", -"a0u c #373634", -"aO1 c #37372d", -"a0C c #373830", -"#dK c #37392c", -"a#c c #379229", -"cmc c #379e11", -"adT c #37a423", -"dpk c #380f00", -"aeZ c #381000", -"dys c #381207", -"doz c #381300", -"dwV c #381301", -"akk c #381904", -"b#R c #381b0b", -"b#S c #381b0d", -"a9U c #381c06", -"dmP c #381c07", -"b#T c #381c0e", -"di. c #381c11", -"#uW c #381d02", -"a9R c #381d0c", -"#wR c #381f0b", -"aWA c #382004", -"a6y c #382006", -"dEG c #382100", -"aiZ c #382101", -"b.. c #382111", -"a9g c #38220a", -"#6Z c #382709", -"dDm c #382811", -"aXP c #382b09", -"#.7 c #382b0b", -"aP# c #382b22", -"dnq c #382e24", -"##U c #382f26", -"b.A c #38301b", -".9d c #383226", -"#gZ c #383309", -"a1I c #38332f", -"#xq c #383407", -"aUI c #38342b", -"#nA c #383830", -"a8L c #383c19", -"aRo c #383c3f", -"#lj c #383d05", -"#yn c #383d14", -"aZ8 c #383e18", -".0X c #384042", -"a1W c #384b1e", -"aaQ c #38902a", -"ajA c #38992e", -"aaS c #389c2a", -"crU c #38a319", -"coT c #38aa1f", -"dsK c #390f00", -"dvp c #39130a", -"aeY c #391400", -"dyo c #391500", -"dz3 c #391600", -"#2E c #391805", -"akD c #391b00", -"#39 c #391c0c", -"a.h c #391d08", -"aeF c #391d0f", -"deT c #391d12", -"#uX c #391e01", -"b#W c #391e0d", -"#8V c #392200", -"#xl c #392300", -"agA c #39230b", -"#yO c #39240f", -"ah3 c #392411", -"a#U c #392413", -"#8p c #392606", -"dA# c #392617", -"a85 c #392816", -"#0j c #392c0c", -"#PN c #39331d", -"aQb c #393327", -"#9L c #393421", -"aiH c #39352a", -"#nx c #393623", -"#Mt c #39372a", -"aa7 c #39372b", -"#jY c #393c05", -"#An c #394408", -"a9u c #394c0c", -"#9y c #39942b", -"acr c #39952a", -"czE c #399e1c", -"adU c #399e26", -"ctZ c #399f17", -"cBR c #399f20", -"coS c #39a91f", -"coU c #39aa1e", -"dwT c #3a0f00", -"dwU c #3a1000", -"dvo c #3a120a", -"dyr c #3a1407", -"dvq c #3a140b", -"#wN c #3a1800", -"bbv c #3a1900", -"bbP c #3a1a05", -"al0 c #3a1a0b", -"aTY c #3a1b09", -"#1i c #3a1c02", -"#5B c #3a1d0d", -"a9n c #3a1d0f", -"diT c #3a1e13", -"a70 c #3a1e1a", -"a8p c #3a1f0a", -"#Yy c #3a200f", -"#u8 c #3a2103", -"#u5 c #3a2301", -"#xk c #3a2400", -"alZ c #3a240c", -"#Xs c #3a2419", -"b.m c #3a250a", -"aeH c #3a260d", -"dvw c #3a261b", -"aaa c #3a2802", -"a4n c #3a281c", -"baP c #3a290f", -"#9U c #3a2915", -"dAb c #3a2921", -"b.Q c #3a2b0a", -"#td c #3a2b14", -"a8U c #3a2c11", -"b.3 c #3a2e06", -"bav c #3a320d", -"aH7 c #3a332b", -"#uz c #3a3515", -"a#n c #3a3521", -"aZw c #3a3531", -"aZs c #3a3732", -"aTx c #3a3a3a", -"#wn c #3a3b19", -"#sJ c #3a3c24", -"#gF c #3a3e2f", -"#Mg c #3a422d", -".5H c #3a433e", -"#um c #3a441f", -"a9t c #3a450b", -"a7z c #3a5413", -"a#b c #3a8e2e", -"acs c #3a9b28", -"afN c #3a9d26", -"cAI c #3aa020", -"cs1 c #3aa91e", -"cm8 c #3aad1e", -"dDd c #3b0b00", -"aib c #3b1200", -"dyn c #3b1600", -"dAG c #3b1603", -"aSB c #3b1604", -"dyq c #3b1606", -"dyp c #3b1802", -"a.i c #3b1804", -"ajW c #3b1900", -"a9X c #3b190f", -"#38 c #3b1a07", -"#1k c #3b1c07", -"b.b c #3b1c0a", -"dmc c #3b1e0c", -"aPC c #3b1e10", -"ddS c #3b1f14", -"d#C c #3b1f1c", -"a9S c #3b200b", -"amH c #3b2100", -"dyF c #3b2414", -"aiX c #3b250e", -".6d c #3b2510", -"#uK c #3b2607", -"dt3 c #3b2611", -"a2I c #3b270c", -"dw7 c #3b271e", -"a5i c #3b281a", -"b.l c #3b2a0e", -"a#y c #3b2a16", -"#tq c #3b2a1a", -"#N# c #3b2d2a", -"#aE c #3b2f05", -"#Ni c #3b2f1f", -"bat c #3b3012", -"aYu c #3b301a", -"aeB c #3b3130", -"a9a c #3b3211", -"baN c #3b3213", -"#pl c #3b3221", -"aMN c #3b322b", -"baM c #3b330f", -"aV0 c #3b3326", -"aF1 c #3b3535", -"#ix c #3b371a", -"aeR c #3b3829", -".8S c #3b3b45", -"aVX c #3b3c3e", -"ad9 c #3b3e1f", -"a8M c #3b3f1c", -"a2Y c #3b402c", -"#yo c #3b4216", -"a0X c #3b471f", -"a1Y c #3b601a", -"#9x c #3b902b", -"csW c #3b9b16", -"a#e c #3b9b30", -"cmf c #3ba119", -"ahD c #3ba529", -"cpN c #3ba71e", -"afM c #3ba720", -"c99 c #3bad33", -"dDe c #3c0a00", -"dwS c #3c0d00", -"dyk c #3c0f00", -"dvn c #3c1108", -"dyl c #3c1200", -"agl c #3c1300", -"dz2 c #3c1704", -"bbA c #3c1707", -"dvr c #3c170e", -"dBT c #3c1711", -"ac8 c #3c1800", -"agx c #3c180c", -"dod c #3c1900", -"dvh c #3c1903", -"dve c #3c1a00", -"#5A c #3c1b08", -"aRv c #3c1b0a", -"b#F c #3c1b12", -"#1j c #3c1c03", -"aet c #3c1c07", -"a9Z c #3c1c0f", -"a8i c #3c1d08", -"dwX c #3c1d0b", -"dbe c #3c1f19", -"akl c #3c200a", -"#wS c #3c210c", -"#ZP c #3c2110", -"#1l c #3c2213", -".Vd c #3c2515", -"#xj c #3c2601", -"a9J c #3c2611", -"#95 c #3c2807", -"#5U c #3c280f", -"#dQ c #3c292b", -"amt c #3c2b0f", -"a7. c #3c2d1a", -"dAc c #3c2d26", -"#0k c #3c2e09", -"a7M c #3c2e13", -".7k c #3c2e25", -"#rj c #3c311b", -"#Nh c #3c3322", -".9z c #3c3410", -"b.6 c #3c370f", -"#.I c #3c3733", -"dqr c #3c3734", -"#Ay c #3c390c", -"#dt c #3c3930", -"#jf c #3c3b39", -"#.F c #3c3c3c", -"#yz c #3c3e19", -"#9z c #3c972e", -"cBT c #3c981b", -"ad0 c #3c9927", -"crY c #3ca71d", -"cpM c #3ca81f", -"dwR c #3d0c00", -"dym c #3d1500", -"dz0 c #3d1509", -"dz1 c #3d150b", -"b#d c #3d1605", -"dzZ c #3d1607", -"abz c #3d1901", -"a8x c #3d1b00", -"a.k c #3d1c09", -"aOg c #3d1c0b", -"aQx c #3d1d10", -"b.o c #3d1e02", -"#wV c #3d1f03", -"dcQ c #3d1f15", -"#yM c #3d200e", -"#wU c #3d2109", -"aOf c #3d2113", -"a8u c #3d2207", -"dB7 c #3d220f", -"b#U c #3d2314", -"a7X c #3d2316", -"b#f c #3d2405", -"amG c #3d2501", -"dDp c #3d250d", -"c9S c #3d2523", -"aLq c #3d2618", -"#xi c #3d2700", -"#yP c #3d2710", -"#XF c #3d2904", -"#7j c #3d290e", -"aey c #3d2920", -"#3V c #3d2a0c", -"aMk c #3d2a1c", -"abe c #3d2b15", -"dAa c #3d2b1d", -"aKz c #3d2c24", -"a2H c #3d2d13", -"#vf c #3d3004", -"#cc c #3d3006", -"aO4 c #3d3028", -"aZD c #3d3119", -"baO c #3d3214", -"#vr c #3d330f", -"dmM c #3d3425", -"#gr c #3d3533", -"#yv c #3d381a", -"#bQ c #3d392e", -"#.E c #3d3938", -"akA c #3d3e1f", -"#dA c #3d3e2c", -"#qN c #3d3f2a", -"#9N c #3d3f32", -"#uF c #3d4013", -"aDE c #3d4133", -"#ym c #3d4317", -"aaP c #3d8c30", -"acq c #3d8f2d", -"#7U c #3d922a", -"als c #3d9a30", -"ahE c #3d9e2b", -"cm9 c #3da11a", -"act c #3da22a", -"cpO c #3da51c", -"ahC c #3da625", -"cm7 c #3db01f", -"dwQ c #3e0d00", -"dDc c #3e0e02", -"ac9 c #3e1600", -"dzX c #3e1706", -"dzY c #3e1708", -"dBF c #3e1805", -"dBG c #3e1906", -"aRw c #3e1907", -"alP c #3e1a02", -"dnS c #3e1b00", -"dBH c #3e1b08", -"b#Q c #3e1d0a", -"dwW c #3e1d0c", -"dvs c #3e1d14", -"aiK c #3e1e05", -"a8j c #3e1e07", -"aRu c #3e1e11", -"dEH c #3e2000", -"#uY c #3e2103", -"anL c #3e2113", -"acP c #3e230e", -"anK c #3e2310", -"#8W c #3e2401", -"#wT c #3e240d", -"#YV c #3e2417", -"a.y c #3e2803", -"dt2 c #3e2811", -"#yQ c #3e290e", -"#xh c #3e2a00", -".Vw c #3e2a23", -"a8q c #3e2c18", -"ae6 c #3e2c20", -"abO c #3e2d02", -"a9# c #3e2d0f", -"baQ c #3e2d11", -"b.1 c #3e2e0a", -"#ve c #3e2f08", -"aNU c #3e3128", -"#q8 c #3e3222", -".5O c #3e3331", -"#Q2 c #3e350a", -"b.7 c #3e350e", -"aa5 c #3e3623", -"baw c #3e370d", -"#.S c #3e3828", -"#.N c #3e382c", -"aZy c #3e3935", -".9A c #3e3a0b", -"#af c #3e3a2f", -"#yB c #3e3c13", -"#Av c #3e3c15", -"aIj c #3e3d39", -"aXl c #3e3f3a", -"#wm c #3e451c", -"#Ap c #3e490d", -"a5x c #3e681c", -"adZ c #3e932b", -"#7V c #3e952d", -"cAK c #3e981c", -"ctY c #3e9b17", -"afT c #3e9b26", -"aaT c #3e9e30", -"crT c #3e9f1a", -"ad1 c #3ea029", -"cqP c #3ea41c", -"coV c #3ea61d", -"cn4 c #3eaa20", -"cm6 c #3eab1c", -"dDf c #3f0d02", -"dDa c #3f1306", -"dzW c #3f1604", -"akj c #3f1700", -"alO c #3f1c08", -"b#G c #3f1d11", -"dmu c #3f1e0b", -"dvg c #3f1f06", -"a9W c #3f1f10", -"#wW c #3f2003", -"akS c #3f2200", -"#1. c #3f2212", -"amI c #3f2300", -"#2s c #3f2409", -"#u9 c #3f250a", -"b.# c #3f2518", -"dt1 c #3f2610", -"b.n c #3f270b", -"a97 c #3f291b", -"ajT c #3f2a0d", -"abd c #3f2a15", -"b.8 c #3f2c0b", -"#ca c #3f2c1b", -".Yv c #3f2c25", -"#rD c #3f3009", -"baS c #3f310e", -".7V c #3f3210", -"baL c #3f330d", -"a7v c #3f341e", -"#.8 c #3f360b", -".52 c #3f363b", -".7W c #3f3709", -"aeQ c #3f3720", -"aMF c #3f372c", -"aW4 c #3f3a34", -"aWS c #3f3a36", -".7K c #3f3e3c", -"#iz c #3f3f09", -"#mH c #3f3f0b", -"d.N c #3f4f44", -"daw c #3f5347", -"a3A c #3f701e", -"ahF c #3f982e", -"adV c #3f9928", -"alr c #3f9b2e", -"cyx c #3f9e1e", -"acl c #3f9e26", -"adS c #3fa621", -"cn5 c #3faa20", -"d.. c #3faa36", -"dBC c #401000", -"drJ c #401100", -"dBD c #401300", -"dpV c #401400", -"dBE c #401502", -"dzV c #401504", -"dwe c #401606", -"dD. c #401608", -"agm c #401703", -"aj8 c #401705", -"a9j c #401a05", -"b.e c #401b00", -"dDs c #401c02", -"b#H c #401c0c", -"bag c #401d01", -"b#I c #401d07", -"a.j c #401d09", -"baf c #401f00", -"b#0 c #402009", -"aeu c #40200b", -"alN c #40210d", -"dvt c #402218", -"#yS c #402708", -"#u4 c #402806", -"#yR c #40280c", -"#V6 c #402900", -"a#J c #402907", -"a9I c #402a12", -"dEE c #402c0b", -"#vd c #402d0c", -"b.2 c #402e08", -"#2R c #403112", -"a6c c #40332a", -"#.y c #40352f", -"#fs c #40370e", -"aMO c #403730", -"##8 c #403732", -".66 c #40382b", -"#VY c #403931", -"#o. c #403d0a", -"#e5 c #403d34", -"aUP c #403e31", -"#qI c #404038", -"a9s c #404213", -"aeb c #404237", -"#uE c #40471b", -"#ul c #405023", -"a5w c #40631f", -"#6u c #408b26", -"#6v c #408e29", -"cDZ c #40951e", -"afS c #409629", -"afO c #40982a", -"cCZ c #409a1f", -"ajy c #409d2b", -"cCX c #409e24", -"cu3 c #40a01b", -"czD c #40a120", -"afU c #40a325", -"cqO c #40a41e", -"cn3 c #40a720", -"dwP c #410d00", -"dBB c #410e00", -"dqw c #411200", -"dDb c #411306", -"dD# c #411508", -"duS c #411605", -"dC9 c #411606", -"akE c #411900", -"al1 c #411a09", -"ain c #411b0e", -"dBU c #411c16", -"#wM c #411d00", -"bbT c #411d03", -"a9k c #411d07", -"aQy c #411d0d", -"bbz c #411d0f", -"ajX c #411f04", -"dgr c #411f13", -"b#e c #41210a", -"aTZ c #41210c", -"b#A c #412205", -"b#Y c #41220d", -"#w7 c #412301", -"#2k c #412416", -"dvu c #41261b", -"akP c #412706", -"aMX c #412716", -"#0. c #41271a", -".5W c #412814", -"a.z c #412903", -"#v# c #41290f", -"#1q c #41291d", -"dED c #412a0a", -".6e c #412a0b", -"dt5 c #412a1c", -"#5W c #412b00", -"aab c #412b02", -"aHL c #412b1e", -"dEF c #412d0c", -"aj5 c #412d15", -"b.P c #412e0d", -"b#g c #412f07", -"#1A c #413213", -".7i c #41342e", -"ams c #41351b", -".0R c #413622", -"#Q5 c #413827", -"#pp c #41392e", -"aUB c #413936", -"a#q c #413a27", -"aGi c #413b3d", -"aVF c #413c38", -"#xr c #413d10", -"aJt c #413d34", -"aY4 c #413d3a", -"#uG c #413e13", -"b.F c #413f18", -".62 c #413f2a", -"#hX c #41403c", -"#.G c #41403e", -"aJc c #41413f", -"b#i c #414208", -"aHk c #41423d", -"#oW c #41443b", -"aZ9 c #414a1b", -"dax c #415347", -"a7A c #41621b", -"cwe c #419a1a", -"ajB c #419c35", -".nf c #41a21f", -"cqQ c #41a31c", -"ack c #41a426", -"cpL c #41a821", -"c98 c #41a832", -"dDg c #420e03", -"dwO c #420f00", -"dpE c #421500", -"alQ c #421a00", -"amc c #421c05", -"bbN c #421f0b", -"dfM c #422014", -"ais c #422307", -"#wX c #422402", -"bbw c #42240a", -"#yT c #422807", -"#v. c #42280f", -"anJ c #422811", -"#2w c #422817", -"dEC c #42290b", -"a0e c #422a1e", -"#TG c #422e0b", -"#5o c #422e0d", -"#TF c #422f11", -"ae8 c #423022", -"dAd c #42312a", -"#TJ c #423223", -".Zo c #423320", -"#Y8 c #423411", -"#dU c #42350b", -"ahX c #423525", -"bas c #42371b", -"bax c #423b0f", -"#Nd c #423b33", -"aOZ c #423c30", -"aM. c #423d39", -"#k9 c #423d43", -"#kW c #423e33", -"#Um c #423e3d", -"#Au c #423f16", -"#kK c #42423a", -"#P9 c #424244", -"#Rm c #42433b", -"#jT c #42433e", -"doP c #424441", -"aTo c #424645", -"#Al c #424b14", -"#wl c #424e1c", -"d.O c #424f45", -"aaO c #428b2f", -"a#a c #428c33", -"acp c #428d2e", -"#9A c #429636", -"acm c #429928", -"ct0 c #42a018", -"ahB c #42a21d", -"afL c #42a41b", -".wo c #42a526", -"cn6 c #42a61f", -"ad2 c #42a62a", -".yd c #42a725", -".z6 c #42a924", -"c8u c #42ae36", -"dzU c #431603", -"bbM c #431e0b", -"dmQ c #431f09", -"a#W c #43200c", -"b#P c #43200d", -"dEz c #432105", -"dDr c #432106", -"deU c #432115", -"anM c #432213", -"a8l c #43230a", -"#2t c #432407", -"dvf c #432408", -"#w6 c #432501", -"#2v c #43250d", -"abn c #432b09", -"ai0 c #432c00", -"#6S c #432d1f", -"#vc c #432e11", -"ae5 c #432f24", -"dw8 c #432f26", -"#uJ c #43300f", -"afa c #43310d", -"baK c #43340b", -"aXQ c #43340d", -"aZE c #43341d", -"dsH c #433630", -"#pQ c #433908", -".5P c #433937", -"#dj c #433938", -"#Nc c #433a33", -"aOB c #433e3b", -"#Ne c #433f34", -"#l. c #433f40", -"#At c #434110", -"#6I c #434230", -"#ji c #43433b", -"#yl c #43491b", -"a9v c #435d16", -"a3y c #436226", -"a1Z c #437221", -"#9w c #438e31", -"adY c #438f2b", -"#7T c #438f2d", -"ahJ c #439727", -"alt c #439b33", -"cxn c #439c1c", -".ne c #439f20", -"cpP c #43a119", -".wn c #43a326", -".ng c #43a41f", -".p# c #43a421", -"acu c #43a430", -"afV c #43a826", -"dxM c #441503", -"dwJ c #441800", -"aPD c #441e0b", -"agS c #441f05", -"aQz c #441f0d", -"any c #44200a", -"dzb c #442010", -"dlq c #442012", -"#w8 c #442206", -"djb c #442216", -"dbf c #442219", -"d#D c #44231e", -"a9l c #44240d", -"a8v c #442509", -"b.w c #442510", -"a9V c #442511", -"aVn c #44260e", -"#3N c #44261b", -"a8C c #442719", -"c9T c #442723", -"#8X c #442900", -".2s c #44290b", -"a6z c #44290e", -"alY c #442a11", -"#5g c #442a1d", -"a4C c #442c10", -"#2G c #442c20", -"ah2 c #442e19", -"#xg c #443100", -"ag7 c #443109", -".0b c #44332b", -"aez c #443530", -"aJJ c #44362d", -"#zl c #443800", -"baT c #443812", -"#zm c #443b04", -"bcR c #443c0e", -"#uH c #443c15", -".0j c #443d35", -"#gb c #443d45", -"aZB c #443e32", -"#eH c #443f3b", -"#hY c #44403d", -"#gA c #444138", -"#wF c #444211", -"#lk c #444907", -"aSQ c #444942", -"afR c #44922c", -"#7W c #449435", -"cxr c #44981c", -"a#f c #449836", -"ane c #449b2a", -"cu2 c #449d1b", -"cyw c #449f20", -"ct1 c #44a019", -"cm3 c #44a11c", -".lf c #44a11d", -"cm5 c #44a21a", -".p. c #44a323", -".uy c #44a325", -".lg c #44a41e", -"dBA c #451100", -"dyj c #451500", -"#yL c #451602", -"aki c #451700", -"doZ c #451900", -"agU c #451b02", -"dEy c #451b03", -"doe c #451d00", -"bbL c #451f0a", -"b.p c #452107", -"a#V c #45210b", -"dlQ c #452111", -"bbR c #45220c", -"anx c #45220f", -"b#c c #45230a", -"ddT c #452317", -"a8m c #45250e", -"alM c #452510", -"amJ c #452600", -"dEA c #45260a", -"anw c #452614", -"akT c #452700", -"#uZ c #452808", -"dEB c #45280a", -"a.A c #452901", -"b#X c #452914", -"aWB c #452a0c", -"#AM c #452a0d", -"aes c #452a17", -"#7m c #452b00", -"#zi c #452c00", -"#zj c #452f00", -"aj4 c #452f17", -"ag8 c #453001", -"#vb c #453015", -"b.O c #45310e", -"bcO c #45330d", -"dvx c #453327", -"#s2 c #453420", -"bcL c #453513", -".Vx c #453639", -"#.C c #45382f", -"bcK c #453911", -"aeC c #453a36", -"baY c #453b08", -"aR2 c #453b39", -"#aF c #453e07", -"#nW c #453e2e", -"aHq c #454046", -"#jx c #454136", -"#.H c #45413e", -"aZ. c #454219", -"#Aw c #45431a", -"aDD c #454337", -"#Ax c #454418", -"aeU c #454440", -"dcc c #454b47", -"d.M c #454f47", -"ahH c #45912d", -"ahG c #45932e", -"ahI c #45942b", -"ahK c #459a25", -"cqS c #459b14", -"cs2 c #459e1e", -"cqR c #459f19", -".le c #45a01f", -"coW c #45a11a", -"cGR c #45a416", -"coR c #45a422", -".pa c #45a520", -"dBy c #461200", -"dDh c #461207", -"dwK c #461900", -"aic c #461904", -"doA c #461b00", -"b.c c #46220a", -"abB c #46220c", -"ba3 c #462300", -"amu c #462400", -"#2u c #462409", -"aJo c #462712", -"a6A c #46280c", -"#u3 c #462907", -"bae c #462909", -"anI c #462a12", -"agB c #462b0d", -"aac c #462e00", -"#va c #462e14", -"#60 c #462f0d", -"a2J c #463219", -"#zk c #463300", -"#4n c #463406", -"bar c #46371a", -"baX c #463807", -"#uI c #463813", -"aGX c #463835", -"#sU c #463931", -"a3Y c #463933", -"#q4 c #463a2c", -"#1x c #463b29", -"#pR c #463c01", -"#VT c #463c3d", -"aRc c #463e33", -"aJR c #463e3b", -"#zn c #46410a", -"#As c #46450f", -"#qH c #464644", -"#mI c #464809", -"akz c #464c1c", -"dcb c #464c48", -"aDF c #464d3d", -"#Ak c #464f18", -"a4R c #464f34", -"day c #46564b", -"#wk c #465a1f", -"cxq c #469619", -"cyB c #46961b", -"czF c #46981c", -"ajE c #469829", -"anf c #469a2a", -"crS c #469d1b", -".nd c #469e23", -"cF1 c #46a115", -"cm2 c #46a21d", -".sT c #46a226", -".q3 c #46a31f", -"dBx c #471300", -"dyi c #471500", -"dzT c #471605", -"b#5 c #471900", -"dwL c #471a00", -"aiM c #471c00", -"dwI c #471e00", -"dnb c #471f05", -"amd c #47210a", -"aRx c #47210e", -"dFP c #472200", -"b.d c #472208", -"b#O c #47220f", -"aLs c #472210", -"bbS c #47230b", -"#w9 c #47250a", -"a9Y c #47251b", -"apx c #472613", -"#8H c #472816", -"amF c #472903", -"#AN c #472a0a", -"#w5 c #472b04", -"a8D c #472b1f", -"#zh c #472c00", -"aKS c #472c17", -"#yU c #472d08", -"#4. c #472f23", -"ahZ c #473123", -"ae4 c #473124", -"abP c #473203", -"b.k c #473215", -"adk c #473409", -"a0x c #47371e", -"bcs c #47380f", -"bcr c #473811", -"a.n c #473936", -"bcJ c #473a0e", -"aeh c #473a29", -".Vj c #473a32", -"a8T c #473c1e", -"acG c #473c2a", -"#bI c #473d3b", -"aMe c #473e35", -"b#h c #473f0e", -"#c4 c #473f3d", -".UY c #47402d", -"#OL c #474047", -"#o# c #474306", -"#g0 c #47440d", -"aJx c #47443d", -"#hV c #474642", -"dlm c #47473b", -"aXJ c #47484a", -"#dB c #474934", -"#wE c #474b19", -"dav c #47524a", -"aRI c #47524c", -"d.P c #475349", -"#uk c #475b26", -"#4W c #478d2b", -"afP c #47942e", -"cqT c #479e1b", -".q2 c #47a125", -".sU c #47a223", -"cn7 c #47a31c", -"cqN c #47a420", -".#g c #47a422", -"ct2 c #47a721", -"c8v c #47aa36", -"dBz c #481100", -"dBw c #481400", -"dBv c #481600", -"dwN c #481801", -"dDi c #48190f", -"akh c #481a00", -"bbC c #481c01", -"b#4 c #481c03", -"agT c #481e05", -"anz c #482007", -"bcd c #482100", -"abA c #48220b", -"b.f c #482308", -"bbX c #482404", -"dcR c #482418", -"dEI c #482603", -"aMY c #482714", -"dtX c #482811", -"#AP c #482a04", -"#AO c #482b09", -"aLr c #482b1b", -"ba2 c #482c04", -"dtZ c #482c14", -"#AL c #482d10", -"acX c #482e0d", -"a4D c #482e13", -"dyG c #483224", -"ag9 c #483300", -"ajS c #483514", -"#tw c #483610", -"#2S c #48370c", -"dAe c #483730", -"#9V c #483926", -"a#Z c #483932", -"aMr c #483a31", -".XG c #483c26", -"a0S c #48403d", -"#ez c #484131", -"amr c #48421e", -"#.9 c #48430b", -"aL9 c #48433f", -".9B c #48470e", -"dbG c #48483e", -"#jZ c #484d0b", -"dca c #484d49", -"b#j c #485110", -"#yk c #48521e", -"cyA c #48941a", -"cAH c #48961e", -"ajD c #489630", -"cwd c #48981b", -"alu c #489933", -"aaU c #489d36", -"cm4 c #489f1a", -".sS c #48a026", -".sV c #48a123", -".jm c #48a21c", -"ct3 c #48a21e", -".o9 c #48a226", -".z3 c #48a519", -"ad3 c #48a82b", -"dsL c #491200", -"dyh c #491500", -"aj9 c #491902", -"dwM c #491a00", -"amb c #491c00", -"alR c #492002", -"bbK c #49200a", -"agn c #49200c", -"dC. c #492108", -"#wL c #492201", -"b#J c #492409", -"bdx c #49240a", -"aip c #492411", -"bbW c #492505", -"ajY c #49260a", -"a8w c #49270c", -"#AQ c #492902", -"#3W c #492c0e", -"#zg c #492e00", -"dt0 c #492f18", -"baq c #493011", -"#8q c #49310b", -"#5C c #493127", -"#0l c #49330a", -"adb c #493326", -"dw9 c #49362f", -"a1r c #49391f", -"bcP c #493a11", -"agQ c #493b32", -"a3m c #493c33", -"aHz c #493f3d", -"#cd c #494009", -"#.D c #494039", -"#Az c #494113", -".9c c #494134", -"#wy c #494228", -"#SR c #494546", -"#jK c #49464f", -"aZ# c #494717", -"#mc c #49493f", -"#g1 c #494a08", -"aYK c #494b40", -"a1C c #494c41", -"#Am c #49541a", -"#yj c #495b21", -"a0Z c #496322", -"a## c #498e35", -"aaN c #49902a", -"adW c #49942d", -"#6w c #499437", -"csV c #499517", -"aaL c #499727", -"cyC c #49991e", -"ajC c #499938", -".wm c #499c26", -".jl c #49a01d", -".q1 c #49a127", -".jn c #49a31d", -".pb c #49a31f", -".wp c #49a327", -"cHJ c #49a419", -".lh c #49a51e", -".z2 c #49a818", -"afW c #49aa27", -"dEx c #4a0f00", -"dzc c #4a1702", -"dFO c #4a1a00", -"dnT c #4a1f00", -"dwH c #4a2101", -"aOh c #4a2411", -"dBV c #4a251f", -"akm c #4a260c", -"#x. c #4a280f", -"amK c #4a2900", -"c9U c #4a2922", -"#wY c #4a2a04", -"alX c #4a2c10", -"a.B c #4a2d03", -"b.x c #4a2e18", -"c8g c #4a2e2a", -"aeI c #4a2f11", -"#8I c #4a2f24", -"bab c #4a3109", -"#7l c #4a320c", -"#69 c #4a3228", -"bac c #4a340f", -".6f c #4a350a", -"#Y9 c #4a3611", -"baV c #4a390d", -"bcT c #4a3a06", -"aNv c #4a3d35", -".37 c #4a3d37", -"bbe c #4a3e02", -"baZ c #4a400d", -".7u c #4a4138", -"bay c #4a4214", -"aJU c #4a473e", -"#SK c #4a4a40", -"aeo c #4a4a42", -"#o1 c #4a4a48", -"dbH c #4a4b43", -"a0H c #4a4c41", -"a8N c #4a4e29", -"c7t c #4a4e4f", -"#e0 c #4a4e51", -"d#1 c #4a5034", -"#wj c #4a6522", -"#6t c #4a8c2b", -"aaM c #4a9226", -"cBU c #4a931d", -"alv c #4a952e", -"cxm c #4a9a1d", -"ajF c #4a9a27", -"ang c #4a9a2b", -".ux c #4a9b25", -".y# c #4a9d19", -"cu4 c #4a9d1b", -".ld c #4a9f20", -"ahL c #4a9f26", -".D8 c #4aa11e", -".sW c #4aa11f", -".nh c #4aa621", -".#h c #4aa629", -".Ac c #4aa722", -".bi c #4aa725", -".z1 c #4aa816", -"dwf c #4b1604", -"bba c #4b1b04", -"aiN c #4b1e00", -"dnu c #4b2000", -"anZ c #4b210b", -"dmv c #4b2210", -"bah c #4b2309", -"b#1 c #4b2510", -"b.9 c #4b260b", -"d#E c #4b261d", -"dFQ c #4b2800", -"#x# c #4b290e", -"#u2 c #4b2d0b", -"b#Z c #4b2d15", -"bbc c #4b2e02", -"aof c #4b2f17", -"aFC c #4b2f24", -"#zf c #4b3000", -"b#B c #4b3015", -"#30 c #4b301b", -"bad c #4b310e", -"#xf c #4b3601", -"afb c #4b380d", -"bcM c #4b3817", -"baW c #4b3909", -"aH1 c #4b392f", -"bcI c #4b3a0e", -"bct c #4b3c11", -"#Sh c #4b3c15", -"a7L c #4b3d18", -"#vs c #4b3e14", -"dn. c #4b4135", -"aX. c #4b4642", -"#Uh c #4b4643", -"#Cu c #4b490c", -"#nE c #4b493a", -"dc# c #4b494a", -"#Ar c #4b4e15", -"c5S c #4b514f", -"#Aq c #4b5318", -"c7s c #4b5453", -"dbx c #4b6b3a", -"#4V c #4b8b2a", -"#7S c #4b8d33", -"#9B c #4b903f", -"afQ c #4b9330", -"cAL c #4b941e", -"acn c #4b942b", -"cxp c #4b9a1d", -"ao3 c #4b9a23", -"cmb c #4b9b16", -"cwh c #4b9b1e", -".ya c #4b9d1f", -".jk c #4ba01e", -".uz c #4ba124", -".q4 c #4ba21f", -".BZ c #4ba424", -".ye c #4ba426", -".D7 c #4ba51f", -".B0 c #4ba625", -".bj c #4ba627", -".Ab c #4ba722", -".ta c #4ba81b", -".B8 c #4ba823", -".B9 c #4ba824", -"dyg c #4c1600", -"dBq c #4c1705", -"dBp c #4c1803", -"akF c #4c1c00", -"b#6 c #4c1f02", -"bbJ c #4c220a", -"anY c #4c220c", -"bdT c #4c2508", -"agV c #4c260f", -"aSC c #4c2613", -"bdR c #4c270d", -"apy c #4c2715", -"bbQ c #4c2915", -"#xa c #4c2a0e", -"aVo c #4c2a11", -"bao c #4c2b0a", -"#u0 c #4c2d0e", -"#3Z c #4c2d11", -"b#z c #4c2e0c", -"#w4 c #4c2f07", -"aad c #4c3001", -".4b c #4c3116", -".Vv c #4c311c", -"#96 c #4c330b", -"aj3 c #4c341a", -"#XG c #4c350c", -"baJ c #4c360d", -"adl c #4c3806", -"ba1 c #4c3a0c", -"#rF c #4c3b03", -"#rE c #4c3b0d", -"#8f c #4c3b2b", -"dx. c #4c3b33", -"bcq c #4c3c18", -"aVB c #4c433e", -".7X c #4c470d", -"#ft c #4c4710", -"ahW c #4c4731", -"aJ# c #4c4741", -"aYL c #4c4c4e", -"aZQ c #4c4e43", -"#sw c #4c4f48", -"#Ck c #4c5913", -"#yi c #4c6523", -"#7X c #4c8f3f", -"aco c #4c922f", -"alq c #4c9b2e", -"and c #4c9c2b", -"crZ c #4c9e20", -".o8 c #4ca027", -".fo c #4ca21d", -"acj c #4ca225", -"acv c #4ca235", -"c6Q c #4ca934", -"c8t c #4cab35", -"duT c #4d1602", -"dBo c #4d1904", -"dzP c #4d1a00", -"dzS c #4d1a09", -"al2 c #4d1d06", -"ama c #4d1e00", -"dC8 c #4d1e0a", -"amv c #4d2100", -"#y5 c #4d2108", -"dmR c #4d230b", -"bbB c #4d230d", -"bdU c #4d2406", -"dbg c #4d2519", -"dgs c #4d2617", -"ad. c #4d2710", -"b.h c #4d280b", -"bbV c #4d280d", -"bbb c #4d2905", -"#wK c #4d2907", -"dvd c #4d2a0c", -"bby c #4d2a17", -"ajZ c #4d2b0f", -"bbx c #4d2d18", -"c8h c #4d2f27", -"#ze c #4d3200", -"ai1 c #4d3300", -"abQ c #4d3604", -"aPA c #4d372c", -".5D c #4d3835", -"beL c #4d3a10", -".1N c #4d3a33", -"dc4 c #4d3f1a", -"bcS c #4d4312", -".3M c #4d432a", -"aNW c #4d443d", -"aGk c #4d474b", -"#Q1 c #4d481e", -"#Xx c #4d4946", -"aUU c #4d4a41", -"dlN c #4d4b3f", -"aWd c #4d4d43", -"#Ct c #4d4e12", -"d#2 c #4d4f39", -"#Aj c #4d561d", -"d.Q c #4d574f", -"c5R c #4d5854", -"#Cl c #4d5a12", -"a0. c #4d5a22", -"daz c #4d5a51", -"a#. c #4d8f2b", -"#4X c #4d8f37", -"#9v c #4d8f38", -"czI c #4d921b", -"a#g c #4d923f", -"ahA c #4d9a18", -"cDY c #4d9a28", -".wk c #4d9b21", -".sR c #4d9c27", -"aaK c #4d9c29", -"cxs c #4d9d22", -".nc c #4d9d24", -"cwg c #4d9e1e", -"cn8 c #4d9f19", -".D9 c #4da01c", -".sX c #4da01e", -".yc c #4da02a", -".dk c #4da220", -"cpK c #4da324", -".yl c #4da41f", -"c97 c #4da42f", -"d#S c #4da745", -"dEw c #4e0b00", -"dyf c #4e1600", -"dyb c #4e1700", -"dqx c #4e1800", -"dzO c #4e1b00", -"dpl c #4e2000", -"#y6 c #4e2209", -"anN c #4e240e", -"#y4 c #4e2507", -"anA c #4e2509", -"b#2 c #4e250f", -"aQA c #4e2511", -"dk4 c #4e261a", -"alL c #4e270a", -"dfN c #4e2718", -"ait c #4e2a06", -"bdw c #4e2b0f", -"apw c #4e2b15", -"aog c #4e2c11", -"aJ1 c #4e2c20", -"akU c #4e2d00", -"#3X c #4e2d0c", -"#3Y c #4e2d0e", -"bcc c #4e2e05", -"anH c #4e2f13", -"abC c #4e2f1d", -"#u1 c #4e300e", -"a.l c #4e3427", -"#xe c #4e3606", -"#1B c #4e370b", -"aRr c #4e382d", -"bbd c #4e3a05", -"bcN c #4e3a17", -"aJY c #4e3b34", -"abE c #4e3c32", -"bcQ c #4e4115", -"#te c #4e4130", -"aKZ c #4e4139", -"ba0 c #4e4212", -"af8 c #4e4236", -"#dV c #4e450e", -"#yC c #4e471d", -".VJ c #4e472b", -"dbF c #4e483c", -"c5T c #4e484a", -"aM# c #4e4945", -"aTv c #4e4b42", -"d#0 c #4e4d2f", -"c4e c #4e4e46", -"aPO c #4e4e4c", -"amq c #4e4f13", -"#Cs c #4e5011", -"dcd c #4e534f", -"a7h c #4e5536", -"#Co c #4e560b", -"#Cj c #4e5915", -"#Cn c #4e5a10", -"#Cm c #4e5b13", -"b#k c #4e5b15", -"#uj c #4e6328", -"#wi c #4e6c22", -"adX c #4e9431", -"ao4 c #4e9923", -".wl c #4e9b27", -"cu5 c #4e9d1d", -"afK c #4e9e19", -".q0 c #4e9f27", -".y. c #4ea018", -"cm1 c #4ea020", -".uA c #4ea022", -".hn c #4ea11d", -".yk c #4ea520", -".Ad c #4ea522", -"dEv c #4f0d00", -"dBn c #4f1b05", -"dpW c #4f1e00", -"do0 c #4f1f00", -"akg c #4f2004", -"an0 c #4f2109", -"bb0 c #4f2308", -"b#M c #4f2414", -"anX c #4f250d", -"b#N c #4f2515", -"anv c #4f2614", -"b#K c #4f270e", -"dEK c #4f2807", -"deV c #4f2819", -"b.g c #4f2a0d", -"apv c #4f2b11", -"bbO c #4f2e1b", -"#5p c #4f310f", -"a#K c #4f330b", -"aos c #4f3510", -"aor c #4f3713", -"a6k c #4f372b", -"aiW c #4f3922", -"#yD c #4f3d15", -"a5O c #4f3d31", -"aXR c #4f3e13", -"ai. c #4f4432", -"aMt c #4f443e", -"#Cv c #4f4709", -"a1q c #4f4835", -"#fu c #4f4b0b", -"a6J c #4f4b42", -"c86 c #4f4b4c", -"#jV c #4f4e3a", -"#jE c #4f4f4d", -"c84 c #4f4f51", -"dbI c #4f504a", -"d.e c #4f512a", -"#yh c #4f6f24", -"a00 c #4f6f26", -"#3r c #4f8934", -"ctX c #4f931a", -"czJ c #4f941d", -"cCW c #4f9420", -"cm# c #4f9518", -"ct4 c #4f961c", -"cyz c #4f961e", -"cyD c #4f9822", -"cD0 c #4f9926", -"ao2 c #4f9a24", -"cn9 c #4f9c18", -"cpQ c #4f9c1a", -".yb c #4f9d26", -".sY c #4f9f1c", -".fn c #4fa01d", -"cu7 c #4fa020", -".hm c #4fa11b", -".wq c #4fa125", -".jo c #4fa21e", -".z5 c #4fa329", -".#f c #4fa422", -".Aa c #4fa423", -".dm c #4fa425", -".rl c #4fa51c", -".z7 c #4fa526", -"afX c #4fa52a", -".z0 c #4fa619", -".t# c #4fa61b", -".C. c #4fa623", -".uU c #4fa71c", -".dl c #4fa826", -"dEt c #500e00", -"dEs c #501100", -"drK c #501400", -"dye c #501801", -"dBr c #501807", -"dC7 c #501e07", -"doB c #502000", -"bb1 c #502107", -"b## c #50220a", -"b#3 c #50260e", -"bce c #502709", -"b#b c #50280e", -"dkx c #50281c", -"ddU c #50291a", -"bbY c #502c0c", -"b.q c #502c12", -"aT0 c #502c16", -"akO c #502f06", -"dBW c #502f28", -"a8n c #503019", -"a#X c #503323", -"#XH c #503508", -"aoe c #503721", -"dFW c #50380a", -".W5 c #503c24", -"b.N c #503e1a", -"bcX c #503f07", -"a#z c #50412c", -"c5U c #504448", -"aK1 c #504740", -".US c #504742", -"#5E c #504846", -"a2b c #504943", -"#zo c #504b14", -"aPf c #504b47", -"aSj c #504c43", -"aZ4 c #504c4d", -"c85 c #504e4f", -"aJb c #504f4a", -"aiG c #505044", -"dk0 c #505046", -"#fk c #505052", -"#h6 c #505155", -"#Cp c #50540a", -"c7r c #505958", -"#Ai c #505e20", -"cma c #509516", -"cyy c #50971d", -"cn. c #509a1d", -"cmg c #509c1e", -"cxo c #509c20", -"cqU c #509d1d", -".lc c #509e24", -".jj c #509f1f", -".uB c #509f22", -".q5 c #50a01b", -".pc c #50a21c", -".li c #50a31d", -".D6 c #50a523", -".B7 c #50a524", -"ad4 c #50a530", -"c6R c #50a736", -"dxN c #511400", -"dEp c #511805", -"#yK c #511a05", -"dya c #511c00", -"dC6 c #511d05", -"dzN c #511e00", -"dzR c #511e0b", -"aie c #511f04", -"dnc c #512407", -"#y7 c #51240d", -"b#. c #51250c", -"alS c #512606", -"apk c #51270f", -"aOi c #512711", -"dlR c #512717", -"b#L c #512814", -"ae0 c #512910", -"diU c #512a1b", -"bbu c #512e08", -"#wJ c #512f09", -"c8i c #512f25", -"dFR c #513005", -"#wZ c #513007", -"a7m c #51301f", -"a.C c #513100", -"b.v c #51311a", -"aWC c #513414", -"aot c #51350d", -"#yV c #51350e", -"abR c #513600", -"bcb c #513609", -"#5t c #513720", -"bcH c #513909", -"dFV c #51390b", -".2j c #513c29", -"beP c #513f0f", -"dAf c #514039", -"bcu c #514314", -"dvy c #514336", -"c4f c #514342", -"#7# c #514746", -"#TW c #514750", -"#Sf c #51482b", -"aOC c #514946", -"#4a c #514947", -"aRg c #514a42", -"c87 c #514b4d", -"#pf c #514c48", -"aZu c #514e47", -"b.G c #514f26", -".7b c #515256", -"#iA c #515312", -"#wv c #515443", -"#Ag c #516f25", -"a.9 c #519025", -"cCf c #519524", -"cpR c #519615", -"ajG c #519929", -".wj c #519b1e", -".uC c #519d1f", -".uD c #519e1e", -"d.# c #519e38", -".z4 c #519f25", -".o7 c #519f27", -".bk c #519f28", -"cwf c #51a021", -".#i c #51a02b", -".D5 c #51a221", -".wx c #51a31b", -".ww c #51a31d", -"cqM c #51a325", -".ni c #51a41e", -".yj c #51a422", -"d#T c #51a547", -"dEu c #521000", -"dtH c #521500", -"dEq c #521705", -"dyd c #521802", -"dyc c #521900", -"dEo c #521906", -"dBs c #521a0b", -"dEn c #521b07", -"dBm c #521c04", -"dof c #522200", -"#y9 c #52260d", -"bdQ c #522913", -"aJ2 c #522b1c", -"c9V c #522c21", -"apu c #522d10", -"#AK c #522d12", -"#w3 c #523106", -"#AR c #523209", -"aae c #523402", -"dFS c #523509", -"abo c #52350d", -"#wI c #52360e", -"dFX c #52370a", -"dt6 c #52372c", -"dFU c #523a0e", -"bcW c #524109", -"beQ c #524511", -"dnN c #52453d", -"c5V c #52464a", -"#pS c #524707", -"beS c #52470f", -"#xs c #524817", -"#2I c #524847", -"ah9 c #52493a", -"#gs c #524a48", -"aPj c #524b43", -"aPi c #524d47", -"dc. c #524e4f", -"b.H c #524f26", -"aJT c #524f48", -"aZl c #52524a", -"a0A c #52534e", -"aQX c #525355", -"a20 c #525647", -"#Ci c #525d19", -"#Ah c #526724", -"#Af c #527727", -"#3q c #528b2d", -"czH c #52931d", -"czG c #52961f", -"alw c #529627", -"aaV c #52973e", -"aqN c #52981e", -"crR c #529a1d", -"ajx c #529a2a", -".nb c #529c23", -".uw c #529c29", -".wu c #529d1e", -".qZ c #529d26", -"cIy c #529f1b", -".rm c #52a21b", -".wv c #52a21f", -"cu6 c #52a523", -".tb c #52a61c", -".fp c #52a725", -"dEr c #531604", -"dBl c #531901", -"dC4 c #531903", -"dC5 c #531b04", -"dAH c #531d03", -"dy# c #532100", -"bb# c #53230c", -"bbH c #53230f", -"b#a c #53270e", -"dmd c #532817", -"dcS c #53291b", -"d#F c #53291d", -"#y3 c #532a0a", -"apj c #532a16", -"b.i c #532f0f", -"#xb c #533213", -"a8o c #53331c", -".4u c #53341f", -"#zd c #533501", -"#xd c #53370f", -"baI c #53380d", -"beO c #533e11", -"dsZ c #533e2d", -"#TH c #533f1e", -"bcU c #534008", -"beM c #534016", -"a4q c #53402f", -"a9H c #534216", -"aSw c #53443f", -"c4g c #534544", -"aJ9 c #534635", -"#Xu c #534844", -"#1s c #534846", -"a8S c #534a2b", -"a4d c #534a45", -"#nZ c #534c44", -"aPg c #534e4a", -"dau c #534f4e", -"aZa c #53511e", -"#sD c #535138", -"#Cq c #53530b", -"#.u c #535355", -"aIJ c #535564", -"aky c #53561f", -"ad8 c #535e33", -"daA c #535e56", -"c5Q c #535e5a", -"dby c #537042", -"#yg c #537423", -"#Cd c #537e25", -"#3s c #53873d", -"anh c #539227", -"aqM c #53991f", -"coX c #539a1a", -".fm c #53a01c", -".yf c #53a127", -".rk c #53a31c", -".ho c #53a421", -".fq c #53a424", -".uV c #53a51c", -".BT c #53aa1b", -"dzH c #541b00", -"dBu c #541c0b", -"dzI c #541d00", -"ba6 c #541e02", -"dzQ c #54200b", -"dnU c #542400", -"aJ4 c #542511", -"bbI c #54260f", -"#y8 c #542710", -"aoh c #54280b", -"bbD c #542909", -"bdN c #542a11", -"bdS c #542c12", -"bdP c #542c13", -"dEJ c #54300e", -"#SX c #54310b", -"ban c #543113", -"a8z c #54311b", -"#Ur c #543306", -"#61 c #54340e", -"#8Y c #543500", -"bca c #543506", -"aou c #543509", -"dFT c #54390c", -"beN c #543f14", -"#rG c #544204", -"bcV c #54430b", -"ajR c #544420", -".6g c #54450c", -"bcv c #544615", -"#Sg c #544725", -".YD c #54473e", -"#wG c #544818", -"#Nj c #544937", -"a6a c #544943", -"aS6 c #544b44", -"aWO c #544d43", -"#dW c #544f0d", -"d.f c #544f2f", -"#MR c #544f4c", -"aMb c #54504d", -"dbM c #54504f", -".7. c #545148", -"dkv c #54514a", -"dm. c #54544a", -"#WP c #545456", -"dl9 c #54554f", -"aXn c #54564b", -"#ll c #545a10", -"#j0 c #545b0e", -"d.R c #545b54", -"c7q c #545d5c", -"#Ce c #547723", -"#2. c #54813c", -"#19 c #548536", -"#9u c #549038", -"a.8 c #549227", -"cyv c #54941c", -"czK c #549521", -"cF0 c #549a1d", -"cpS c #549b1b", -"cGQ c #549c1e", -"aaJ c #549d28", -".wr c #549e23", -".dn c #549e25", -".E. c #549f1e", -".x9 c #54a01a", -".dj c #54a11d", -"co. c #54a11f", -".ji c #54a121", -".wy c #54a21b", -"ahM c #54a22a", -".uT c #54a51c", -"d#R c #54a546", -"c8s c #54a932", -".BU c #54ab1e", -"dC3 c #551700", -"dBk c #551901", -"dEm c #551b05", -"dBt c #551b0d", -"dzG c #551d00", -"#AJ c #551d04", -"akG c #552200", -"am# c #552203", -"dnv c #552403", -"bda c #552600", -"bbF c #552608", -"apl c #55260a", -"anW c #55270f", -"aM0 c #552710", -"bdy c #552a17", -"bdW c #552b05", -"bai c #552b12", -"bdO c #552b13", -"aIx c #552b1d", -"aPE c #552c18", -"ap4 c #552d14", -"bdu c #552f00", -"dF0 c #553006", -"amL c #553100", -"b.t c #553119", -"#y1 c #55320a", -"#w2 c #553306", -"#5q c #55330e", -"dFZ c #553409", -"#5s c #553415", -"a8A c #553421", -"a8B c #553526", -"#xc c #553713", -"bap c #553715", -"c6B c #55372f", -".0O c #553914", -"#65 c #553a1f", -"acQ c #553a25", -"adm c #553e08", -"bcY c #554009", -"#wH c #554013", -"bcp c #55411c", -"beK c #554418", -".0D c #55442a", -"#YX c #554744", -".7T c #554838", -"a3o c #554840", -"dAA c #554842", -"aLc c #554c3d", -"baz c #554d1e", -"dbL c #554f4f", -"c88 c #554f51", -"#ce c #55500e", -"d.L c #555150", -"#Cr c #55550f", -"c4d c #55574c", -"aDG c #555847", -"a0# c #556526", -"#4Y c #558f42", -"cFc c #559b1e", -".o6 c #559c22", -".wt c #559d20", -"c8w c #559d37", -".B6 c #559f22", -".hl c #55a11d", -"cDl c #55a125", -".uE c #55a21e", -".BW c #55a220", -".B1 c #55a427", -"c6P c #55a532", -".BV c #55a71f", -"dC2 c #561500", -"dwg c #561803", -"ak. c #561d00", -"dpF c #562200", -"bb3 c #562308", -"dy. c #562401", -"aif c #562409", -"apL c #562713", -"apz c #562912", -"apK c #562914", -"anB c #562a0d", -"alT c #562b09", -"akn c #562b0b", -"bbZ c #562d11", -"aRy c #562d19", -"#y2 c #56300c", -"aT1 c #56301b", -"b.r c #563117", -"bdv c #56320e", -"#0m c #563309", -"agC c #56340e", -"#5r c #563411", -"c6C c #56342a", -"bcm c #56350a", -"abS c #563700", -"#5X c #563901", -"aj2 c #563c23", -"#ty c #563f09", -"dyH c #564032", -"afc c #564210", -"aod c #564322", -"#tx c #564414", -"bcw c #564613", -"beJ c #564615", -"d#5 c #564847", -"aPX c #564941", -"baA c #564b1d", -"beR c #564c17", -"a6. c #564c4a", -"aLV c #564d48", -"d.d c #564e27", -"b.I c #564f25", -"aPh c #56514b", -"aZo c #56514d", -"a8Q c #56522f", -"a1m c #56524f", -"a8P c #565330", -"a1g c #56534e", -"#MJ c #56564c", -"#SN c #565752", -"#Et c #565912", -"#f. c #565a4c", -"c5P c #565f5c", -"#Ch c #56631d", -"#Ek c #566417", -"#Cf c #567122", -"cxt c #569925", -"acw c #569c3c", -".uv c #569d27", -".lb c #569e21", -".sQ c #569f2a", -".BY c #56a027", -".D4 c #56a122", -".uF c #56a21c", -".bh c #56a21e", -".jp c #56a31f", -".jc c #56a321", -".hg c #56a41c", -".jd c #56a71c", -".BS c #56a91d", -"dzJ c #572001", -"dzM c #572203", -"amw c #572400", -"bb2 c #57250c", -"dx9 c #572605", -"aid c #572710", -"bc1 c #572a00", -"b#7 c #572a09", -"ba9 c #572a0d", -"bdM c #572b10", -"dbh c #572b1e", -"aHC c #572c19", -"aiP c #572e12", -"aSD c #572e1a", -"alK c #572f0c", -"beb c #573005", -"c8j c #573124", -"aVp c #573319", -"#w0 c #57340c", -"aoq c #573613", -"aaf c #573704", -"aov c #573706", -"#zc c #573907", -"dG6 c #573a02", -"baH c #573a10", -"afd c #57400a", -"c2C c #574537", -"aOd c #574539", -"bcx c #574612", -"a5V c #57473a", -"d#4 c #574845", -"dbE c #57493e", -"c5W c #574b4f", -"c7u c #574e53", -"aOz c #57524e", -"dbJ c #57524f", -"#jw c #575348", -"#ip c #575354", -"#oa c #57540f", -"#aG c #575411", -"a0o c #57544d", -".2a c #57555a", -"a8O c #575733", -"c83 c #57585a", -"a5g c #575944", -"dce c #575c58", -"#Es c #575d15", -"#iB c #575e11", -"#En c #576011", -"#Ae c #577b24", -"cAP c #578518", -"#Ed c #578628", -"#4U c #578a2e", -"#7R c #578e3a", -"cxl c #579119", -"cAM c #579321", -"#6x c #579647", -"cm. c #57971c", -"aqL c #57971d", -"ao1 c #579a26", -"cll c #579c1f", -".ws c #579d23", -".da c #579f17", -".fl c #57a01b", -".b# c #57a31c", -"Qt8 c #57a31f", -".hh c #57a617", -"dC1 c #581400", -"dzd c #581800", -"bd. c #581d00", -"#yJ c #582009", -"dpm c #582300", -"#yH c #582508", -"#A2 c #582605", -"bdB c #58260b", -"apM c #58260f", -"aoi c #582706", -"#A1 c #582804", -"bcg c #582811", -"bcf c #582a10", -"bfv c #582c13", -"amE c #582d00", -"aQB c #582f19", -"bdb c #583000", -"c6D c #583225", -"bbU c #583319", -"bea c #583404", -"#w1 c #58350b", -"anG c #583519", -"#XI c #583608", -"#Z. c #583610", -"#64 c #583714", -"#V7 c #583809", -"bcG c #58390a", -"dFY c #58390d", -"#Bd c #583b00", -"#yW c #583b11", -"#Be c #583d00", -"#4o c #583f09", -"#2T c #584010", -"#vt c #584616", -"c2D c #584638", -"beI c #584713", -"beT c #58480c", -"#Si c #584826", -"#VR c #584946", -"c7v c #584950", -"#pU c #584d00", -"aRW c #584d47", -"drX c #584e44", -"#Bi c #584f0e", -"#bt c #584f48", -".2y c #58525c", -"aW6 c #58534d", -"aJS c #58534f", -"#ML c #585453", -"db9 c #585455", -"bbf c #585512", -".2# c #58575d", -"#eM c #58595b", -"#mJ c #585b14", -"#Em c #586516", -"#Cg c #586a20", -"#Ee c #587f26", -"#Cc c #588125", -"#18 c #588530", -".#j c #588d23", -"#6s c #588d35", -"cwc c #588f18", -"cDX c #589025", -"alx c #589224", -"asD c #589520", -"coY c #589617", -".jb c #589b27", -"anc c #589b2a", -".yi c #589c21", -".BX c #589c23", -"Qt7 c #589d1c", -"afY c #589d30", -".b. c #589e1a", -".pt c #589f1f", -".fd c #58a018", -".hf c #58a022", -".uG c #58a11b", -".z8 c #58a227", -"c5j c #58a22f", -"c6N c #58a42a", -"dzF c #591e00", -"ba5 c #592607", -"dEL c #592905", -"arh c #592b11", -"ba4 c #592c0b", -"apJ c #592c17", -"bfN c #592d12", -"dfO c #592d20", -"c9W c #592f21", -"aMZ c #59301c", -"akN c #593306", -"bcl c #59330e", -"b.j c #593515", -"#62 c #59360e", -"bbt c #593709", -"acY c #593912", -".0G c #593f1c", -"aiV c #593f26", -"aIP c #59403c", -"#Bf c #594100", -"bdd c #594103", -"aKR c #594336", -"#Bh c #594c08", -"a6w c #594c3c", -"aOM c #594c44", -"do. c #594c46", -"#pH c #595047", -"a1K c #59504b", -"a1S c #595053", -"a66 c #595146", -"a8R c #595333", -"dmr c #595345", -".69 c #595347", -"aJa c #59544e", -"#Bj c #595516", -"#7f c #59554c", -"#XA c #59575a", -"aTd c #595856", -"amp c #595911", -"#MK c #595a52", -"dku c #595a55", -"a63 c #595d4c", -"a62 c #595e4a", -"#Mb c #59603e", -"#Oh c #596525", -"#0Z c #598041", -"#0Y c #59813a", -"cAO c #59891b", -"#3p c #598a2e", -"#9t c #59912e", -"dVQ c #599322", -"cu1 c #59941e", -"clj c #599a1a", -"cDk c #599c28", -"ad5 c #599d36", -".fc c #599e1d", -".wi c #599e1f", -"cwi c #599e27", -".di c #599f1b", -".fk c #59a01c", -".jh c #59a01e", -".uH c #59a119", -".fe c #59a215", -"clk c #59a21d", -".#e c #59a21f", -".je c #59a819", -"dFN c #5a1400", -"dzE c #5a1f00", -"al3 c #5a2201", -"#yI c #5a240c", -"do1 c #5a2500", -"dzK c #5a2505", -"dzL c #5a2506", -"ap5 c #5a2909", -"dmS c #5a2a13", -"#yG c #5a2b0d", -"bbG c #5a2b11", -"ari c #5a2c12", -"bdA c #5a2c15", -"aIy c #5a2c1c", -"bfQ c #5a2d0e", -"bdV c #5a2e11", -"deW c #5a2e21", -"#CK c #5a3000", -"bdX c #5a3008", -"b#9 c #5a300a", -"dvc c #5a3518", -"akV c #5a3600", -"#63 c #5a3711", -"#1C c #5a380a", -"#y0 c #5a390e", -"#yZ c #5a3b0d", -"aj0 c #5a3b1f", -"bcZ c #5a3e0c", -"bco c #5a3f14", -"aFK c #5a4324", -"bgF c #5a4614", -"#Bg c #5a4702", -"c2A c #5a4736", -"c2B c #5a483a", -"b.M c #5a4a26", -".36 c #5a4b46", -"aoc c #5a5013", -"a6# c #5a514a", -"aYl c #5a554f", -"#MT c #5a5551", -"#Eu c #5a5710", -"##. c #5a5916", -"#gg c #5a5954", -"#sK c #5a5a42", -"#jg c #5a5a5a", -"bbg c #5a5b15", -"a64 c #5a5c4e", -"#Er c #5a5e14", -"c7p c #5a6362", -"cAQ c #5a881c", -"cAN c #5a8e1f", -"ao5 c #5a9021", -"cE1 c #5a932a", -"ajH c #5a982d", -"d#U c #5a9845", -"co# c #5a9c20", -".d# c #5a9d1a", -"ahN c #5a9d2c", -".yg c #5a9e25", -".E# c #5a9f20", -".wz c #5aa01b", -"cEm c #5aa026", -".fj c #5aa11d", -".qY c #5aa129", -".n. c #5aa21c", -".hp c #5aa222", -".uW c #5aa31d", -".wL c #5aa31e", -".db c #5aa419", -".hi c #5aa515", -".#. c #5aa517", -"c6O c #5aa52f", -".k9 c #5aa71b", -"Qt9 c #5aa820", -"c8r c #5aa830", -"dCZ c #5b1800", -"dBj c #5b1d04", -"bd# c #5b2501", -"ba7 c #5b2509", -"#A3 c #5b2809", -"anO c #5b280b", -"dx8 c #5b2a09", -"ba8 c #5b2a0c", -"bfw c #5b2b15", -"dk5 c #5b2d20", -"anC c #5b2e0f", -"bdz c #5b2e1b", -"ddV c #5b2f22", -"#CJ c #5b3003", -"aJ3 c #5b301f", -"ba. c #5b3107", -"apt c #5b3214", -"#z. c #5b3216", -"bfu c #5b3415", -"c6E c #5b3423", -"ap3 c #5b351e", -"ae1 c #5b3721", -"baa c #5b380e", -"b.u c #5b3920", -"dG8 c #5b3a04", -"#zb c #5b3a0d", -".4v c #5b3a19", -"#7n c #5b3b00", -"#Bc c #5b3c00", -"#yY c #5b3c10", -"dG7 c #5b3e06", -"baG c #5b4317", -"b#y c #5b4418", -"d#Z c #5b472c", -"aFX c #5b4740", -"a1s c #5b4931", -"a7K c #5b4a1c", -"dy9 c #5b4a43", -"c4h c #5b4c49", -"aWL c #5b4c53", -".kb c #5b4d2a", -"d#6 c #5b4d4a", -"dat c #5b4f51", -"aOJ c #5b504a", -"a58 c #5b504c", -"#pT c #5b510a", -"a59 c #5b514f", -"aRT c #5b524b", -"c89 c #5b5255", -"ah7 c #5b5348", -"#MV c #5b5350", -"dbK c #5b5351", -"aRP c #5b5652", -"#4e c #5b5754", -"aTa c #5b595a", -"dbN c #5b5a58", -"ddu c #5b5b5b", -"dlM c #5b5c54", -"c82 c #5b5c5e", -"dbw c #5b7848", -"cBQ c #5b891c", -"csU c #5b901a", -"dVP c #5b9423", -"cCe c #5b9a2f", -"cm0 c #5b9b21", -".uu c #5b9c24", -".pu c #5b9e1d", -".fr c #5b9f24", -".ym c #5ba01f", -".Ae c #5ba023", -".sP c #5ba029", -".sZ c #5ba11c", -".o5 c #5ba124", -".uI c #5ba218", -".q6 c #5ba21e", -".fi c #5ba31d", -".bb c #5ba51a", -".jf c #5ba616", -".ra c #5ba915", -".k8 c #5ba921", -"dsM c #5c1600", -"duU c #5c1801", -"dCY c #5c1b00", -"dzC c #5c2100", -"dzD c #5c2101", -"dC# c #5c2305", -"bb5 c #5c2707", -"bb4 c #5c2708", -"api c #5c2914", -"bdC c #5c2a09", -"apm c #5c2b0b", -"dnd c #5c2b0d", -"dwC c #5c2c08", -"anV c #5c2d13", -"bci c #5c2e14", -"d#G c #5c2e1f", -"dlr c #5c2e21", -"bbE c #5c2f0e", -"#CL c #5c3000", -"bec c #5c300d", -"diV c #5c3023", -"dF1 c #5c320a", -"dvb c #5c3516", -"alW c #5c3818", -"aag c #5c3901", -"aeJ c #5c3a14", -"#8r c #5c3b12", -"#yX c #5c3c13", -"aj1 c #5c3e24", -"#8v c #5c3f21", -"#tz c #5c4205", -"ah. c #5c4408", -"#Uq c #5c4420", -"#AA c #5c491e", -"a56 c #5c4d48", -"c7w c #5c4d54", -"baB c #5c4e1f", -"c8B c #5c4e27", -".Vk c #5c4e41", -"a6d c #5c4e45", -"a57 c #5c4f49", -"duM c #5c5050", -"d#8 c #5c514d", -"d.K c #5c5155", -"b.J c #5c532a", -"aOG c #5c534e", -"#mj c #5c5449", -"aMB c #5c554f", -"aNi c #5c5753", -"dbB c #5c583d", -"dm# c #5c584c", -"db8 c #5c5859", -"dj9 c #5c5954", -"#WQ c #5c5a5d", -"aSW c #5c5b59", -"#kO c #5c5c54", -"ddw c #5c5c5c", -"##5 c #5c5c5e", -"dkZ c #5c5d55", -".9C c #5c5f1a", -"#Ej c #5c681c", -"#ui c #5c7130", -"#wh c #5c7929", -"#Ef c #5c7a24", -"#Ec c #5c872b", -"cBV c #5c8e1f", -"cyE c #5c9021", -"auq c #5c9024", -".bl c #5c9125", -"a.7 c #5c9127", -".jS c #5c9717", -"asC c #5c9721", -"cpT c #5c981e", -"coZ c #5c9a1d", -"c5i c #5c9a2b", -"c6S c #5c9a35", -".A# c #5c9c22", -".yh c #5c9c24", -".x8 c #5c9d1d", -".ps c #5c9d1f", -".Cc c #5c9e1a", -".B5 c #5c9e23", -".o4 c #5ca122", -".n# c #5ca21d", -".ff c #5ca317", -".pd c #5ca31f", -".dd c #5ca41a", -".fh c #5ca41c", -".k7 c #5ca424", -".l. c #5ca518", -".lj c #5ca520", -".ba c #5ca91f", -"dC0 c #5d1600", -"dCX c #5d1c00", -"dCS c #5d1d02", -"dqy c #5d2100", -"bc8 c #5d2406", -"apN c #5d250a", -"dpX c #5d2600", -"dog c #5d2800", -"bb6 c #5d2904", -"ame c #5d2a0b", -"bd0 c #5d2b0a", -"#A0 c #5d2d07", -"bdZ c #5d2f0d", -"anD c #5d3011", -"bb. c #5d3013", -"aJp c #5d310c", -"dwE c #5d310e", -"dky c #5d3124", -"dH. c #5d3502", -"bal c #5d351b", -"dG9 c #5d3804", -"a.D c #5d3900", -"c45 c #5d3b31", -"#Bb c #5d3e00", -"bcn c #5d3e10", -"ai3 c #5d3f00", -"dtY c #5d3f27", -"a6o c #5d412c", -"beH c #5d4612", -"bcy c #5d4916", -"c2E c #5d4a3c", -"#dS c #5d4c3c", -"ajQ c #5d4f28", -"#M0 c #5d4f4c", -".VQ c #5d5542", -"#zp c #5d561f", -"a0P c #5d5650", -"aej c #5d574b", -"aYk c #5d5852", -"aZZ c #5d5854", -"#My c #5d594e", -"d#9 c #5d5956", -"a61 c #5d5f49", -"#g2 c #5d6013", -"#Mo c #5d6035", -"#Eo c #5d6212", -"c5O c #5d635f", -"#Gn c #5d6921", -"#El c #5d6b1e", -"dbv c #5d713e", -"#Mk c #5d7328", -"#yf c #5d7b25", -"#ZD c #5d7d3e", -"#0X c #5d7f33", -"aly c #5d8a23", -"cAG c #5d8c1c", -"#Ge c #5d8c2e", -"dVR c #5d9323", -".BQ c #5d941d", -".jR c #5d981a", -"cn2 c #5d9822", -".#R c #5d9a19", -".DZ c #5d9a23", -".he c #5d9c2a", -".o3 c #5d9e20", -"cqL c #5d9e26", -".dh c #5d9f1b", -".s0 c #5da116", -".jg c #5da118", -".qX c #5da126", -".B2 c #5da329", -"c5k c #5da333", -".s1 c #5da416", -".bc c #5da418", -".de c #5da41a", -".m9 c #5da51f", -".s2 c #5da716", -"dCT c #5e1c02", -"dCR c #5e1e02", -"dzB c #5e2400", -"an1 c #5e2709", -"doC c #5e2800", -"dp4 c #5e290a", -"arQ c #5e2a03", -"ap6 c #5e2a05", -"dlS c #5e2e20", -"dwD c #5e300e", -"apI c #5e3019", -"dcT c #5e3021", -"aiu c #5e3107", -"bdY c #5e320d", -"b#8 c #5e320f", -"dv# c #5e3215", -"alU c #5e3311", -"c8k c #5e3523", -"b.s c #5e391f", -"bcF c #5e3a08", -"abT c #5e3b01", -"#Ba c #5e3c00", -"#97 c #5e3c0f", -"be# c #5e3d08", -"c1d c #5e3e25", -"aev c #5e3e29", -".WX c #5e3e2f", -".Vz c #5e4234", -"adn c #5e4409", -"d#3 c #5e4a41", -"aFV c #5e4b45", -"dbD c #5e4c3e", -"#rH c #5e4d08", -"a9G c #5e4d17", -"a68 c #5e4d43", -"dx# c #5e4d46", -"#Cw c #5e4e12", -"a16 c #5e4e41", -".ka c #5e512e", -"aVu c #5e5246", -"bgM c #5e5315", -"das c #5e5455", -"aS9 c #5e554e", -"aUu c #5e574f", -"#h2 c #5e5858", -"#.2 c #5e5956", -"a65 c #5e5c50", -"#nH c #5e5e52", -"dbO c #5e5e5e", -".7Y c #5e5f19", -".9t c #5e655d", -"daB c #5e6860", -"#Ei c #5e6c1f", -"#Og c #5e7131", -"#ZC c #5e7735", -"ax1 c #5e7d37", -"#9s c #5e8d27", -"cqV c #5e9520", -".jT c #5e9619", -"c5h c #5e9827", -".hT c #5e9918", -".k6 c #5e9a28", -"aci c #5e9b24", -".pv c #5e9c1d", -".D0 c #5e9f27", -".dg c #5ea01c", -".wM c #5ea11e", -".hk c #5ea217", -".l# c #5ea219", -".df c #5ea21b", -".hj c #5ea315", -".fg c #5ea519", -".r# c #5ea614", -".dc c #5ea81d", -".pi c #5eaa16", -"dFM c #5f1100", -"dxO c #5f1900", -"drL c #5f1a00", -"dCQ c #5f1f03", -"bc3 c #5f2300", -"am. c #5f2704", -"dnV c #5f2a02", -"aop c #5f2d08", -"#A4 c #5f2d0c", -"bdL c #5f2d12", -"bfx c #5f2d16", -"dme c #5f301e", -"#CM c #5f3100", -"bfL c #5f3117", -"aGx c #5f3215", -"aPF c #5f321b", -"aiO c #5f3316", -"#CI c #5f3407", -"dF2 c #5f340a", -"dwF c #5f3412", -"bak c #5f351c", -"#Us c #5f3600", -"#yF c #5f3817", -"c47 c #5f3827", -"bcE c #5f3908", -"c46 c #5f392c", -"bc0 c #5f3b0b", -"dp5 c #5f4129", -"#AB c #5f4218", -"dBX c #5f443d", -"bgH c #5f4717", -"bep c #5f4a1d", -".2k c #5f4c3b", -"beU c #5f4d0d", -"#pV c #5f4e00", -"#xt c #5f4e1a", -"a55 c #5f4e47", -"aOP c #5f5049", -"c5X c #5f5055", -"aMV c #5f5144", -"aNT c #5f5347", -"a6I c #5f544e", -"d.J c #5f5659", -"aVx c #5f5a5e", -"akx c #5f5c25", -"ahV c #5f5d44", -"db7 c #5f5d5e", -"#ap c #5f5e4a", -"aVw c #5f5e5c", -"aR8 c #5f5f55", -"ddt c #5f5f5f", -"a7g c #5f6444", -"#Gm c #5f6c24", -"cBY c #5f6d0b", -"#Eh c #5f7020", -"#Eg c #5f7523", -"#ZE c #5f7d47", -"cCV c #5f861c", -"#Gf c #5f862b", -"awb c #5f8a2e", -"aqO c #5f8e1e", -".ja c #5f932f", -"alp c #5f942c", -"aaI c #5f9827", -"cJj c #5f9b1f", -".yq c #5f9c1a", -".qW c #5f9c23", -".sO c #5f9c25", -".rn c #5f9e1b", -".nF c #5fa020", -"d#Q c #5fa042", -".q7 c #5fa11b", -".la c #5fa21e", -".np c #5fa415", -".## c #5fa416", -".na c #5fa425", -"c96 c #5fa430", -".BR c #5fa622", -"dCU c #601c05", -"dBg c #601d02", -"#AI c #601d03", -"dAI c #601e00", -"dFB c #601f03", -"bc4 c #602100", -"dEl c #602307", -"amx c #602700", -"aoj c #602803", -"bc7 c #602807", -"dzA c #602902", -"bd1 c #60290b", -"dnw c #602c07", -"apA c #602d10", -"arg c #602f0e", -"#CN c #603100", -"bfK c #603115", -"bfM c #603218", -"dgt c #603222", -"#AZ c #60330a", -"dH# c #603403", -"aHh c #603508", -"dwG c #603515", -"ba# c #60360c", -"alV c #603717", -"bc# c #603804", -"akW c #603900", -"anF c #60391a", -"#za c #603d17", -".Vu c #603e18", -"bdc c #603f09", -"ado c #604202", -"aHf c #604528", -"beW c #604b0c", -"c8C c #604c2b", -"#rI c #604d01", -"bgE c #604f1b", -"dxH c #60514e", -".ic c #60522f", -"aQU c #60534b", -"d#7 c #60534d", -"aOH c #605551", -"aOD c #605654", -"aOF c #605752", -"#dh c #605856", -"aPk c #605951", -"#Mx c #605a4c", -"#.M c #605a4e", -"#MM c #605a5c", -"dmq c #605c51", -"#Vo c #605f64", -"#pb c #606054", -"dmp c #606058", -"ddv c #606060", -"aOs c #606163", -"#fw c #60620f", -"aiE c #606348", -"aiF c #60634e", -"#g3 c #606410", -"c81 c #606465", -"d.S c #606561", -"#sl c #606638", -"#Yk c #607940", -"#Yl c #607a4a", -"#Ad c #607d21", -"#17 c #60832f", -"#4T c #608631", -"cD1 c #609124", -"dUC c #609221", -"dVO c #609223", -"cE0 c #60952d", -".Au c #60971f", -".FY c #609a21", -".lF c #609a22", -".a9 c #609c20", -".rj c #609d1c", -".fb c #609d26", -".py c #609f1c", -".bg c #609f1d", -".r. c #60a315", -".jq c #60a320", -".rb c #60a818", -"dFD c #611e03", -"dFC c #611e04", -"dFA c #611f05", -"anu c #61250d", -"arR c #612c02", -"bc2 c #612c04", -"arP c #612c0a", -"arf c #612d08", -"arj c #612e0f", -"dx5 c #612f0c", -"#A5 c #612f0e", -"bdK c #612f14", -"dx7 c #61300f", -"bch c #61311a", -"dmw c #61311b", -"#Rv c #613208", -"bhp c #613214", -"dg0 c #613323", -"dfP c #613324", -"bcj c #613417", -"#SY c #613506", -"anE c #613616", -"aAm c #613623", -"c1O c #613729", -"dG0 c #613802", -"akM c #61380c", -"bck c #613818", -"amM c #613900", -"c2j c #61391f", -"bft c #613a11", -"alJ c #613b17", -"a#L c #613c0f", -"a8y c #613f26", -"bcD c #61400d", -"c1c c #614128", -"#yE c #614520", -"bbs c #61460f", -"beX c #61470a", -"ai2 c #61470c", -"ber c #614b1a", -"aI8 c #614b3e", -"beq c #614c1d", -"a50 c #614c4b", -"bde c #614e0a", -"c8A c #614e24", -".l9 c #614e2d", -"a54 c #614e48", -"bgK c #615018", -"dAg c #615049", -"c7x c #615058", -"#M1 c #615350", -"dvz c #615549", -"aYv c #615642", -"c9. c #61565a", -"dar c #615758", -"d.I c #61585b", -"#Ev c #615911", -"aMh c #615b5f", -"aOU c #615c58", -"#Bk c #615d1e", -"#Mz c #615d54", -"aPd c #615d5a", -"a60 c #615f48", -"#fv c #616216", -"dll c #61625a", -"a#D c #61645d", -"aSt c #616568", -"a6R c #616847", -"cBZ c #616f0e", -"cfJ c #617b20", -"#Gg c #618229", -"dUD c #619121", -"czL c #619123", -"dVS c #619324", -".jQ c #61941b", -"asB c #61941e", -"crQ c #619622", -"co0 c #61971f", -".#Q c #619818", -"cs3 c #619823", -"adR c #61991e", -".d. c #619b22", -".px c #619c1c", -".A. c #619c26", -".Ea c #619d21", -".FX c #619d23", -".wA c #619e1c", -".B4 c #619e25", -".z9 c #619e27", -".Ai c #61a01d", -".D3 c #61a328", -".ph c #61a615", -".m8 c #61a723", -".nj c #61a824", -"dFI c #621600", -"dFH c #621800", -"dFE c #621c03", -"#AF c #621f02", -"dDt c #622604", -"dpG c #622900", -"aru c #622c14", -"bb7 c #622e06", -"ako c #622e09", -"art c #622e18", -"apn c #62300f", -"bed c #623113", -"aLt c #62321c", -"dk6 c #623323", -"c9X c #623424", -"deX c #623425", -"bho c #623514", -"diB c #623522", -"#AY c #623609", -"#AX c #623808", -"#V8 c #623a06", -"c2k c #623a20", -"c3q c #623c2f", -"bam c #623d22", -"abU c #623e02", -"ad# c #623f2b", -"a.# c #624523", -"d.j c #62473e", -".sJ c #62480b", -"a7J c #624c1a", -"bgJ c #624d18", -"beV c #624e0f", -".kc c #624e2b", -".id c #62502c", -"a5X c #625042", -"d.n c #625044", -"doT c #62504c", -"a6f c #625050", -"dxa c #62514a", -"c4i c #625350", -"aL1 c #62554d", -"ajP c #62572a", -"#dm c #625753", -".6h c #625914", -"aVy c #625b62", -"aPc c #625e5b", -"dkY c #62645f", -"#Yj c #627138", -".#k c #627219", -".lP c #628511", -"#3o c #62862f", -"asE c #62891e", -"#6r c #628c3a", -"#Gd c #628d34", -".jP c #628e1b", -"dUB c #629121", -"#Ie c #629135", -"aqK c #62951f", -"ahO c #629530", -"ahz c #62961a", -".pw c #629a1b", -".DV c #629a1d", -".ro c #629d1c", -".uX c #629f1d", -".#d c #629f1e", -".yy c #629f20", -".q8 c #62a017", -".#S c #62a023", -".nq c #62a114", -".q9 c #62a115", -".pe c #62a11c", -".uJ c #62a218", -".bd c #62a21a", -".s3 c #62a518", -"dFL c #631500", -"dFF c #631b02", -"dCV c #631c06", -"dCW c #631c08", -"dEk c #632206", -"dBi c #63230a", -"apO c #632607", -"dpn c #632900", -"akf c #632b0a", -"arv c #632b12", -".SM c #632c0e", -"bdJ c #633015", -"ars c #63301b", -"aFo c #63310e", -"bhq c #633116", -"bfW c #633209", -"bfT c #633212", -"dls c #633424", -"aOj c #63351d", -"ddW c #633526", -"bfP c #633619", -"aHD c #63361f", -"bg. c #633a06", -"c48 c #633a26", -"#5Y c #633c03", -"#z# c #633c1b", -"c1e c #633d26", -"#4p c #633e09", -"#B# c #633f03", -"bdt c #633f05", -"#2U c #633f0d", -"aow c #63400a", -"ap2 c #63421f", -".4w c #634416", -"c3X c #634430", -"dG5 c #63460e", -"d.i c #63473c", -"d.g c #634833", -"beu c #634a12", -"baF c #634c20", -"bgG c #634d1c", -"#to c #635242", -"aKB c #63524a", -"a6e c #63544d", -"b.L c #635530", -"ah5 c #635548", -"#az c #635757", -"a7b c #63583c", -"aLY c #635852", -"#WS c #635a53", -"cq# c #635b13", -"ah8 c #635b4e", -"#MX c #635b58", -"dm9 c #635c54", -"#mt c #635e58", -"aLO c #635e5a", -"#MS c #635e5b", -"aQ3 c #635f53", -"dcf c #636562", -"dlL c #63665f", -"#Go c #636d26", -"#ZB c #636d2e", -"cBX c #637813", -"#0W c #637930", -"azN c #637948", -"ceJ c #637f2b", -"d#V c #63803d", -"aur c #63811f", -"#9r c #638725", -"cxu c #638d21", -"coa c #638e1b", -"#7Q c #638e3c", -".k5 c #638f2e", -"cu8 c #639220", -".Cq c #639323", -"cA7 c #639330", -"clm c #63941f", -"ao0 c #639524", -".do c #639728", -".DY c #639822", -".DU c #63991d", -"cl9 c #639921", -".hS c #639b1c", -".FZ c #639b20", -".wh c #639d22", -".bf c #639e1d", -".wN c #639e1e", -".rp c #639f1b", -".B3 c #63a029", -".#a c #63a118", -".hq c #63a124", -".D1 c #63a329", -".D2 c #63a52a", -".pj c #63a819", -"dFG c #641c04", -"#AG c #641e04", -"#AH c #641e05", -"dBf c #641f00", -"dEj c #642104", -"dBh c #64220a", -"ak# c #642300", -"dFz c #642307", -"#AE c #642506", -"bc9 c #64290b", -"bf. c #642a00", -"aq6 c #642b0d", -"bd2 c #642b0e", -"dzz c #642d06", -"akH c #642e02", -"bfy c #642e14", -"bfX c #643008", -"bef c #643018", -"bfJ c #643112", -"bee c #643116", -"beh c #643217", -"bhK c #643312", -"dju c #643322", -"dbi c #643426", -"diW c #643523", -"dcU c #643525", -"bhJ c #643615", -".SP c #64361f", -".0. c #643627", -"baj c #64381f", -"c6F c #643926", -"aAk c #643a24", -"aIw c #643c32", -"abp c #643f12", -"aqg c #644010", -"Qtg c #64401e", -"#8Z c #644101", -"adp c #644202", -"#AS c #644214", -"aqf c #644318", -"aqe c #64441b", -"aqd c #64441d", -"beG c #64450e", -"bev c #644a11", -".m. c #644d2d", -"dBY c #644d47", -"c2F c #644e41", -"a9F c #645015", -"a53 c #645049", -"bgD c #645119", -"aGZ c #64524e", -"dow c #645552", -"b.K c #645832", -"a67 c #64584c", -"#WV c #645953", -"aOI c #645955", -".ib c #645a36", -"ah6 c #645a4e", -"aOE c #645a58", -"aHt c #645c51", -"#MU c #645c5a", -"a0R c #645d57", -"a#B c #645e50", -"d.H c #645e60", -"#Q0 c #64623c", -"#gM c #646263", -"#gK c #646267", -"ddx c #646464", -"aUd c #646557", -"#dY c #646612", -"#sm c #646e4c", -"#Gl c #647227", -"cCr c #64791e", -"awc c #647a27", -"cgN c #647c24", -"#Cb c #648124", -"cBW c #64851c", -"d.a c #648831", -"#If c #648b30", -"dUE c #649021", -"ajw c #649225", -".jU c #64941c", -"aup c #649427", -".yB c #64971e", -".Eb c #649c1f", -".tc c #649d1c", -".FW c #649e25", -".hU c #649f1e", -".be c #64a01a", -".no c #64a316", -".#U c #64a412", -"dFJ c #651901", -"dwh c #651b02", -"dCa c #652100", -"aRE c #652615", -"bfA c #652a00", -"aq7 c #652a08", -"are c #652d08", -"bfz c #652e0f", -"aq5 c #652e10", -"dGZ c #652f00", -"arS c #652f01", -"#EJ c #653000", -"beg c #653119", -"#EI c #653200", -"amD c #653302", -"dwB c #653310", -"apH c #65331a", -"dlT c #653423", -"aHE c #65351e", -"aIz c #653521", -"bfR c #653618", -"d#H c #653626", -"bhn c #653a0f", -"agD c #653c0e", -"bf9 c #653e05", -"dG1 c #653e07", -"aim c #654135", -"a7I c #654411", -"aiz c #654618", -"dG4 c #654810", -"cHG c #654919", -"#vu c #654a13", -"aHU c #654a39", -"afe c #654b0e", -"cGO c #654b18", -".qR c #654f13", -"bgI c #654f1d", -"bes c #65501b", -"c2z c #65503f", -"a52 c #65504b", -"bgP c #65510c", -"aFL c #655130", -"a7u c #655345", -"#s9 c #65543a", -"aMj c #65544d", -"aGP c #65553b", -"a6u c #655548", -"c5Y c #65565b", -"#WT c #655850", -"#MB c #655852", -"#Q3 c #655931", -"cCs c #655c0f", -"abg c #655c4d", -"daq c #655c5f", -"cHH c #655d1c", -"#g. c #655d4a", -"#MW c #655d5a", -"#mr c #655e54", -"#oc c #65600c", -"aUG c #65604d", -"#ob c #656117", -"#ds c #656156", -"aMx c #65615e", -"cpg c #656215", -"#Eq c #656316", -"#bF c #656366", -"#Ep c #656414", -"#Yi c #65652f", -"dds c #656565", -"#bZ c #656654", -"da. c #656668", -"#Gv c #65691f", -".m4 c #656f26", -"#WL c #65764c", -"alz c #658225", -"ahP c #658731", -"cCq c #658927", -"cCp c #658a23", -"ani c #658b24", -"czC c #658d1d", -"a.6 c #658e26", -"cA6 c #659233", -".hR c #65951d", -".At c #659821", -"cDj c #659831", -"afJ c #65991b", -"cCd c #659935", -".lG c #659a26", -".yz c #659b1f", -"Qt6 c #659c24", -".ut c #659c25", -".yn c #659d20", -".Cd c #659e1b", -".uS c #65a01f", -".uK c #65a219", -".m7 c #65a328", -".lk c #65a421", -"dtI c #661a00", -"dFK c #661a03", -"dze c #661c01", -".WD c #662d12", -"bdI c #662e15", -"bga c #662f10", -"dzy c #66300a", -"#CZ c #663300", -".Yr c #663322", -"dk. c #663524", -"dx6 c #663612", -"dtV c #66371b", -"bc. c #663804", -"#1D c #663807", -"bfS c #663817", -"#0n c #663a0b", -"bej c #663a15", -"aDO c #663a17", -"dhi c #663c26", -"c3r c #663c2c", -"abV c #663e00", -"c1f c #663e25", -".2J c #663f22", -"c1N c #663f30", -"#B. c #664208", -"c3W c #66422a", -"aHg c #66431d", -"c1H c #664330", -"alI c #66441e", -".h# c #66451c", -".QW c #66462d", -".Y1 c #664812", -"d.c c #664822", -"d.k c #664a3f", -"d.m c #664e42", -"biy c #665017", -"bgC c #665217", -"dyI c #665345", -"#M5 c #665454", -".Xd c #665541", -"c7y c #66555d", -".l8 c #665634", -"aNy c #665750", -"#Pz c #665833", -"aL0 c #665953", -"aob c #665a12", -"aPU c #665b55", -"aLW c #665b57", -".k# c #665c39", -"aDC c #665c52", -".sc c #665d32", -"ajO c #665e2d", -"aZi c #666060", -"#hM c #666167", -"aKV c #666256", -"cGP c #66631c", -"#e4 c #66635a", -"aP2 c #666563", -".4o c #666761", -"#8j c #666b67", -"#WK c #667244", -"cfK c #667920", -"#uh c #667a32", -"cfI c #667e26", -".lJ c #667f19", -"cDw c #668027", -".lK c #668317", -"c8x c #668730", -"cC0 c #668921", -".hQ c #668b1a", -".lN c #668d16", -"dUA c #669024", -"dVT c #669125", -"dVN c #669126", -".bT c #66961e", -"ajI c #669632", -"cr0 c #669724", -".yx c #66991a", -".yA c #669920", -".nG c #669922", -"cEl c #669a2e", -".zZ c #669b27", -".DW c #669c22", -".uY c #669d1d", -".C# c #669d25", -".#b c #669f1a", -".pg c #66a016", -".pf c #66a018", -".o2 c #66a027", -".FV c #66a028", -".#T c #66a822", -"dEi c #672004", -"dBe c #672100", -"dCP c #672606", -"dB. c #672900", -"arw c #672a0d", -"an2 c #672b09", -"aok c #672c04", -"ap7 c #672d07", -"bdF c #672f0c", -"dzx c #67310b", -"#AD c #67310f", -"#C0 c #673200", -"apo c #673210", -"anU c #673213", -"bf# c #673400", -"#CH c #673409", -"bhL c #673514", -"aM1 c #67351c", -"arr c #67351e", -"dkz c #673627", -"bb8 c #673709", -"a7H c #67380a", -"bhI c #67381a", -"dfQ c #673828", -"bfU c #673a10", -"aps c #673a19", -"dhJ c #673a23", -"dgu c #673a27", -"akL c #673b0e", -"#AC c #673b16", -"c1P c #673c2c", -"dva c #673e20", -"aAl c #673e2a", -"#V9 c #673f02", -"aqc c #674019", -"beF c #67420b", -"#AW c #67420e", -"#8s c #674216", -"#WE c #674225", -"dtW c #674228", -".5# c #67422f", -"#Gz c #674305", -"#AV c #67430f", -"c1b c #67452a", -"c1I c #674637", -"aKT c #67482c", -"beY c #67490d", -".K3 c #674925", -"c3Y c #674a38", -"a7s c #674f45", -"bet c #67501a", -"dB6 c #67503e", -"drW c #675040", -"aH3 c #675146", -"a51 c #675251", -"a6h c #675352", -".ha c #675726", -".fL c #675a14", -"d.o c #675a52", -".i9 c #675b29", -"a6v c #675b4d", -"a5. c #675c4a", -".tZ c #675e35", -"aMD c #676056", -"a6Z c #676149", -"#kV c #676155", -"aX7 c #67625e", -"aXB c #67635a", -"aN. c #676362", -".nJ c #676b0c", -"#Gu c #676d23", -"azO c #676d3f", -".5I c #676d69", -".7Z c #676f1c", -"#Gh c #677f29", -"cDW c #67811e", -"ceK c #67812a", -"#Eb c #67842a", -".lL c #678919", -"#Kf c #678935", -".lM c #678c18", -".lO c #678e17", -"ct5 c #679121", -"dVU c #679125", -".hd c #679435", -".x7 c #679624", -".wP c #67991e", -".Ar c #679a21", -".wO c #679b1d", -"cIx c #679c28", -".#c c #679e1c", -".wD c #679e1e", -".nk c #67a520", -"dGY c #681c00", -"dqz c #682700", -"dA9 c #682a01", -"dEM c #682a05", -"amf c #682c08", -"dA8 c #682d03", -"doh c #682e00", -"aqb c #68300b", -"bhr c #683218", -"app c #683311", -"bfI c #683314", -"dzw c #68340f", -"aLu c #68341c", -"arO c #683615", -"#A6 c #683814", -"deY c #683929", -"bb9 c #683a08", -"c1V c #683a19", -"dg1 c #683b26", -"c8l c #683b28", -"c2i c #683c1f", -"bfO c #683c21", -"c2l c #683e25", -"aah c #683f01", -"c0r c #683f2d", -".si c #684319", -"be. c #68440a", -"c1K c #684436", -".I7 c #684525", -"cIt c #684619", -"aik c #68463c", -"#qr c #684800", -".i8 c #68481f", -"a9E c #684910", -"c60 c #684b23", -"bcz c #68511d", -"a6t c #685143", -"beo c #685221", -"#rJ c #685300", -"a6i c #68534e", -".gc c #685632", -"#O. c #68572c", -"dxb c #685952", -"dpe c #685956", -"#zq c #685a1d", -"a3U c #685a59", -"#sT c #685b53", -"bdf c #685c14", -"a7a c #685e43", -"aLU c #685f5a", -".5j c #685f60", -"amo c #686018", -"a6Y c #68624a", -"dmL c #686256", -"aVv c #68635d", -"aSV c #68635f", -"cDx c #68641a", -"aLm c #68645b", -"c4c c #68655c", -"db6 c #686667", -"ddr c #686868", -"#5G c #686964", -"#WJ c #686a39", -"#iC c #68701d", -"#Ki c #68762b", -"#4S c #687e33", -"ceL c #687f24", -"cgM c #687f25", -"#Ig c #68862e", -"cAR c #688921", -"dUF c #688f22", -"anb c #688f24", -"cE2 c #68922c", -".bS c #68961a", -"cwj c #68982a", -"c5l c #689834", -".DX c #689923", -".uZ c #689a1d", -".As c #689a21", -".Af c #689b22", -".td c #689c1d", -".hV c #689c1e", -".F0 c #689c20", -".FU c #689d27", -".bW c #689e14", -".nE c #689e24", -".nn c #68a218", -".jr c #68a323", -"dBd c #692301", -"dFy c #692407", -"dCO c #692705", -"dBa c #692802", -"apP c #692906", -"bd3 c #692e10", -"dnW c #693005", -"djN c #69301c", -"ark c #69310e", -"dx4 c #693510", -"dmf c #693520", -"bg# c #693712", -"#GA c #693800", -"bei c #693818", -"du9 c #69381a", -"c9Y c #693a28", -"diC c #693b23", -".3r c #693c25", -"c1Q c #693e2b", -"c3s c #693e2d", -"dhj c #693f26", -"c0q c #69402e", -"#7o c #694103", -"#A9 c #69410d", -"acZ c #694314", -"aGa c #694316", -"c1L c #694336", -"dG2 c #69440d", -"c1J c #694537", -"azP c #694620", -"aIb c #694626", -".QV c #69472b", -".QX c #694835", -"dG3 c #694910", -"bcC c #694918", -".d8 c #694c2a", -"aiT c #694e33", -"bgj c #694f1c", -"d.l c #694f42", -"ap1 c #695113", -".d9 c #69512d", -".gd c #695230", -"c2G c #695345", -"bgO c #695611", -"#Ew c #695612", -"#s7 c #695949", -"bgN c #695a17", -"dbC c #695c49", -".oY c #695e1e", -"#1n c #695f56", -".fM c #696015", -".40 c #696035", -"#nK c #696258", -"a3N c #696357", -"#Bl c #696424", -"#bP c #69655a", -"aPe c #696562", -"#dX c #69671a", -"aTq c #69675a", -"#jd c #69676a", -"a7f c #69684a", -"aTy c #696866", -"dcg c #696b6a", -"aV6 c #696e72", -"#j1 c #69721f", -".9D c #697221", -"#16 c #697b2f", -"#wg c #69822f", -"#ye c #698328", -".jO c #698a1f", -"ctW c #698b1d", -"cFj c #698d2d", -"asA c #698e1c", -"cpU c #698e1d", -"cDu c #698e27", -"cDv c #698e2e", -"cmh c #699325", -".Aq c #69971b", -".c9 c #69972a", -".nA c #699824", -".fa c #699830", -".pr c #69991f", -".m6 c #69992c", -".sN c #699a25", -".DT c #699b20", -".#P c #699c19", -".qV c #699c26", -".lo c #699d17", -".yr c #699d1e", -".lp c #699e18", -".wB c #699e1c", -".Ec c #69a01e", -"dEh c #6a1e04", -"al4 c #6a2500", -"dBb c #6a2903", -"dB# c #6a2b02", -"aq8 c #6a2c07", -"do2 c #6a2d00", -"aq4 c #6a2d11", -"bd4 c #6a2f05", -"bdG c #6a3113", -"#C1 c #6a3501", -"#EK c #6a3600", -"bjc c #6a3718", -".UL c #6a3722", -"aiv c #6a3a0a", -"diX c #6a3a23", -"ddX c #6a3a2c", -"#4q c #6a3b03", -"bfV c #6a3b0f", -"bhH c #6a3b1f", -"#2V c #6a3c08", -"aAj c #6a3c22", -"di# c #6a3d26", -"aIc c #6a3e17", -"dhK c #6a3e23", -".QJ c #6a3f1c", -"bek c #6a4115", -"c3V c #6a4121", -"bfb c #6a4302", -".Hc c #6a4324", -"aeK c #6a4415", -".OP c #6a4420", -"c1M c #6a4437", -"dIO c #6a4500", -"#98 c #6a4518", -"#AU c #6a4614", -"d.h c #6a4638", -".Q5 c #6a471f", -"a.X c #6a4823", -"#ns c #6a4902", -"bfc c #6a4904", -"alH c #6a4a23", -"aD8 c #6a4a3d", -".Q4 c #6a4c26", -"bgQ c #6a4f0c", -"#xu c #6a5015", -"biz c #6a5119", -"a7t c #6a5248", -"bbr c #6a5617", -"a5Z c #6a564f", -"cIu c #6a571c", -".41 c #6a572f", -".k2 c #6a582a", -"a69 c #6a584a", -"baC c #6a592b", -"ah4 c #6a5949", -"c4j c #6a5b58", -"akw c #6a5d26", -"#Dg c #6a6018", -"#Sy c #6a6057", -".m3 c #6a6128", -"#W6 c #6a6158", -"#MY c #6a625f", -"#.K c #6a6359", -"aMA c #6a635d", -"#9W c #6a6456", -"a2o c #6a655f", -"aMy c #6a6561", -"aP9 c #6a656b", -"aOQ c #6a6665", -".4Z c #6a673a", -"ajN c #6a6930", -"#Oy c #6a696f", -"#3n c #6a6d2a", -"#Gt c #6a6e24", -"daC c #6a706c", -"ajL c #6a782d", -"azM c #6a7a49", -".bm c #6a7d21", -"cdx c #6a7d2e", -"c6T c #6a822c", -".k4 c #6a8234", -"#Ac c #6a8325", -"cEx c #6a842b", -".lQ c #6a8618", -"dVM c #6a8f26", -"#Id c #6a9140", -"cA5 c #6a9239", -".lE c #6a9424", -".bU c #6a9a24", -".FT c #6a9b25", -".fs c #6a9c29", -".ln c #6a9d1a", -".#V c #6aa00e", -".nl c #6aa21d", -"dCN c #6b2404", -"dDu c #6b2600", -"dBc c #6b2704", -"arx c #6b2907", -"doD c #6b2e00", -"dA7 c #6b3004", -"apB c #6b300e", -"#EH c #6b3100", -"atg c #6b3119", -"akp c #6b3207", -"bgb c #6b3217", -"#Cz c #6b3300", -"dnx c #6b330e", -"bgc c #6b331a", -"aDj c #6b3416", -"bdD c #6b350f", -"aDi c #6b372c", -"#CY c #6b3800", -"bhM c #6b3916", -".WG c #6b3a29", -".05 c #6b3b15", -"bge c #6b3c12", -"dbj c #6b3c2a", -"c1w c #6b3f1c", -"dhL c #6b3f24", -"c0s c #6b402f", -"c1x c #6b4117", -"dH2 c #6b4409", -".vR c #6b441d", -"#AT c #6b4717", -".k1 c #6b4723", -".I6 c #6b4725", -"c1G c #6b472d", -"Qtf c #6b482a", -"aaz c #6b491c", -"#8u c #6b4923", -".d7 c #6b4924", -"#Iz c #6b4b1c", -".K2 c #6b4b25", -"ail c #6b4b40", -"#Db c #6b4c00", -"dHZ c #6b4c09", -"cFW c #6b4d19", -".MS c #6b4d27", -"#Dc c #6b4e00", -".e8 c #6b4e24", -".SR c #6b4e3c", -".Y3 c #6b4f20", -"#tA c #6b500d", -"bgB c #6b5114", -".e. c #6b512e", -"a7p c #6b523c", -".Fe c #6b552c", -"a6H c #6b5651", -"a5Y c #6b574e", -".uq c #6b5813", -".gb c #6b5935", -"a7r c #6b5945", -"a5W c #6b594b", -"aL5 c #6b5c55", -"a.f c #6b5d52", -"aGM c #6b5f51", -"#ZA c #6b602a", -"c9# c #6b6066", -"#6U c #6b6157", -"aMc c #6b615f", -"cph c #6b6217", -"aME c #6b6259", -"aKM c #6b645e", -"#MQ c #6b6565", -"cFX c #6b671e", -"#Dh c #6b6720", -"aL7 c #6b6766", -"#Gw c #6b6821", -"#gz c #6b685f", -"#dd c #6b696c", -"#P0 c #6b696e", -"ddy c #6b6b6b", -"#mC c #6b6c66", -"aLH c #6b6c6e", -"#0V c #6b6d2c", -".k3 c #6b6f32", -".nK c #6b700c", -"c5N c #6b706c", -"c7o c #6b7171", -"#PI c #6b7340", -"dbA c #6b7654", -"#Gk c #6b772b", -"ceM c #6b7a1d", -"#Gi c #6b7d2b", -".hK c #6b7e25", -"anj c #6b7f1e", -"chM c #6b8025", -"cfH c #6b832b", -"ajK c #6b8430", -"#Kg c #6b8733", -"cyu c #6b8d1f", -"awa c #6b8f35", -"clg c #6b901c", -"auo c #6b9026", -"dVV c #6b9029", -"ajJ c #6b9033", -".Cp c #6b9321", -".jJ c #6b942a", -".a8 c #6b9a28", -"cFZ c #6b9b2d", -"cli c #6b9d22", -".wC c #6b9e1d", -".rc c #6b9f19", -".ll c #6ba220", -"be6 c #6c2805", -"al9 c #6c2c06", -"bc5 c #6c2d0e", -"#Ez c #6c2f00", -"bc6 c #6c2f10", -"bfB c #6c3105", -"as8 c #6c3109", -"as9 c #6c320c", -"dA6 c #6c3308", -"atC c #6c3401", -"bhs c #6c3419", -"bfH c #6c3516", -"djv c #6c3520", -"bdE c #6c3610", -"dF3 c #6c3810", -"aHF c #6c391e", -"apq c #6c3a17", -"c1v c #6c3a1f", -"#5Z c #6c3b00", -"bhG c #6c3b1d", -"d#I c #6c3b2a", -"aAn c #6c3c26", -"diD c #6c3d21", -"c0w c #6c3d2b", -"dcV c #6c3d2d", -"dia c #6c3e24", -"c0v c #6c3e2e", -"beE c #6c3f06", -"cYH c #6c3f22", -"c49 c #6c3f28", -"dgv c #6c3f2a", -".e7 c #6c401d", -"dhk c #6c4027", -"a9D c #6c410c", -"#A8 c #6c4114", -"c1y c #6c4212", -".qq c #6c4218", -".I5 c #6c4325", -"c0p c #6c4331", -".Fd c #6c461f", -"adq c #6c4703", -"#8t c #6c471d", -"c5w c #6c472a", -".Wl c #6c4828", -"Qts c #6c482e", -"#Ex c #6c4a0a", -"#No c #6c4a1c", -".I8 c #6c4a27", -"#Da c #6c4b00", -"bem c #6c4b15", -"c6Z c #6c4b20", -".42 c #6c4b28", -"a7o c #6c4d39", -"bgm c #6c4e18", -".K4 c #6c4e28", -"aiS c #6c4e34", -"bew c #6c4f17", -"alG c #6c4f23", -"bgk c #6c501e", -"cfA c #6c5020", -"c5x c #6c503a", -"#Ll c #6c5625", -"bix c #6c581d", -"b#x c #6c5823", -"cyP c #6c5825", -"dBZ c #6c5851", -"#MI c #6c5857", -"cyT c #6c5a1c", -"biG c #6c5b15", -".qk c #6c5d32", -"#M2 c #6c5d5a", -"dw# c #6c5e5d", -".ia c #6c5f3c", -".82 c #6c5f56", -"#WU c #6c5f57", -"#YQ c #6c615b", -"#pD c #6c6462", -"#ae c #6c665a", -".sd c #6c6741", -"a2m c #6c6763", -"aXL c #6c685f", -"aSX c #6c6865", -"a0m c #6c6964", -"#Gs c #6c6a1f", -"#eK c #6c6b66", -"aTA c #6c6b69", -"#o2 c #6c6c6a", -"ddq c #6c6c6c", -".nN c #6c6d05", -"#Iv c #6c6d33", -"#m. c #6c6d5f", -".hJ c #6c6e1b", -"d.T c #6c6e6b", -"a1U c #6c6f5e", -"#gD c #6c6f66", -"dlk c #6c6f68", -"#sk c #6c7137", -"ank c #6c7218", -"#Oi c #6c7536", -"#sj c #6c7631", -"#Gj c #6c7a2b", -"chN c #6c7c24", -"#9q c #6c7f23", -"cFi c #6c8625", -"#Mj c #6c883d", -"cEZ c #6c8c2b", -"cBg c #6c8d24", -"#7P c #6c8f33", -".jV c #6c9120", -"cEw c #6c9132", -"cn# c #6c9223", -".t. c #6c961a", -".wg c #6c9724", -".bX c #6c9b0f", -".s4 c #6c9e1b", -".F1 c #6c9e23", -"c8q c #6c9e2b", -".uL c #6c9f1e", -".nm c #6ca11b", -"c6M c #6ca12b", -"dEg c #6d1d02", -"dxP c #6d1e00", -"drM c #6d2200", -"dAJ c #6d2202", -"be8 c #6d2902", -"bf1 c #6d2b08", -"be2 c #6d2e02", -"be9 c #6d2e03", -"dpY c #6d3003", -"ath c #6d3014", -"bd5 c #6d3303", -"aoo c #6d330b", -"bjd c #6d3417", -"bdH c #6d3419", -"be1 c #6d3504", -"atf c #6d351c", -"dmx c #6d351e", -".UI c #6d3618", -"arq c #6d371b", -"#GH c #6d3804", -"apG c #6d3819", -"dzv c #6d3914", -"bhF c #6d3a1b", -"aIA c #6d3a1f", -"aJ5 c #6d3a25", -"b2g c #6d3b30", -"b3t c #6d3b3a", -"#EY c #6d3c00", -"#CO c #6d3c04", -"bjb c #6d3c1b", -".1J c #6d3d26", -"beD c #6d3e06", -"ar5 c #6d3e08", -"cXS c #6d3e20", -"#WD c #6d3f25", -"#A7 c #6d4017", -"cYG c #6d4021", -"ciA c #6d4124", -"d#Y c #6d4128", -"c1z c #6d420f", -".ao c #6d4220", -"cYF c #6d4222", -"c0t c #6d4231", -"beC c #6d4309", -".2K c #6d431b", -"chG c #6d432b", -"a.E c #6d4402", -".QU c #6d452b", -".vS c #6d461d", -".Hd c #6d4627", -"a#M c #6d4718", -".sh c #6d4723", -".aA c #6d482d", -".OQ c #6d4b25", -".ay c #6d4b26", -"Qtq c #6d4d27", -".DL c #6d4e18", -"cC2 c #6d5100", -".fK c #6d5110", -".oX c #6d5121", -".4x c #6d5318", -"#Py c #6d542b", -"cC# c #6d5726", -"#14 c #6d5d22", -"#WI c #6d5f32", -"abw c #6d5f54", -"cyQ c #6d6029", -"czX c #6d602c", -"#Xj c #6d6058", -"bgL c #6d6127", -"#Fe c #6d631b", -"aP4 c #6d635a", -"dap c #6d6769", -"aW8 c #6d6864", -"d.G c #6d686c", -"cEy c #6d691f", -"#15 c #6d6e2c", -"c80 c #6d7174", -"ajM c #6d7230", -"#lm c #6d7424", -"#9Z c #6d746d", -"#ug c #6d8031", -"#Ea c #6d842a", -"co1 c #6d8a1c", -"aqJ c #6d8b1b", -"cF9 c #6d8d2c", -"dUG c #6d8e25", -"dVJ c #6d902c", -"cCc c #6d933c", -"clh c #6d941f", -".ri c #6d951b", -".nB c #6d9926", -".bR c #6d9a1b", -".F2 c #6d9e21", -".lq c #6d9f1a", -".bV c #6d9f22", -".hr c #6d9f26", -"cFb c #6d9f30", -".lm c #6da01f", -"dGX c #6e1700", -"dGU c #6e1b00", -"duV c #6e1d00", -"dEf c #6e1d02", -"dGO c #6e2303", -"dCb c #6e2400", -"dGP c #6e2401", -"aka c #6e2700", -"ant c #6e280e", -"dpH c #6e2f00", -"atB c #6e3406", -"bfG c #6e3517", -"dA5 c #6e3710", -"akI c #6e380c", -"#C2 c #6e3905", -"dwA c #6e3917", -"amC c #6e3a0a", -"aJ6 c #6e3a22", -"djc c #6e3a24", -"#EZ c #6e3b00", -"bgd c #6e3c19", -"#Ey c #6e3d02", -"apr c #6e3d1c", -"bhO c #6e3e10", -"c9Z c #6e3e2a", -"cXR c #6e3f21", -"cZx c #6e3f2b", -"dfR c #6e3f2d", -"dHa c #6e400f", -".i7 c #6e401c", -".QI c #6e401f", -"cZE c #6e4026", -"c0u c #6e4030", -"#Z# c #6e4117", -".ou c #6e4118", -"dv. c #6e4124", -"c6G c #6e412a", -"bd9 c #6e4203", -"bja c #6e4213", -".sI c #6e4215", -"cJe c #6e421d", -"dhM c #6e4225", -"cVr c #6e4227", -"dg2 c #6e4229", -"ads c #6e4300", -"alh c #6e441a", -"bqJ c #6e442c", -".sf c #6e442e", -"bfs c #6e450d", -".qQ c #6e4519", -".Hb c #6e4527", -".sg c #6e4529", -"adr c #6e4702", -"beZ c #6e470e", -"cC. c #6e4821", -".t2 c #6e4824", -"#D. c #6e4900", -".t3 c #6e491c", -"bel c #6e4a16", -"Qtt c #6e4a34", -"bgp c #6e4b11", -"cfz c #6e4b25", -".SQ c #6e4b35", -"dHY c #6e4d0a", -"cyO c #6e4d22", -".m# c #6e4d2c", -".o. c #6e4d2e", -"aEq c #6e4f32", -"ben c #6e501a", -".kd c #6e502c", -".ge c #6e502e", -"#Cx c #6e5117", -".m2 c #6e5129", -".n9 c #6e5131", -"biA c #6e531c", -"bgl c #6e531e", -".Dh c #6e542f", -".ga c #6e5634", -"#Yh c #6e572b", -".0H c #6e5738", -"baE c #6e592c", -"biH c #6e5c14", -".vL c #6e5c36", -"a7c c #6e5d43", -"#Df c #6e5e13", -"aIn c #6e5e4e", -"#M3 c #6e5f5c", -"#YA c #6e6053", -"#5x c #6e6057", -"cqa c #6e611b", -"a4z c #6e6150", -"#34 c #6e6158", -".34 c #6e615b", -"c5Z c #6e6266", -"aKj c #6e635d", -"#Xm c #6e635f", -"#Bm c #6e641f", -"#q3 c #6e6458", -"#MZ c #6e6462", -".qS c #6e6b1c", -"#Di c #6e6b24", -"aZt c #6e6b66", -"cF# c #6e6c22", -"cCa c #6e6c2f", -"#hP c #6e6c6d", -".6i c #6e6d1b", -"#dD c #6e6f61", -"#ih c #6e706b", -".5J c #6e706d", -".nM c #6e710a", -"#mK c #6e7122", -"dbu c #6e7138", -"cFQ c #6e721b", -"cB0 c #6e7315", -"#si c #6e7323", -"#PJ c #6e733d", -"#YB c #6e736c", -"#Gp c #6e742a", -".j. c #6e7839", -"alA c #6e7c27", -"cz2 c #6e7c2d", -"cHI c #6e7d28", -"cdy c #6e802e", -"ciJ c #6e8127", -"#yc c #6e8324", -"aoZ c #6e8417", -"#Aa c #6e8420", -"#Ih c #6e842f", -"cG. c #6e852a", -".jI c #6e8624", -"#Ca c #6e8626", -"#wf c #6e8630", -"#yd c #6e872b", -"csT c #6e881d", -"#Ab c #6e8825", -"ax0 c #6e8841", -"cJu c #6e891e", -"cCo c #6e8a23", -".m5 c #6e8d30", -"dVL c #6e8e29", -"cEv c #6e8e2b", -"dUz c #6e8f26", -"cDi c #6e8f36", -".nz c #6e9423", -"cKh c #6e9522", -"cqK c #6e9528", -".hW c #6e9721", -".yo c #6e9a1f", -".nr c #6e9d19", -".nD c #6e9e26", -"dGW c #6f1800", -"dE# c #6f1e00", -"dsN c #6f1f00", -"dGN c #6f2603", -"dCM c #6f2605", -"#CG c #6f2e04", -"aq9 c #6f2f09", -"a7G c #6f2f0b", -"bf0 c #6f2f0c", -"bg7 c #6f3100", -"ake c #6f310c", -"ard c #6f350f", -"dk# c #6f3521", -"c1u c #6f3623", -"#GG c #6f3704", -"#EL c #6f3800", -"#GI c #6f3802", -".Yq c #6f3823", -"aB5 c #6f3b23", -"bhP c #6f3c0d", -"b3s c #6f3c38", -".mB c #6f3d18", -"dg3 c #6f3d22", -"#CX c #6f3e03", -"aAi c #6f3e1e", -"#CV c #6f3f00", -"akK c #6f3f11", -"cZz c #6f3f2b", -".6K c #6f4022", -"dbl c #6f4024", -".Ha c #6f4026", -"cZw c #6f402c", -"deZ c #6f4030", -"ar4 c #6f410d", -"c1U c #6f4120", -".Fi c #6f4127", -"dbk c #6f4129", -"dlt c #6f412a", -"#0P c #6f4221", -"am6 c #6f4223", -".Wm c #6f4225", -"#oI c #6f422d", -"ar2 c #6f4312", -".xF c #6f4326", -"#Ye c #6f4328", -"aGb c #6f440f", -"agE c #6f4411", -"#0O c #6f4424", -".d6 c #6f451b", -"Qth c #6f451d", -".in c #6f451f", -"bsc c #6f452c", -"bf8 c #6f4606", -"#XJ c #6f4612", -".G8 c #6f4723", -".OO c #6f4724", -"aox c #6f480d", -"ciB c #6f481d", -".kk c #6f4827", -".an c #6f482b", -".Zb c #6f491a", -".b4 c #6f4922", -".QK c #6f4924", -"bgq c #6f4b0f", -"#W. c #6f4c0a", -"chH c #6f4c26", -"cDf c #6f4d1f", -"ceD c #6f4e1b", -"cA0 c #6f4e25", -"Qtr c #6f4e2d", -"cC3 c #6f5000", -"bgn c #6f5019", -"cJf c #6f501a", -"agG c #6f5022", -".QY c #6f503e", -"aff c #6f5210", -"czW c #6f5228", -"#Dd c #6f5405", -".Vc c #6f543f", -"aQJ c #6f544d", -".Q0 c #6f553e", -"#MD c #6f5556", -"bj8 c #6f571b", -"#zr c #6f5815", -"#Gy c #6f5a17", -"cA1 c #6f5a2b", -".#l c #6f5c0f", -"acS c #6f5d4f", -"#s4 c #6f5e4e", -"c7z c #6f5e66", -"a1u c #6f5f52", -"#5i c #6f6158", -"#tf c #6f6353", -"#Jf c #6f642e", -"#od c #6f6503", -"aMM c #6f6661", -".sK c #6f6818", -"aN5 c #6f695d", -"#ge c #6f696b", -"#iw c #6f6a57", -"dpx c #6f6a67", -"#Vh c #6f6b52", -"#ww c #6f6b60", -"aRa c #6f6b62", -"aW7 c #6f6b6a", -"aY2 c #6f6c67", -"#cf c #6f6d20", -"cA2 c #6f6d32", -"aVc c #6f6e6c", -"czY c #6f6f33", -"#l7 c #6f6f6d", -"ddz c #6f6f6f", -"#dJ c #6f7068", -"#cg c #6f711d", -"aX3 c #6f716e", -"#Iu c #6f7338", -"#sn c #6f7960", -"#uf c #6f7e2b", -"ao6 c #6f7f1d", -"cz0 c #6f7f34", -"cz1 c #6f8032", -".lI c #6f8320", -"a.5 c #6f8322", -"#we c #6f832a", -"cgL c #6f862c", -"#6q c #6f8638", -"cFO c #6f882c", -".Av c #6f8c1e", -"cEk c #6f8c30", -"cG2 c #6f8d29", -"dUH c #6f8e26", -"dUI c #6f8e27", -".rd c #6f8f12", -".pz c #6f9820", -".FS c #6f9a26", -".wK c #6f9b1f", -".yp c #6f9b20", -".nC c #6f9c27", -".pk c #6fa11c", -"#tM c #6fa819", -"#tL c #6fab17", -"dEa c #701c00", -"dEe c #701c02", -"dGT c #701f01", -"dE. c #702102", -"dD9 c #702404", -"dFx c #702505", -"dD1 c #702800", -"bf2 c #702c07", -"amg c #702f07", -"ati c #702f11", -"ap8 c #703209", -"arl c #70340f", -"az0 c #70341c", -"arT c #703606", -"ate c #70371a", -"dx2 c #703813", -".UK c #703821", -"aAs c #703a0b", -"bhQ c #703a0e", -"aAw c #703b0f", -"bhE c #703b1c", -"b3u c #703b33", -"#E0 c #703d00", -"ar1 c #703d0e", -"aId c #703d10", -"dfS c #703d22", -"dcY c #703d28", -"cUT c #703e23", -"#EX c #703f00", -".Zr c #703f16", -"bjs c #703f1e", -"cjz c #703f1f", -"aCm c #703f21", -"#CW c #704000", -".h. c #70401a", -"bDv c #70401c", -"#lT c #704029", -".x1 c #704117", -".Wt c #704123", -".Z3 c #704125", -"c0D c #704127", -"cRs c #70412d", -".QT c #704228", -"#9i c #70422a", -"#nl c #70422b", -"dH4 c #70430c", -"arN c #704319", -"Qt1 c #70431a", -".oW c #704322", -".zv c #704324", -".43 c #704326", -"bqK c #70432c", -"c1R c #70432e", -"ar3 c #704413", -"a.Y c #704421", -".Fj c #704427", -"bqM c #704429", -"bqL c #70442b", -"Qtv c #704437", -"amN c #704501", -".Xs c #704512", -".xH c #704522", -".6J c #704523", -".m1 c #704525", -"dH3 c #70460c", -"bsb c #70462e", -".cx c #704727", -".vP c #704729", -".t1 c #70482e", -"#D# c #704c00", -".FB c #704c18", -".O0 c #704d2d", -".O1 c #704d2f", -".dI c #704e11", -"ai4 c #704f0a", -".e# c #704f2e", -".OR c #705029", -"dsY c #70513d", -"aJ0 c #705248", -"dt7 c #70554c", -"biB c #70571e", -"#De c #705a0e", -"biw c #705a1e", -"biD c #705c1d", -"alD c #705c21", -"biF c #705e1c", -"biE c #705e1e", -"#0U c #705f29", -".l7 c #70603e", -"#ZR c #706053", -"crb c #706120", -"#Jg c #70632c", -".k. c #706341", -".11 c #706343", -"aLZ c #70635d", -".hI c #706516", -"#Hg c #706523", -"a7e c #70664b", -"#MA c #706760", -"aMC c #706961", -"c4b c #706c61", -"a0p c #706c6b", -"cFk c #706d20", -".nO c #706e07", -"aLI c #707070", -"aK3 c #70716c", -"dbP c #707173", -"#W8 c #70726f", -"azL c #707344", -"#ZS c #70736c", -".hb c #707437", -"cFh c #707517", -"### c #707525", -"da# c #707579", -"cEY c #70761c", -"cBi c #70791e", -".oZ c #707926", -"czZ c #707b37", -"cEu c #707e1d", -"cG3 c #708526", -"#E# c #70872c", -".hP c #708921", -"alo c #708924", -"dVH c #70892d", -"aaH c #708b24", -"dTq c #708d21", -"dVK c #708e2a", -"dVI c #708e2e", -".s5 c #709015", -"cmZ c #709023", -"c95 c #709126", -".Ap c #70921a", -".jt c #70961c", -".us c #709826", -".js c #70991f", -"#Ke c #709a46", -".Cb c #709b25", -".DS c #709b27", -".wE c #709c20", -"afZ c #70a146", -"dEb c #711d01", -"dD3 c #712505", -"dD2 c #712704", -"ary c #712903", -"an3 c #712c05", -"dF4 c #712d06", -"bg6 c #712e00", -"be3 c #712e04", -"#CA c #712f00", -"bfE c #71320f", -"at. c #71330a", -"anT c #713513", -"dmT c #71351b", -"aDm c #71360c", -"bht c #713618", -"bhR c #71380d", -"arp c #71381a", -"dzs c #713914", -"bhD c #713a1b", -"#EM c #713b00", -"aAv c #713b0f", -"dx3 c #713b17", -"ckz c #713b19", -"dlU c #713b21", -"b2h c #713c2c", -"dzu c #713d18", -"#ql c #713d30", -"bjr c #713e1f", -".Us c #713e21", -".6L c #713e23", -"dbm c #713f24", -"#kv c #713f26", -"#ko c #713f28", -"ar6 c #714006", -".k0 c #714020", -"cRW c #71402f", -"ckA c #714111", -"cQX c #71412b", -"cQY c #71412d", -"aiw c #71420e", -"cXT c #714224", -"dsX c #714226", -"cTw c #714228", -".qn c #714230", -"dHp c #714322", -"#qj c #714329", -"cWQ c #71432b", -"dgw c #71432c", -"cXQ c #714423", -".Ws c #714425", -"aDM c #714427", -"c8D c #71442d", -"bqI c #71442f", -".1K c #714431", -"djf c #714518", -"#1X c #714520", -".Dg c #714522", -"bsd c #71452a", -".qo c #71452c", -"cjA c #714619", -".Q6 c #71461c", -"cZD c #714626", -".xI c #714721", -"bsa c #714731", -"#Cy c #714812", -".vO c #71482c", -".aB c #714832", -"abq c #714918", -".cw c #714926", -"c1F c #714a2b", -".Xh c #714b0a", -".sb c #714b24", -".tY c #714b26", -".az c #714d2d", -".b5 c #714e2e", -".ax c #714f29", -"afg c #715009", -".se c #715339", -"dbt c #71541c", -".MT c #71542c", -"#N9 c #715526", -".QZ c #715540", -".0n c #715627", -".G9 c #715732", -".Q1 c #71573e", -"Qt2 c #71581f", -"#QS c #715933", -"c2y c #715a48", -"cBj c #715b0f", -"cEi c #715b22", -"a6g c #715e60", -"baD c #715f31", -"#M4 c #715f5f", -"aAN c #71602a", -"aAQ c #71602c", -".02 c #716050", -"d#W c #716130", -"cDg c #716227", -"#rx c #71635a", -"cyR c #716529", -"#bK c #716660", -"dvA c #71675b", -"a3O c #716765", -"#Dk c #71681b", -"anl c #716916", -".3O c #71695c", -"#WR c #716967", -"a6X c #716b51", -"#8h c #716b5f", -"#dZ c #716d16", -"#Dj c #716d24", -"#ia c #716d62", -"aMw c #716d6a", -"#7d c #716e67", -"#PK c #716f3c", -"a2S c #71706b", -"#5j c #71716f", -"#1a c #71726d", -"dbQ c #717578", -"ceN c #717618", -"cDh c #717b32", -"#Ml c #717e36", -"cA3 c #71803b", -"#A# c #71821c", -"cE3 c #718222", -"cCb c #718339", -"cHR c #718522", -"cJv c #71871b", -"#C. c #718722", -"#DA c #718919", -"#C# c #718927", -"#Gc c #71893d", -"cDt c #718a24", -"cxk c #718b1e", -"cu0 c #718b20", -"cBh c #718b28", -"dUy c #718d27", -"crP c #718e22", -"cA4 c #718e3e", -".Ep c #718f2f", -".j# c #719040", -"cl8 c #719122", -".lD c #719124", -"coQ c #719126", -"cSl c #71931b", -".BP c #71942c", -".lr c #719517", -"cJi c #719529", -".jK c #719a30", -"dGV c #721d00", -"dD5 c #722104", -"dGS c #722302", -"dD4 c #722305", -"dGQ c #722606", -"aph c #722712", -"dEN c #722900", -"be5 c #722e0b", -"aBe c #723016", -"anP c #723109", -"aol c #72330a", -"doi c #723403", -"bfD c #72340d", -"bje c #723518", -"dx1 c #723812", -"bfY c #723813", -"bhC c #72391b", -"ayy c #72391c", -".W0 c #723a00", -"bgU c #723a01", -"bkN c #723a19", -"cvf c #723a21", -"#GJ c #723b05", -".Yo c #723b1d", -"dkB c #723c18", -"aGy c #723c1a", -"#hA c #723c20", -"aIB c #723c22", -".kA c #723d1b", -"du8 c #723d1e", -"cT2 c #723d2b", -"#qk c #723d2f", -"cOY c #723e26", -"#i1 c #723e28", -"#kp c #723e29", -"#E1 c #723f00", -"akJ c #723f12", -".Ur c #723f22", -".SC c #723f24", -"#lN c #723f2a", -"cSP c #723f2c", -"bh5 c #72400b", -".06 c #72400f", -".ik c #72401b", -"dlu c #72401f", -".Z2 c #724025", -"#Yd c #724027", -"#lM c #724029", -"#Wy c #724120", -".QS c #724123", -"ddY c #724132", -".ij c #72421a", -"#1Y c #72421c", -"cSS c #72422b", -"aoS c #72422c", -"cZy c #72422e", -"#EW c #724300", -".sp c #72430d", -".Yi c #724325", -".Do c #724327", -".Dn c #724329", -"bs# c #72432f", -"b8T c #724410", -"asl c #724420", -".io c #724422", -"c2m c #72442a", -"#qi c #72442c", -"#qh c #72442d", -".aD c #724434", -"#G2 c #724504", -"#IA c #72451b", -"c0B c #724524", -".Wr c #724526", -".oe c #724528", -"btz c #724530", -"#G0 c #724605", -"cGN c #724621", -"#qm c #724629", -".cz c #72462b", -"bpn c #72462d", -"cEh c #72471d", -"cYE c #724725", -".qp c #724727", -"ceC c #72481e", -"Qte c #724830", -"bhm c #724909", -"aqh c #724911", -".vQ c #724a27", -".O9 c #724b20", -".mi c #724b2c", -"aii c #724b3c", -"#99 c #724c1f", -".6I c #724c28", -"agF c #724d19", -"bgA c #724e10", -".w9 c #724e1a", -".60 c #724e38", -"#QR c #724f27", -"c8J c #724f39", -"#lZ c #725215", -"Qtp c #72552b", -"c3Z c #725543", -"bds c #725615", -"aAL c #725624", -"alF c #725627", -"bgi c #725720", -"bj9 c #72581d", -".3g c #725833", -"bV. c #725917", -"ap0 c #725a10", -"biC c #725a1e", -"#pW c #725b00", -"aZe c #725b4b", -"#Bn c #725c13", -"cqI c #725e07", -"amn c #725e19", -"#MC c #725e5d", -"#3P c #725f58", -"a7d c #726048", -"#YN c #726056", -"#s3 c #72614f", -"cFM c #726312", -"bbq c #72641b", -"a#T c #726459", -"aFT c #726461", -"#oQ c #72661a", -"aS1 c #726d69", -"#bv c #726e62", -"aZv c #726e6d", -"#2n c #72716d", -"#YY c #72716f", -"cKv c #727212", -"ddp c #727272", -"#aH c #727325", -"#It c #727337", -".nL c #72740f", -"cfL c #727420", -"cop c #727524", -"cIv c #727526", -".3e c #727546", -".nI c #727618", -"cEj c #72762c", -"d.q c #72797f", -"daa c #727b82", -".jH c #727d1f", -"cdz c #727f27", -"cyF c #72801f", -".sL c #728021", -"c5m c #72802b", -"cF8 c #728323", -"#Ii c #728432", -"dVW c #72852b", -"cln c #728720", -"#E. c #72872a", -".hL c #72872c", -".Cr c #728823", -"ahy c #728917", -"chL c #72892e", -"dbz c #72895f", -".wf c #728b26", -"dTp c #728d22", -".c8 c #728d30", -".yC c #728e1f", -"cBf c #728f25", -".pl c #729014", -"cSm c #72911a", -".Co c #729320", -".sM c #729328", -".Ah c #729922", -".Ca c #729926", -".F3 c #729c20", -"c3J c #72a137", -"c3I c #72a336", -"dEc c #731d02", -"dD7 c #731f03", -"#CD c #732400", -"dCJ c #732403", -"#CE c #732500", -"dFw c #732501", -"dGM c #732703", -"dGR c #732705", -"apQ c #732b05", -"atj c #732e0d", -"dpo c #733100", -"apC c #733510", -"c1t c #73352a", -"apF c #733816", -"atd c #733818", -"dzr c #733914", -"b4o c #733935", -"cvh c #733a1f", -"dA3 c #733b1a", -"cvg c #733b22", -"c1r c #733b24", -"dlV c #733c1e", -".8x c #733c27", -"#7F c #733c28", -"bQB c #733d0f", -"bLc c #733d19", -"bkM c #733d1b", -".Ut c #733d21", -".6M c #733d23", -".6V c #733d25", -".S5 c #733e1e", -".c3 c #733e1f", -"#7E c #733e2c", -"#oH c #733e30", -"dzt c #733f1a", -"#hs c #733f27", -".cD c #733f29", -"cSO c #733f2a", -".QR c #734021", -".Wn c #734023", -".QF c #734025", -"cQg c #73402b", -"bty c #73402d", -"cSQ c #73402f", -".Vr c #734100", -"bd8 c #734102", -".il c #73411c", -"#X9 c #73411e", -".OK c #734126", -"bwb c #734128", -"bs. c #73412a", -".go c #734219", -"cB9 c #734221", -"#Y. c #734222", -".3j c #734224", -"dcW c #734231", -"abW c #734303", -"bEw c #73431b", -"djd c #73431d", -"cTv c #73432c", -"#qg c #73432d", -"buU c #73432f", -"be0 c #73440e", -"dje c #73441a", -".eB c #734426", -".eE c #734428", -"cT3 c #73442a", -"c0x c #734430", -"#G1 c #734507", -"aAH c #734511", -"aix c #734513", -"dGj c #734521", -"c0A c #734523", -"bCq c #734524", -"c5. c #73452d", -"bpm c #73452e", -"bfa c #73460b", -"diZ c #73461d", -".c4 c #734625", -"#0N c #734627", -"#oJ c #734629", -"bqH c #73462f", -".OV c #734724", -"buV c #73472a", -"dE3 c #73472c", -".cA c #73472e", -"#GZ c #734804", -"#QQ c #73481d", -"cYD c #734826", -"cZC c #734828", -"bij c #73490d", -".dH c #734a16", -"#GY c #734b05", -".o# c #734c2f", -".Xi c #734d0c", -"bfr c #734e0a", -".sj c #734f1d", -".O6 c #734f2f", -".qm c #734f39", -"a.. c #735026", -".QL c #735028", -"#WH c #73512c", -"#Zz c #735227", -".g# c #73522f", -"bgo c #73531a", -"cEX c #735a08", -"c8K c #735a46", -"cDr c #735b01", -"ayY c #735b13", -".oo c #735c32", -"c5y c #735c4e", -"#Dl c #735e0d", -"bry c #735e29", -"aoa c #735f18", -"#2m c #735f56", -"cC1 c #73630c", -"bKj c #73632f", -"#s5 c #736354", -"alC c #736524", -".ql c #736643", -"#a# c #73665e", -"bKi c #73672d", -".3f c #73673d", -"#Hh c #736b2a", -".65 c #736b5e", -"coq c #736e1d", -"a3M c #736e5a", -"#Gr c #736f25", -"aXC c #736f66", -"aKC c #736f6c", -"cKw c #73700f", -"#Iw c #737138", -"#4R c #73722f", -"aiD c #737256", -"#U2 c #737351", -"#kM c #737369", -"#oR c #737432", -"#jP c #737778", -"dVX c #737824", -"cFN c #737923", -"cdA c #737a1b", -"#yb c #738321", -"cmv c #73832a", -".qT c #738424", -"#Kh c #738635", -"#DB c #73891a", -"cwb c #738a1e", -"afI c #738b19", -"dUJ c #738b2b", -"dUx c #738c27", -"cFP c #738c30", -"aw# c #738c31", -"dTr c #738d22", -".jN c #738d28", -"ach c #738e23", -"clf c #738f20", -".lH c #738f29", -"cIw c #738f2b", -"cSn c #739318", -".uM c #73971b", -".uR c #73971d", -".qU c #73972b", -".fW c #739a1d", -".FR c #739a27", -"Qt5 c #739a2d", -".#O c #739e1b", -"d#P c #739f40", -".o1 c #73a230", -"#rU c #73a619", -"dEd c #741e03", -"dFv c #742401", -"#CC c #742500", -"dD8 c #742506", -"#CF c #742901", -"#CB c #742a00", -"aya c #742a0f", -"akb c #742b00", -"as7 c #743106", -"ans c #743116", -"ar. c #74330b", -"aWF c #74331d", -"doE c #743500", -"bhv c #74350a", -"bhu c #743512", -"#GB c #743701", -"dnX c #74370b", -".cT c #743722", -"bfZ c #743814", -"cvi c #74381e", -".eY c #743820", -"dx0 c #743917", -"bhB c #743919", -"aBb c #743a14", -".6U c #743a22", -"#b. c #743a24", -"ayx c #743b1d", -"ct# c #743b20", -"#sa c #743b28", -"b4n c #743b34", -"#Rw c #743c09", -".vD c #743c19", -"bh9 c #743c1b", -"#s. c #743c21", -".94 c #743c23", -"#a9 c #743c25", -"atD c #743d04", -".iF c #743d1e", -".eI c #743d1f", -"#kq c #743d28", -"cT1 c #743d29", -".vE c #743e18", -"dA4 c #743e1a", -"bjq c #743e1c", -".Uu c #743e22", -".SD c #743e24", -"##I c #743e26", -"amB c #743f0d", -".e6 c #743f1d", -".wa c #743f1f", -".qP c #743f20", -"bh6 c #744011", -".x0 c #744018", -"c3U c #744019", -"#r9 c #744028", -"#lP c #74402a", -"#lO c #74402b", -"bg8 c #744100", -"aqy c #744122", -".Yh c #744124", -"#hr c #744126", -"#nb c #74412c", -"ddZ c #74412e", -"#Ut c #744205", -"#CP c #744207", -".gl c #74421d", -".mc c #74421f", -".OX c #744221", -".of c #744227", -"cSk c #744229", -"#na c #74422b", -"b8S c #74430b", -".OW c #744322", -"cVs c #744323", -".Bk c #744325", -"de0 c #744332", -".aE c #744334", -".1l c #744400", -".ap c #74441c", -".kg c #74441e", -"diY c #744420", -".49 c #74442d", -"#oC c #74442e", -"#EV c #744500", -"Qtj c #74450f", -"c3t c #744527", -".eC c #744529", -".Fh c #74452b", -"c8F c #744531", -"bh4 c #74460a", -"bQA c #744612", -"acb c #744614", -"cAZ c #744624", -".zw c #744625", -"bnQ c #74462c", -"bpl c #74462e", -"bqG c #74462f", -"#C6 c #744704", -".Uz c #744726", -".kl c #744728", -"dhl c #74472a", -"aih c #744732", -"#IJ c #744821", -".Yg c #74482b", -"c8G c #74482f", -"bW8 c #744912", -"cxJ c #74491e", -"czV c #744926", -".p2 c #744929", -"akX c #744a00", -"ac0 c #744a18", -".g. c #744a24", -"Qtu c #744a3a", -"dHW c #744b09", -"aEC c #744b15", -"aeL c #744b17", -".w8 c #744b1d", -".OZ c #744b2b", -"btA c #744b2f", -".x2 c #744c1b", -"cgD c #744c32", -".O2 c #744c33", -"dIP c #744d0a", -".fJ c #744d12", -"beB c #744d14", -"#I1 c #744e1d", -".MR c #744e2a", -"#Px c #744f22", -".#3 c #74502c", -"c3p c #745044", -".up c #74511b", -".Yf c #745131", -"#ME c #745155", -".#4 c #74522f", -"cgE c #74542b", -"cDy c #745514", -"#tB c #74560d", -"ayW c #745610", -"bV4 c #745618", -"#kA c #745624", -"bfd c #745711", -"a6q c #745745", -"aiU c #74593e", -"bfq c #745a0f", -"akv c #745b23", -"bj7 c #745c1e", -"c2H c #745d4f", -"a6j c #745d55", -"aiA c #745e35", -".hH c #746017", -".WK c #74615a", -"#s8 c #74624c", -"#Z4 c #746258", -".5C c #746262", -"#Fd c #746419", -"cyS c #746629", -".vM c #746643", -"ac7 c #74665d", -"#nt c #746723", -".e9 c #746834", -"#Gx c #746a23", -"cpI c #746b10", -"#Hi c #746b28", -"#0g c #746c57", -"bfo c #746d13", -"#Fg c #747027", -"#V0 c #74706d", -"aTB c #74706f", -"Qt3 c #747124", -"#ch c #74721b", -"alB c #747228", -"aEj c #747277", -"d.p c #747577", -"aqI c #747609", -"#Gq c #74762b", -"ciK c #747c26", -".3d c #747e4c", -"ana c #747f19", -"asz c #748115", -"cjH c #748328", -"#B9 c #74851f", -"#Gb c #74853e", -"clB c #74872b", -"cwk c #748924", -".jW c #748a25", -".DQ c #748a28", -"dUv c #748c2c", -".hc c #748f42", -".a7 c #74902c", -".f# c #74903b", -".#W c #749311", -"#BA c #74931e", -".rq c #749520", -".ju c #74961d", -".fX c #74961e", -".bQ c #749b1a", -".fV c #749c1f", -"#tN c #74a41d", -"#tK c #74aa16", -"#rT c #74ac15", -"dD6 c #751f06", -"dzf c #752202", -"dCK c #752909", -"dDv c #752a02", -"dCL c #752a0a", -"as6 c #752e00", -"akc c #752e02", -"ayE c #753100", -"bf3 c #753303", -"ar0 c #75340a", -"dCz c #753603", -"bhS c #75360d", -"dne c #753615", -"dCy c #753704", -"c1s c #75372a", -"akq c #753809", -"bhA c #753819", -"bfF c #75381b", -"cOZ c #75381c", -".eX c #753825", -"cws c #75391d", -"coi c #753921", -".U5 c #753a18", -".S6 c #753a1a", -"#s# c #753a28", -".95 c #753b23", -"#cI c #753b25", -"#1E c #753c05", -"atA c #753c0f", -".eJ c #753c1e", -"##H c #753c21", -"btw c #753c28", -"#UV c #753c29", -"bRF c #753d0e", -"dCq c #753d1a", -"#cT c #753d22", -".UA c #753d24", -"#fW c #753d26", -"#nk c #753d2e", -"dCr c #753e17", -".WC c #753e1f", -"#r7 c #753e20", -"#ht c #753e29", -"btx c #753e2a", -".6v c #753f13", -"dkb c #753f19", -"dlv c #753f1b", -".xw c #753f1d", -".Yj c #753f23", -".Wu c #753f25", -".oV c #753f27", -"#C3 c #75400c", -".gm c #75401e", -".MN c #754021", -"buT c #75402e", -".6u c #754111", -".j5 c #754112", -".gp c #75411a", -".im c #75411c", -".Dl c #754129", -".6W c #75412b", -"cIs c #75412c", -"Qti c #754215", -".QQ c #754223", -".qa c #754225", -"#eo c #754227", -"#nc c #75422d", -"#7p c #754304", -".t9 c #754312", -"btv c #75431e", -".mb c #754320", -"#hE c #754322", -".eF c #754328", -"bqF c #75432a", -"#nd c #75432c", -"bkU c #754423", -".OY c #754424", -".Bl c #754426", -"dcX c #754433", -".zc c #754515", -".ih c #75451d", -"ask c #75451f", -"cUr c #75452e", -"c8m c #75452f", -".xq c #75461a", -"c5p c #75461c", -".cm c #754628", -".p3 c #75462a", -"bnR c #75462c", -"chF c #754632", -".qx c #75470c", -"btB c #754725", -".zx c #754726", -"dk8 c #75472d", -".ma c #754827", -"bse c #754829", -".3p c #75482b", -"#II c #754922", -"bCp c #754924", -".am c #754930", -"aAI c #754a1d", -".I1 c #754a27", -".xG c #754a28", -".aC c #754a39", -".ov c #754b19", -"c8H c #754b32", -".ve c #754c20", -".K1 c #754c2c", -".He c #754c2e", -"bii c #754d12", -"c8I c #754d34", -"#C9 c #754e01", -"dHX c #754e0b", -".La c #754e25", -"#I0 c #754f1e", -".K6 c #754f2a", -"afh c #755009", -".qr c #75501c", -".xE c #755033", -"aiQ c #755035", -".M2 c #75522c", -"bgR c #755313", -"cEz c #755314", -".K5 c #75532e", -"aAT c #75552c", -"#R6 c #75552f", -"#F# c #755606", -"bV# c #755615", -".x. c #75561d", -".t0 c #75573b", -"#Bo c #755808", -".Ye c #755836", -"blE c #75591a", -"bm8 c #755a17", -"bcA c #755b28", -".n8 c #755b3a", -"#3m c #755c23", -"biv c #755d1d", -"brx c #755d21", -"aAS c #755d2f", -".Yd c #755d39", -".Q3 c #755d3b", -"ao8 c #755e0e", -".lV c #755e1b", -".Q2 c #755e3f", -"cGB c #755f14", -"aAR c #755f2e", -"bU9 c #75601d", -"bkd c #75611a", -"#Iy c #75612e", -".i# c #756140", -".fN c #756317", -"a7q c #75634b", -"bfp c #756412", -"#Lk c #756439", -"dAh c #75645d", -".4y c #75651a", -".12 c #756541", -"b#w c #756625", -"dxc c #75665f", -"c4k c #756663", -".lU c #75671c", -"dVY c #75671e", -"#8C c #75675c", -"#Fi c #75681a", -"c9a c #756a70", -"#.w c #756e68", -".nP c #75700c", -"aTE c #75706a", -"ahU c #757154", -"#7c c #75726b", -"##Z c #757364", -"db5 c #757374", -"deC c #757575", -".ur c #757821", -".we c #757925", -"d.r c #757c86", -".a6 c #757d2a", -"cCn c #757f1c", -".Gg c #758226", -".lR c #758620", -"#D9 c #758626", -"aun c #758721", -"ckk c #75881c", -"cIJ c #758a23", -"cFY c #758a2f", -"dUw c #758b29", -"dTo c #758c22", -"ciI c #758c31", -".wQ c #75901f", -"cII c #759027", -".hX c #759123", -".o0 c #75912d", -"cpJ c #759228", -".dU c #75941c", -".Ag c #759824", -".Ed c #759d19", -"#vH c #75a722", -"dHK c #762801", -"al5 c #762a00", -"arz c #762b04", -"atk c #762e08", -"#EA c #762f00", -"dD0 c #762f05", -"asU c #763108", -"be7 c #76320d", -"akd c #763309", -"bjg c #76350d", -"aqa c #76350f", -"au2 c #763515", -"at# c #76360a", -"bjf c #763613", -"arm c #763811", -".VC c #763900", -"bfC c #76390d", -"cNz c #76391a", -"cO0 c #76391c", -"cOb c #76391d", -".g0 c #763924", -".aT c #763926", -".cS c #763927", -"dCx c #763a06", -"cNA c #763a18", -"ayz c #763a1e", -"cuc c #763a20", -".8w c #763a22", -"b4p c #763a2f", -"aon c #763b11", -"cZ4 c #763b19", -"b3v c #763b29", -".Zs c #763c0a", -".tT c #763c14", -"aDk c #763c16", -".tS c #763c17", -".6N c #763c24", -"#ep c #763c26", -"#i2 c #763c28", -"#UU c #763c30", -"bmn c #763d1f", -"cPE c #763d20", -"cAV c #763d22", -"cxB c #763d29", -".6Y c #763d2a", -"cIr c #763d2c", -"dHV c #763e03", -"bmh c #763e19", -"#Wx c #763e1b", -".sH c #763e1d", -".Z4 c #763e23", -".sw c #763e25", -".cE c #763e27", -".eh c #763f20", -".ej c #763f21", -"#hu c #763f2a", -"##L c #763f2b", -".iG c #76401a", -"cWv c #76401c", -".gn c #76401e", -".OJ c #764024", -".m0 c #764026", -".v2 c #764028", -".ki c #76411f", -".gI c #764121", -".gH c #764122", -"c8E c #76412f", -"#3g c #76421a", -"bhN c #76421b", -"bkL c #76421d", -"#n# c #76422a", -"#oB c #76422c", -"bgy c #764304", -"#C4 c #76430a", -"au# c #764318", -".1I c #764324", -".mA c #764326", -"#i0 c #764328", -".cC c #76432e", -"bPx c #764413", -"#nm c #76441f", -"am7 c #764421", -"#i6 c #764423", -"cUS c #764429", -".48 c #76442b", -"de1 c #76442d", -"#oK c #76451d", -".QP c #764524", -"bmo c #764525", -"bkT c #764527", -"#EU c #764600", -"##n c #764604", -"#C5 c #764608", -"cKe c #764618", -".ii c #76461e", -".kh c #764620", -"cSR c #76462f", -"bNo c #764713", -".ot c #764729", -"bnS c #76472b", -".OL c #76472d", -"#Pw c #764817", -".MX c #764826", -".SB c #764827", -"c1m c #76482e", -"c1l c #764830", -"dk7 c #764831", -".vd c #764922", -".vK c #764928", -".Hf c #76492a", -".Fk c #76492c", -"#80 c #764a09", -"bgz c #764a0d", -"dTU c #764a19", -".qj c #764a23", -".cy c #764a2d", -".BK c #764b18", -".MW c #764b28", -".J. c #764b29", -"cFL c #764c02", -".Lb c #764c26", -".zU c #764d19", -".#5 c #764d2d", -".2L c #764e1a", -".I9 c #764f2e", -".O5 c #764f32", -".WH c #764f40", -"#xv c #76500f", -"bV5 c #765012", -".vf c #76501f", -".O8 c #765029", -".M3 c #76502c", -".hD c #76510a", -".#2 c #765127", -".nV c #765218", -".O7 c #76522e", -"#MF c #765357", -"a7n c #765544", -"#zs c #76560d", -".Y2 c #765824", -"aG# c #765832", -"#Fa c #765909", -"bk. c #76591d", -".xC c #765939", -"#Dm c #765b04", -"alE c #765c29", -".Ff c #765e3a", -"bp6 c #766122", -"aAM c #76612c", -"cfB c #766225", -"#M6 c #766365", -"bke c #76641c", -"#Jh c #766426", -"c8L c #766456", -"bJh c #76652f", -"#aB c #76655b", -"bLt c #766632", -"cCm c #76670a", -"#rf c #766752", -"aeW c #76685f", -"#Hj c #766923", -"cJg c #766a22", -"bLs c #766a30", -"aLX c #766b67", -"ao7 c #766c13", -"aGo c #766d5e", -"#Fh c #766e25", -"#Ff c #766f27", -"aS3 c #766f69", -"#n4 c #76716b", -"aUv c #767271", -"#fx c #76741d", -"#je c #767475", -"cul c #76762e", -"aVD c #767765", -"#su c #76776f", -"ctm c #76782f", -"#mL c #767920", -"ctn c #76792c", -"dbR c #767a7d", -"cJt c #767c1a", -"#7O c #767c26", -".6j c #767d20", -".hM c #767f26", -".70 c #768027", -"#Ik c #76813c", -"#Ij c #768236", -"#wd c #768329", -".9E c #76832b", -"cG1 c #768423", -"#Fx c #76881c", -"#Ga c #76883c", -"dVG c #768930", -"dTs c #768b22", -"ckG c #768b2e", -".dp c #768c2a", -"cjG c #768e30", -"cAb c #769025", -".dV c #769120", -"cSo c #769217", -".zY c #769432", -".dZ c #76981d", -".hs c #769827", -"dwi c #772002", -"dFu c #772301", -"dHJ c #772a00", -"bg4 c #772d00", -"asV c #772f07", -".45 c #772f19", -"al8 c #773004", -"dqA c #773302", -"#i9 c #77330c", -"dpZ c #773400", -"azv c #77340a", -"do3 c #773600", -"bhT c #77360e", -".eZ c #773618", -".cU c #77361a", -"bhw c #773709", -"anS c #773711", -"cZ5 c #773714", -"cNy c #77371b", -"bf4 c #773802", -"dny c #77380f", -"aBd c #773819", -"amy c #773908", -"dA2 c #773914", -".g1 c #773920", -"##C c #773922", -".eW c #773924", -"cug c #773a1b", -"cMS c #773a1d", -".6P c #773a1e", -"#cJ c #773a25", -".aS c #773a28", -"#t2 c #773b17", -"bh8 c #773b1f", -".6O c #773b21", -".96 c #773b23", -"aFr c #773c10", -"bjo c #773c1a", -"bjp c #773c1c", -"cKd c #773c1e", -"az2 c #773c2e", -".gM c #773d15", -"#t1 c #773d18", -".Wv c #773d25", -"#fX c #773d27", -"cky c #773d29", -"#oG c #773d2f", -"dCv c #773e09", -"#1W c #773e20", -".oa c #773e21", -".1H c #773e23", -".Fg c #773e2a", -"#6g c #773e2d", -".G7 c #773f1c", -"dka c #773f1e", -".qb c #773f24", -".SN c #773f26", -"#lQ c #773f28", -"#Tr c #773f2e", -".my c #773f30", -"#GK c #774008", -"#3h c #774017", -".xo c #774019", -".ei c #774021", -".1E c #774022", -"bOz c #774113", -"aFq c #77411b", -"cZ3 c #77411d", -".mf c #77411f", -".Wo c #774125", -"#r8 c #774127", -".xR c #774129", -"bMs c #774216", -"aFp c #774220", -".SF c #774222", -"#UY c #774223", -".aF c #774230", -"aqB c #774234", -"#Pv c #774311", -".sq c #774313", -"bjv c #774314", -"dIg c #77431e", -"cHF c #77432b", -"cMN c #77432d", -"dLC c #77432e", -"#CU c #774402", -".h7 c #774415", -".kB c #774419", -".eH c #774427", -".47 c #774429", -".or c #774433", -"bgx c #774506", -".zT c #774514", -".gj c #774520", -".md c #774522", -"cVt c #774524", -"c1W c #77452a", -"bqN c #77452c", -"cRX c #77452e", -"dCm c #77461e", -".MY c #774625", -".n3 c #774626", -".Bj c #774628", -".mC c #774719", -".kf c #774721", -".os c #774730", -"ceA c #774731", -"c1A c #774814", -"bnT c #77482a", -".#E c #77490d", -".t8 c #774915", -"ceB c #774927", -".Uy c #774928", -".3q c #77492f", -"c1S c #774931", -".cB c #774932", -"#G3 c #774a09", -"bRE c #774a13", -".ig c #774a21", -".KX c #774a29", -".b6 c #774a2b", -".mj c #774a2d", -"#13 c #774b1c", -".3h c #774b2e", -"#C7 c #774c07", -".w7 c #774c1f", -"d#X c #774c29", -"c1E c #774c2a", -".ea c #774c2c", -".w6 c #774d1b", -".vT c #774e22", -".oq c #774e3a", -"#GX c #774f09", -".gf c #77502f", -"arM c #775110", -"aeM c #775120", -"#IZ c #775122", -"bW7 c #77521b", -"dTV c #77521e", -"bsW c #775323", -"cwv c #775412", -".a4 c #775527", -".ie c #775530", -".vN c #775539", -"bif c #775620", -".Za c #77562b", -"bex c #77571e", -".OS c #77572e", -"dH1 c #775817", -"bie c #775821", -".lW c #77591b", -".c5 c #775a2e", -"a6F c #775a52", -"anm c #775f15", -".hF c #775f17", -"bkc c #77601c", -"bj6 c #77601d", -"#Fj c #77610c", -"#1m c #776559", -"aJL c #776757", -"crc c #776825", -"bJg c #77682d", -"bMD c #776b31", -"#R8 c #776c4c", -"dtC c #776d6c", -"aoY c #776f0a", -"cG4 c #776f1c", -"#U1 c #776f4a", -"aS2 c #776f6c", -"#bG c #776f6d", -"dR4 c #777018", -"cG# c #777020", -"#uy c #77715b", -"#wx c #777163", -"cF7 c #777217", -"dc5 c #777358", -"aLL c #777370", -"a1h c #777372", -"#9p c #777520", -"dUK c #777624", -"dj8 c #777674", -"cdB c #777715", -"ccA c #77772d", -"deB c #777777", -"cDs c #777918", -".jG c #777a21", -"#uu c #777a71", -"dab c #778089", -"Qtn c #778234", -"cJh c #778428", -"czM c #778725", -"dUt c #77872e", -"cn1 c #778c23", -"dUu c #778c2f", -".dW c #778e22", -"cqW c #778e24", -"cFa c #778e33", -".bY c #778f13", -".jL c #778f2d", -".lC c #779028", -".Cn c #779221", -"c3K c #779535", -"#BB c #779621", -"cSU c #77971a", -".dT c #77971c", -".#N c #779a18", -".bP c #779a1a", -".FQ c #779a26", -"#rV c #77a21f", -"drN c #782700", -"a7F c #782c0c", -"dF# c #782f00", -"asW c #782f04", -"bgW c #783200", -"azu c #78330c", -"au3 c #783312", -"ar# c #78350b", -"b#r c #783602", -"dCA c #783606", -"cQh c #78361c", -"apD c #783812", -"au1 c #783815", -"cLW c #78381c", -"cMR c #78381d", -"bkO c #78391a", -"b5i c #783930", -"bWA c #783a13", -".97 c #783a21", -"#cK c #783a23", -"cJd c #783a2d", -"b5h c #783a2f", -"bzQ c #783b1c", -"cwt c #783b1e", -"az3 c #783b1f", -"#eq c #783b26", -"#ku c #783b28", -"QtO c #783b29", -"#1F c #783c00", -"dH6 c #783c0a", -"bmi c #783c18", -"#t3 c #783c1a", -"Qt0 c #783c20", -"cp7 c #783c22", -".8o c #783c24", -"cGA c #783d00", -"bGm c #783d15", -".i6 c #783d1b", -".QC c #783d1d", -".kZ c #783d1f", -"#4J c #783d2b", -"#4I c #783d2d", -"#6f c #783d2f", -"#EN c #783e00", -"aBa c #783e16", -"#t0 c #783e18", -".xx c #783e19", -".un c #783e26", -"#7G c #783e28", -"#cV c #783e2a", -"dCw c #783f08", -"dCs c #783f14", -".a# c #783f21", -".xQ c #783f22", -".cF c #783f24", -".aG c #783f2b", -".8y c #783f2c", -"#2W c #784007", -".Fc c #78401b", -"cNw c #78401d", -"alg c #78401f", -".3o c #784025", -".um c #784027", -".Dk c #784029", -"bFq c #784118", -".gL c #78411a", -"bLd c #784122", -".SE c #784123", -".mz c #78412c", -"dLB c #78412d", -".8a c #784213", -"clv c #784214", -"bZ# c #784216", -"#1Z c #78421c", -"bFC c #78421e", -".kj c #784220", -".Dp c #784226", -".Z1 c #784228", -".gE c #78422a", -".vn c #78430f", -"au. c #784317", -".cn c #784321", -".zm c #784323", -"#a8 c #784324", -".23 c #78440a", -".xp c #78441c", -"#lU c #78441f", -".Z8 c #78442c", -"cXL c #78442e", -"dKF c #78442f", -".zb c #784516", -"cVu c #784526", -".Wp c #784528", -"#kn c #78452a", -"##m c #784609", -".BJ c #784615", -".gk c #784621", -"bmp c #784625", -".Dm c #78462d", -"cSj c #78462f", -".vm c #78470d", -"bFB c #78471e", -"cF. c #78471f", -".MZ c #784726", -".Bm c #784729", -".1k c #784800", -"aai c #784806", -"bkK c #784817", -".P. c #784818", -".Je c #784822", -"cTu c #784831", -"#E4 c #784903", -"bg9 c #784905", -"dGi c #78491d", -"c6Y c #78491f", -"dib c #78492b", -".eD c #78492d", -"c5# c #78492f", -"dU6 c #784a19", -".xJ c #784a26", -"c1g c #784a30", -"cUu c #784a32", -"cBk c #784b07", -".h6 c #784b12", -"cXP c #784b2a", -"c0C c #784b2c", -"dHq c #784b2e", -".5. c #784b36", -"#E5 c #784c01", -"dSE c #784c1d", -".zd c #784d1a", -"#IK c #784d23", -".ke c #784e28", -".nW c #784f1b", -".b3 c #784f21", -"#C8 c #785106", -"bgr c #785116", -"bih c #785118", -"aiy c #785221", -"aAU c #78522d", -"big c #78531c", -"#E9 c #785400", -".Xg c #785418", -".dJ c #785511", -".vg c #78551d", -"bgg c #785616", -"#F. c #785706", -"biI c #785712", -"#UZ c #785734", -".#F c #78580f", -"aAK c #785827", -"bm9 c #785918", -"blF c #785a1c", -"#6o c #785b15", -"#MH c #785b5d", -".hE c #785c13", -"c2x c #785e4d", -"bkb c #785f1c", -".DM c #785f26", -".hG c #786018", -"ceE c #786022", -"#R7 c #78613f", -"cFR c #786312", -".j1 c #78641b", -".l6 c #786544", -"dTe c #786612", -"#6p c #78661a", -"dUL c #78661e", -"cKu c #78670f", -"dV. c #786719", -"dB0 c #78675f", -".bn c #786918", -"#Hf c #786924", -"bLr c #786926", -".a5 c #786a2b", -"cHS c #786e15", -"azK c #786e3d", -"cuk c #78712d", -"#bu c #787167", -"aV4 c #787266", -"ctl c #78732f", -"dTf c #78741d", -"cgO c #787526", -"aTD c #787570", -"#bx c #787669", -"aqP c #78771a", -"cxv c #78771b", -"a6U c #787759", -"cCU c #787c1e", -"#aI c #787e28", -"cBP c #787f1f", -"d.s c #787f89", -"ckl c #788019", -"aSP c #78817c", -".f. c #78823d", -"#Im c #788347", -"ckH c #78852b", -"cKg c #788624", -"#Fy c #78881d", -"Qt4 c #788c2d", -".Ce c #788d14", -"ckj c #788e1f", -"#Bz c #788f1a", -".FK c #788f1d", -".Aj c #78911b", -"cAc c #789129", -".x6 c #78922f", -".pq c #789320", -".yw c #78941d", -".FO c #789423", -".d0 c #78961a", -"cSV c #789819", -"#zF c #789e25", -"#vI c #78a725", -"#rS c #78ad17", -"dAK c #792702", -"bg0 c #792904", -"dF5 c #792c02", -"an4 c #792e04", -"ayd c #792f16", -"asT c #79300d", -"ayc c #79301d", -"as5 c #793101", -"anQ c #79340a", -".gQ c #79340d", -"aBi c #793424", -".eP c #79361b", -".eQ c #79361c", -".aU c #79371d", -"anr c #79381a", -".cR c #793826", -"bhx c #793909", -"aBm c #79390d", -"aBj c #793916", -"cxC c #79391d", -"cMQ c #79391e", -"#hz c #793920", -"dCp c #793a17", -"dzq c #793a19", -"cvk c #793a1b", -"#Ya c #793a28", -".gN c #793b14", -"apE c #793b16", -".8p c #793b22", -".iY c #793b24", -"#er c #793b26", -".XK c #793c06", -".Dw c #793c1d", -"bzR c #793c1f", -"byJ c #793c20", -".UB c #793c27", -"QtN c #793c2a", -"atQ c #793d00", -"akr c #793d09", -"arU c #793d0b", -"ciz c #793d18", -"aro c #793d19", -"az4 c #793d1b", -".Sx c #793d21", -".aH c #793d23", -"#3d c #793d25", -".r8 c #793e12", -"bOA c #793e14", -".vF c #793e16", -"adI c #793e1c", -".c2 c #793e1e", -"bnV c #793e20", -"#nj c #793e2e", -"#tZ c #793f19", -"#Ts c #793f1a", -"clu c #793f27", -"#Y# c #793f29", -".6X c #793f2b", -"#Tq c #793f31", -"bFm c #794013", -".UD c #794022", -".cd c #794023", -".ce c #794025", -"#Yc c #79402c", -".ky c #79402f", -"b2j c #79411c", -"b5E c #79411e", -"cQW c #794120", -"csd c #794126", -"aoT c #794128", -"#bg c #79412a", -"bjE c #79420c", -".6w c #794219", -"bh7 c #79421b", -".mg c #794223", -"##B c #794224", -".zI c #79422d", -"bf7 c #794300", -".z# c #794317", -"bmg c #79431d", -".w# c #79431f", -".c# c #794321", -"cXN c #794327", -".3i c #794329", -"cMO c #79432b", -"#CT c #794402", -".xh c #79440e", -"cb2 c #794410", -"ano c #794412", -"dk9 c #79441c", -".Jf c #794422", -"#UW c #794424", -"#cH c #794425", -".za c #794516", -"asj c #79451d", -".ef c #794520", -".QG c #79452d", -"cXM c #79452f", -"#CS c #794604", -".M9 c #794619", -"dHo c #79461b", -"cW8 c #794627", -"#en c #794629", -"bjT c #79470c", -"dH5 c #794712", -"c1B c #794714", -"bmq c #794724", -".Lc c #794726", -".eG c #79472c", -".cl c #79472e", -"cez c #794730", -"#Uu c #794803", -".M8 c #79481f", -"a5F c #794820", -".M7 c #794827", -"bnU c #794828", -".Wq c #79482a", -".gi c #794921", -"cTt c #794932", -".Xt c #794a12", -"bNp c #794a14", -".Z0 c #794a2e", -"c1n c #794a30", -"afk c #794b00", -".fE c #794b0d", -".M0 c #794b29", -"c1k c #794b31", -"aFn c #794b34", -".so c #794c13", -"bOu c #794c15", -"c1D c #794c25", -"bBh c #794c2b", -"dhm c #794c2d", -".tA c #794d1c", -".f9 c #794d20", -".L# c #794d26", -".wb c #794e23", -"bDu c #794e24", -".M1 c #794e2b", -".fI c #794f15", -".d5 c #794f1d", -"#N8 c #79511e", -"abr c #795120", -"#Tv c #79512e", -".eA c #79522b", -".Bg c #795233", -"ac2 c #795324", -".MV c #79532e", -"dSF c #795420", -".mv c #79542a", -"#IW c #795521", -"#IX c #795523", -".8B c #79553f", -".fx c #795800", -"#IV c #795823", -"bid c #79591e", -".FC c #795920", -"c68 c #795940", -"btW c #795a17", -"bve c #795a19", -".cv c #795a2c", -"ah# c #795b13", -"dVZ c #795b15", -"bgh c #795b1b", -"bk# c #795b1d", -"dSG c #795b1f", -"a#O c #795b37", -"biu c #795c1a", -"a6r c #795c4c", -"a6G c #795d59", -"dt8 c #795e57", -"bJi c #79622c", -"bKk c #79622e", -"#Fc c #796415", -"boH c #796423", -"#U0 c #796540", -".j9 c #796544", -"#Hk c #79671b", -"bEN c #796727", -"bFS c #796729", -"aLp c #796759", -"c7A c #796870", -"dR3 c #796912", -"cwC c #79692d", -"#fq c #796959", -"cEt c #796c10", -".c6 c #796d33", -"c50 c #796d71", -"coP c #796e14", -"a2. c #79716f", -".h2 c #797419", -".lT c #797422", -"aS0 c #797470", -"dqq c #797572", -"dao c #797576", -"cnq c #797825", -"db2 c #797979", -".FG c #797a1d", -"#qP c #797a6a", -"chO c #797e2a", -"cr1 c #797f1d", -"#ue c #797f27", -".lS c #798023", -"cAF c #79811e", -".re c #798310", -"cHQ c #798322", -"cD2 c #798426", -"cs4 c #798521", -"dVF c #79872f", -"#Dz c #798a18", -"cBe c #798a22", -"#G# c #798c3d", -"ahQ c #798d48", -".Cm c #798f20", -".dY c #798f22", -".fY c #79911f", -".ny c #799325", -".jv c #79951c", -".ft c #79962c", -".FP c #799725", -".dS c #79991c", -".DR c #799b2d", -"#tO c #799d21", -"c3H c #799e35", -"#vG c #79a21e", -"aaW c #79a864", -"dHT c #7a1e00", -"dtJ c #7a2401", -"aq3 c #7a2a11", -"bgZ c #7a2b04", -"bg3 c #7a2d03", -"aSH c #7a2d0f", -"atl c #7a2f07", -"dDZ c #7a3106", -"aAp c #7a320c", -".46 c #7a331f", -"ckw c #7a350b", -"aVr c #7a361f", -"ata c #7a370a", -"ara c #7a370c", -".cK c #7a371d", -"awN c #7a3816", -"cAX c #7a3818", -"QtP c #7a381e", -"aBf c #7a3820", -"ap9 c #7a390f", -"au0 c #7a3913", -".g2 c #7a3919", -".xv c #7a391b", -".6Q c #7a391d", -"##D c #7a3923", -"cKa c #7a3925", -"arn c #7a3a14", -"bTr c #7a3a16", -"awM c #7a3a17", -"cuh c #7a3a1e", -"cL1 c #7a3a1f", -"cwr c #7a3b12", -"byE c #7a3b18", -"anq c #7a3b1a", -"coj c #7a3b29", -"##K c #7a3b2a", -".Zt c #7a3c00", -".r7 c #7a3c17", -".iZ c #7a3c23", -"cs. c #7a3c25", -"#fY c #7a3c27", -".eK c #7a3d1e", -"aoP c #7a3d20", -"aoO c #7a3d21", -".qO c #7a3d28", -"bSQ c #7a3e0c", -"b1r c #7a3e19", -"anp c #7a3e1a", -"afB c #7a3e1c", -".oK c #7a3e22", -".Yk c #7a3e24", -"cjy c #7a3e26", -"#4r c #7a3f03", -"dCt c #7a3f13", -"ctg c #7a3f1d", -".r2 c #7a3f1f", -"aoR c #7a3f21", -"dCu c #7a4010", -"bFn c #7a4012", -"bKM c #7a4018", -"aua c #7a401a", -".OE c #7a401b", -".1D c #7a4028", -"cve c #7a402a", -"cmn c #7a402c", -".aq c #7a4114", -"bKN c #7a4116", -".aa c #7a4123", -".rT c #7a4124", -"cgy c #7a4126", -".iC c #7a412e", -"#0o c #7a420f", -".xi c #7a4211", -"bjF c #7a4213", -"b2f c #7a421d", -"ajo c #7a421f", -"byY c #7a4221", -"cq8 c #7a4227", -"#ne c #7a4229", -"ctb c #7a422b", -"bd6 c #7a430d", -".xZ c #7a431a", -"bFl c #7a431c", -".er c #7a4324", -".8n c #7a4325", -"bNt c #7a4415", -".u. c #7a4416", -".xK c #7a441e", -".ca c #7a4422", -"#oD c #7a4428", -".gF c #7a442a", -"cMM c #7a442c", -".vX c #7a4519", -".nZ c #7a451d", -".me c #7a4523", -".zz c #7a4525", -".Uv c #7a4526", -"#N7 c #7a460d", -"bxH c #7a461e", -".ee c #7a4621", -".SO c #7a462e", -"adt c #7a4705", -"#E2 c #7a4708", -"c1C c #7a4718", -"#fV c #7a472a", -"cYC c #7a472c", -"bgT c #7a480d", -"cXO c #7a4827", -"cUq c #7a482d", -"#E3 c #7a4906", -"bGF c #7a491e", -".Q7 c #7a4920", -".uo c #7a4921", -".a3 c #7a4928", -"bh3 c #7a4a08", -"bi. c #7a4a1a", -".h8 c #7a4a22", -".SK c #7a4a26", -".w5 c #7a4b17", -"c1p c #7a4b2f", -".mx c #7a4b37", -"dic c #7a4c2b", -"c1T c #7a4c32", -"cfy c #7a4c34", -"c0y c #7a4c35", -".j4 c #7a4d16", -"di0 c #7a4d23", -".M4 c #7a4d2e", -"bik c #7a4e11", -"bX7 c #7a4e1d", -"djx c #7a4e1f", -".vU c #7a4f22", -"aCx c #7a5016", -"ac1 c #7a501e", -".O3 c #7a5038", -".bG c #7a5111", -"#IH c #7a5125", -".zu c #7a5131", -"biJ c #7a520d", -".A4 c #7a5217", -".O4 c #7a5239", -"cGE c #7a540b", -".YH c #7a5423", -"#IY c #7a5425", -".yU c #7a5521", -"a#N c #7a5529", -".UN c #7a5543", -"cC4 c #7a5608", -"ao9 c #7a560c", -"cFl c #7a5717", -".BL c #7a571f", -"bsV c #7a5721", -".vh c #7a581b", -".MU c #7a5832", -"cxQ c #7a5a1d", -"dTW c #7a5a21", -"btX c #7a5b1b", -".yV c #7a5b22", -"#Tw c #7a5c3a", -"awd c #7a5d1b", -".Di c #7a5d3b", -"bka c #7a5e1d", -"bcB c #7a5e2c", -"a4E c #7a5e46", -"#Fb c #7a5f10", -"bm7 c #7a611e", -"cpi c #7a631d", -".xD c #7a6341", -".aw c #7a6432", -"bp7 c #7a652c", -".j0 c #7a661d", -".op c #7a6643", -".HE c #7a6709", -"bH7 c #7a6931", -"bGV c #7a6a2e", -"bQK c #7a6c2b", -"bPH c #7a6c2f", -"bbp c #7a6d1f", -"#Je c #7a6d38", -"bPG c #7a6f2f", -"#Ty c #7a7152", -"ceO c #7a7318", -"cGC c #7a7323", -".4z c #7a741e", -"csl c #7a7428", -"aNB c #7a7571", -"csk c #7a762d", -"aZ6 c #7a766d", -"aSY c #7a7673", -"aNz c #7a7675", -"bfn c #7a7718", -"#7b c #7a7770", -"dUr c #7a7823", -"d.F c #7a7879", -"cum c #7a7a30", -"db1 c #7a7a7a", -"dbU c #7a7a7c", -"#mE c #7a7b6d", -"dbT c #7a7b7f", -"c3L c #7a7c28", -".av c #7a7c33", -"#3x c #7a7f79", -".jX c #7a8124", -".c7 c #7a8237", -".s6 c #7a8411", -"#D8 c #7a8424", -"#DC c #7a871b", -"dTv c #7a8827", -"cu9 c #7a8b25", -".nH c #7a8c28", -".u0 c #7a9021", -".ht c #7a9023", -".te c #7a9220", -"#zE c #7a961f", -".bO c #7a9719", -"c3F c #7a9a2b", -"#vJ c #7aa122", -".fU c #7aa225", -"#xJ c #7aa428", -"dFt c #7b2202", -"dCI c #7b2903", -"dHI c #7b2a00", -"a5E c #7b2b12", -"dHL c #7b2c03", -"dEO c #7b2e02", -"dCC c #7b3205", -"amh c #7b3406", -"ayb c #7b341e", -"be4 c #7b3513", -"anR c #7b360c", -"b2T c #7b360d", -"bhU c #7b360f", -"aBh c #7b3724", -".vC c #7b381b", -".gT c #7b381d", -"cL0 c #7b3825", -"cdr c #7b3916", -".tR c #7b3919", -"cRt c #7b391f", -"cMP c #7b3921", -"#cL c #7b3923", -"#Yb c #7b3929", -"#WA c #7b392b", -"c0a c #7b3a14", -".zl c #7b3a1c", -".8q c #7b3a1e", -".3n c #7b3a24", -"#fZ c #7b3a26", -".aR c #7b3a28", -"aDp c #7b3b0b", -"bz8 c #7b3b15", -"#0I c #7b3b17", -".i5 c #7b3b18", -"bnP c #7b3b1f", -"cp3 c #7b3b20", -".Z7 c #7b3b22", -"bgV c #7b3c06", -"bjw c #7b3c11", -"#vT c #7b3c13", -".OD c #7b3c19", -"#t4 c #7b3c1b", -"bjI c #7b3c1d", -"arc c #7b3d16", -"bnK c #7b3d18", -".Sw c #7b3d24", -".UC c #7b3d26", -"ct. c #7b3d28", -"atN c #7b3e07", -".sv c #7b3e1f", -".cG c #7b3e21", -".kP c #7b3e22", -".oU c #7b3e2b", -"#Wz c #7b3e2c", -".st c #7b3f1a", -".xl c #7b3f1b", -"#QK c #7b3f1d", -".oc c #7b3f23", -".af c #7b3f25", -".44 c #7b3f27", -"asp c #7b3f35", -"c0l c #7b4008", -".ek c #7b4014", -"b3x c #7b4016", -"bDb c #7b4018", -"#i7 c #7b401e", -"aca c #7b4020", -".oJ c #7b4022", -"avk c #7b4102", -"amA c #7b410f", -".8# c #7b4119", -".aZ c #7b411b", -".xn c #7b411c", -"Qtz c #7b4129", -"cV1 c #7b412b", -".sE c #7b412d", -"b5D c #7b4215", -"bEi c #7b4217", -".mh c #7b4224", -".ob c #7b4225", -".UJ c #7b4227", -".kz c #7b422e", -"bqO c #7b422f", -".ar c #7b4310", -"cdP c #7b4312", -"bGi c #7b4314", -".Le c #7b431e", -"#Tt c #7b4320", -".vw c #7b4322", -".eq c #7b4328", -"#oF c #7b432a", -".WE c #7b432c", -"avl c #7b4403", -"QtV c #7b441d", -".Sy c #7b4425", -"#oE c #7b4426", -".dG c #7b4516", -"dIf c #7b4519", -"#3f c #7b4521", -"#Tu c #7b4523", -"cSi c #7b4529", -".1C c #7b452b", -"cW7 c #7b452d", -"acc c #7b4614", -".4O c #7b461a", -"bmr c #7b4624", -"bd7 c #7b470d", -"bxI c #7b4718", -"c03 c #7b4722", -"cYB c #7b472f", -".8A c #7b4732", -"#SZ c #7b480f", -".qy c #7b4813", -"dkC c #7b481d", -".Uw c #7b4829", -".#6 c #7b482b", -"cgz c #7b482d", -".Z9 c #7b4835", -"cEW c #7b4900", -".07 c #7b490c", -"aHi c #7b4916", -"dTT c #7b4918", -"c1q c #7b492e", -"biK c #7b4a08", -"bjS c #7b4a0f", -".dA c #7b4a10", -".vc c #7b4a1f", -".SA c #7b4a29", -"dhn c #7b4a2c", -".xg c #7b4b0d", -"bwr c #7b4b1a", -".vW c #7b4b1d", -".tw c #7b4b27", -"c2n c #7b4b34", -".6Z c #7b4b35", -"bws c #7b4c16", -"cxK c #7b4c1e", -"c1o c #7b4c32", -".yS c #7b4d1b", -"aDN c #7b4d2c", -".OM c #7b4d33", -".L6 c #7b4e00", -"diE c #7b4e27", -"c1j c #7b4e2f", -"c1h c #7b4e31", -"cgC c #7b4e37", -".vl c #7b4f12", -"dRq c #7b4f20", -".tz c #7b4f22", -"bj# c #7b500b", -"#G4 c #7b500c", -".A3 c #7b5117", -".yT c #7b5121", -"bCo c #7b5127", -".if c #7b5129", -"#y. c #7b5200", -"#vv c #7b5210", -".tB c #7b521e", -".MO c #7b5236", -"bOv c #7b5318", -"dU7 c #7b5320", -".Qt c #7b5407", -"afi c #7b550a", -".fF c #7b5516", -".fG c #7b5517", -"abs c #7b5629", -"dIJ c #7b570b", -".ZZ c #7b5737", -".nU c #7b591a", -"c3o c #7b594f", -"dIK c #7b5a0d", -"dUM c #7b5a15", -"cr2 c #7b5b06", -"bvf c #7b5b20", -"dH0 c #7b5c1b", -"blG c #7b5c1c", -"#M. c #7b5c26", -".I2 c #7b5d39", -"aqH c #7b5f00", -"bV3 c #7b5f20", -"a6p c #7b5f4a", -"cFg c #7b610a", -"cyG c #7b610d", -"cor c #7b6117", -"blD c #7b621f", -".C2 c #7b6319", -".j2 c #7b631b", -".l5 c #7b6341", -"bm6 c #7b641e", -"bLu c #7b6430", -".0m c #7b643b", -"bH8 c #7b652c", -"cqb c #7b6823", -"b#v c #7b6824", -"bKh c #7b6927", -"a5N c #7b6a5a", -"dQV c #7b6b14", -"bME c #7b6b37", -"bOL c #7b6d26", -"cvw c #7b6e2a", -"bQJ c #7b702e", -"aOK c #7b706a", -"#2N c #7b7165", -"csm c #7b7223", -"##6 c #7b7370", -".h3 c #7b741a", -"aiC c #7b7555", -".jY c #7b7622", -"a5s c #7b7662", -"a.o c #7b776e", -"aTC c #7b7774", -"cto c #7b7829", -"#7e c #7b786f", -"bhh c #7b7b17", -"#gO c #7b7b71", -"db3 c #7b7b7b", -"dbS c #7b7c80", -"dch c #7b7d7c", -"dac c #7b828c", -".#X c #7b8313", -".FH c #7b831e", -"##a c #7b832d", -"#In c #7b844b", -".hu c #7b871b", -"cy7 c #7b8721", -"dTt c #7b8a25", -".Cl c #7b8b20", -"cy8 c #7b8c24", -"adQ c #7b8e22", -".dX c #7b8e25", -".FJ c #7b8f20", -".FN c #7b9321", -".#M c #7b9518", -".ns c #7b971c", -".dR c #7b991d", -"cSW c #7b9a19", -"#9C c #7bab6f", -"a#h c #7bac6b", -"dFs c #7c2102", -"dFl c #7c2200", -"asS c #7c2b0e", -"axO c #7c2c0b", -"apR c #7c2f05", -"aGC c #7c3109", -"dCD c #7c3205", -"au4 c #7c320f", -"dg6 c #7c3312", -".gR c #7c340e", -"azZ c #7c3515", -".eR c #7c3519", -".cL c #7c351f", -"#GC c #7c3602", -"awO c #7c3614", -".Qz c #7c361d", -"cKb c #7c362e", -"dpI c #7c3700", -"#t7 c #7c3718", -".gU c #7c371a", -"bjh c #7c380b", -"c0b c #7c3811", -".iq c #7c3821", -".3m c #7c3823", -"bxr c #7c3825", -"#WB c #7c382b", -".iU c #7c391c", -".aM c #7c391f", -"doj c #7c3a08", -"awL c #7c3a17", -".Ba c #7c3a18", -".r6 c #7c3a1a", -".Ym c #7c3a20", -".gZ c #7c3a22", -".rY c #7c3a24", -"QtM c #7c3a2a", -"aom c #7c3b11", -"#vU c #7c3b13", -"bHp c #7c3b15", -".ir c #7c3b1b", -".kY c #7c3b1d", -".iW c #7c3b1f", -"cr9 c #7c3b25", -"buS c #7c3b27", -"b6. c #7c3b29", -"ccS c #7c3c0e", -"btq c #7c3c16", -"#0J c #7c3c18", -"bJU c #7c3c19", -".aI c #7c3c20", -".iX c #7c3c21", -".ip c #7c3c23", -"cxA c #7c3d11", -"#vS c #7c3d12", -"bQC c #7c3d14", -".Du c #7c3d1a", -"bkS c #7c3d1c", -".r3 c #7c3d1e", -".8z c #7c3d2c", -"ca0 c #7c3e0d", -"cb3 c #7c3e0f", -"cLV c #7c3e15", -"cVX c #7c3e17", -".ub c #7c3e19", -"cVY c #7c3e25", -".mZ c #7c3e27", -"cub c #7c3e29", -"aDn c #7c3f13", -".qE c #7c3f20", -".gt c #7c3f22", -"aqA c #7c3f23", -"cmo c #7c3f2a", -"cpb c #7c3f2c", -"aqC c #7c3f2d", -"#50 c #7c4001", -"bDc c #7c401b", -".xm c #7c401c", -".Dv c #7c401e", -".od c #7c4024", -".ae c #7c4026", -".ag c #7c4028", -"#0p c #7c4105", -"b8U c #7c4109", -"#R3 c #7c4115", -".ul c #7c4117", -"by1 c #7c4119", -".Jg c #7c411f", -".zn c #7c4121", -"aay c #7c4123", -"#EO c #7c4202", -"cTO c #7c4212", -".vo c #7c4214", -".g9 c #7c421d", -"az1 c #7c422e", -"#sb c #7c4318", -".zA c #7c4325", -".Yn c #7c4326", -"#nf c #7c4328", -"#ET c #7c4400", -"atO c #7c4409", -"#GL c #7c440b", -"ajp c #7c4411", -"cUm c #7c4413", -"bLi c #7c4415", -".Fo c #7c441f", -"cOX c #7c4421", -".Ld c #7c4423", -".Bo c #7c4429", -".Yp c #7c442b", -".iD c #7c442d", -"#Pu c #7c450f", -"bkY c #7c451c", -"#IB c #7c451e", -".rS c #7c4526", -".8m c #7c4527", -"Qty c #7c4531", -"atE c #7c460a", -".sr c #7c4618", -".pV c #7c4624", -"chE c #7c462a", -"drR c #7c462c", -"cLZ c #7c462e", -"bX8 c #7c4713", -"bJS c #7c471b", -"bkX c #7c471f", -".eg c #7c4725", -".SL c #7c4727", -".Hg c #7c4728", -".4N c #7c4816", -"bNm c #7c4818", -"bHM c #7c4820", -".Hl c #7c4821", -"c02 c #7c4823", -"b#s c #7c4910", -".W1 c #7c4912", -"bsX c #7c491c", -".zy c #7c492a", -"#hq c #7c492c", -".22 c #7c4a0d", -".oB c #7c4a0f", -".A1 c #7c4a15", -".K9 c #7c4a27", -"cZB c #7c4a2f", -"cZA c #7c4a31", -"cHs c #7c4b09", -"bSP c #7c4b11", -"ann c #7c4b13", -".nY c #7c4b22", -".Jd c #7c4b23", -".Ux c #7c4b2b", -"dJB c #7c4c0c", -"bxO c #7c4c1b", -"#OR c #7c4c1c", -"c5v c #7c4c26", -".L. c #7c4c28", -"Qtw c #7c4c3e", -"djw c #7c4d21", -"c0z c #7c4d33", -".dC c #7c4e1c", -"aAW c #7c4e1d", -".SG c #7c4e2c", -".S4 c #7c4f2e", -".1B c #7c4f32", -"cxM c #7c5009", -".vV c #7c5021", -"aGw c #7c5037", -"aEF c #7c511c", -"afj c #7c5206", -"##o c #7c5208", -"bPq c #7c5216", -".fH c #7c5218", -"#6n c #7c5313", -"aqi c #7c5315", -".zs c #7c5335", -"bgS c #7c5416", -"aqR c #7c550a", -"cbT c #7c5512", -".n4 c #7c5534", -".3s c #7c5643", -".CZ c #7c5713", -".zf c #7c5720", -"ax2 c #7c5723", -".QM c #7c5931", -".Bh c #7c5939", -"#W# c #7c5a12", -".vi c #7c5a1a", -"ay2 c #7c5a1b", -"aha c #7c5b0e", -".C0 c #7c5b16", -"aSK c #7c5b52", -"#MG c #7c5c5f", -".zV c #7c5d24", -"ao# c #7c5e18", -"cvm c #7c5e20", -".i. c #7c5e3c", -"b1Q c #7c5f19", -"b1R c #7c5f1b", -".C1 c #7c6017", -"cnr c #7c6217", -"dU9 c #7c6323", -"bj5 c #7c641e", -".fw c #7c6508", -"bBt c #7c6521", -"bGW c #7c662a", -"bCA c #7c6724", -"bsM c #7c681f", -"#Tx c #7c6847", -"b0X c #7c691d", -"c5z c #7c6a60", -"bPF c #7c6b25", -".jZ c #7c6c21", -"#N. c #7c6c6c", -".wd c #7c6d28", -"#7N c #7c6f20", -"bND c #7c7034", -"dPM c #7c7115", -".cu c #7c712f", -"ahx c #7c7411", -"cKf c #7c7421", -"bhi c #7c7719", -".EY c #7c771c", -"a6W c #7c785d", -"cmi c #7c791c", -"cjI c #7c7c26", -"db0 c #7c7c7c", -"dam c #7c7c7e", -".EZ c #7c7d20", -".8Q c #7c7d6d", -"aUN c #7c7d75", -".hv c #7c7f14", -".HV c #7c811b", -"czB c #7c811d", -"cIH c #7c8222", -"aw. c #7c822a", -"daD c #7c827e", -"cLe c #7c8326", -"cob c #7c841f", -".Eq c #7c862f", -"dUs c #7c8931", -"axZ c #7c8944", -".hY c #7c8a28", -".jM c #7c8d2d", -".ls c #7c8f19", -".jw c #7c9017", -".lB c #7c912c", -".FL c #7c9422", -"c3G c #7c9c31", -"dHU c #7d1f00", -"dFm c #7d2000", -"dHR c #7d2300", -"dHQ c #7d2500", -"aDw c #7d2700", -"apg c #7d2911", -"dCH c #7d2a02", -"dCG c #7d2b03", -"al6 c #7d2d00", -"atm c #7d2e03", -"#EB c #7d2f00", -"asX c #7d3002", -"auE c #7d3014", -"#EE c #7d3100", -"bgX c #7d3304", -"c0g c #7d350d", -"ctL c #7d351c", -"dCB c #7d3608", -".gV c #7d3618", -"awn c #7d361a", -".eN c #7d3713", -"cZ6 c #7d3715", -".kn c #7d371d", -"cdq c #7d3811", -"cB8 c #7d3817", -"#t6 c #7d3819", -"bji c #7d3908", -"cgw c #7d3912", -"b02 c #7d3914", -".eV c #7d3922", -"QtZ c #7d3924", -"doF c #7d3a03", -"atb c #7d3a0f", -"bjx c #7d3a10", -".iT c #7d3a1d", -".tI c #7d3a1f", -".mm c #7d3a20", -".rX c #7d3a27", -"bwa c #7d3a29", -"bhy c #7d3b0b", -"bqC c #7d3b18", -".eM c #7d3b19", -"bjn c #7d3b1b", -".vt c #7d3b21", -".a2 c #7d3b23", -"#WC c #7d3b2b", -"atc c #7d3c12", -"dp1 c #7d3c16", -".cH c #7d3c1c", -".iR c #7d3c1e", -".iS c #7d3c20", -".p8 c #7d3c26", -"cp. c #7d3c28", -"#bi c #7d3c2a", -"c#7 c #7d3d0d", -".gO c #7d3d17", -"am5 c #7d3d19", -"adH c #7d3d1a", -".a1 c #7d3d21", -".Wx c #7d3d22", -"#3e c #7d3d24", -"dpK c #7d3e12", -"bPy c #7d3e15", -"#4K c #7d3e1b", -"cat c #7d3e1d", -".gq c #7d3e1f", -"#lS c #7d3e2c", -"#.a c #7d3e2d", -"c0k c #7d3f0e", -".el c #7d3f16", -"br5 c #7d3f18", -"bZx c #7d3f1a", -".rU c #7d3f26", -"cp8 c #7d3f28", -".oS c #7d3f2a", -"cTh c #7d4011", -"bD. c #7d4013", -"#nn c #7d4014", -".oI c #7d4021", -".mQ c #7d4023", -".By c #7d4024", -"cpa c #7d402b", -".qM c #7d402d", -"bqP c #7d402e", -"biL c #7d4103", -"amz c #7d410f", -".ua c #7d411c", -"ajn c #7d411d", -".a0 c #7d411f", -"#f5 c #7d4125", -".Bz c #7d4127", -".p5 c #7d4129", -"btL c #7d4208", -".9R c #7d4216", -"b2Q c #7d4218", -".co c #7d421a", -"cQf c #7d4220", -".Hh c #7d4222", -"cAY c #7d4224", -"#Tp c #7d4232", -".Zu c #7d4300", -"ce3 c #7d4313", -".ss c #7d431b", -"bw. c #7d431d", -".n0 c #7d431e", -"cV0 c #7d432d", -"bLh c #7d4417", -"aAh c #7d4419", -".cc c #7d4426", -".b7 c #7d4427", -"dgC c #7d4429", -"#GM c #7d450c", -"b4S c #7d4512", -".iE c #7d452a", -"cNx c #7d452e", -"b8R c #7d460d", -"dAX c #7d461d", -"ctc c #7d4627", -"aA1 c #7d4718", -"b2P c #7d471b", -"b01 c #7d4721", -"bjt c #7d4723", -"cXK c #7d4725", -".gG c #7d472b", -".9S c #7d4814", -"bOs c #7d4816", -".l0 c #7d481c", -".tu c #7d481e", -".gJ c #7d4826", -".Sz c #7d4828", -".xB c #7d4829", -"bOt c #7d4917", -"bMr c #7d491a", -".rK c #7d4921", -".Jc c #7d4924", -"Qtx c #7d493b", -"#CR c #7d4a09", -".yR c #7d4a15", -".6x c #7d4a1f", -"dqF c #7d4a2b", -".Bn c #7d4a2d", -".p4 c #7d4a2f", -"avm c #7d4b06", -".y7 c #7d4b16", -"dU5 c #7d4b18", -".pW c #7d4b28", -"cfw c #7d4b34", -"b8K c #7d4c00", -".y6 c #7d4c12", -"cUM c #7d4c14", -".rL c #7d4c23", -"bJ7 c #7d4c24", -"dhO c #7d4c2c", -".M6 c #7d4c2e", -".tx c #7d4d27", -"a.F c #7d4e0a", -".FA c #7d4e16", -".A2 c #7d4e18", -".gD c #7d4e30", -"c1i c #7d4e32", -"cUU c #7d4e34", -"crM c #7d4f01", -"b8L c #7d4f02", -"bjR c #7d4f14", -"cLb c #7d4f1b", -".lZ c #7d4f1e", -".4P c #7d5017", -".ty c #7d5026", -"#IL c #7d5027", -"#GW c #7d510a", -".qw c #7d5114", -"bEv c #7d5124", -".SJ c #7d512c", -".K7 c #7d512e", -"bu4 c #7d521d", -".h9 c #7d522f", -"bh. c #7d530b", -"bjQ c #7d5319", -"bBg c #7d532d", -"#E6 c #7d5405", -"c67 c #7d5436", -"ay3 c #7d551a", -"bwy c #7d561d", -"ccJ c #7d5716", -"#Uv c #7d580a", -"dRr c #7d5823", -"Qtk c #7d591b", -".S3 c #7d5939", -"amm c #7d5a18", -"aku c #7d5a22", -"aM6 c #7d5a47", -"ciN c #7d5c15", -".h5 c #7d5c17", -"#Fk c #7d5e03", -".1A c #7d5f3d", -"boA c #7d601c", -".x3 c #7d6028", -"chQ c #7d6118", -"c6U c #7d6120", -"ay0 c #7d621d", -".H. c #7d6340", -"cdE c #7d6412", -"b#u c #7d6421", -".x# c #7d6422", -"cs5 c #7d650d", -"blK c #7d651b", -"bEM c #7d6525", -"bPI c #7d6529", -"dPN c #7d6712", -".ez c #7d672d", -"bFR c #7d6829", -"bnd c #7d6924", -"cuj c #7d692c", -"csh c #7d692e", -"cfM c #7d6a1d", -"brm c #7d6a1e", -"bDJ c #7d6a28", -"#2x c #7d6a5c", -"asy c #7d6b05", -"#oe c #7d6b07", -"bdr c #7d6b21", -"blL c #7d6b23", -"bQI c #7d6c24", -"Qto c #7d6c36", -"csi c #7d6d2f", -"bH6 c #7d6d31", -"caV c #7d6e0f", -"bNC c #7d6e29", -"cvx c #7d6e2b", -"cvv c #7d6f2e", -"crd c #7d702a", -"caU c #7d7216", -"bOM c #7d7234", -"a3P c #7d7270", -"a.4 c #7d731c", -"aKK c #7d7371", -"cdC c #7d7415", -"csj c #7d742f", -"afH c #7d7512", -"#eT c #7d7573", -"#XB c #7d7769", -"cy6 c #7d781c", -"aTF c #7d7872", -"dV# c #7d7916", -".jF c #7d7922", -"a0K c #7d7a71", -"ddO c #7d7a75", -".hw c #7d7b0c", -"ccB c #7d7b2e", -"#V3 c #7d7b6e", -"dVE c #7d7c29", -"#aJ c #7d7d25", -"aLJ c #7d7d7b", -"aY. c #7d7d7d", -"dbZ c #7d7d7f", -".4A c #7d7f1e", -".HU c #7d821e", -".E0 c #7d8224", -"#iD c #7d8228", -"#A. c #7d831f", -"#B8 c #7d8520", -".DP c #7d852f", -".pm c #7d8613", -"dTw c #7d8629", -"clC c #7d862d", -"dTn c #7d8724", -".f3 c #7d8a1e", -".s9 c #7d8c17", -"#G. c #7d8c3b", -"cle c #7d8d22", -"#BC c #7d9120", -"cSp c #7d9219", -".lA c #7d922d", -"#vK c #7d951d", -".FM c #7d9621", -"#rW c #7d9c25", -"#xI c #7d9d22", -"#6y c #7daa6f", -"dHS c #7e2400", -"dxQ c #7e2401", -"dFk c #7e2503", -"dHP c #7e2904", -"azX c #7e2a06", -"dF6 c #7e2d00", -"#zW c #7e2e13", -"dDY c #7e2f04", -"dCF c #7e2f06", -"azA c #7e3009", -"dCE c #7e3107", -"#x0 c #7e3113", -"#NX c #7e3309", -"dFa c #7e3403", -"bhV c #7e350c", -"b2U c #7e3512", -"cB7 c #7e3514", -"cL. c #7e352c", -"#EF c #7e3604", -".e0 c #7e360e", -"co8 c #7e361d", -"#f1 c #7e3620", -"b1V c #7e3717", -".6R c #7e3719", -".8s c #7e371b", -".aN c #7e3721", -"#f0 c #7e3723", -".gS c #7e3816", -".8r c #7e381e", -".qc c #7e381f", -"cKc c #7e3830", -"azw c #7e3910", -"dxZ c #7e3912", -"#t8 c #7e3918", -".qd c #7e391a", -".iV c #7e391c", -".gP c #7e3a13", -"#vV c #7e3a15", -"#vW c #7e3a17", -".gr c #7e3a23", -".tK c #7e3a25", -"#To c #7e3a27", -"cD6 c #7e3b00", -"bHq c #7e3b11", -"aqz c #7e3b1e", -".3k c #7e3b20", -"QtE c #7e3b21", -".rW c #7e3b28", -"biM c #7e3c00", -"#EG c #7e3c08", -"alf c #7e3c19", -"aoQ c #7e3c1a", -".vq c #7e3c1c", -".gs c #7e3c22", -".rV c #7e3c26", -"aue c #7e3c30", -"#Pm c #7e3d13", -"#Pl c #7e3d15", -"cco c #7e3d17", -".aJ c #7e3d1d", -".kO c #7e3d1f", -".vu c #7e3d21", -"b7P c #7e3e12", -".MK c #7e3e18", -".Dt c #7e3e1a", -".i0 c #7e3e1b", -".a. c #7e3e22", -"cth c #7e3e23", -".km c #7e3e25", -"cvl c #7e3f13", -"bzN c #7e3f14", -"arb c #7e3f16", -"byD c #7e3f1c", -".eL c #7e3f1e", -".Dx c #7e3f20", -".oT c #7e3f2d", -".9Q c #7e4017", -"bzO c #7e4019", -"bms c #7e401b", -"cq3 c #7e4027", -"c.t c #7e402b", -"atR c #7e4100", -"boi c #7e410b", -".tU c #7e4114", -"cW6 c #7e4115", -"cjv c #7e4122", -".kQ c #7e4124", -".Wy c #7e4125", -"csa c #7e412c", -"#OS c #7e4206", -"c#6 c #7e420c", -".qB c #7e421d", -".c1 c #7e421e", -".Hi c #7e4220", -"#ng c #7e4226", -".zJ c #7e4228", -"cni c #7e422a", -"blp c #7e430b", -"bGk c #7e4317", -".w. c #7e4319", -".c0 c #7e431b", -"cMT c #7e4321", -"ckx c #7e4325", -"cUN c #7e4412", -".Hy c #7e4414", -"a9C c #7e4416", -"#R4 c #7e441c", -"bGh c #7e441e", -".e5 c #7e441f", -".mk c #7e442c", -"cp4 c #7e442e", -"bjX c #7e4502", -"bK. c #7e4518", -".u# c #7e451a", -"cp5 c #7e452a", -"cVc c #7e460b", -"#N6 c #7e460d", -"bGn c #7e4615", -"bFs c #7e4617", -"bZ4 c #7e4621", -"drQ c #7e462b", -"cVZ c #7e462f", -"biq c #7e4704", -"bmR c #7e470e", -"ay6 c #7e4711", -"bjJ c #7e471e", -"#R5 c #7e4720", -"cYA c #7e4728", -".WF c #7e4733", -".vb c #7e4819", -"aA0 c #7e481a", -".z. c #7e481c", -"c01 c #7e4822", -".gK c #7e4824", -".Jb c #7e4826", -"csc c #7e4830", -"btM c #7e4913", -".tG c #7e491d", -".Hk c #7e4921", -".QD c #7e4927", -"bxG c #7e4a23", -".tv c #7e4a25", -".24 c #7e4b12", -"cTN c #7e4b16", -"bZ. c #7e4b20", -".kx c #7e4b36", -"cUl c #7e4c17", -"bNn c #7e4c19", -".UH c #7e4c29", -"c6H c #7e4c33", -".Qu c #7e4d01", -"dIR c #7e4d12", -"aGc c #7e4d13", -"bW9 c #7e4d15", -".K8 c #7e4d2c", -".M5 c #7e4d2f", -"bmf c #7e4e06", -"cT4 c #7e4e37", -"dE2 c #7e4f21", -"dDJ c #7e4f25", -".Dj c #7e4f35", -".DK c #7e501c", -"cUs c #7e5038", -"bu9 c #7e5118", -".dB c #7e511a", -".kv c #7e5127", -".UM c #7e513e", -"bv. c #7e5213", -"#Qf c #7e522b", -".xf c #7e530f", -"bPw c #7e531e", -"aoy c #7e5515", -"#L9 c #7e551d", -".b2 c #7e551f", -".p1 c #7e5535", -".vk c #7e5618", -"bjP c #7e561b", -"bit c #7e5714", -"bQu c #7e5716", -".lY c #7e5720", -".OU c #7e5730", -"bSJ c #7e5811", -"brz c #7e5827", -"dII c #7e590b", -"cHt c #7e5915", -".t4 c #7e5a28", -".pC c #7e5b09", -"cbU c #7e5b17", -".vj c #7e5b19", -".j3 c #7e5b1b", -".lX c #7e5b21", -".l4 c #7e5b3d", -"dIN c #7e5c14", -"cww c #7e5d1a", -"#IU c #7e5d27", -".zt c #7e5d3e", -"dIL c #7e5e13", -"ac3 c #7e5e35", -"c5n c #7e5f1c", -".wc c #7e5f29", -"#rK c #7e6006", -"chI c #7e602a", -"bkf c #7e611b", -"aqQ c #7e620f", -"cKx c #7e6308", -"c2w c #7e6350", -".ZY c #7e6441", -"an# c #7e6509", -"box c #7e661c", -"dRs c #7e661e", -"bFT c #7e6628", -".n7 c #7e6644", -"cE4 c #7e6717", -"c2I c #7e6757", -"b0W c #7e681c", -"bpV c #7e681d", -"boy c #7e681f", -"cwF c #7e682e", -"aIR c #7e685d", -"cwE c #7e6930", -"clo c #7e6a13", -"bJf c #7e6b27", -"cdD c #7e6d15", -"dTX c #7e6d1d", -"bRN c #7e6d25", -"bT2 c #7e6d28", -"bMC c #7e6f2a", -"bRP c #7e6f2c", -"bON c #7e6f36", -"bNE c #7e6f38", -"asF c #7e721c", -".fv c #7e7317", -"dTy c #7e7324", -"cvt c #7e7333", -"#Ix c #7e733d", -"aHZ c #7e736d", -"cJw c #7e7413", -".nQ c #7e7415", -"aQe c #7e746a", -"a2y c #7e746b", -"#Vt c #7e747d", -"cDV c #7e771f", -"#pg c #7e7771", -".Id c #7e7818", -"#Ir c #7e783a", -"#h1 c #7e7878", -"#MN c #7e787a", -"#XQ c #7e7913", -"aMz c #7e7975", -".HR c #7e7a17", -".dq c #7e7a21", -"#Is c #7e7a3b", -"a6V c #7e7a5f", -"aFa c #7e7a6e", -"csS c #7e7b1a", -"dbV c #7e7c7f", -"#g4 c #7e7e26", -"aUV c #7e7e7e", -".8V c #7e7e80", -"daj c #7e7f81", -"dbY c #7e807f", -"dTg c #7e812a", -"a6T c #7e8162", -"crO c #7e8221", -".E1 c #7e8325", -"aVg c #7e8387", -".6k c #7e8422", -"#j2 c #7e8528", -"#Fw c #7e871a", -".f4 c #7e8a1e", -"dTu c #7e8a26", -"#vL c #7e8b19", -".fR c #7e8b22", -".uN c #7e8d18", -".fZ c #7e8d24", -"cR1 c #7e8f1d", -"cR0 c #7e9020", -".bN c #7e9219", -"#tP c #7e9523", -"#p7 c #7e9d1c", -".F4 c #7e9e21", -"#p6 c #7ea419", -"dFn c #7f2000", -"dFj c #7f2906", -"dGL c #7f2c02", -"arA c #7f2d05", -"dCc c #7f2e03", -"#ED c #7f2f00", -"auF c #7f3011", -"#zV c #7f3012", -"#x1 c #7f3214", -"#R0 c #7f3216", -"al7 c #7f3302", -"#v3 c #7f3414", -"#v2 c #7f3415", -".eS c #7f3417", -"#Tn c #7f341f", -".cV c #7f3510", -".cM c #7f351a", -"awo c #7f351c", -"aAd c #7f3609", -".B# c #7f3613", -"#xY c #7f3615", -".zk c #7f3616", -"bg5 c #7f3705", -"bhW c #7f3707", -".iP c #7f3711", -".eU c #7f371e", -"cuF c #7f371f", -"#i3 c #7f3721", -"arZ c #7f380e", -"#vX c #7f3818", -"cep c #7f381a", -".gX c #7f381c", -".cQ c #7f3822", -"ami c #7f3905", -".kX c #7f3915", -"cGM c #7f3917", -".gY c #7f391f", -".3l c #7f3920", -"bkP c #7f3a10", -".sy c #7f3a11", -"#xW c #7f3a13", -".aL c #7f3a19", -".og c #7f3a1b", -"b3w c #7f3a1d", -".C9 c #7f3b0e", -"#X8 c #7f3b14", -".mn c #7f3b16", -"bpf c #7f3b18", -".tJ c #7f3b24", -"cra c #7f3b28", -"asq c #7f3b2e", -"cdQ c #7f3c0f", -"#4M c #7f3c11", -"#4L c #7f3c12", -"#9g c #7f3c1f", -"#0M c #7f3c21", -".QA c #7f3c22", -"#kt c #7f3c29", -"#6l c #7f3d09", -".ud c #7f3d1a", -"#6h c #7f3d1b", -".OC c #7f3d1d", -"cnh c #7f3d23", -".tL c #7f3d25", -".Ww c #7f3d27", -"bmV c #7f3e08", -"bz9 c #7f3e14", -".oh c #7f3e18", -".vJ c #7f3e1e", -".kN c #7f3e20", -"#9h c #7f3e22", -".p7 c #7f3e28", -"#bh c #7f3e2a", -"##J c #7f3e2c", -".#D c #7f3f13", -"drT c #7f3f19", -"bt1 c #7f3f1b", -".gu c #7f3f1c", -"#0Q c #7f3f23", -"#lR c #7f3f24", -".mY c #7f3f26", -"cFK c #7f4000", -"bHr c #7f4014", -"bFr c #7f4015", -".Q9 c #7f4017", -".qD c #7f401d", -".Df c #7f401f", -"bZw c #7f4021", -"b5C c #7f4110", -"cbF c #7f4112", -"bkZ c #7f4118", -".xj c #7f411a", -"bpe c #7f411c", -".ep c #7f4128", -".p6 c #7f412a", -".sG c #7f412c", -"#2X c #7f4203", -"bmT c #7f420c", -"#qn c #7f4213", -"aAr c #7f4215", -"bGl c #7f4216", -".c. c #7f4223", -".zB c #7f4225", -"QtA c #7f4226", -"#R2 c #7f422d", -".sF c #7f422f", -".Ul c #7f4300", -"bmS c #7f430d", -"bDd c #7f431f", -"cT5 c #7f4321", -"chD c #7f4327", -"#ni c #7f4329", -"bsf c #7f432b", -"atP c #7f4408", -"#GN c #7f440a", -"bEl c #7f4418", -"bDa c #7f441a", -"bB3 c #7f441c", -"cvj c #7f4422", -"#nh c #7f4426", -"b0t c #7f4513", -"at9 c #7f4515", -"bIH c #7f4517", -"bFk c #7f451d", -".Fn c #7f451f", -".Hj c #7f4520", -"#GF c #7f460f", -"byZ c #7f4619", -"bBZ c #7f461b", -"dA1 c #7f4629", -"cp# c #7f462b", -"cQj c #7f4700", -"bu3 c #7f470a", -"bGo c #7f4716", -"asi c #7f4718", -".pU c #7f4724", -"cML c #7f472c", -"Qtd c #7f4730", -"ax. c #7f4805", -".w4 c #7f4812", -".cb c #7f4829", -"cse c #7f482a", -"bHl c #7f491a", -"bMu c #7f491b", -"b3U c #7f491d", -"bkV c #7f4925", -"c1. c #7f492d", -"cs6 c #7f4a00", -"cTg c #7f4a16", -".on c #7f4a22", -".QE c #7f4a28", -".rH c #7f4a2a", -".eb c #7f4a2b", -"bGZ c #7f4b12", -"aAZ c #7f4b1c", -"abX c #7f4c0a", -"#CQ c #7f4c0d", -"bln c #7f4c13", -"bPo c #7f4c15", -".tF c #7f4c1d", -"byX c #7f4c2d", -"cgA c #7f4c31", -"cVd c #7f4d10", -"dGh c #7f4d1a", -"cgB c #7f4d34", -"cmz c #7f4e09", -"ce2 c #7f4e14", -".J# c #7f4e2d", -"aLx c #7f4e30", -"avn c #7f4f07", -".gh c #7f4f29", -"cfx c #7f4f38", -".hC c #7f5008", -".4M c #7f5018", -"#f8 c #7f5034", -"bu8 c #7f511d", -".tE c #7f511f", -"did c #7f512f", -"dhN c #7f5130", -".H# c #7f5137", -"cUt c #7f5139", -".U4 c #7f513a", -"#IM c #7f5228", -"bz7 c #7f5231", -"drV c #7f5235", -"bkJ c #7f530a", -"dIQ c #7f5314", -".nX c #7f5324", -".pX c #7f532e", -".gg c #7f5330", -".f8 c #7f541d", -"cxw c #7f5607", -"cns c #7f5711", -"bRy c #7f5712", -"bgs c #7f571a", -"dJy c #7f580d", -"dTz c #7f5817", -"beA c #7f581f", -"#z7 c #7f5b07", -"arL c #7f5b0d", -"bPr c #7f5b1d", -"bPJ c #7f5b21", -"#I2 c #7f5b27", -"ccK c #7f5c1a", -"bey c #7f5c24", -".OT c #7f5c34", -".KY c #7f5c3c", -"#pX c #7f5d06", -"blH c #7f5d1d", -"aiR c #7f5d42", -"ceQ c #7f5e11", -"bJj c #7f5e29", -"dIM c #7f5f16", -"bW6 c #7f5f24", -"ciC c #7f5f26", -"bBs c #7f601f", -".j8 c #7f6041", -".dr c #7f6212", -".xd c #7f6216", -"dU8 c #7f6226", -"a6s c #7f6254", -"clJ c #7f6415", -"bV2 c #7f6421", -".HD c #7f6510", -"dUq c #7f6518", -"cgP c #7f651b", -"bAl c #7f6623", -".yW c #7f6624", -"cvn c #7f6626", -"#Ji c #7f6721", -"bEO c #7f6727", -"#9o c #7f681a", -"bU8 c #7f6822", -"ceP c #7f6916", -"aus c #7f691d", -"bZZ c #7f6c20", -"ctk c #7f6c31", -"bGU c #7f6d2f", -"cG0 c #7f7118", -".EX c #7f7119", -"aDV c #7f7168", -"c4l c #7f726c", -"cIK c #7f7418", -".h1 c #7f7520", -"cBd c #7f7617", -"#rk c #7f7764", -".9k c #7f776a", -".FF c #7f7827", -"#Uo c #7f796b", -"cxW c #7f7a1f", -"aSZ c #7f7a77", -"#Ui c #7f7b72", -"ctt c #7f7c1f", -".1Z c #7f7e79", -"dTx c #7f7f29", -"db4 c #7f7f7f", -"dal c #7f7f81", -"dai c #7f8084", -".f2 c #7f8120", -".7L c #7f817c", -".bZ c #7f8217", -".HW c #7f8219", -".hZ c #7f8227", -"dad c #7f828b", -"#ln c #7f8428", -"ckf c #7f861c", -"cxX c #7f8722", -".x5 c #7f8734", -"#F9 c #7f8835", -"cnp c #7f8933", -"#Hy c #7f8a22", -".hO c #7f8d2c", -".Eo c #7f8e27", -".FI c #7f8f24", -"cRZ c #7f9125", -"#Ic c #7f9356", -".wJ c #7f941f", -".fT c #7fa128", -"#zG c #7fa22a", -"#rR c #7fa418", -"#xK c #7fa72c", -"dFr c #802103", -"aQF c #802300", -"dFf c #802603", -"dsO c #802900", -"#BU c #802c10", -"atn c #802f02", -"#EC c #803000", -"au5 c #80310a", -"#zZ c #803315", -"cHr c #803400", -"azS c #803412", -"auD c #803414", -".Oz c #80341c", -"#x2 c #803515", -".98 c #803518", -"ctE c #80351e", -"cDc c #803613", -".gW c #803619", -"coh c #80361b", -"#i4 c #80361d", -"dqB c #803700", -"auU c #803702", -"bRU c #80370c", -".eO c #803714", -"#xX c #803716", -"awm c #803717", -"biN c #803800", -".g3 c #803810", -"#Pk c #803812", -".r4 c #80381f", -"cLa c #803829", -".MJ c #803919", -"bA4 c #80391b", -"cbs c #80391d", -"QtF c #803923", -"QtY c #803925", -"av0 c #803927", -"dpp c #803a00", -"atM c #803a07", -"#7C c #803a16", -"#Zv c #803a18", -"cau c #803a20", -"#kr c #803a21", -"do4 c #803b02", -"bXx c #803b11", -".iO c #803b12", -"cvd c #803b14", -"#7D c #803b1a", -"a.W c #803b1c", -"asn c #803b1e", -".oO c #803c0b", -"#N0 c #803c0d", -".C8 c #803c0f", -"bXy c #803c15", -"bhz c #803c17", -".aK c #803c19", -"aBg c #803c27", -"cD5 c #803d00", -"atK c #803d08", -"bTT c #803d09", -"avU c #803d12", -"cU7 c #803d13", -"b8o c #803d20", -"cHE c #803d22", -".vs c #803d23", -"#Qg c #803e02", -"boj c #803e0c", -"cwq c #803e0e", -".sx c #803e1b", -"bxm c #803e1c", -"bCr c #803e1e", -"cEg c #803e24", -".rZ c #803e28", -"atJ c #803f05", -"ayw c #803f15", -"bqE c #803f17", -".uc c #803f19", -".Fl c #803f1f", -".Bx c #803f21", -"aso c #803f23", -".p9 c #803f29", -"cq4 c #803f2b", -"cSH c #804010", -"QtU c #804012", -"bo# c #804014", -".g8 c #80401a", -".su c #80401c", -".qF c #80401d", -"cST c #804024", -".tM c #804027", -"bPf c #80410e", -"bAZ c #804116", -".vp c #804118", -".oG c #80411e", -".oH c #804120", -"QtW c #804122", -"cq5 c #80412f", -".qN c #804130", -"#sc c #80420f", -"bIN c #804211", -"bKQ c #804213", -".ML c #804219", -"bjG c #80421b", -".qC c #80421d", -"#7H c #804229", -"cCt c #80430c", -"blb c #804314", -"aFs c #804316", -".sD c #804317", -"chC c #804324", -"bTs c #804326", -".Bf c #804327", -"b52 c #804400", -"avj c #804408", -"bla c #804410", -".Fm c #80441f", -"bB5 c #804420", -"dtP c #804422", -".ad c #804428", -"cjx c #80442a", -"#GO c #804509", -"bAY c #804519", -".oF c #80451d", -"#GP c #804607", -"ali c #804616", -"#QP c #804618", -".Q8 c #80461e", -".al c #804630", -"bjY c #804702", -"dl. c #80471a", -".Wz c #804729", -"cq9 c #80472a", -"cWw c #80472c", -"#6m c #80480f", -"bPn c #804815", -".bF c #804817", -"bEm c #804819", -"cL2 c #804823", -"dLA c #804825", -"cLY c #80482f", -"bbl c #804909", -"blo c #804911", -"afl c #804a04", -"bVW c #804a0e", -"bID c #804a1e", -"bju c #804a24", -".ed c #804a26", -"cud c #804a28", -"#0q c #804b05", -"bip c #804b09", -"bnJ c #804b19", -"c0o c #804b21", -".Ja c #804b2b", -"djO c #804c24", -".pR c #804c27", -".iB c #804c34", -"bio c #804d0b", -"ap. c #804d0c", -".bz c #804d20", -"dkc c #804d22", -".bx c #804e19", -"aAX c #804e1b", -"clp c #804f03", -"bgw c #805012", -"dQe c #805020", -"bwq c #805022", -"c66 c #80502c", -".ds c #805103", -"bGC c #805119", -"byT c #805125", -".ZL c #805200", -".y5 c #805214", -"cb1 c #805217", -"bNq c #80521e", -".3b c #805300", -"bV6 c #805417", -"#w# c #805506", -"#G5 c #805510", -".t7 c #80551e", -".tD c #805520", -".Ys c #805545", -".6y c #80561a", -"bwm c #805624", -"bz6 c #805630", -".ze c #805723", -"bjO c #80581d", -".U3 c #80583f", -"#E8 c #805a05", -"ai5 c #805a0f", -"cjL c #805a13", -"ahb c #805b0d", -"ccI c #805b15", -"#aV c #805c04", -".xe c #805c12", -".A5 c #805c1e", -"aij c #805c50", -".2M c #805d1b", -"b#t c #805d1d", -".Xj c #805d23", -"dJu c #805e05", -"ahw c #805e07", -"btV c #805e17", -"cxP c #805e1f", -".gC c #805e2e", -"dqG c #805e45", -"bvd c #805f18", -"boB c #805f1c", -"bH9 c #805f29", -"bKl c #805f2c", -".n5 c #805f3e", -".bH c #806017", -"cxR c #806023", -".4Q c #80620c", -"dRw c #806400", -"bpU c #80641a", -"azJ c #806434", -"bua c #80651e", -"#Hb c #806520", -"bCz c #806522", -".YG c #80664f", -"bDI c #806725", -"cgF c #80672f", -"boz c #806923", -"bsN c #806a21", -"boI c #806a2e", -"brn c #806c23", -"blM c #806c27", -"dAC c #806e62", -".ZX c #807148", -"aXY c #807174", -"bRO c #80732d", -"agh c #807464", -"a49 c #807466", -".HG c #80750c", -".Cf c #807607", -".jE c #807621", -"#gX c #807766", -".HH c #80780d", -".HQ c #807813", -"cwK c #807921", -"aS4 c #807973", -"cAa c #807b1d", -"#mM c #807c18", -"cus c #807c25", -"cun c #807c32", -"ctV c #807d1c", -".Gh c #807d2c", -".Ak c #807e11", -"aTz c #807f7d", -"cl7 c #80801c", -"aSa c #80807e", -"ddo c #808080", -"#eZ c #808082", -"d.t c #80808a", -"cke c #808119", -"dak c #808183", -"#ya c #808423", -"c7n c #808485", -"cpV c #808622", -"dTm c #808626", -"d#O c #80862e", -".fu c #808825", -"Qtm c #808936", -"cqJ c #808a27", -"cAS c #808a2a", -"#Il c #808a4b", -".d1 c #808c1c", -".rh c #808d1b", -"cki c #808e1d", -".lz c #808f2a", -"cRY c #809127", -".fS c #809826", -"#4Z c #80a96f", -"dFh c #812403", -"duW c #812704", -"asR c #812b12", -"dHO c #812e06", -"apf c #812f17", -"aFx c #813001", -"dEP c #813100", -"##F c #813116", -"dFc c #813207", -"an5 c #813303", -"dIz c #813305", -"#hy c #81331c", -"dFb c #813406", -"dnz c #813408", -"#z0 c #813416", -".cN c #813418", -"azq c #813504", -".aV c #813511", -"cry c #81351b", -"#f4 c #81351d", -"#hv c #81351e", -"bOQ c #81360e", -"#v1 c #813617", -".eT c #813619", -"#es c #81361f", -"byI c #813621", -"bHT c #81370a", -"#v5 c #813710", -"cf4 c #813712", -"#v4 c #813714", -".vB c #81371a", -".tQ c #81371c", -".r5 c #81371e", -"cL# c #81372e", -"b4A c #81380f", -".KP c #813817", -"aax c #813818", -"bxq c #813825", -"a9B c #813911", -"ce7 c #813913", -"#ks c #813920", -"#cM c #813921", -"QtL c #813923", -"cp9 c #81392a", -".D. c #813a0e", -"#NZ c #813a10", -"#9f c #813a1a", -"#0K c #813a1c", -"#0L c #813a1e", -"#i5 c #813a26", -"bjj c #813b08", -".cI c #813b17", -".iQ c #813b19", -"co9 c #813b21", -".1F c #813b22", -".KT c #813c12", -"bjm c #813c13", -".IU c #813c15", -".em c #813c1b", -"auc c #813c1d", -"b6f c #813c1f", -"arY c #813d0c", -"b6B c #813d0e", -"bjl c #813d10", -".vG c #813d16", -".qG c #813d18", -".v0 c #813d1a", -".Yl c #813d26", -"cnj c #813d28", -".E6 c #813e11", -"bA# c #813e13", -"aq# c #813e14", -"#t5 c #813e21", -"c#x c #813e23", -"QtX c #813e24", -"bmU c #813f0b", -".E7 c #813f0d", -".aY c #813f0f", -".Bw c #813f1c", -"bxs c #813f1d", -"b9q c #813f1f", -"#Zy c #813f25", -".ml c #813f27", -"#cU c #813f29", -"bum c #814016", -"aaA c #814018", -"buP c #81401a", -".kM c #814020", -"cxG c #814022", -".QB c #814024", -"cr# c #81402c", -"bNe c #814111", -"bpB c #814113", -"bA. c #814115", -"bv6 c #81411b", -"bxl c #81411d", -".oL c #81411e", -".#7 c #814125", -"cFV c #814126", -".q. c #814128", -"adJ c #81420d", -"bsn c #81420f", -"bB0 c #814216", -"aBk c #814219", -"bjH c #81421f", -"cE8 c #814221", -".mP c #814223", -"bOg c #814312", -"aFt c #814314", -"bB2 c #81431a", -"cbr c #81431c", -"bzP c #81431e", -"#R1 c #81432c", -"cVb c #81440b", -".iL c #814415", -".dF c #814417", -"bzM c #814418", -"aIF c #814425", -"dGl c #814428", -"#ES c #814500", -"bf5 c #814509", -"boh c #81450f", -"bpC c #814511", -"bHs c #814513", -"bB4 c #814520", -"drU c #814523", -".Bp c #814529", -"clt c #81452b", -".ck c #81452d", -"#EP c #814602", -"bY3 c #81460e", -"bBY c #81461a", -"bEh c #81461c", -"br4 c #81461e", -".l1 c #814624", -".vv c #814626", -"bIG c #814719", -"bLg c #81471f", -".tH c #814721", -".OG c #814722", -"cLX c #81472f", -"#1G c #814801", -"bf6 c #814805", -".WY c #814811", -".qA c #81481d", -".ab c #81482a", -".N. c #814916", -".dD c #81491a", -"cuf c #814924", -"ctf c #814926", -"bLe c #814928", -"cq7 c #814932", -".fD c #814a09", -"bTN c #814a11", -"dkA c #814a2c", -"bh2 c #814b01", -"bnI c #814b05", -".qz c #814b1c", -".BI c #814b1d", -"bkW c #814b25", -"cQk c #814c00", -"#S0 c #814c0a", -".oC c #814c18", -"#kz c #814c1a", -".j6 c #814c2a", -".WB c #814c2c", -"bmQ c #814d13", -".y8 c #814d1d", -"#L8 c #814e15", -"c1# c #814e33", -"bxN c #814f1a", -"bNs c #814f1c", -"aAY c #814f1e", -".rR c #814f2c", -"ahd c #815001", -"cqH c #815004", -"blm c #815016", -"bHJ c #815018", -".QH c #815032", -".Jw c #815100", -"aig c #81513a", -"amO c #81520a", -"axh c #81520c", -"bSI c #81520e", -"bPp c #81521a", -"dE1 c #81521c", -"#IN c #815226", -"b00 c #815321", -"bFy c #81541b", -"bFA c #815526", -"cbS c #815611", -"bi# c #81561f", -"bJk c #815621", -"#vw c #81570f", -"bGY c #81571d", -"aoX c #815800", -"bVa c #815818", -"bwz c #815925", -"#G6 c #815a0f", -"bkg c #815a15", -"cds c #815a1f", -"btY c #815a21", -"#Bp c #815b06", -"#E7 c #815b08", -"dLq c #815c0e", -"bOP c #815c25", -"aEB c #815d2d", -"#Dn c #815e02", -"#4Q c #815f20", -"cxS c #815f22", -"blI c #81601d", -"bGX c #816126", -"a6D c #816152", -"c30 c #816250", -"blJ c #81631b", -".mw c #81633f", -"cui c #81642c", -"#Hl c #816511", -"dt9 c #816561", -"#Ha c #816621", -".n6 c #816744", -"bRQ c #816826", -"bOO c #81682f", -"ctj c #816830", -"bZY c #816a1e", -"bud c #816b20", -"#J6 c #816b2f", -".h4 c #816c1d", -".BM c #816c2b", -"cHP c #816d16", -"cvB c #816d17", -"bpW c #816d24", -"#He c #816d28", -"dSH c #816e22", -"cwB c #816e33", -"cwD c #816e34", -"#31 c #816e5f", -"cvo c #816f2f", -".1z c #816f49", -"bSY c #817028", -"bSZ c #81702b", -"crg c #817124", -"ckm c #817217", -"csn c #817221", -".HF c #817310", -"crf c #817328", -".5b c #817366", -"aEK c #81746b", -"aPy c #81746c", -".RM c #817529", -"c0Q c #81761c", -"chP c #817627", -"cvu c #817636", -"#Rf c #817672", -"ccD c #81771e", -"#sS c #81776e", -"cna c #81781d", -".h0 c #817926", -"aEh c #817977", -"#nN c #817a6a", -".Gf c #817c16", -"ccC c #817c28", -"ahT c #817c5c", -"aLN c #817c78", -"aOw c #817d7a", -".HS c #817e1d", -"ctu c #817e1f", -"ciL c #817e2d", -"deP c #817e79", -"dan c #817f80", -"dTi c #81802d", -"dae c #818088", -"#Iq c #818145", -"ddn c #818181", -".4B c #81821c", -"cwL c #818320", -".HT c #818322", -"dci c #818382", -".s7 c #818413", -"daE c #818584", -"#Fz c #81861f", -"dTk c #81862a", -"dTj c #81872d", -".f0 c #818926", -".zX c #818936", -"ckg c #818a1d", -"ckh c #818b1b", -"ajv c #818d27", -"c19 c #819330", -"cSX c #819b1c", -"dFg c #822402", -"dFe c #822a04", -"aq2 c #822a12", -"dGK c #822b00", -"#BT c #822e12", -"dHb c #822f05", -"dFd c #822f07", -"cuN c #823113", -"#bd c #823116", -".99 c #823217", -"bMM c #823300", -"#zU c #823314", -"b#q c #823404", -"#HV c #823406", -"awP c #82340e", -"#hw c #82341d", -"#f2 c #82341e", -"auT c #823500", -"bgY c #823509", -"cTP c #82350b", -".8t c #823517", -"#xZ c #823519", -".MH c #82351b", -"dF. c #823602", -"cvH c #823612", -"QtQ c #823614", -"ctM c #823616", -".aO c #82361c", -".cP c #82361e", -"cxI c #82361f", -".B. c #82370f", -"bBi c #823710", -"a.V c #823717", -"#v0 c #823718", -".MI c #82371a", -"#GD c #823807", -"#LY c #82380b", -"cbE c #823811", -"#x4 c #823813", -"#x3 c #823815", -"ccp c #82381b", -"#UT c #82381d", -".OA c #82381f", -"bom c #823906", -"#6k c #82390c", -".uf c #82390e", -"#7B c #823910", -"#z2 c #823916", -"#9e c #823918", -"#vY c #823919", -"cq. c #823926", -"auf c #82392a", -"#LZ c #823a0a", -"#4F c #823a12", -"#6d c #823a14", -"#ew c #823a21", -"#b# c #823a22", -"b7H c #823b00", -"bhX c #823b07", -"cct c #823b0f", -"#6c c #823b11", -"bBl c #823b1b", -"bxn c #823b1d", -"crE c #823b1f", -".Z5 c #823b25", -"cpc c #823b29", -"bYE c #823c09", -"bjk c #823c0b", -".is c #823c18", -".cJ c #823c1a", -"cpe c #823c22", -"bw# c #823c23", -".i1 c #823d13", -".R. c #823d14", -"#6i c #823d16", -".I0 c #823d1c", -"#6e c #823d1e", -".OB c #823d20", -"bok c #823e0d", -"bJI c #823e11", -"btu c #823e17", -".ue c #823e19", -"c#y c #823e1b", -".eo c #823e27", -"#tX c #823f00", -"bmW c #823f08", -".oP c #823f0b", -"bPj c #823f12", -".E5 c #823f14", -".GZ c #823f15", -"bsg c #823f22", -".Dr c #823f24", -"b8V c #824006", -"bpK c #82400c", -"caD c #82400e", -"avT c #824010", -"aBM c #82401d", -"dDN c #82401e", -"bwC c #824020", -".r1 c #824028", -".r0 c #82402a", -"by# c #82410b", -"bHn c #824117", -".KQ c #824119", -".Jh c #82411b", -"cgx c #824121", -".zC c #824123", -"#WF c #82412b", -"#4s c #824202", -".Lg c #824212", -"bI5 c #824214", -"#3i c #824216", -"bv5 c #82421c", -"byB c #82421e", -"c04 c #82421f", -"#QJ c #824226", -".tN c #824227", -"bpJ c #82430e", -"bOf c #824310", -".Lf c #824317", -".mL c #824318", -".MM c #82431a", -".es c #824320", -".kR c #824322", -".mO c #824324", -".Y. c #824400", -"dDT c #824407", -"bG0 c #82440b", -"b3r c #824411", -"bGp c #824413", -"com c #824415", -".e4 c #82441d", -"byC c #82441f", -"#QO c #824516", -".dE c #824518", -".tt c #824519", -"#UX c #824528", -".yQ c #824610", -"boa c #824614", -"c62 c #824621", -".n1 c #824624", -".Dq c #82462a", -"cr3 c #824700", -".xY c #82471b", -"cOW c #82471f", -".OI c #824727", -"aw9 c #824808", -"cSG c #824816", -"bDr c #824818", -"bGj c #82481a", -"bpd c #824820", -"avt c #824904", -"#Pt c #824912", -"b0u c #824914", -"bKO c #82491c", -"bvh c #82491e", -".ec c #82492b", -"cp6 c #82492c", -"bl# c #824a11", -"btZ c #824a1b", -"#GV c #824c06", -"bHm c #824c1d", -"cxL c #824c1e", -".rG c #824c28", -"aqS c #824d09", -"ar7 c #824d0b", -"b3T c #824d1b", -".iH c #824d23", -".UE c #824d2d", -"aAB c #824e14", -"bJ6 c #824e1c", -"aAy c #824e1f", -".rJ c #824e27", -"cDq c #824f00", -"bin c #824f0e", -"bPK c #824f18", -"aAA c #824f1a", -"aAG c #825009", -"ax# c #82500b", -"cy0 c #825011", -"bkh c #82510e", -"caZ c #825116", -"bIZ c #825126", -"bZ3 c #825128", -".9T c #825214", -".VU c #825222", -"#xw c #82530f", -".rM c #825329", -"bY4 c #825416", -"bil c #825418", -"b1U c #825420", -".by c #825423", -".ZK c #825500", -"#Ln c #825511", -"#J4 c #82551a", -".6t c #82551e", -".rN c #82552b", -".Bi c #825536", -".fy c #825600", -".Sp c #82560b", -"clF c #82560f", -"bDs c #825625", -"djg c #825627", -".SH c #825631", -".Jx c #825700", -"bDN c #825713", -".tC c #825722", -"#IG c #82572c", -"#zt c #82580c", -"ckO c #82580e", -".as c #82581c", -"cL3 c #825826", -"ceR c #825917", -"bgt c #82591b", -"bp5 c #825a12", -"blg c #825a15", -"bwx c #825a1c", -"cmj c #825b0c", -"axb c #825b0e", -"c3M c #825b18", -"bjN c #825b20", -"bgf c #825b22", -".iA c #825b32", -"ckM c #825c15", -"bn. c #825d19", -"#RD c #825e00", -"afG c #825e08", -"cEs c #825e0a", -"cjB c #825e22", -"bez c #825e24", -"cdF c #825f1d", -"cjg c #826102", -".Os c #826110", -"bic c #82611c", -"bQv c #82611e", -".pB c #826311", -"b0V c #82641c", -"bFU c #826426", -".nT c #82651f", -"bvr c #826521", -"cLc c #826523", -"#d4 c #826603", -"dOZ c #826613", -"bvv c #82661d", -"blC c #826720", -"cJs c #826813", -"brl c #82681d", -"bm5 c #82681e", -"cwG c #82682d", -".Sh c #826902", -".xc c #826919", -"bMF c #826933", -"cn0 c #826a12", -"bvs c #826a22", -".J9 c #826b0b", -"bH5 c #826b28", -"bub c #826c23", -"aMl c #826c57", -".jD c #826d1a", -"bne c #826d2c", -".TJ c #826d2e", -"czN c #826e18", -"cbK c #827028", -"#s6 c #827263", -"ccE c #827316", -".#Y c #827318", -"cvD c #827411", -"cre c #82742d", -"cvp c #827433", -"dB1 c #82746b", -"cvC c #827515", -"dOY c #827517", -"c0P c #827519", -".zW c #827531", -"aGt c #82757e", -".73 c #827612", -"aO6 c #827668", -"cLd c #827727", -"dvB c #82786c", -".HP c #827910", -".ZW c #82794e", -"c4a c #827970", -"ckI c #827a27", -"aTJ c #827b71", -"#XR c #827d15", -"axY c #827d39", -"aWU c #827d79", -".1y c #827e51", -"aU7 c #827e73", -"aF# c #827f70", -"aZk c #827f76", -"#F8 c #82812e", -"#qu c #828151", -"dbX c #828282", -".f1 c #828326", -".au c #828335", -"#sv c #82837d", -"d.z c #828387", -"d.U c #828483", -"#wc c #82852a", -".HX c #828618", -"dTl c #828628", -"cmw c #82862f", -"#6E c #828677", -"dSe c #828721", -".E2 c #828729", -"##b c #82872d", -"a6S c #828767", -"c2. c #82892c", -".GF c #828a1d", -"#Hz c #828a23", -".GE c #828b1e", -".IB c #828b20", -"#Mm c #828b48", -".bM c #828c19", -"cy9 c #828f26", -"#Ib c #828f5a", -".wF c #829320", -"#p8 c #829722", -"#3t c #82a86f", -"dFq c #832104", -"dFo c #832202", -"azV c #832604", -"dFi c #832a08", -"#DS c #832e11", -"a3F c #832e19", -"dHN c #832f0a", -"dF7 c #833000", -"#RZ c #83300e", -".6S c #833119", -"dDX c #833205", -"#cQ c #833217", -"#bc c #833318", -"#hx c #83331a", -"ayA c #83340b", -".cO c #833416", -"aDx c #833507", -"bRV c #83350f", -"azt c #833511", -"#et c #83351e", -"b2W c #833618", -"cqs c #83361a", -"#bb c #83361c", -"cGz c #833700", -"#HW c #833706", -"#zR c #833713", -"#zT c #833715", -"#z1 c #833717", -"#cN c #83371f", -"bNK c #833800", -"auV c #833801", -"az9 c #83380e", -"bNI c #833810", -"#zQ c #833811", -"cdi c #833818", -".tO c #833819", -"am4 c #83381b", -"bYs c #83390a", -"bI6 c #83390c", -".KU c #833912", -"#9d c #833914", -"bIM c #833916", -"asm c #83391c", -"##E c #833920", -"b9O c #833a00", -"cgq c #833a07", -"#7A c #833a0d", -".D# c #833a0f", -"#NY c #833a11", -"#4G c #833a17", -"avX c #833a19", -"aub c #833a1a", -"cpd c #833a27", -"dp0 c #833b00", -"ce6 c #833b13", -"axK c #833b15", -"#f7 c #833b22", -"bzn c #833c04", -"cY9 c #833c0e", -"azy c #833c10", -".cp c #833c12", -"dKJ c #833c1c", -"#hB c #833c1e", -".xA c #833c20", -".Z6 c #833c26", -"cWu c #833d0a", -"c#. c #833d0c", -".v1 c #833d19", -"avY c #833d1b", -"cng c #833d23", -"#Zw c #833d24", -"dok c #833e07", -"#t9 c #833e14", -"btt c #833e15", -"bo. c #833e17", -"QtD c #833e1d", -".zo c #833e1f", -".Ds c #833e21", -"bRT c #833f0e", -".cZ c #833f10", -".cg c #833f12", -"bv9 c #833f18", -"bv8 c #833f1a", -"aBL c #833f1c", -"awf c #83400b", -"b4O c #834013", -".KS c #834015", -"bpk c #834016", -".vr c #834025", -"#Yf c #83402d", -"cEA c #83410d", -"bEn c #834111", -"QtC c #83411e", -"b5F c #83411f", -".zK c #834121", -"#Yg c #834129", -".KR c #834218", -"bt0 c #83421a", -"bAb c #83421c", -"QtB c #834222", -".BA c #834224", -"dDU c #834306", -".r9 c #834313", -"bmE c #834315", -"bLY c #834317", -".mM c #83431d", -"bvi c #83431f", -"cxF c #834327", -".Bq c #834328", -".q# c #83432a", -"blu c #834401", -"dRc c #83440e", -"arV c #834411", -"aBl c #834419", -"bmH c #83441b", -".mN c #834421", -"c61 c #834423", -"ap# c #83450a", -"at8 c #834512", -"bmD c #834514", -"bJT c #834516", -"bLZ c #83451c", -".vY c #83451e", -"bld c #834520", -"avu c #834605", -"ajq c #83460f", -"bZB c #834610", -"cpf c #834617", -"bAX c #834619", -"chB c #83461a", -"cjw c #834629", -"#ER c #834701", -"#GQ c #834708", -"bXZ c #834711", -".N# c #834713", -"bI4 c #834715", -"aBc c #834725", -"cs# c #83472d", -"#EQ c #834802", -"bU1 c #83480c", -"awe c #834810", -".zS c #83481c", -".rF c #834820", -".OH c #834826", -"bFo c #83491b", -"bqB c #834921", -"dDP c #834b10", -"#L7 c #834b12", -"bJl c #834b18", -".iK c #834b1a", -"csg c #834b2a", -"aAo c #834b30", -"csb c #834b34", -"con c #834c13", -".Hz c #834c16", -".WA c #834c2d", -"bTH c #834d07", -"cf0 c #834d0f", -"bIF c #834d1e", -"aAu c #834d1f", -".pP c #834d21", -"bLa c #834e1c", -"bul c #834f15", -".RC c #834f2a", -".PZ c #835019", -".Vq c #83510a", -"cy1 c #835112", -"ayS c #835116", -".A0 c #83511c", -"c1a c #835136", -"cy4 c #83520f", -"bQL c #835218", -"bxP c #835227", -".oA c #835315", -"atz c #83540e", -"dRb c #83541c", -"bz5 c #83542a", -".l3 c #835436", -"asx c #835500", -".Uk c #835508", -"ayT c #835517", -"bll c #83551a", -"bEu c #835521", -".iz c #835524", -".bo c #835612", -"bBf c #83562c", -"bUS c #83570c", -"axa c #83570e", -"bCn c #83572a", -"byU c #835730", -".SI c #835732", -"clN c #835809", -"ckL c #835813", -".RV c #83582b", -"bxC c #83582d", -".08 c #83590d", -".W2 c #835929", -".QO c #835933", -".I. c #835a00", -"#aU c #835a0a", -"ayU c #835a1a", -"dQf c #835a24", -"bDt c #835a2c", -".Jy c #835b00", -"bmL c #835b16", -"dIH c #835c0f", -"bjK c #835c19", -".04 c #835c3d", -".MP c #835c3f", -".Ia c #835d00", -"#uc c #835d0a", -"ai6 c #835d0c", -"cmy c #835d14", -"#Qn c #835e00", -"dMg c #835e10", -"bhl c #835f13", -".K. c #83600c", -"cAf c #83600f", -"cxO c #836020", -".RU c #836036", -"boG c #836117", -"#7M c #83611a", -"bAk c #836121", -"b1S c #836122", -"#J5 c #836124", -"bj4 c #83621b", -".b1 c #83621d", -"#h# c #836300", -"c3n c #836358", -"dJt c #83640a", -"#tC c #836411", -"bnc c #83651c", -"cwx c #836525", -"c3m c #83655b", -"cmD c #836618", -"bow c #83661a", -"bx3 c #836620", -"bwK c #836622", -"#Hc c #836821", -"aIa c #836853", -"cAE c #836912", -"bvu c #83691f", -"axX c #836a27", -"bNF c #836a32", -"bsL c #836b21", -"bZ0 c #836b23", -"ayZ c #836b25", -"bDK c #836c29", -".RT c #836c43", -"c3i c #836c5e", -"buc c #836d24", -"cmC c #836e1d", -".C3 c #837024", -"bT1 c #837129", -"dAi c #83726b", -"cv. c #837419", -"c2# c #837421", -"#Jd c #83743d", -".4d c #837457", -".x4 c #837632", -".7m c #83766e", -"aln c #83781c", -"cts c #83781e", -"bdq c #837826", -"aFc c #837970", -"dnM c #837a75", -".HI c #837b0e", -"a2F c #837b68", -"aaG c #837c21", -"aFb c #837d71", -"cAe c #837e22", -"#SQ c #837f80", -"cyt c #83811d", -"aVL c #83827e", -"cwM c #83831f", -"ddm c #838383", -"aWe c #838385", -"c5M c #83847f", -".GS c #838522", -".Ck c #83861f", -"dSd c #838821", -".hN c #83882e", -".GT c #838925", -".71 c #838a2b", -".9F c #838a2d", -".GW c #838b28", -".IA c #838c21", -"cSq c #838d1a", -"cR2 c #838d1c", -".GD c #838d1d", -"#Ia c #83905a", -".BO c #83913a", -"cAd c #83922d", -"#rX c #839328", -".dQ c #839d22", -"#zH c #839e29", -"#xL c #83a22a", -"dIE c #842400", -"dGI c #842700", -"dGJ c #842800", -"dzg c #842801", -"dHc c #842d00", -"dDW c #843105", -"#BS c #843113", -"apS c #843203", -"dHM c #84320a", -"#cP c #84321a", -"#LW c #843308", -"adG c #843316", -".aP c #843419", -"#eu c #84341b", -"#f3 c #84341d", -"aaw c #843516", -"ajm c #843517", -"bzo c #843605", -"bg1 c #843610", -"cfp c #843612", -"QtK c #84361f", -"cxH c #843620", -"an6 c #843701", -"b5q c #84370d", -".KO c #843719", -".tP c #84371b", -"QtG c #84371d", -"as4 c #843807", -"#zS c #843814", -"a.U c #843816", -"#QI c #843818", -"#cS c #84381e", -"#ba c #843820", -"av1 c #843821", -"#3a c #84390f", -"#3b c #843911", -"#7I c #843912", -"avW c #843919", -"#vZ c #84391a", -"bLS c #84391c", -"bKK c #843a09", -"bya c #843a0b", -"bK# c #843a0d", -"bJJ c #843a13", -"b7s c #843a15", -"bKE c #843a17", -".Br c #843a1d", -"#0R c #843a1f", -"cAj c #843b04", -"#6b c #843b0e", -"bZq c #843b10", -"#6j c #843b12", -"avV c #843b18", -"#4H c #843b1a", -"cav c #843b1b", -"#3# c #843c0c", -".ko c #843c14", -"axJ c #843c16", -"col c #843c26", -"bSR c #843d09", -"bIt c #843d0f", -"cdW c #843d11", -"bk0 c #843d13", -"by5 c #843d1d", -"dKI c #843d1f", -".en c #843d21", -".1G c #843d29", -"cok c #843d2b", -"atL c #843e0b", -"bol c #843e0d", -".zH c #843e1a", -".KW c #843e1c", -"#f6 c #843e24", -"bhY c #843f04", -"awK c #843f15", -"buR c #843f16", -"buQ c #843f18", -".mX c #843f1e", -"aud c #843f20", -"ayH c #84400f", -".cf c #844011", -"bHS c #844013", -"az5 c #844019", -"bNu c #84401b", -"bOB c #84401d", -"#WG c #84402b", -"c.9 c #84410c", -"avS c #84410d", -"b0p c #844114", -"b2R c #844116", -".kK c #844117", -"bzm c #844206", -"dps c #84420e", -"aDr c #844210", -".G0 c #844212", -".Hm c #84421f", -"bTt c #844220", -"#51 c #844300", -"bI. c #84430d", -"blc c #84431b", -".bA c #84431d", -"cyL c #844325", -"bhZ c #844404", -"bHt c #844414", -"#Pn c #844416", -"bL0 c #844418", -"bxk c #84441e", -"#IC c #844420", -"dnF c #844429", -"atS c #844500", -"aDq c #844512", -".iM c #844519", -"aqx c #84451a", -"bC. c #84451c", -"dNf c #844526", -".Wf c #844600", -"dMn c #844613", -"ash c #844615", -"dP7 c #844617", -"bIC c #84461d", -"btp c #84461f", -"bSm c #844621", -"bHI c #844710", -"bWY c #844711", -"aAg c #844718", -"ceo c #84471a", -"bB1 c #84471b", -"bJ8 c #84472a", -"bh0 c #844800", -"b8J c #844802", -"auu c #844809", -"dDS c #84480a", -".dz c #84480c", -"bGB c #844812", -"#4N c #844814", -"dE5 c #844816", -"by2 c #844826", -"c1X c #844903", -"by. c #84490d", -"bFp c #84491d", -"bwB c #844921", -".n2 c #844929", -"bh1 c #844a00", -"dDO c #844a18", -"by0 c #844a1a", -"aDl c #844a22", -".OF c #844a24", -"bLf c #844a25", -"dLz c #844b20", -"cr. c #844b2e", -"atF c #844c0f", -"bKn c #844c1b", -"c65 c #844c27", -"cue c #844c29", -"adu c #844d0a", -"dDQ c #844d0d", -"#4O c #844d14", -".l2 c #844d2f", -"#nr c #844e08", -"cqX c #844f01", -"asH c #844f09", -"bob c #844f19", -"#J3 c #845016", -"bNH c #84501e", -"btO c #845020", -".rI c #84502b", -"cyZ c #845110", -"btP c #845118", -"aaj c #84520d", -"dGg c #845217", -"cFf c #845304", -"aCz c #845310", -"chR c #845311", -"clw c #845319", -"bLb c #845426", -".UG c #845430", -"bCF c #845511", -"akt c #84551d", -"#IO c #845527", -"avo c #84560b", -"aED c #84561a", -"ccu c #84561b", -"bu7 c #845625", -"bVX c #845713", -".ON c #845738", -"cqk c #84580d", -"clG c #845811", -"bpG c #845819", -".I4 c #84583b", -".I# c #845900", -"cpH c #84590a", -"cKt c #84590b", -"bOy c #845924", -"axg c #845a10", -".Ot c #845b0c", -"boe c #845b19", -"dKu c #845c14", -"cxU c #845c1e", -"bFV c #845c1f", -"bvg c #845c28", -"cjh c #845d00", -"boC c #845d1a", -".CY c #845d1c", -".1L c #845d4e", -"#n. c #845e09", -"cos c #845e17", -".kw c #845e39", -"axc c #845f0f", -"b1P c #845f19", -"bNG c #845f2a", -"#G7 c #846012", -"bsy c #846022", -"bLv c #84602e", -"#.b c #84604a", -"bRR c #846121", -"bib c #84621b", -"dQg c #846223", -"cwI c #846225", -"bpT c #846316", -"bwN c #84641b", -"b9X c #846524", -"bW5 c #846525", -"aeN c #846539", -"czA c #84660e", -".27 c #846610", -".#Z c #84661d", -"bu# c #846620", -"cwH c #84662a", -"#d5 c #846701", -".dK c #84671b", -"#H# c #84681f", -"c3l c #84685c", -"dVD c #84691c", -"bV1 c #846922", -"cBO c #846a13", -".Or c #846a16", -"bwL c #846a20", -".Qn c #846b06", -"#cm c #846b07", -"bBu c #846b28", -"du. c #846b67", -"cIG c #846c16", -"bQH c #846c22", -"#Hd c #846c26", -".Qm c #846d07", -".RL c #846d1d", -"aHV c #846d5b", -"bY6 c #846e22", -".xa c #846e25", -"cwl c #847019", -".Ic c #847206", -".hx c #847309", -"cnw c #847321", -"crh c #847323", -"aAP c #84733f", -"cso c #84741f", -"dd8 c #847755", -"dp6 c #847766", -"aFd c #847771", -"cqg c #847822", -"csp c #84791f", -"dR5 c #847a25", -".80 c #847a71", -"aQ# c #847b76", -"#Wg c #847c1a", -"a#3 c #847c71", -"csq c #847d22", -"bdp c #847d25", -"cut c #847e28", -"aUg c #847f7b", -"dag c #847f83", -"#PL c #848051", -"#DD c #84811a", -"co2 c #848120", -"#D7 c #848124", -"ahS c #848259", -"dbW c #848283", -"dmK c #848381", -"#Y1 c #848388", -"deD c #848484", -"d.E c #848486", -"#9I c #848671", -".jx c #848817", -"#tQ c #848922", -".IC c #848a20", -".XX c #848b1b", -".Ks c #848c25", -".Of c #848c27", -".uQ c #848d1a", -".Ao c #848e1d", -".GU c #848e2b", -"#zD c #848f17", -"c18 c #849632", -"#oo c #849717", -"#p5 c #84a61b", -"#7Y c #84b478", -"dFp c #852404", -"aOk c #852a00", -"a5D c #852b13", -"cOG c #852d00", -"dDV c #852e03", -"#DR c #852e10", -"aBv c #852f00", -"aq1 c #852f14", -"#RY c #85300b", -"au6 c #853105", -"c0# c #85310d", -"auG c #853206", -"#Tm c #853214", -"dEQ c #853300", -"dIy c #853303", -"b6v c #853304", -"#ev c #85331b", -"bML c #853405", -"ac# c #853416", -"afA c #853417", -"#cR c #853419", -"cWn c #853504", -"cg5 c #853510", -"#zX c #85351a", -"#cO c #85351c", -"biW c #853600", -"cSI c #85360b", -"b1W c #85360d", -"bQN c #85360f", -".vA c #853617", -"bM6 c #853706", -"bun c #853709", -"ccW c #853710", -"#Zu c #853711", -"cg6 c #853713", -"bzV c #853720", -"byH c #853721", -"auW c #853800", -"biO c #853802", -"bNJ c #85380a", -"#JT c #85380c", -"aA# c #85380e", -"bLT c #85381a", -"b4T c #85381c", -"#bf c #85381e", -"bxp c #853824", -"bHc c #853905", -"#JU c #853908", -"bDA c #853915", -"bJK c #853917", -"bKF c #853919", -"bxo c #853921", -"b7G c #853a00", -"axI c #853a10", -"#9c c #853a12", -"bRG c #853a13", -"b6F c #853a1a", -".Bs c #853a1b", -"b3V c #853a1d", -".Pc c #853b0c", -"bKW c #853b14", -".KV c #853b16", -"b8r c #853b18", -"b2V c #853b1e", -"b4H c #853c05", -"bTS c #853c0f", -"cua c #853c11", -"b2t c #853c13", -".xP c #853c19", -"#i8 c #853c1b", -"b6e c #853c1c", -"biX c #853d02", -".E8 c #853d0b", -"auZ c #853d0d", -".et c #853d15", -".v3 c #853d17", -"b9N c #853e00", -"cgp c #853e06", -"bL1 c #853e10", -"bkR c #853e12", -".mo c #853e14", -"c.s c #853e22", -"bbk c #853f04", -"bpL c #853f0e", -"bmG c #853f1b", -".Bv c #853f1d", -".b8 c #853f25", -"bII c #854016", -"b59 c #854017", -"bXb c #854019", -".zD c #854023", -"bFt c #854110", -"bYD c #854112", -"b2S c #854114", -"btC c #85411a", -"aoN c #85411c", -"aLw c #85411e", -".cj c #85412a", -"byq c #85420d", -"bLX c #854215", -".iN c #854217", -"bsr c #854218", -"axk c #854306", -"cWP c #854309", -"bS3 c #85430f", -"arX c #854311", -"bHR c #854313", -"bxS c #854320", -"cOm c #854404", -"cIg c #85440c", -"dJC c #85440e", -"bM7 c #85441a", -"bsq c #85441c", -".kS c #85441e", -"bSn c #854426", -"blt c #854505", -"cBl c #854508", -"dHs c #854515", -"bIB c #854517", -"cMK c #854519", -".vZ c #854521", -"bHN c #854522", -"b53 c #854601", -"do8 c #854610", -"du3 c #85461b", -"bso c #85461d", -"bI0 c #854625", -"atI c #85470c", -"#QN c #854714", -"byA c #854716", -"bzL c #854718", -"bJR c #85471e", -"c63 c #854722", -"bIY c #854811", -"dGm c #854812", -"bFj c #85481b", -"ajr c #85490a", -"#F3 c #85490d", -"b0v c #854913", -"bFx c #854915", -"bEt c #854917", -".ac c #85492d", -"cta c #85492f", -"bjZ c #854a06", -"bDO c #854a08", -".P0 c #854a12", -"ayN c #854b01", -"dDR c #854b0c", -".pO c #854b1b", -".Sq c #854d03", -"bwl c #854d12", -"bog c #854d14", -"bKP c #854d1e", -".pS c #854d2a", -"#D4 c #854e0b", -"bER c #854e0e", -"cUL c #854e16", -"csf c #854e2f", -"bis c #854f09", -"bIE c #854f20", -"ctd c #854f2d", -"axi c #85500e", -"aAx c #855024", -"avs c #855108", -"btN c #855121", -".pQ c #85512a", -"aut c #855210", -"aAC c #855211", -"dTA c #855213", -"coo c #855219", -"dkD c #855225", -".Zv c #855300", -"##l c #855314", -"bWZ c #855316", -".UF c #855332", -"#S1 c #855408", -".Vp c #855411", -".8b c #85541c", -"btR c #855513", -"bEQ c #855515", -"dkE c #855524", -"dEV c #855600", -"bHL c #855628", -"cHT c #85570a", -"aCy c #855719", -"bQt c #85571b", -"bKm c #855725", -"c2o c #85573f", -"#ex c #855740", -"bme c #855805", -"#9n c #855814", -"ao. c #855815", -"b2O c #85581f", -"cmA c #855912", -"bY9 c #85592a", -"dEW c #855a00", -"dJA c #855a16", -"bZ2 c #855a25", -".j7 c #855a3a", -"brw c #855b11", -"cF6 c #855c0a", -"dTd c #855c0d", -"dJz c #855d15", -"ce1 c #855d18", -"bX6 c #855d29", -"bn# c #855e19", -"bpF c #855e1d", -".QN c #855e37", -".Jz c #855f00", -"bTI c #855f14", -"blh c #855f16", -"bmM c #855f18", -".d4 c #855f20", -"cxT c #855f21", -".L5 c #856005", -"bMG c #85602c", -"dLp c #85610d", -"bjL c #856117", -"bRD c #856125", -".f7 c #85621e", -"cdG c #856222", -"clE c #856319", -"bjM c #85631b", -"bug c #85631c", -"bvw c #85641f", -".4X c #85650e", -"#H. c #856616", -"cvy c #856625", -"dMf c #856711", -"bSK c #85671e", -"cpj c #856721", -"#of c #85680c", -"bT3 c #856826", -"bmc c #856915", -"bwM c #85691f", -"buf c #856920", -"#wa c #856b16", -"bOK c #856b21", -"#sg c #856d15", -"bvt c #856d23", -".xb c #856e22", -"bRM c #856f24", -".b0 c #85711a", -".EW c #85711b", -"cwA c #857134", -"bbo c #857225", -"c0R c #85731d", -"c94 c #85741a", -"c#Z c #85741c", -"av9 c #857520", -"ctv c #85761b", -"crj c #857621", -"cri c #857623", -"ctp c #857625", -"aAO c #85763f", -"#qs c #857925", -"cfC c #85792f", -"cvq c #857a38", -"cvs c #857a3a", -".HM c #857b0c", -"aNG c #857b79", -"ckd c #857c17", -"aEY c #857d70", -"aEZ c #857d72", -"#VV c #857e76", -"aUq c #857e78", -"daf c #857e85", -"cld c #857f1d", -"aEX c #857f6f", -"aHn c #858084", -"aLK c #858180", -".2Q c #858217", -"#8K c #85827b", -"d.u c #85828b", -"#lo c #85831e", -"dTh c #858330", -"#sL c #85846f", -"aNX c #858482", -".rf c #858515", -"#LB c #858523", -"aRZ c #858585", -"bhg c #858620", -"d.A c #858688", -".fQ c #858726", -".1x c #858758", -".5r c #858881", -".ZE c #85891a", -"#BD c #85891b", -".Mo c #858928", -".Kr c #858a24", -".Qc c #858a2e", -".Ee c #858b0f", -".Og c #858b27", -".yv c #858c1c", -".Iz c #858c22", -".GC c #858d1e", -".Qh c #858d26", -".Mp c #858d2a", -"#Io c #858d54", -".GV c #858f2c", -"#rQ c #85981a", -"#vF c #859e1e", -"#2# c #85a671", -"dGz c #862600", -"dAL c #862b00", -"dL2 c #862d03", -"cPs c #862e00", -"dIA c #862f02", -"a7E c #862f13", -"asQ c #863112", -"au7 c #863203", -"ato c #863204", -"afz c #863216", -"dO1 c #863400", -"ahr c #86341e", -"biV c #863500", -"aye c #863506", -"#NW c #86350a", -"#US c #863517", -"QtH c #863518", -"cJ2 c #863601", -"cK2 c #863603", -"asY c #863605", -"auC c #863611", -".zj c #863613", -".xu c #863615", -"am3 c #86361b", -".6T c #86361f", -"#JS c #86370c", -"#LX c #86370e", -"#X7 c #863710", -"#BY c #863718", -"b3W c #863719", -"bDw c #86380a", -"bWv c #863811", -"bQM c #863812", -"a.T c #863814", -"bfh c #863900", -"bJQ c #86390b", -".IX c #86390d", -"#v6 c #86390f", -"bBj c #86391b", -".Be c #86391f", -"#tY c #863a00", -"b5y c #863a06", -"#1V c #863a09", -"#3c c #863a16", -"#B0 c #863a18", -"b64 c #863a1a", -"cBm c #863b04", -"bGL c #863b11", -"bVV c #863b13", -"bKV c #863b14", -"c#z c #863b1b", -"b65 c #863b1c", -"aT4 c #863b1e", -"#GE c #863c0b", -"axH c #863c0f", -"#kw c #863c15", -"bHo c #863c17", -".IT c #863c19", -"cti c #863c1f", -"cz# c #863d06", -"cr8 c #863d10", -".g7 c #863d12", -".vy c #863d14", -"byK c #863d1a", -".xO c #863d1c", -"c.u c #863d1d", -"#L0 c #863e0c", -"bkQ c #863e0e", -"bpA c #863e16", -"bn9 c #863e18", -"bzD c #863f07", -"apa c #863f0b", -"br9 c #863f11", -".vx c #863f13", -"axL c #863f15", -"cnf c #863f1f", -".b9 c #863f23", -"avw c #864004", -"#4E c #86400c", -"bWx c #86400d", -".Pb c #86400f", -"b5G c #86401c", -"cAW c #86401e", -"#Zx c #864026", -"b8N c #864100", -"cXm c #864108", -".Ji c #864117", -".E4 c #864118", -"az6 c #86411a", -"bki c #864203", -"br# c #864211", -"bHu c #864213", -".tV c #864215", -".qi c #86421b", -".kL c #86421d", -"cPF c #864300", -"dpr c #86430c", -".v8 c #86430f", -".IV c #864316", -"aq. c #864318", -"bmF c #864319", -"bSo c #864326", -".Lh c #864410", -"arW c #864412", -".va c #864414", -".xL c #864422", -"czU c #864424", -"#D3 c #86450b", -"c3N c #86450d", -"c2d c #86450f", -"bsp c #86451d", -"bv7 c #86451f", -".Dy c #864525", -"cGF c #864606", -"chA c #864616", -"czS c #864618", -".rE c #86461a", -"bv4 c #864620", -".mR c #864622", -"cxD c #86462a", -"b6Y c #864700", -"b5d c #864702", -"doI c #864712", -"bss c #864714", -"b4N c #86471b", -"bKL c #86471c", -"bxj c #86471e", -".xk c #864724", -"bmC c #864815", -"bI3 c #864817", -"bMI c #864819", -"bxR c #864821", -"bCH c #864906", -"#7q c #864908", -"bpI c #864912", -"bst c #864913", -"aAf c #86491a", -"bk9 c #864a02", -"bFW c #864a0e", -"bJ9 c #864a28", -"cPG c #864b00", -"bj0 c #864b05", -"#GR c #864b09", -"bRS c #864b13", -"bEg c #864b1f", -".oE c #864b21", -"c64 c #864b23", -".pT c #864b29", -"#tW c #864c03", -"cdh c #864c1c", -"bmI c #864c1e", -"cq6 c #864c36", -"bir c #864d08", -"bTV c #864d0a", -".8. c #864d20", -"c09 c #864d32", -"#H3 c #864e11", -"dAW c #864e1d", -"cte c #864e2b", -"bpH c #864f16", -"bpD c #864f17", -"aks c #864f19", -"ajs c #865006", -"a.G c #86500a", -".#m c #865012", -"c#5 c #865014", -"dUp c #86510b", -"cyY c #86510f", -".Tq c #86511b", -"#j. c #865129", -"bof c #865216", -".Fz c #865219", -".iI c #865223", -"bnH c #865304", -"bU2 c #865311", -"cnl c #865312", -"#7L c #865314", -".25 c #86531c", -"cy2 c #865415", -"btQ c #865417", -"#4P c #865419", -"bxF c #86542f", -".1m c #865510", -"bUR c #86560c", -"aml c #865616", -"dE0 c #865618", -"bLw c #865625", -"cjN c #865711", -"dpN c #86573d", -"dSN c #865802", -"dIF c #86580d", -".AJ c #865826", -"bGE c #865827", -"aPL c #86584b", -"ckT c #865906", -"cv# c #865908", -".rO c #86592f", -"cxN c #865a13", -".26 c #865a19", -"bgu c #865a1d", -"djQ c #865a29", -"cfN c #865b16", -"asG c #865c12", -"cmI c #865d0e", -".gB c #865d27", -"aGd c #865d2f", -".pD c #865e09", -"bj3 c #865e16", -".y4 c #865e18", -"bia c #865e20", -"dGa c #865f04", -"cro c #865f10", -"ceS c #865f1c", -"dPf c #865f1e", -"b0Z c #865f24", -"bOw c #865f26", -"bFz c #865f28", -"dQn c #866000", -"dJv c #86600b", -"bvo c #86601f", -"#Hm c #866106", -"axf c #866113", -".t5 c #86612c", -"bmd c #86620e", -"axe c #866214", -"aDP c #86623e", -"b9Y c #866321", -"clH c #86641a", -"b9J c #866514", -"bFQ c #866522", -"#fD c #866601", -"bx4 c #86661d", -"a6C c #866651", -".Ib c #866800", -"#aW c #866806", -"bzd c #866820", -"bEP c #866828", -".Si c #866901", -"bJe c #866923", -"bx2 c #866925", -"bGT c #866927", -"dR2 c #866a16", -"cwy c #866a2b", -"dRa c #866b1a", -"bY7 c #866b26", -"bAm c #866b28", -"c3k c #866b60", -"b9K c #866c17", -"bY5 c #866c21", -"bNB c #866c22", -"c3j c #866c5f", -"bCB c #866d2a", -".Qs c #866e16", -"bU7 c #866e26", -"cwz c #866e30", -"cnx c #866f1f", -"bro c #866f29", -".Ol c #86700d", -"aEw c #867059", -"ccF c #867116", -".fO c #867324", -"ciM c #867327", -"dN6 c #867519", -"caT c #86761f", -".PR c #86771a", -".ct c #867831", -"aES c #867875", -"d#A c #867878", -"cur c #867a28", -"dbb c #867a7c", -"#wb c #867b21", -"crk c #867b22", -"aGQ c #867b5f", -"aEg c #867b75", -"aDX c #867b77", -"aEL c #867c72", -".HJ c #867e11", -"aEW c #867e71", -"#ud c #867f27", -"aJv c #867f77", -".GR c #868020", -".2P c #86811b", -".Ml c #868126", -"#Xv c #86817d", -"#BE c #868217", -".f5 c #868221", -"#js c #868283", -"aMg c #86837a", -"djt c #86837e", -"aYS c #868581", -".s8 c #868616", -"dSf c #868622", -".Mn c #868626", -"deA c #868686", -"dah c #868688", -"d.y c #86878b", -".ZD c #86881a", -"cR3 c #86881b", -"c8p c #868825", -"dcj c #868887", -".HY c #868918", -"#Hx c #868920", -".XY c #868a1b", -"daF c #868a89", -".Qi c #868b24", -".Oe c #868c2a", -".EK c #868e21", -".Kt c #868e27", -".Mq c #868e29", -"#xH c #86961c", -".dP c #869925", -"#p4 c #869d19", -"#ZF c #869f75", -"dGy c #872903", -"dJo c #872a00", -"dL3 c #872b02", -"b88 c #872c0d", -"cN5 c #872d08", -"aDt c #872f00", -"cN4 c #872f09", -"cLG c #873102", -"caC c #87310e", -"#DT c #873116", -"#.. c #873118", -"dF8 c #873200", -"biU c #873304", -"cQK c #873307", -"a9A c #87330e", -".aQ c #873317", -"#be c #873319", -"cvI c #87331b", -"dDw c #873400", -"awQ c #873408", -"dQ. c #87340a", -"dmU c #873412", -"dUY c #873414", -"dNg c #873416", -"au9 c #873505", -".BD c #873506", -"bLU c #87350d", -"cfq c #87350f", -"#QH c #873510", -"#.# c #87351d", -"asr c #87351f", -"ayf c #873607", -"bLV c #873609", -"c0h c #87361b", -"cWm c #873704", -"cTm c #873712", -"bM4 c #873714", -"ape c #873716", -"#zY c #87371c", -"##G c #87371e", -"bN7 c #873720", -"#HU c #87380d", -"bM5 c #87380f", -"bCs c #873811", -"cbD c #873817", -"#BZ c #873819", -".KN c #87381a", -"bMN c #873900", -"bjy c #873909", -"cdR c #87390b", -"bPL c #873912", -"bIu c #873913", -".vz c #873915", -"auX c #873a04", -"ce5 c #873a0c", -".v4 c #873a0e", -"dKH c #873a10", -".#9 c #873a20", -"auY c #873b07", -"bIA c #873b0a", -"bY. c #873b17", -".vI c #873b19", -"b7T c #873b1b", -"b9P c #873c00", -"b5A c #873c05", -"bsh c #873c12", -"bIK c #873c14", -"bXc c #873c15", -"b9r c #873c1c", -"bBk c #873c1d", -".ZS c #873d00", -"co7 c #873d0c", -"bHv c #873d0e", -"bk1 c #873d10", -".xS c #873d16", -".zG c #873d18", -"b8q c #873d1a", -"#1U c #873e09", -"bTq c #873e0b", -".IW c #873e11", -"bKX c #873e13", -"bIJ c #873e15", -"bxT c #873e1b", -"#hC c #873e1e", -"cAi c #873f05", -"bHk c #873f0d", -"awJ c #873f0f", -"bn8 c #873f17", -".GY c #873f19", -"cYY c #874000", -"do5 c #874002", -"#3. c #87400a", -"#6a c #87400c", -".cq c #874012", -"bMJ c #874014", -"bvj c #874016", -"bRh c #874020", -".xW c #87410e", -"ayv c #874110", -"bDh c #87411d", -".BB c #87411f", -"cko c #874200", -"cIh c #874209", -"bts c #874218", -"aoM c #874219", -".Hn c #87421b", -".Bb c #874221", -"biY c #874304", -".qJ c #874312", -"bq2 c #874314", -".kT c #874316", -".Li c #87440d", -"b2I c #874410", -"b1s c #874417", -"bn7 c #874419", -"bO# c #87441a", -"cVK c #874508", -".yP c #87450b", -"bqU c #874513", -"aqw c #874515", -"#hD c #874525", -"do7 c #87460c", -"alj c #87460e", -"asg c #874610", -"cNv c #87461c", -"cGL c #87461e", -".mu c #874620", -"atT c #874700", -".v9 c #874717", -"bn6 c #874719", -".kJ c #87471b", -"by4 c #874721", -"cxE c #87472b", -"cO8 c #874805", -"bZC c #874812", -".Na c #874813", -"bq3 c #874815", -"bZa c #87481c", -"b0q c #87481d", -"bjD c #874900", -"b4K c #87490e", -"dOq c #874916", -".xX c #87491a", -".P# c #874a1b", -"bEf c #874a1d", -"#QL c #874a1e", -"avi c #874b0c", -"bsA c #874b17", -"c6V c #874b19", -"ahe c #874c06", -"aw8 c #874c08", -"c0m c #874c0a", -"#L6 c #874c12", -".Hx c #874c14", -"c5u c #874c20", -".RB c #874c24", -".RD c #874c2a", -"bl. c #874d0e", -"cVq c #874d1f", -"cZv c #874d25", -".dt c #874e00", -"cz9 c #874e07", -"dAV c #874e0b", -"ble c #874e21", -"ct7 c #874f02", -"atG c #874f12", -"cnk c #874f16", -"cmp c #874f1c", -"#Za c #874f1e", -".oD c #874f20", -"dHn c #875018", -"cUk c #87501a", -"brA c #875122", -"bmJ c #87521c", -"bjU c #875317", -"bmP c #875319", -"bMH c #875323", -"#F4 c #875412", -"cbG c #87541b", -"blf c #87541f", -"cy3 c #875516", -"ay5 c #875522", -"bmK c #87561b", -"byW c #875636", -"#xx c #87570d", -"bX0 c #875719", -"#IP c #875726", -"djP c #875729", -"dPY c #875800", -"cmX c #875808", -"ckn c #87590b", -"bgv c #87591b", -"bu5 c #875927", -".1w c #875a09", -"dLr c #875a16", -"djy c #875b2a", -"boD c #875c18", -"bHK c #875c27", -"bDH c #875e1c", -"bGD c #875e28", -".MQ c #875e3e", -".K0 c #875e40", -"bCE c #875f1a", -"b1T c #876025", -"bY8 c #876027", -"bna c #876118", -"ckK c #87611a", -"bEL c #876120", -"bnF c #876212", -"cys c #87630b", -"##p c #87630f", -"#Wa c #876315", -"bZ1 c #876325", -"#h. c #876400", -"cuy c #876408", -"axd c #876413", -"bwH c #876422", -"bTJ c #87651b", -"a5G c #876538", -"aum c #876607", -"dN7 c #876615", -"ccH c #876617", -".HC c #876619", -"brk c #87671a", -"bze c #87671e", -"cCT c #876815", -"blN c #876825", -"bvq c #876827", -"#fC c #876907", -"cmB c #876a1e", -"bW4 c #876a26", -"b0Y c #876a28", -"bz# c #876b2a", -".ey c #876b2c", -"bVZ c #876c1f", -"caH c #876d0e", -"bV0 c #876d22", -"ae3 c #876d5e", -".2N c #876e1c", -"dM7 c #876f15", -".Oq c #876f17", -"bue c #876f25", -"ckJ c #877022", -"bpX c #87702a", -"c69 c #877060", -"cD3 c #87711c", -".KK c #877219", -"#5u c #877261", -".Ok c #877310", -"bmb c #87731a", -"css c #87731c", -".nR c #87751f", -"ceF c #87772c", -"c#Y c #877823", -"#XP c #877918", -"aDU c #87796c", -".72 c #877a1a", -"cGD c #877a2c", -".HL c #877c10", -".HO c #877c12", -"aDY c #877c7a", -"bdo c #877d24", -"aE0 c #877d74", -".6n c #877e19", -"csr c #877e23", -"cvr c #877e3d", -".HK c #877f10", -".63 c #877f74", -".Kp c #878121", -".pA c #878224", -".Mm c #878226", -"aEi c #878286", -"cmY c #878322", -".BN c #878339", -"aYY c #87837a", -".Kq c #878423", -"#Rj c #87847b", -"#vM c #87861a", -".CM c #878725", -"d.V c #878787", -"bi7 c #878820", -".CN c #878822", -".V5 c #87891b", -"dcl c #878988", -"#Oj c #878a53", -".XW c #878b1c", -".U# c #878b1d", -"daG c #878b8c", -"#By c #878c18", -"#Jy c #878c26", -".Oa c #878c32", -".EL c #878d21", -".Qg c #878d2b", -".#K c #878e1c", -".nx c #878e26", -".Ku c #878e27", -"#p3 c #878f16", -".U. c #879023", -".Sc c #879025", -".Sb c #879027", -".F5 c #87951a", -"#xM c #879923", -"c3E c #87992b", -"cTx c #879d1e", -"#00 c #87a373", -"dGA c #882400", -"dGH c #882600", -"cSJ c #882b02", -"cKL c #882b0a", -"cKM c #882b0c", -"cTR c #882c05", -"azC c #882d00", -"aID c #882e0b", -"b87 c #882e0c", -"dIB c #882f03", -"cIB c #882f05", -"cNp c #882f07", -"#DQ c #882f0f", -"dJ8 c #883000", -"dL. c #88300a", -".8u c #883018", -"arB c #883104", -"ahq c #883116", -"auH c #883200", -"bD4 c #883201", -"bE3 c #883203", -"cuO c #88320f", -"cZ8 c #883211", -"#QG c #88330a", -"#BR c #883314", -"aq0 c #883316", -"ccq c #883405", -"awp c #883406", -"#LV c #883408", -"bKI c #88340f", -"b2X c #883410", -"QtI c #883418", -"afy c #88341a", -"bE0 c #883501", -"a04 c #883509", -"b6q c #88350b", -"ccX c #88350d", -"dNh c #883513", -"cZi c #883606", -"b1A c #883607", -"#JR c #88360e", -"bUu c #883610", -"#Ww c #883611", -"ajk c #883620", -"cKU c #883700", -"dhs c #883708", -"bJP c #88370a", -"bUv c #88370c", -"bO7 c #883719", -".xz c #88371a", -"#BV c #88371c", -"au8 c #883807", -"bCt c #883815", -"bN8 c #883817", -"byF c #88381f", -".zr c #883821", -"bI7 c #88390e", -".Da c #883910", -"#FX c #883912", -"aIE c #883918", -".xy c #88391a", -"cI7 c #883a00", -"bHj c #883a09", -"bTP c #883a0c", -"bZ5 c #883a13", -"bQi c #883a14", -"bJV c #883a16", -".#8 c #883a23", -"chx c #883b00", -"awV c #883b07", -"apb c #883b0d", -"c#u c #883b0f", -"#x5 c #883b11", -".Bt c #883b1d", -"bA3 c #883b1f", -"cMU c #883c02", -".xV c #883c08", -"#JV c #883c0a", -"bEy c #883c0b", -"cj5 c #883c18", -".ch c #883c1a", -"ay# c #883c1c", -"ax3 c #883d13", -".Ho c #883d15", -"bpg c #883d16", -".DA c #883d1d", -"dqC c #883e00", -".i2 c #883e0d", -"bM8 c #883e0f", -"#lV c #883e11", -"bqZ c #883e17", -"bzW c #883e19", -"cwu c #883e1b", -".zE c #883e21", -"bUx c #883f0a", -"bSl c #883f0c", -"bwT c #883f12", -"#3j c #883f14", -"bqQ c #883f16", -"cfv c #883f1c", -"bvk c #88400e", -"bQg c #884010", -"b0n c #884018", -"bmj c #88401a", -"#vR c #884100", -"b9M c #884101", -"avR c #88410b", -"bGg c #88410d", -"bQf c #884113", -".C7 c #884115", -"bED c #884117", -"Qtc c #88412b", -"cs7 c #884200", -"doG c #884206", -"b8W c #884207", -"bO. c #88420e", -"#u. c #88420f", -".qe c #884211", -"bqW c #88421e", -"bPc c #884319", -"bpz c #88431a", -"bSq c #88431c", -"bSp c #884322", -"bYB c #884413", -"bIO c #884415", -"cjW c #884417", -"cOl c #884501", -".Hu c #88450e", -"adK c #884510", -"bDq c #884511", -"ch4 c #884518", -"bYx c #88451a", -"bpy c #88451b", -"b3q c #884609", -"bFi c #884614", -"bsB c #884616", -"cO7 c #884703", -"#7K c #88470f", -"b1v c #884711", -".mS c #88471d", -"bjC c #884800", -"cOi c #884801", -"bTU c #88480b", -".NY c #884906", -"dHt c #884914", -"btn c #884916", -"cPD c #88491d", -"bI2 c #88491e", -"cVL c #884a0d", -"cSb c #884a17", -"bC9 c #884a19", -"bv2 c #884a1b", -"bD# c #884a21", -"#GU c #884b08", -"#H2 c #884b12", -".bw c #884b14", -"bwS c #884b15", -".mK c #884b1e", -"bj1 c #884c04", -"ayM c #884c06", -"dKB c #884c0e", -"axj c #884c10", -"bq9 c #884c16", -".pN c #884c18", -"bX9 c #884c1a", -"atH c #884d11", -"b0U c #884d13", -"cEr c #884e04", -"cg0 c #884e0f", -"bpc c #884e1c", -".9P c #884e1e", -"buB c #884e20", -"cen c #884f18", -"dSk c #885017", -"ai9 c #885100", -"b1c c #885101", -"bjW c #885111", -"bxB c #885118", -"#x9 c #885208", -"dJL c #88520c", -"ayR c #885212", -"#lY c #885216", -"bMt c #885224", -".y9 c #885226", -"clM c #885307", -"dPZ c #885401", -".yE c #885408", -"cD4 c #88540b", -"b3O c #885418", -"dP6 c #88551c", -"bxJ c #885520", -".JJ c #885600", -"bTW c #88560d", -"buk c #885617", -".Ou c #88570b", -"boc c #88571c", -".pE c #885804", -"avr c #88580e", -"bj2 c #885810", -"bim c #88581a", -"dDI c #885827", -"dkd c #885828", -"dg7 c #885841", -".We c #88590b", -"dO0 c #885911", -"cnm c #885913", -"c2a c #885915", -"dPe c #885923", -"bwp c #88592f", -"bnG c #885a0c", -"bu6 c #885a28", -"byV c #885a38", -"ahc c #885b08", -"aqj c #885b1a", -"blk c #885b20", -"dIG c #885c11", -"dP4 c #885c13", -"boE c #885c15", -"cHu c #885c1b", -"bq8 c #885c1f", -"dG# c #885d01", -"bv# c #885d19", -"dke c #885d2a", -"apZ c #885e16", -"#pY c #885f0f", -"bmN c #88601a", -".sn c #886022", -".pY c #88603c", -"cjf c #886106", -"buh c #88611c", -"cwJ c #886126", -".PY c #886128", -".t6 c #88612a", -"#S2 c #88620f", -"dPO c #886217", -"btU c #886219", -"bnb c #88641a", -"bPv c #88642a", -"cuz c #886501", -"#S4 c #886507", -"dM8 c #886514", -"#RC c #886604", -"bLq c #88661c", -"bx5 c #88661e", -"bvp c #886627", -"bVY c #88681d", -".28 c #88690c", -"#Uw c #88690f", -"bwJ c #886928", -"bwI c #886929", -"cbJ c #886a0a", -"csR c #886a14", -"bzc c #886b25", -"bDL c #886b29", -"#cn c #886c08", -"crn c #886c18", -"cjK c #886c22", -"dQh c #886c23", -"ccG c #886d16", -"bSL c #886e23", -"bW3 c #886e24", -".PQ c #886f12", -"bX3 c #887026", -".Ge c #887109", -".nS c #887123", -".5E c #88716b", -"dKn c #88720c", -"bSX c #887227", -".f6 c #887320", -"#lq c #887411", -".KJ c #88741b", -".Ie c #88741e", -"cbL c #88742b", -"aFf c #887473", -".Sg c #88750e", -"ctr c #887620", -"ctq c #887622", -".yX c #88762c", -"dyJ c #887668", -"c9R c #887676", -"dQU c #88771b", -"aSL c #887770", -"c#P c #887818", -"bhj c #887821", -"cjJ c #88782a", -"ade c #887869", -"aju c #88791a", -".2O c #88791c", -"#ci c #887926", -"#DF c #887a17", -".9I c #887a19", -"cqh c #887a22", -"cuo c #887a2f", -"#.B c #887b72", -"#DE c #887c18", -"#F7 c #887c2a", -"aER c #887d79", -".d2 c #887f20", -".Ko c #887f22", -"aed c #887f70", -"cxj c #88801e", -"dSi c #888129", -".RN c #888133", -"aDH c #88816f", -"aEN c #888177", -"#z9 c #888220", -"c8N c #888483", -".1e c #88851a", -"#LC c #888524", -"dSc c #888622", -".CO c #88871d", -"aYf c #888783", -"c8O c #88878c", -".uO c #888818", -".Oh c #888824", -"ddA c #888888", -"#ma c #88897b", -".ZF c #888a1c", -"dck c #888a89", -".HZ c #888b18", -".Iy c #888b24", -".S# c #888d29", -".V4 c #888e20", -".Mr c #888e2a", -".Sa c #888f28", -"c6L c #889029", -"#I# c #88965b", -".#L c #88981e", -"#tJ c #889b1b", -"cSY c #889b1e", -"#Ym c #889c77", -"acx c #88b86c", -"aHG c #892600", -"dJq c #892700", -"cSK c #892900", -"dGv c #892a00", -"cNq c #892b05", -"dID c #892c01", -"cJK c #892c0d", -"cTj c #892d04", -"afx c #892e13", -"cNo c #892f0a", -"cLy c #892f0c", -"cP6 c #893004", -"cVf c #893006", -"b86 c #89300e", -"#FS c #893010", -"cLJ c #893100", -"cOK c #89310b", -"bF9 c #893205", -"ac. c #893216", -"adF c #893217", -"cHq c #893300", -"ccr c #893302", -"#Tl c #893310", -"ale c #89331a", -"#JQ c #89340b", -".Db c #89340d", -"b85 c #89340f", -"cZj c #893506", -"b1B c #893507", -"aGB c #893509", -"b84 c #893510", -"#BQ c #893513", -"QtJ c #893519", -".8v c #89351d", -"dLE c #89360a", -"bKJ c #89360c", -"cg7 c #89360e", -"bRa c #893614", -"b3X c #893616", -"asZ c #893705", -"bzp c #893707", -"cZh c #893708", -"cf3 c #89370f", -"bO8 c #893711", -"bN9 c #893712", -"bF7 c #893801", -".zM c #893809", -"byb c #89380b", -"a0b c #89380d", -"am2 c #89381a", -"bR# c #89381b", -"bP8 c #89381d", -"cCu c #893904", -"cWl c #893906", -".e1 c #893908", -"bUt c #893914", -"#DX c #893916", -"#10 c #893918", -"byG c #893922", -"cJ3 c #893a02", -"bKa c #893a0f", -".xt c #893a13", -"ctK c #893a1b", -"cbn c #893b0a", -".g4 c #893b0b", -".xT c #893b0d", -"bHU c #893b14", -"azs c #893b15", -".DB c #893b17", -"bOR c #893c06", -"bL6 c #893c08", -"axG c #893c0e", -".A9 c #893c10", -"aM4 c #893c12", -"bYF c #893d03", -"dnY c #893d09", -"awU c #893d0b", -"cdV c #893d0c", -"ch5 c #893d19", -".IS c #893d1d", -"dGt c #893e04", -"bjz c #893e05", -"aBw c #893e14", -".zL c #893e16", -"bTR c #893e17", -".Bu c #893e1f", -".ci c #893e21", -"a13 c #893e27", -"cX9 c #893f00", -"bkj c #893f02", -"bt2 c #893f0e", -".xs c #893f10", -"bra c #893f12", -"bqY c #893f18", -".tX c #893f1a", -".bB c #893f1c", -"bzE c #894009", -"bon c #89400b", -".v7 c #89400d", -".sz c #894013", -"bpo c #894015", -"bq0 c #894017", -"avZ c #89401d", -".G6 c #89401f", -".xN c #894020", -"dol c #894106", -"bre c #894107", -"ayD c #89410f", -"br8 c #894111", -"az7 c #894119", -"bqX c #89411b", -"cZo c #894200", -"cYZ c #894202", -"bjA c #894204", -"bQc c #89420c", -"bPa c #89420e", -".ts c #894214", -"bq1 c #894216", -"bEx c #894218", -".xM c #894222", -"cZU c #894305", -"aqv c #89430f", -"bMg c #894310", -"aBo c #894312", -"bqV c #89431f", -"c.S c #894401", -"cIo c #894403", -"avv c #894409", -"c2c c #89440d", -".qH c #89441a", -"c6X c #89441d", -".#y c #894423", -"blQ c #894506", -"bSS c #894508", -"bYC c #894514", -"cK9 c #894516", -"bPb c #894518", -".bE c #89451e", -".XN c #894600", -"bjB c #894602", -".w3 c #89460f", -"ayI c #894611", -"dIi c #894612", -"bpx c #894619", -"bZb c #89461b", -"bC# c #89461c", -"bfi c #894700", -"aqT c #89470a", -"bmX c #89470d", -"br. c #894713", -"bYA c #894715", -"bXa c #894717", -"b6Z c #894804", -"cOn c #894808", -"b1w c #894812", -".uk c #894919", -"bHP c #89491b", -"cZY c #89491d", -"#r5 c #894a05", -"bST c #894a07", -"bzK c #894a14", -"bn5 c #894a15", -"bxi c #894a17", -"aDo c #894a1e", -"bv3 c #894a21", -"bk8 c #894b00", -"b4R c #894b0e", -".Hv c #894b12", -"#QM c #894b18", -"br3 c #894b1c", -"bI1 c #894b26", -"bmA c #894c09", -"#GS c #894c0b", -"bmB c #894c13", -"b4J c #894c15", -"bvU c #894c1d", -".yF c #894d04", -"b2D c #894d0e", -"b8Q c #894d0f", -"dRp c #894d19", -"cOq c #894e08", -"afm c #894e0a", -"#B3 c #894e0c", -"cVe c #894e16", -"cOh c #894f05", -"afF c #894f06", -"blP c #894f10", -"bBe c #894f1f", -"cAg c #895009", -"c.X c #89500b", -"bX. c #895019", -"#vQ c #895104", -"ahv c #895107", -"#Zb c #895116", -"bsu c #895118", -"bz4 c #89511e", -"bCG c #89520f", -"aZc c #895234", -"bVP c #895309", -"bBz c #89530d", -"cKy c #895502", -"#z6 c #89550a", -"bwR c #895519", -"aB# c #895523", -"an. c #895605", -"cgQ c #895615", -".DJ c #895621", -"bRx c #895718", -".kC c #895726", -"bpR c #89580b", -"axW c #895815", -"dP3 c #89590d", -"cjO c #89590f", -".rQ c #895933", -"dPX c #895a02", -".H9 c #895a0a", -"bp4 c #895a0c", -"bNr c #895a26", -"#O8 c #895b03", -"avq c #895b0e", -".RW c #895b29", -"btS c #895c18", -".21 c #895c19", -"dPm c #895d00", -"boF c #895d12", -"bod c #895d1c", -".JE c #895e00", -"bwG c #895e19", -"#IT c #895e29", -".#1 c #895e31", -"b9I c #895f13", -"bq7 c #896022", -".#0 c #896028", -"ajt c #89610c", -"bW0 c #89611c", -"cvz c #896123", -".AX c #896227", -".JA c #896300", -".MD c #896312", -"bS0 c #896322", -"cqj c #896414", -"bwO c #89641e", -"bDM c #896420", -"ckN c #89651b", -"#Qm c #896600", -".Gd c #896602", -"cst c #896614", -"ayV c #896624", -".AK c #89662e", -".Cg c #896703", -"bKg c #89671d", -"bz. c #896727", -"bX5 c #89672a", -"dRx c #896807", -"#G8 c #896817", -"ccL c #896823", -"ctw c #896914", -"bm4 c #89691e", -"blB c #896920", -"#lL c #896a0f", -".So c #896a1a", -"dQ8 c #896b11", -"ct6 c #896b15", -".I3 c #896b49", -"a6E c #896b60", -"dKo c #896c08", -"#lr c #896c0e", -"clI c #896c20", -"bsO c #896c26", -"bpY c #896c28", -"bx1 c #896c2a", -"ayX c #896e27", -"bza c #896e2b", -"#j5 c #896f10", -"bW2 c #896f24", -"#d3 c #897013", -"cvE c #89710d", -".KL c #897119", -".Al c #89720c", -"#cl c #897214", -".Ef c #897303", -".NR c #897610", -"c5A c #89776d", -"clD c #897828", -"Qtl c #897830", -"c7. c #89786e", -"#d0 c #897a27", -"dSj c #897a29", -"aDT c #897a67", -"aFe c #897a75", -"dB4 c #897b70", -"aDZ c #897b78", -"cpo c #897d27", -"#aK c #897d29", -"#XS c #897e15", -"dPL c #897f1e", -"#eX c #897f7d", -".4E c #89801b", -".6l c #89811e", -".5t c #898375", -"#h3 c #898383", -".2U c #89841c", -".4F c #898420", -".IO c #898426", -"#2L c #89847e", -".1d c #898519", -"cSr c #89851a", -"#B7 c #898522", -"dSg c #898524", -".ZC c #898718", -".ys c #89871a", -"#j3 c #898723", -"c8P c #89888e", -".XZ c #89891b", -".R9 c #898927", -"ddB c #898989", -".Od c #898a2c", -"d.B c #898a8c", -"c8X c #898a8e", -".R8 c #898b28", -".ly c #898b2a", -"dcm c #898b8a", -".EJ c #898c23", -".GB c #898d1f", -".Qf c #898d2e", -"#Ip c #898d52", -"daH c #898d8e", -"#oS c #898e56", -".pp c #898f21", -".Sd c #898f25", -"#op c #89921d", -"#om c #899318", -"#on c #899a18", -"cTy c #89a01e", -"dGG c #8a2700", -"azD c #8a2800", -"cKJ c #8a2906", -"cSc c #8a2a00", -"dwj c #8a2a04", -"aXS c #8a2a11", -"cJL c #8a2b0d", -"a9z c #8a2c06", -"cP5 c #8a2d01", -"cN6 c #8a2d04", -"cKK c #8a2d0c", -"dIC c #8a2e05", -"cOL c #8a2e07", -"dL# c #8a2e09", -"dGu c #8a2f00", -"cP7 c #8a2f02", -"dsP c #8a3000", -"cQL c #8a300b", -"ca. c #8a300d", -"#FR c #8a300e", -"cE. c #8a3100", -"#RX c #8a3109", -"c#b c #8a310f", -"bD3 c #8a3202", -"cQG c #8a3204", -"cTi c #8a320a", -"c0. c #8a320e", -"ajj c #8a321a", -"auI c #8a3300", -"cRO c #8a3308", -"cbv c #8a3400", -"dCd c #8a3403", -"b1X c #8a3405", -"b97 c #8a3411", -"aav c #8a3413", -"auS c #8a3500", -"cdX c #8a350c", -"b74 c #8a350e", -"#BO c #8a3510", -"#FT c #8a3516", -"bE4 c #8a3607", -"cQH c #8a3608", -"a.S c #8a3611", -"c#a c #8a3612", -"bKH c #8a3614", -"bD1 c #8a3703", -"bUB c #8a3705", -"bPe c #8a370b", -"bRb c #8a370d", -"bQ. c #8a370f", -"bP9 c #8a3717", -"bCu c #8a3719", -"cbu c #8a3800", -".cW c #8a3808", -"bTn c #8a3809", -".IY c #8a3810", -"cdj c #8a3812", -"b7S c #8a3813", -"bzU c #8a3822", -"b9n c #8a3901", -"cIf c #8a3902", -"bAx c #8a3904", -"#0G c #8a390a", -".G2 c #8a390c", -"bDx c #8a390e", -"#BX c #8a391c", -"bF5 c #8a3a00", -"dE9 c #8a3a05", -"biP c #8a3a07", -"bVG c #8a3a09", -"apd c #8a3a15", -"am1 c #8a3a17", -"ajl c #8a3a21", -"awE c #8a3b00", -"cgu c #8a3b02", -"bLk c #8a3b10", -"aoU c #8a3b12", -"bS4 c #8a3b14", -"b7U c #8a3b1a", -"bPd c #8a3c0b", -"bUG c #8a3c0c", -"bWB c #8a3c0e", -"bIL c #8a3c15", -".Fq c #8a3c16", -".vH c #8a3c18", -"b7t c #8a3d05", -"cbo c #8a3d07", -"#0F c #8a3d09", -".G1 c #8a3d0f", -"cb5 c #8a3d11", -"bFG c #8a3d13", -"cPa c #8a3e02", -"cOu c #8a3e04", -"cgv c #8a3e0a", -"bQh c #8a3e0c", -"bmt c #8a3e0d", -"cne c #8a3e1a", -"bAN c #8a3f05", -"cb6 c #8a3f15", -"bEC c #8a3f17", -"bB9 c #8a3f1f", -"cO1 c #8a4001", -"cXk c #8a4003", -"bwc c #8a400f", -"bKS c #8a4011", -"btD c #8a4013", -".gv c #8a401b", -"b8p c #8a401d", -"cgo c #8a410a", -"bG# c #8a410c", -"#no c #8a410e", -"aoL c #8a4114", -".Jj c #8a4116", -"bRi c #8a4121", -"#0E c #8a4207", -"bAw c #8a4208", -".kU c #8a4210", -"bnO c #8a4212", -"#DZ c #8a421a", -".E3 c #8a421c", -"cyH c #8a4301", -"#r6 c #8a4303", -"cOt c #8a4305", -"bG1 c #8a430b", -"bFh c #8a430d", -"bQd c #8a430f", -"bKR c #8a4315", -".C6 c #8a4317", -"aAq c #8a4319", -".Dz c #8a4323", -".XM c #8a4400", -"doH c #8a4406", -"dpq c #8a4408", -"cVJ c #8a4409", -"azI c #8a4410", -"bOl c #8a4411", -".mW c #8a4413", -"csQ c #8a4500", -".Tu c #8a4502", -"c2b c #8a450a", -"b5B c #8a450c", -"cWt c #8a450e", -"bFD c #8a451b", -"btr c #8a451c", -"bAa c #8a4526", -".Tt c #8a4600", -"ayF c #8a4615", -".mT c #8a4617", -"b1x c #8a4710", -"b1q c #8a4712", -".qK c #8a4713", -".oN c #8a471c", -"b4Q c #8a480b", -"amj c #8a480e", -"bEe c #8a4814", -"bHQ c #8a4816", -".Pa c #8a4818", -"czT c #8a4828", -"czO c #8a4905", -"cPQ c #8a4907", -"dQd c #8a490f", -"cyN c #8a492b", -"bzl c #8a4a0d", -"buN c #8a4a1c", -".Qv c #8a4b04", -"#81 c #8a4b06", -"cP# c #8a4b08", -"bto c #8a4b20", -"buO c #8a4b22", -"#xT c #8a4c01", -"bUV c #8a4c11", -"c0n c #8a4c1b", -"#GT c #8a4d0a", -"bls c #8a4d0e", -".Hw c #8a4d14", -"#Ps c #8a4d16", -".AI c #8a4d1e", -"cNF c #8a4e05", -"cOr c #8a4e08", -"dSD c #8a4e18", -"bq4 c #8a4e1a", -"b1d c #8a4f00", -"#Ry c #8a4f09", -"cz8 c #8a4f0b", -"#J2 c #8a4f15", -"ck0 c #8a5010", -"amk c #8a5011", -"c8y c #8a5022", -"dKE c #8a502a", -".1r c #8a5100", -"bVQ c #8a510a", -".kG c #8a511a", -"bvB c #8a511c", -"d.b c #8a5124", -".Fy c #8a5219", -"b0f c #8a5303", -"cyX c #8a5310", -"byS c #8a531d", -"cmH c #8a540a", -"biZ c #8a540c", -"abY c #8a540e", -"c#K c #8a5416", -".Jv c #8a5507", -".#x c #8a552b", -".mH c #8a561a", -"bV7 c #8a561c", -".JK c #8a5704", -"b0e c #8a5706", -"ckS c #8a5708", -"cZT c #8a580f", -"coO c #8a590c", -"cfZ c #8a590d", -"dMh c #8a5914", -"cy5 c #8a5916", -"aEE c #8a5917", -".HA c #8a591e", -"#XK c #8a591f", -"bri c #8a5a0e", -"cql c #8a5a10", -"dOt c #8a5a18", -"#H4 c #8a5a1a", -"bmO c #8a5a1c", -".X9 c #8a5b0b", -"akY c #8a5b0d", -"cnt c #8a5b15", -"#Qo c #8a5c00", -"avp c #8a5c0f", -".JP c #8a5d0a", -"#zu c #8a5d0c", -"aoz c #8a5d19", -"dKv c #8a5d1a", -".rP c #8a5d34", -"cjk c #8a5e07", -"bpS c #8a5e13", -"cjM c #8a5e17", -"blO c #8a5e1d", -"cxV c #8a5e1f", -"b8M c #8a5f10", -"bBy c #8a5f1a", -".JD c #8a6000", -".ME c #8a600e", -"bU3 c #8a6016", -"bsz c #8a6026", -".JQ c #8a6109", -"cZS c #8a6112", -"blj c #8a6121", -"btT c #8a621a", -"bt8 c #8a621d", -"cmK c #8a6314", -"cb0 c #8a631e", -".4L c #8a6322", -"clO c #8a6413", -"a.3 c #8a6419", -"bli c #8a641d", -".AW c #8a6423", -"ce0 c #8a6514", -"cvA c #8a651f", -"bvx c #8a6521", -"bp8 c #8a6530", -"#Jj c #8a6618", -"bvc c #8a661c", -".sk c #8a672f", -"#I3 c #8a6731", -"aC1 c #8a673f", -"clc c #8a680f", -"dPg c #8a681e", -"#fE c #8a6900", -"c0S c #8a691a", -"bH4 c #8a6924", -"#G9 c #8a6a17", -"bAo c #8a6a21", -"bX4 c #8a6b2a", -"c31 c #8a6b59", -".4R c #8a6c0c", -"bx0 c #8a6c2c", -"dPF c #8a6d09", -"bzb c #8a6d29", -"bnE c #8a6e1b", -".3c c #8a6f18", -"c0O c #8a7117", -"dQW c #8a7121", -".FD c #8a7131", -"bX2 c #8a7327", -".Om c #8a740f", -"bT0 c #8a7429", -".y1 c #8a751c", -"#66 c #8a7562", -"#DG c #8a7617", -"crN c #8a761d", -"#FC c #8a7718", -"cqe c #8a7728", -".Ql c #8a7812", -"#j4 c #8a7816", -"cnv c #8a7826", -"#BG c #8a7a1a", -"a0y c #8a7a63", -"cbW c #8a7b16", -"cqf c #8a7b28", -"aD0 c #8a7b76", -".HN c #8a7c0f", -"#mN c #8a7d15", -".9H c #8a7d1f", -"aE1 c #8a7d75", -"cox c #8a7e2a", -".6H c #8a7f25", -"c9b c #8a7f85", -"#lp c #8a8118", -"#BF c #8a811c", -"c8M c #8a817a", -"drD c #8a817c", -".6o c #8a821f", -"a2t c #8a827f", -".2T c #8a8319", -"#NE c #8a8424", -"cgK c #8a8521", -".IP c #8a8527", -".CL c #8a8529", -"#p9 c #8a8623", -"aWm c #8a867b", -"aTH c #8a867d", -"#ol c #8a8716", -"aa1 c #8a8774", -"dfI c #8a8782", -".uP c #8a8819", -".Qj c #8a8821", -"c8Q c #8a888d", -".bL c #8a891f", -".Qb c #8a892d", -"aMu c #8a8987", -".H0 c #8a8a18", -".rg c #8a8a1c", -".S. c #8a8a28", -".Mk c #8a8a32", -"#H8 c #8a8a44", -"ddC c #8a8a8a", -"d.C c #8a8b8d", -".GG c #8a8c21", -".Kv c #8a8d26", -"#74 c #8a8d7a", -"#xN c #8a8e1d", -"c8Z c #8a8e91", -".T9 c #8a9127", -".dO c #8a9225", -"#zI c #8a9423", -"#H9 c #8a944f", -"#I. c #8a9958", -"#WM c #8a9978", -"ad6 c #8aba66", -"dGB c #8b2401", -"cKP c #8b270d", -"dGw c #8b2800", -"cHc c #8b2808", -"cKO c #8b290e", -"dGx c #8b2a00", -"cPn c #8b2b01", -"b89 c #8b2b03", -"cIU c #8b2c0c", -"cJM c #8b2c10", -"dUX c #8b2d14", -"dJD c #8b2e00", -"cPo c #8b2e02", -"cN7 c #8b2e03", -"cLz c #8b2e0c", -"cJJ c #8b2e0d", -"cOM c #8b2f06", -"cIA c #8b2f08", -"bP6 c #8b3001", -"b99 c #8b3011", -"adE c #8b3015", -"#JH c #8b3100", -"#HQ c #8b310c", -"#DP c #8b310f", -"bR. c #8b3206", -"cdn c #8b3208", -"cdo c #8b320a", -"b98 c #8b3212", -"dSw c #8b3214", -"bP7 c #8b3303", -"b0B c #8b3305", -"b2Y c #8b330b", -"biS c #8b330d", -"#HR c #8b330f", -"aug c #8b331b", -"bCM c #8b3400", -"b6r c #8b3409", -"bJN c #8b3416", -"ald c #8b3418", -"apT c #8b3502", -"ayB c #8b3506", -"#BP c #8b3512", -"azT c #8b3514", -"bJO c #8b360f", -"b3Y c #8b3611", -"bHa c #8b3708", -"cga c #8b3709", -"biR c #8b370b", -"cqt c #8b3712", -"#HS c #8b3713", -"cZ7 c #8b3715", -"av. c #8b3806", -"bLj c #8b380c", -"#9b c #8b380e", -".eu c #8b3810", -"ay. c #8b3816", -"bKG c #8b3818", -"bJL c #8b381a", -"cj6 c #8b3900", -"cKV c #8b3901", -"as0 c #8b3907", -"biQ c #8b3909", -"bQ# c #8b390a", -"cia c #8b3911", -"awl c #8b3913", -"#9k c #8b3914", -"dER c #8b3a00", -"bEY c #8b3a02", -"bEZ c #8b3a03", -"bUH c #8b3a0b", -"b6p c #8b3a0d", -".zi c #8b3a0f", -"c5q c #8b3a1d", -"bzS c #8b3a1f", -"bM9 c #8b3b06", -"cWk c #8b3b08", -"bTu c #8b3b0a", -"b6d c #8b3b16", -"bUs c #8b3b18", -"c0i c #8b3b22", -".Y# c #8b3c00", -".Hp c #8b3c11", -"cl0 c #8b3c13", -"bEB c #8b3c15", -"#9j c #8b3c1d", -".zF c #8b3c1e", -".Um c #8b3d00", -"as3 c #8b3d0c", -"bk2 c #8b3d0d", -".ai c #8b3d0f", -"bHV c #8b3d16", -"bg2 c #8b3d17", -"b8X c #8b3d19", -"aqU c #8b3e06", -".Nd c #8b3e08", -"awI c #8b3e0a", -".Ri c #8b3e10", -"#7J c #8b3e12", -"bxU c #8b3e14", -"bBP c #8b3f03", -"dOh c #8b3f0b", -"bwe c #8b3f0d", -"#v7 c #8b3f0e", -"azY c #8b3f1b", -".Bc c #8b3f1f", -"c.v c #8b4007", -"cY2 c #8b4009", -"#z3 c #8b4016", -"bA5 c #8b4018", -"bGM c #8b4019", -"#xU c #8b4100", -"ckq c #8b4102", -"bRI c #8b4104", -".xr c #8b4110", -"bM. c #8b4112", -"br7 c #8b4114", -"bnL c #8b411a", -"cDe c #8b411c", -".GX c #8b411e", -"aqu c #8b420b", -"bGa c #8b420d", -"bmm c #8b420f", -"azz c #8b4215", -"cbC c #8b4217", -"axM c #8b4219", -"#oN c #8b4300", -"bt3 c #8b4309", -"bMh c #8b4311", -"bFE c #8b4313", -".S7 c #8b431b", -"c8z c #8b431d", -".NZ c #8b4402", -"azb c #8b4404", -"b3N c #8b440c", -".mV c #8b440e", -"bpj c #8b4410", -"bQe c #8b4416", -"b1n c #8b4418", -"bCa c #8b441a", -"at7 c #8b450a", -"b1u c #8b4511", -".mU c #8b4512", -"b7I c #8b4601", -"cPR c #8b4605", -".Lj c #8b460d", -"cVG c #8b460f", -"azx c #8b461d", -"c.R c #8b4706", -".XL c #8b470a", -"b5z c #8b4716", -"bGH c #8b4718", -".oM c #8b4720", -".Ax c #8b4801", -"cNG c #8b4802", -"bqT c #8b4811", -"bC8 c #8b4813", -"djW c #8b4814", -"cEc c #8b481b", -"cDb c #8b481d", -".Tv c #8b490c", -"dMm c #8b490d", -"#u# c #8b490f", -"bT7 c #8b4915", -"bw8 c #8b4917", -"dE8 c #8b4a08", -"btm c #8b4a10", -"bHO c #8b4a22", -"cyM c #8b4a2c", -"cpy c #8b4b03", -"cFe c #8b4b04", -"asI c #8b4b0b", -"dwu c #8b4b1b", -"aAe c #8b4b1d", -".Fx c #8b4c16", -"bv1 c #8b4c17", -"buC c #8b4c20", -"aoF c #8b4d00", -"#9m c #8b4d12", -"dI1 c #8b4d1c", -"bvV c #8b4d1e", -"#ID c #8b4d28", -"blq c #8b4e15", -"bX# c #8b4e18", -"#2Y c #8b4f07", -"#Rx c #8b4f11", -"bqA c #8b4f1d", -".1v c #8b5002", -"dVC c #8b500e", -"bRw c #8b5014", -"bS2 c #8b5016", -".hB c #8b5107", -"clT c #8b5111", -"ci0 c #8b5112", -"dP0 c #8b5201", -"#w. c #8b520b", -"bVO c #8b5308", -"brh c #8b5309", -"bx9 c #8b5316", -"b16 c #8b5402", -"b2E c #8b5411", -"an9 c #8b5413", -"bjV c #8b5517", -".iJ c #8b5526", -"aAt c #8b5527", -"#zM c #8b5606", -"b0d c #8b5608", -"c0E c #8b560a", -".wS c #8b570b", -".JI c #8b5800", -"bUg c #8b5807", -"bsH c #8b5912", -".Gb c #8b5a0d", -"bp3 c #8b5a0e", -"c.Y c #8b5a15", -"bvA c #8b5a1f", -"bxM c #8b5a20", -"#IF c #8b5a31", -"#B4 c #8b5b0f", -"ckP c #8b5b11", -"dP5 c #8b5b19", -".Gc c #8b5c02", -"dEZ c #8b5c0c", -"aty c #8b5c0e", -"bvn c #8b5c14", -"bt7 c #8b5c16", -".JO c #8b5d0f", -"bwt c #8b5d21", -"#RE c #8b5e01", -"by9 c #8b5e1a", -"buj c #8b5e1b", -"arK c #8b5f14", -"cnn c #8b5f18", -"bpE c #8b5f20", -"bsx c #8b5f22", -"aAV c #8b5f38", -".AY c #8b6029", -"ckU c #8b610d", -"cBc c #8b610f", -"cnC c #8b6115", -"dOu c #8b6117", -"#cW c #8b614b", -"clR c #8b620a", -"cmL c #8b6210", -"dJx c #8b6212", -"caI c #8b6220", -"#a3 c #8b6300", -"#Do c #8b6304", -"cxi c #8b630c", -"bva c #8b631b", -"bSO c #8b6325", -".JC c #8b6400", -"cA# c #8b6415", -"#iK c #8b6502", -"bkI c #8b6510", -"dJw c #8b6512", -"bT4 c #8b6524", -"dHh c #8b660e", -"bj. c #8b6615", -"bBx c #8b661f", -"bX1 c #8b6620", -"bU4 c #8b671b", -"bzf c #8b671d", -"bnB c #8b6804", -"ceZ c #8b680e", -"b9W c #8b6826", -"#Ux c #8b690f", -"dQ9 c #8b6910", -"bsP c #8b6922", -"#S3 c #8b6a0d", -"bQG c #8b6a1d", -".jC c #8b6b18", -".09 c #8b6c12", -"ay1 c #8b6e2c", -".#G c #8b701f", -".d3 c #8b7023", -"bRz c #8b7029", -"cbN c #8b711d", -"dQ7 c #8b7215", -"#mO c #8b7313", -".yD c #8b731b", -"cqd c #8b7428", -"agH c #8b754c", -"cup c #8b792d", -"aEe c #8b796d", -"crm c #8b7a22", -"c.P c #8b7b1c", -"dSI c #8b7b24", -"cuZ c #8b7c1f", -"cow c #8b7c29", -"dLi c #8b7d10", -".6m c #8b7d1a", -".4Y c #8b7e22", -".74 c #8b7f1b", -".Kn c #8b8128", -"#4h c #8b8177", -"#Wh c #8b8219", -"a4e c #8b827b", -".UR c #8b827d", -"cwN c #8b831e", -"ceI c #8b8419", -"#Zg c #8b841c", -"aSo c #8b847a", -"aO. c #8b847e", -"#Jz c #8b8523", -"aZj c #8b8682", -"dnn c #8b868a", -".lt c #8b871b", -".Ix c #8b8723", -".GN c #8b8724", -".Ob c #8b872e", -".Mj c #8b8730", -"dm8 c #8b8784", -"dpd c #8b8786", -".T5 c #8b881d", -".Oc c #8b882b", -"d.x c #8b898c", -".Qe c #8b8a2d", -".Qd c #8b8a2e", -"#QT c #8b8a6c", -".XV c #8b8b1d", -".O# c #8b8b33", -"#VA c #8b8b83", -"ddj c #8b8b8b", -"d.D c #8b8b8d", -".GM c #8b8c26", -"aYC c #8b8c87", -"c8Y c #8b8c90", -".Ms c #8b8d28", -"c5g c #8b9029", -"a4S c #8b9479", -"cI. c #8c260d", -"cJQ c #8c260f", -"cI# c #8c270b", -"cMq c #8c2804", -"cGn c #8c2808", -"a9y c #8c2900", -"cHd c #8c2909", -"cKN c #8c2a0d", -"aQE c #8c2b00", -"cPm c #8c2b01", -"cH5 c #8c2b0b", -"cTk c #8c2c04", -"cP4 c #8c2d01", -"cJN c #8c2d11", -"dTL c #8c2e14", -"bQ9 c #8c2f03", -"cQD c #8c2f04", -"cPY c #8c2f06", -"#FQ c #8c2f0d", -"#LO c #8c3000", -"cTQ c #8c3009", -"#LN c #8c3100", -"cOO c #8c3104", -"cON c #8c3105", -"aBr c #8c3200", -"cMy c #8c320d", -"cC8 c #8c3300", -"bE2 c #8c3307", -"cdp c #8c3309", -"#X6 c #8c330b", -"cZ9 c #8c3311", -"dVy c #8c3400", -"bLC c #8c3402", -"cOE c #8c3406", -"biT c #8c340c", -"cRn c #8c340e", -"#Tk c #8c3410", -".zq c #8c341c", -"bCU c #8c3500", -"ci5 c #8c350a", -"cI8 c #8c3600", -"bD2 c #8c3605", -"aqZ c #8c3613", -"ck7 c #8c3700", -"bIz c #8c370e", -"csJ c #8c3710", -"cQ# c #8c3712", -"bIv c #8c3718", -"bJM c #8c371a", -".aW c #8c3809", -".E9 c #8c380a", -"b96 c #8c3813", -".zp c #8c381c", -"cNM c #8c3903", -".BE c #8c3905", -"ayC c #8c3907", -".DD c #8c390d", -"bTO c #8c390f", -".Fr c #8c3911", -"bTm c #8c3919", -"bSh c #8c391b", -"awD c #8c3a00", -"cPb c #8c3a02", -"as1 c #8c3a08", -"bHi c #8c3a0a", -"bMv c #8c3a0b", -"bXd c #8c3a12", -"b6# c #8c3a14", -"cSf c #8c3a15", -"bzT c #8c3a22", -"cgt c #8c3b00", -"bF6 c #8c3b03", -"cKT c #8c3b04", -"bWH c #8c3b06", -".Jr c #8c3b0c", -"bMw c #8c3b0e", -"#0H c #8c3b10", -"awF c #8c3c00", -"awG c #8c3c01", -"caw c #8c3c07", -"awW c #8c3c09", -"bVF c #8c3c0b", -"b5I c #8c3c17", -"bDz c #8c3c19", -"#DW c #8c3c1b", -".ak c #8c3c21", -"bH. c #8c3d02", -"awH c #8c3d04", -"cWN c #8c3d05", -"bFF c #8c3d12", -"apc c #8c3d14", -"bM# c #8c3d16", -".IZ c #8c3d1c", -"#BW c #8c3d1f", -"cJB c #8c3e00", -".ah c #8c3e0d", -"b6G c #8c3e0e", -"brb c #8c3e10", -"bHW c #8c3e17", -"bU0 c #8c3e18", -"bFg c #8c3f07", -"bwd c #8c3f09", -"bL2 c #8c3f0b", -"bKT c #8c3f11", -"bqD c #8c3f13", -"bRH c #8c3f15", -"blR c #8c4002", -"cW5 c #8c4004", -"bxV c #8c4006", -"brd c #8c400c", -"bxv c #8c400e", -".oi c #8c400f", -"cE9 c #8c401c", -"bNL c #8c4100", -"ayr c #8c4107", -"#6# c #8c4108", -"aoK c #8c410a", -"bCb c #8c4117", -".om c #8c4119", -"#DY c #8c411a", -"c0j c #8c4121", -"avy c #8c4200", -"azn c #8c4201", -"azo c #8c4205", -"cbA c #8c4211", -".Jk c #8c4213", -"bFH c #8c421b", -".Fp c #8c421f", -".Jm c #8c430c", -"#JW c #8c430e", -"bml c #8c4310", -".rD c #8c4316", -"aFy c #8c4318", -"cnP c #8c431a", -"bsD c #8c4409", -"c0U c #8c440a", -"bGK c #8c4412", -"bRf c #8c4414", -"cOc c #8c4505", -"cNI c #8c4507", -".Jn c #8c450d", -"#L1 c #8c450f", -"bLW c #8c4511", -"bSv c #8c4519", -"c.T c #8c4600", -"aza c #8c4608", -"c0V c #8c460b", -"b0w c #8c4612", -"bGI c #8c4613", -"b6x c #8c4615", -"cOj c #8c4702", -"b7J c #8c4704", -"cQw c #8c4706", -"cWi c #8c470e", -"bGA c #8c4710", -"cOs c #8c4807", -"c.Q c #8c4809", -"cHv c #8c480b", -"bZv c #8c4819", -"bXv c #8c481b", -"bUQ c #8c4903", -"cmk c #8c4905", -"bBX c #8c4912", -".uj c #8c4915", -"aBn c #8c491c", -"bGG c #8c491e", -"cQi c #8c4a0d", -"cWh c #8c4a0e", -"bAW c #8c4a10", -"bV9 c #8c4a18", -"bta c #8c4a1a", -"aBK c #8c4a2a", -"b2C c #8c4b0b", -"bYK c #8c4b11", -"bpw c #8c4b13", -"#F2 c #8c4b15", -"bES c #8c4c0e", -"cZu c #8c4c1c", -"c0J c #8c4d00", -"cPN c #8c4d08", -"bVR c #8c4d0a", -".zR c #8c4d21", -"czz c #8c4e01", -"dSl c #8c4e13", -"#se c #8c4f00", -"cfP c #8c4f0e", -"dTS c #8c4f16", -".pM c #8c4f18", -"b4I c #8c4f19", -"dJO c #8c4f23", -"blv c #8c5008", -"dE6 c #8c5011", -".TX c #8c5014", -"cTf c #8c501c", -"bUh c #8c5103", -"dE7 c #8c510b", -"cfO c #8c5212", -"aA5 c #8c5213", -".XO c #8c5300", -"b0c c #8c5306", -"aak c #8c530c", -"bZh c #8c5407", -".Ov c #8c5409", -"dHm c #8c5417", -".pF c #8c5502", -"ayP c #8c5503", -"bq5 c #8c551d", -"aAE c #8c560c", -"ar8 c #8c5610", -"dKw c #8c5618", -"b1b c #8c5707", -"ciO c #8c5713", -"aAz c #8c5828", -"dDB c #8c5900", -"dDG c #8c5906", -"#Rz c #8c5908", -"b3P c #8c5918", -".XJ c #8c592c", -"bqs c #8c5a03", -"#Zc c #8c5a15", -"bVb c #8c5a1d", -"bZi c #8c5b0c", -"ckZ c #8c5b0e", -"cmq c #8c5b19", -"clK c #8c5c12", -"bwF c #8c5c14", -"bS1 c #8c5c1e", -".MF c #8c5d0d", -"#tV c #8c5d0f", -"bsU c #8c5d19", -".mD c #8c5d27", -".#v c #8c5d29", -"bwA c #8c5d2f", -"#Hn c #8c5e00", -".J2 c #8c5e08", -"bp1 c #8c5f1b", -"clS c #8c6009", -".1j c #8c6015", -"bCy c #8c601f", -"bwn c #8c6033", -"#xy c #8c6113", -"bx6 c #8c611c", -"bui c #8c611d", -"clQ c #8c6210", -"brj c #8c6216", -"clP c #8c6313", -"bww c #8c6321", -"bOx c #8c632b", -"bsQ c #8c641e", -".HB c #8c641f", -".ow c #8c6429", -"aCw c #8c6431", -".JB c #8c6500", -".CH c #8c6524", -"dI# c #8c6611", -"#Wb c #8c6615", -"bPE c #8c661b", -"bJd c #8c661d", -"bAp c #8c661f", -".p0 c #8c6642", -".YJ c #8c6732", -"dQm c #8c6903", -"#B5 c #8c6915", -".MC c #8c6917", -"bpZ c #8c6925", -"bu. c #8c6927", -"bxZ c #8c6929", -".KZ c #8c6949", -".J4 c #8c6a06", -".A6 c #8c6a2b", -"##w c #8c6b00", -".Uj c #8c6b1a", -"cbO c #8c6c15", -"cuu c #8c6c1f", -"bW1 c #8c6c23", -"bQz c #8c6c2f", -"#I4 c #8c6c33", -"##v c #8c6d00", -".A7 c #8c6f2d", -"cqc c #8c7228", -"aIQ c #8c746a", -".at c #8c752f", -"cmx c #8c7728", -".KI c #8c7821", -".AM c #8c782f", -"ds0 c #8c7968", -".Mv c #8c7a18", -"cuq c #8c7b2d", -"#Jc c #8c7b43", -"aE6 c #8c7b61", -"ds1 c #8c7b69", -"#tn c #8c7b6b", -"aEf c #8c7b71", -"aEJ c #8c7b73", -"cjF c #8c7c1a", -"dyK c #8c7c6f", -"adP c #8c7d1e", -"c#O c #8c7d20", -".y0 c #8c7d22", -".Oj c #8c7e1b", -"crl c #8c7e26", -"#p2 c #8c7f17", -"#O4 c #8c7f1f", -"ciH c #8c801c", -"#fy c #8c802a", -"#tg c #8c8072", -"cB1 c #8c8128", -"#Nk c #8c816d", -"c7# c #8c817d", -".EO c #8c8220", -"cRw c #8c8221", -"#UC c #8c8223", -".fP c #8c822b", -"#H7 c #8c823b", -"dvC c #8c8278", -"#Zh c #8c831a", -"aEM c #8c837a", -".An c #8c8419", -"aPo c #8c8479", -"acE c #8c8575", -"bkE c #8c8624", -"aRk c #8c867a", -".EN c #8c871f", -".IQ c #8c8729", -"a0r c #8c8783", -".2V c #8c8824", -"dqp c #8c8887", -"dnJ c #8c8889", -"#mX c #8c8914", -"bi6 c #8c891e", -".GH c #8c8922", -"#Dy c #8c8a19", -".wI c #8c8a1b", -".pn c #8c8a1d", -".ID c #8c8a23", -"#Jx c #8c8a25", -"cfG c #8c8b1f", -"c8W c #8c8b90", -"#mW c #8c8c14", -".wG c #8c8c1e", -"ddl c #8c8c8c", -"#e9 c #8c8d85", -"d.W c #8c8d8f", -".V3 c #8c8e21", -".nt c #8c901f", -"cKQ c #8d270e", -"dVx c #8d2800", -"cHi c #8d280a", -"cHh c #8d280c", -"cNg c #8d2905", -"cGl c #8d2907", -"cLB c #8d2909", -"cJP c #8d2911", -"cOx c #8d2a01", -"cNU c #8d2a03", -"cKI c #8d2b06", -"cHb c #8d2b08", -"cJO c #8d2b12", -"dJp c #8d2c00", -"cRj c #8d2c01", -"cSd c #8d2c02", -"aT2 c #8d2c0b", -"cIV c #8d2c0c", -"cRQ c #8d2d03", -"cNr c #8d2d05", -"cKS c #8d2e02", -"c#c c #8d2e0e", -"adD c #8d2e10", -"#HP c #8d2f09", -"#FP c #8d2f0b", -"cIT c #8d2f0d", -"cFU c #8d3000", -"cNt c #8d3004", -"dtK c #8d3005", -"c.. c #8d300f", -"cMv c #8d3102", -"ccY c #8d3108", -"cPi c #8d310a", -"cIz c #8d310c", -"auR c #8d3200", -"cPp c #8d3205", -"#QF c #8d3206", -"cE7 c #8d3300", -"cTT c #8d330e", -"b75 c #8d3311", -"cwT c #8d3319", -"cB3 c #8d3400", -"bSg c #8d3408", -"#JP c #8d340a", -"cb7 c #8d340c", -"aqD c #8d3412", -"#UR c #8d3414", -"buo c #8d3505", -"cPq c #8d3507", -"b7a c #8d350d", -"ca3 c #8d350f", -"bIy c #8d3511", -"bLD c #8d3601", -"b5r c #8d3609", -"cdk c #8d360b", -"bdj c #8d3700", -"bHZ c #8d3704", -"bE1 c #8d3708", -"bCL c #8d3801", -"bTv c #8d3802", -"b73 c #8d380f", -".gw c #8d3811", -"b7F c #8d3900", -"byc c #8d390a", -"bHY c #8d390b", -"bNv c #8d390d", -"cQM c #8d3914", -"cZ0 c #8d3915", -"ayg c #8d3a08", -"bGO c #8d3a0e", -"#9l c #8d3a10", -"b4U c #8d3a12", -"#FU c #8d3a1a", -"dl# c #8d3b00", -"bkk c #8d3b03", -"cWa c #8d3b09", -"cj2 c #8d3b0b", -"bNw c #8d3b0c", -"bEE c #8d3b13", -"#HT c #8d3b15", -".aj c #8d3b16", -"cIC c #8d3c00", -"cKB c #8d3c04", -"cbt c #8d3c05", -"bQa c #8d3c07", -"ckt c #8d3c0d", -"bEz c #8d3c0f", -"bHX c #8d3c11", -"Qtb c #8d3c1f", -"bQF c #8d3d00", -"b3M c #8d3d02", -"cU5 c #8d3d08", -"#Zt c #8d3d0a", -"as2 c #8d3d0c", -"#Pa c #8d3e00", -"cLf c #8d3e03", -"ayq c #8d3e05", -"cbp c #8d3e06", -"#FY c #8d3e13", -".BC c #8d3e15", -"ca2 c #8d3e17", -"#NM c #8d3f00", -"clq c #8d3f01", -".Js c #8d3f0e", -"buW c #8d3f0f", -"bOE c #8d3f11", -"bTQ c #8d3f18", -"bGN c #8d3f19", -"cr4 c #8d4000", -"bWw c #8d4008", -"#Zs c #8d400a", -"bxu c #8d400c", -".ug c #8d4012", -"#kx c #8d4014", -"ck6 c #8d4016", -"do6 c #8d4103", -".U6 c #8d4107", -"bYt c #8d410d", -".zh c #8d410f", -".RA c #8d4110", -"cqG c #8d4200", -"bdk c #8d4201", -"cog c #8d4208", -"cp2 c #8d4209", -"bsC c #8d420b", -"bnM c #8d4218", -".sa c #8d421a", -"bFI c #8d421b", -"cs8 c #8d4300", -"b8I c #8d4302", -"chy c #8d4304", -"cNL c #8d4306", -"bmk c #8d4312", -"b3E c #8d4314", -"b2s c #8d4316", -"b7q c #8d431c", -"b6E c #8d431e", -".Fb c #8d4320", -".Cu c #8d4400", -"#oL c #8d440d", -"ayu c #8d440f", -".AH c #8d4411", -".Rj c #8d4417", -"b1o c #8d4419", -"dtU c #8d441b", -"bEj c #8d4421", -"bpN c #8d450a", -"bYL c #8d450b", -"bRe c #8d4513", -".s. c #8d4515", -"c0f c #8d451d", -"cO4 c #8d4604", -"bxW c #8d4606", -"#Zr c #8d4608", -"adL c #8d460e", -"bZD c #8d4610", -"bGJ c #8d4612", -"#52 c #8d4700", -"cZp c #8d4701", -"brf c #8d4709", -"bAv c #8d470b", -"b4P c #8d470c", -"dlW c #8d4713", -"b6y c #8d4714", -"#7r c #8d4803", -"bwD c #8d4807", -"#29 c #8d480d", -"bHH c #8d480f", -"c0c c #8d481f", -"cpX c #8d4900", -"cDp c #8d4902", -"bvl c #8d4908", -"bt4 c #8d490a", -"bsm c #8d490c", -"cLU c #8d4918", -".1s c #8d4a00", -"bk7 c #8d4a03", -"dwt c #8d4a13", -"#D2 c #8d4a16", -"#3l c #8d4a1d", -"aoW c #8d4b00", -"an8 c #8d4b0e", -"cQe c #8d4b1b", -"dHu c #8d4c14", -"buM c #8d4c16", -"#zN c #8d4d03", -"aj. c #8d4d05", -"bmz c #8d4d06", -"btK c #8d4d0f", -"bn4 c #8d4d10", -"bvW c #8d4d1f", -"bZt c #8d4d21", -"c.W c #8d4e07", -"ahf c #8d4e0b", -"cUj c #8d4e18", -"cSF c #8d4e1b", -"cYz c #8d4e22", -".wT c #8d4f06", -"ay7 c #8d4f12", -"blr c #8d4f14", -"cfo c #8d4f16", -"afn c #8d500d", -"cWZ c #8d5011", -"blw c #8d5108", -"bzk c #8d5112", -".P1 c #8d5113", -"cem c #8d5115", -"bOr c #8d511b", -".kH c #8d511d", -"by3 c #8d512f", -".EC c #8d5202", -"dP2 c #8d5204", -"bKe c #8d5206", -"cOp c #8d520c", -"bBA c #8d520e", -"cmO c #8d5210", -"dIe c #8d521a", -"azQ c #8d5230", -"cL8 c #8d5300", -".R4 c #8d5400", -".3a c #8d5405", -"b9T c #8d5411", -".cr c #8d541d", -"dOr c #8d541f", -"dOD c #8d5500", -"bMq c #8d5522", -"ciP c #8d5613", -".mI c #8d561e", -".H8 c #8d580c", -"#ub c #8d590e", -"dNx c #8d5910", -"dOs c #8d5920", -".ED c #8d5a07", -"#xS c #8d5a09", -".JL c #8d5a0b", -".JH c #8d5b00", -"bt6 c #8d5b12", -"dN8 c #8d5b14", -"bxY c #8d5b16", -"#RM c #8d5c00", -"cmN c #8d5c0d", -"cjV c #8d5c0f", -"dQ2 c #8d5c10", -"b9Z c #8d5c19", -"bq6 c #8d5c22", -"cjl c #8d5d09", -"bp2 c #8d5d15", -"#IQ c #8d5d2c", -"aCl c #8d5d46", -"cIL c #8d5e0e", -".AZ c #8d5e2a", -"bKf c #8d5f14", -"#zv c #8d600d", -"bBr c #8d601d", -"bxD c #8d6039", -"#Fl c #8d6100", -"cmM c #8d610a", -"cmr c #8d6118", -"bsI c #8d611a", -"#0r c #8d6213", -"bbm c #8d621d", -"caY c #8d621e", -"bTX c #8d6317", -".YI c #8d6329", -"cZR c #8d6412", -"#zL c #8d650d", -"bp0 c #8d6520", -"bMB c #8d661b", -"bGS c #8d6621", -"#OZ c #8d6700", -"dR# c #8d6712", -"bt9 c #8d6726", -"##M c #8d6752", -".J3 c #8d680d", -"#og c #8d6913", -".y3 c #8d691b", -".qs c #8d692f", -"##A c #8d6a16", -"#iL c #8d6b00", -"ceY c #8d6b0a", -"bPs c #8d6b2c", -"#RB c #8d6c0d", -"cdO c #8d6c1d", -"bU5 c #8d6d20", -"bsK c #8d6d24", -".Aw c #8d6e1b", -".J8 c #8d6f01", -".NQ c #8d6f0d", -"#p1 c #8d6f15", -"bAn c #8d6f29", -"#BH c #8d7014", -"brp c #8d702a", -"#I5 c #8d7034", -".y2 c #8d711d", -"bU6 c #8d7127", -".AL c #8d7132", -"cnu c #8d7223", -"cdt c #8d722b", -"bQw c #8d722f", -"b9L c #8d731c", -"ckc c #8d7417", -"#FD c #8d7418", -"#os c #8d741a", -"bhk c #8d7422", -"cbV c #8d7424", -"dQ6 c #8d7515", -"#y# c #8d751b", -".wR c #8d751d", -"du# c #8d7571", -"cbM c #8d7626", -"chJ c #8d7630", -"#aO c #8d7712", -"c.2 c #8d772b", -"dR7 c #8d7829", -"ckF c #8d791a", -"dR6 c #8d7a2b", -"aEd c #8d7a6b", -"#Zi c #8d7b15", -".Mw c #8d7b19", -".Mi c #8d7b25", -"coy c #8d7b27", -"cgG c #8d7b33", -"bdn c #8d7c24", -".FE c #8d7c34", -"aD1 c #8d7c75", -".Mu c #8d7d1b", -"##e c #8d7d1e", -"##d c #8d7d25", -"cpp c #8d7d28", -"#OO c #8d7d6e", -".GQ c #8d7e23", -"cpn c #8d7e2b", -"aEV c #8d7e7b", -".4D c #8d801a", -"cwa c #8d8020", -"bma c #8d8022", -".F6 c #8d8109", -"#xB c #8d8113", -"#FA c #8d811f", -".AN c #8d8230", -".EP c #8d8321", -"##c c #8d832c", -".4C c #8d841d", -"#vN c #8d841f", -".IR c #8d8425", -".IN c #8d8427", -"dnp c #8d847f", -".1a c #8d8516", -"dOX c #8d8522", -"#O5 c #8d8523", -"aF. c #8d8673", -".V6 c #8d8719", -".II c #8d8725", -"c8R c #8d878b", -".GI c #8d8822", -".5i c #8d8885", -"#P6 c #8d888c", -".EI c #8d8925", -".R7 c #8d8926", -".4G c #8d8928", -"#SH c #8d897e", -".GA c #8d8a1f", -"bkD c #8d8a23", -".XU c #8d8b1c", -"cfF c #8d8b24", -".Kw c #8d8b26", -".dN c #8d8b27", -".V2 c #8d8c20", -".EM c #8d8c22", -"aYe c #8d8c88", -"#qt c #8d8d43", -"ddk c #8d8d8d", -"#ig c #8d8f8e", -".T8 c #8d9027", -"#gx c #8d9194", -"c17 c #8d9331", -"daI c #8d9393", -"cSZ c #8d951e", -"#so c #8d957e", -"cTz c #8da11e", -"dGF c #8e2601", -"dGC c #8e2603", -"cIa c #8e2609", -"cIY c #8e260b", -"cGm c #8e2708", -"dTK c #8e2811", -"cGr c #8e290b", -"cHg c #8e290d", -"cGs c #8e2a0a", -"cH9 c #8e2a10", -"cPg c #8e2b01", -"cPl c #8e2b02", -"dL4 c #8e2b04", -"cLA c #8e2b0b", -"cLx c #8e2c09", -"cIW c #8e2c0f", -"dSv c #8e2c11", -"cLS c #8e2d00", -"cP3 c #8e2d02", -"ca# c #8e2d0a", -"cH4 c #8e2d0c", -"c.c c #8e2e00", -"cGS c #8e2e04", -"cvR c #8e2e06", -"cJH c #8e2e08", -"cMu c #8e2f03", -"a7D c #8e2f0f", -"aHH c #8e300a", -"ca4 c #8e300c", -"cJI c #8e300e", -"c#H c #8e3105", -"cUO c #8e3108", -"#DO c #8e310f", -"dRj c #8e3110", -"boR c #8e3200", -"bKp c #8e3201", -"aRB c #8e3203", -"#RW c #8e3209", -"cJl c #8e320b", -"cet c #8e320d", -"auJ c #8e3300", -"awR c #8e3304", -"b7d c #8e3306", -"bko c #8e3307", -"a3E c #8e3318", -"awq c #8e3400", -"cLK c #8e3402", -"bF8 c #8e3509", -"c#J c #8e350b", -"b8k c #8e350d", -"bIx c #8e3513", -"cK3 c #8e3604", -"cTc c #8e3606", -"bkn c #8e3608", -"cfr c #8e360e", -"asP c #8e3612", -"cd7 c #8e3702", -"#NV c #8e370a", -"auB c #8e370c", -"bIw c #8e3719", -"#NN c #8e3800", -"aDs c #8e3805", -"bzq c #8e3807", -"QtR c #8e3809", -"bHd c #8e3815", -"#0S c #8e381f", -"apU c #8e3902", -"cOv c #8e3903", -"cl1 c #8e3910", -"b8j c #8e3912", -"aWE c #8e3924", -"bks c #8e3a00", -"cAk c #8e3a0b", -"bEF c #8e3a0c", -"cnM c #8e3a0e", -"cnL c #8e3a15", -"cuM c #8e3a18", -"bAd c #8e3b07", -"aqV c #8e3b09", -"bAc c #8e3b0f", -"b62 c #8e3b11", -"bN# c #8e3b13", -"bWD c #8e3c00", -"bAe c #8e3c02", -"bw3 c #8e3c04", -"bGf c #8e3c0a", -"aBp c #8e3c0c", -"Qt# c #8e3c0d", -"bMK c #8e3c14", -"bEA c #8e3c16", -"#FW c #8e3c17", -"cFJ c #8e3d00", -"b2k c #8e3d05", -"bIq c #8e3d06", -"b2i c #8e3d08", -"b4s c #8e3d0e", -"bOD c #8e3d10", -"bwU c #8e3d12", -"bA0 c #8e3d1f", -".#z c #8e3d20", -"bA2 c #8e3d22", -"bkt c #8e3e00", -"cX8 c #8e3e03", -"cht c #8e3e09", -"bL5 c #8e3e0b", -"bOe c #8e3e0d", -".#C c #8e3e1d", -"cQy c #8e3f04", -"bBQ c #8e3f06", -"bVS c #8e3f07", -"bOF c #8e3f14", -"bI8 c #8e3f16", -"bFJ c #8e3f18", -"ckp c #8e4002", -"#HX c #8e400f", -"bPA c #8e4012", -".tW c #8e4019", -"bMO c #8e4100", -"bF. c #8e410b", -"bxw c #8e410d", -"bSw c #8e4113", -"bUY c #8e4115", -"bPz c #8e4117", -"bIm c #8e4204", -"avQ c #8e4206", -"am8 c #8e4208", -".zP c #8e420e", -".Jl c #8e4210", -"bRg c #8e4211", -"dTR c #8e4300", -"bni c #8e4309", -"an7 c #8e430a", -".kV c #8e430c", -"br6 c #8e4319", -"cDd c #8e431c", -"axN c #8e4324", -"azh c #8e4400", -"chs c #8e4403", -"cQx c #8e4405", -"b0r c #8e4407", -"cJc c #8e4413", -"b7p c #8e4415", -"dp3 c #8e441f", -".Et c #8e4501", -"b58 c #8e4510", -"bpi c #8e4512", -"cnQ c #8e451c", -"bEk c #8e4522", -"dVf c #8e4600", -"cW0 c #8e460b", -".ui c #8e4614", -"cY1 c #8e4616", -".ku c #8e461e", -"b3p c #8e4705", -"cAh c #8e4707", -".Lk c #8e470f", -"b7m c #8e4711", -"bMi c #8e4713", -"bKd c #8e4800", -"am9 c #8e4802", -"cxz c #8e480a", -"auv c #8e480c", -"bWy c #8e4815", -".zQ c #8e4817", -"bk6 c #8e4904", -".fC c #8e4906", -"alk c #8e4908", -"bFX c #8e490e", -".Jo c #8e4910", -"cSh c #8e4912", -"#D0 c #8e491f", -"amU c #8e4a00", -"bCI c #8e4a09", -"cod c #8e4b04", -"ahh c #8e4b05", -".bp c #8e4b07", -".Nb c #8e4b16", -"cMJ c #8e4b17", -".oR c #8e4b1e", -"bWR c #8e4c02", -"btl c #8e4c0f", -"cVM c #8e4c10", -".Jp c #8e4c12", -"dOe c #8e4c18", -".sC c #8e4c1a", -"cOa c #8e4c1c", -"b9S c #8e4d09", -"cz7 c #8e4d0b", -"ayJ c #8e4d15", -"ccn c #8e4d17", -"ak3 c #8e4e00", -"#4t c #8e4e06", -"a.H c #8e4e07", -"dTB c #8e4e10", -"bZu c #8e4e1e", -"brW c #8e4f00", -"dV0 c #8e4f0a", -"ahg c #8e4f0c", -"#H0 c #8e4f1a", -"#Po c #8e4f1c", -".fz c #8e5000", -"cLp c #8e5007", -"bnh c #8e5013", -".kI c #8e5021", -"b0g c #8e5101", -"#ua c #8e510e", -".WZ c #8e5110", -"#J0 c #8e5118", -"bV8 c #8e511a", -".rt c #8e5209", -"#Nq c #8e520c", -"b1O c #8e5216", -"dKC c #8e521c", -"dMv c #8e5307", -"adv c #8e530f", -"dO5 c #8e5319", -"dME c #8e5400", -"c#Q c #8e5414", -".mJ c #8e5422", -"cM0 c #8e5506", -"cBN c #8e5508", -"cA. c #8e550e", -"dPp c #8e5601", -".CG c #8e5619", -"dDA c #8e5700", -"dSO c #8e5705", -"#IE c #8e5730", -"cU0 c #8e5800", -"dCh c #8e5802", -"#r4 c #8e580e", -"bvm c #8e5810", -"brv c #8e590b", -"apY c #8e5913", -"bzj c #8e5917", -"#oA c #8e5a0e", -"bru c #8e5a0f", -"cnB c #8e5a11", -"bsv c #8e5a1e", -"dPo c #8e5b00", -"dDF c #8e5b08", -"bTf c #8e5b0c", -"bx8 c #8e5b1a", -"bxK c #8e5b22", -"cje c #8e5c05", -"dGe c #8e5c13", -"dM9 c #8e5c17", -"dDH c #8e5d0e", -".JN c #8e5e12", -"bLp c #8e5e14", -"caQ c #8e5e16", -"bAj c #8e5e1c", -"cjj c #8e5f07", -"bsR c #8e5f19", -".Eg c #8e6000", -"#Qu c #8e6002", -"ckY c #8e600a", -".ZR c #8e600b", -"ckW c #8e610e", -"ay4 c #8e612a", -"ckX c #8e620b", -"cmE c #8e6217", -"dQo c #8e6305", -"cot c #8e631e", -"#BI c #8e640e", -"cfR c #8e6418", -".Vo c #8e642a", -"#aT c #8e6515", -".JR c #8e6607", -"#RA c #8e660e", -"alm c #8e6611", -"bzg c #8e661e", -".Zw c #8e6708", -"cQ0 c #8e671a", -"blA c #8e671c", -".J5 c #8e6800", -"#j8 c #8e6807", -"bvb c #8e681d", -".LY c #8e6a09", -".R5 c #8e6a0c", -"boJ c #8e6b31", -"ctU c #8e6c15", -"bnf c #8e6c2d", -"bRL c #8e6e21", -".MB c #8e6f1c", -"clz c #8e7016", -"caR c #8e7027", -"#j# c #8e7149", -".LZ c #8e720e", -"#Zj c #8e720f", -".Qo c #8e730c", -"#rO c #8e7318", -".KM c #8e731a", -"bbn c #8e7326", -".EV c #8e7420", -"aEt c #8e7459", -"#HC c #8e7519", -".bI c #8e7523", -"#Wf c #8e761c", -"dPG c #8e7711", -"ckE c #8e7717", -"cov c #8e7727", -"caS c #8e7729", -"#XT c #8e7812", -"#ck c #8e7920", -"#J# c #8e7942", -"#vz c #8e7a17", -"#aN c #8e7a19", -"dSL c #8e7b15", -"aD2 c #8e7b74", -"dKm c #8e7c16", -"#mU c #8e7d11", -".C5 c #8e7e30", -"aE3 c #8e7e71", -".En c #8e7f1a", -".DN c #8e7f3c", -".yu c #8e8216", -".1# c #8e8317", -".Sf c #8e831a", -"dn9 c #8e8381", -"c9c c #8e8389", -".Iv c #8e8422", -"#ND c #8e8423", -"bkF c #8e8425", -"#br c #8e8482", -".3U c #8e848f", -".X0 c #8e861b", -".Iw c #8e8623", -"#5P c #8e867b", -"#mV c #8e8713", -".9G c #8e872d", -"a3b c #8e877d", -"#tR c #8e8826", -"aNJ c #8e887c", -".1f c #8e8925", -"aVH c #8e8985", -"#xO c #8e8a1f", -".2W c #8e8a27", -".T6 c #8e8b24", -"aYV c #8e8b84", -"#rY c #8e8c28", -"aYR c #8e8d8b", -"aTS c #8e8e8e", -"d.X c #8e8f91", -"#oV c #8e9082", -"dj7 c #8e908d", -"dcn c #8e908f", -"#3y c #8e948a", -"ahR c #8e955f", -".2C c #8e9993", -"cFx c #8f2606", -"dUW c #8f2610", -"cIZ c #8f270a", -"cJS c #8f270c", -"cJR c #8f270e", -"cFy c #8f2807", -"cHj c #8f2809", -"cMr c #8f2903", -"cGp c #8f2a0c", -"cHf c #8f2a0e", -"c.G c #8f2b00", -"cMp c #8f2b09", -"cLC c #8f2b0b", -"cH8 c #8f2b11", -"cNi c #8f2c02", -"cOz c #8f2c03", -"cNR c #8f2c05", -"cH6 c #8f2c0f", -"cPX c #8f2d00", -"cIX c #8f2d10", -"dJj c #8f2e01", -"cRk c #8f2e03", -"cOB c #8f2e04", -"cMo c #8f2e0d", -"afw c #8f2e0e", -"boS c #8f2f00", -"cNs c #8f2f05", -"cPZ c #8f2f07", -"aRA c #8f3000", -"#9a c #8f3002", -"cOC c #8f3004", -"ahp c #8f3012", -"cNn c #8f310b", -"#Wv c #8f310d", -"dOf c #8f310f", -"ab9 c #8f3115", -"bkq c #8f3206", -"cRP c #8f3207", -"bkp c #8f3209", -"ceu c #8f3210", -"bJr c #8f3300", -"bP5 c #8f3302", -"#QE c #8f3304", -"cQ. c #8f330a", -"cN3 c #8f330c", -"b81 c #8f3400", -"c.K c #8f3405", -"b0C c #8f3407", -"cdm c #8f3408", -"alc c #8f3415", -"av2 c #8f3417", -"bF3 c #8f3500", -"awS c #8f3501", -"#JI c #8f3503", -"bTw c #8f3600", -"b3Z c #8f360a", -"ceq c #8f360c", -"cVR c #8f360e", -"c00 c #8f3700", -"cNN c #8f3705", -"atp c #8f3707", -"bZG c #8f3709", -"awk c #8f370f", -"ax9 c #8f3711", -".Ta c #8f3802", -"bCV c #8f3803", -"b7c c #8f380b", -"ce8 c #8f380d", -".Bd c #8f381d", -"#Wt c #8f3900", -"bQj c #8f3906", -"bIP c #8f3908", -"bvC c #8f390a", -"Qta c #8f3916", -"cGK c #8f3a00", -"bBo c #8f3a01", -"cW1 c #8f3a03", -"bBn c #8f3a04", -"cVl c #8f3a15", -"bCw c #8f3b00", -"bOC c #8f3b0c", -"bBm c #8f3b0d", -"ch8 c #8f3b0f", -"aHI c #8f3b16", -"bDy c #8f3b17", -"bHC c #8f3c00", -"bkl c #8f3c06", -"bSi c #8f3c08", -"b5J c #8f3c0a", -"c.l c #8f3c10", -"am0 c #8f3c12", -"b8Y c #8f3c14", -"b5g c #8f3d01", -"b3D c #8f3d03", -"bBD c #8f3d05", -"Qt. c #8f3d0b", -"bF# c #8f3d0d", -"b94 c #8f3d0e", -"ch7 c #8f3d15", -".DC c #8f3d17", -"b56 c #8f3e00", -"cck c #8f3e06", -"bYG c #8f3e07", -"bQE c #8f3e09", -"bQD c #8f3e0f", -"bKU c #8f3e11", -"bI9 c #8f3e13", -"#0T c #8f3e21", -"bCx c #8f3f00", -"bG9 c #8f3f04", -"axF c #8f3f0a", -"awT c #8f3f0c", -"bNx c #8f3f0e", -".Wg c #8f4000", -"bDn c #8f4005", -"b9m c #8f4007", -"bAO c #8f4008", -"cRN c #8f4015", -"c#9 c #8f4017", -".bC c #8f401f", -"bB6 c #8f4021", -"dpJ c #8f4100", -"civ c #8f4101", -"bUF c #8f4103", -".v5 c #8f4110", -"bSx c #8f4111", -"bLx c #8f4113", -"cVI c #8f420a", -".AG c #8f420c", -"bDi c #8f420e", -"cY8 c #8f4214", -"by6 c #8f4305", -"bRm c #8f4307", -"aqt c #8f4309", -"dnZ c #8f430f", -".kW c #8f4311", -"#x6 c #8f4312", -".bD c #8f431f", -"bH0 c #8f4400", -"dPS c #8f4401", -"bXD c #8f440a", -"ays c #8f440b", -"bpM c #8f440d", -"dsW c #8f441a", -"c6W c #8f441c", -"ct8 c #8f4500", -"cGH c #8f4506", -"cmm c #8f4508", -"bUz c #8f4514", -"cbB c #8f4516", -"brP c #8f4518", -"b7r c #8f4520", -"bDg c #8f4522", -"b5M c #8f4600", -"azc c #8f4601", -"cnb c #8f4602", -"bCm c #8f460f", -"bYw c #8f4611", -"bnN c #8f4613", -"bJW c #8f4619", -"b6C c #8f461d", -"bJb c #8f4700", -".Lm c #8f470d", -"bWz c #8f4715", -"buD c #8f4717", -"dQa c #8f4806", -"ciq c #8f480a", -"cWj c #8f4810", -"c3T c #8f4812", -"bSk c #8f4814", -".qI c #8f481a", -"b1K c #8f4901", -"aj# c #8f4903", -"#OT c #8f4904", -"adM c #8f490b", -"#sd c #8f490d", -"bBd c #8f490e", -".Fw c #8f4915", -".sB c #8f4916", -"bJ5 c #8f4a0f", -"dsT c #8f4a11", -"czR c #8f4a13", -".L7 c #8f4b02", -"dPd c #8f4b04", -"#0D c #8f4b0a", -"bL# c #8f4b0c", -"dPP c #8f4b0e", -"bw9 c #8f4b1a", -"cLj c #8f4c00", -"cPM c #8f4c06", -".Ts c #8f4c08", -".qL c #8f4c18", -"bYy c #8f4c21", -"dVh c #8f4d00", -"atU c #8f4d01", -"cM1 c #8f4d03", -"dHv c #8f4d10", -"bpv c #8f4d11", -"bVd c #8f4d19", -"c5t c #8f4d1b", -"cih c #8f4e00", -"bxX c #8f4e0a", -"bn3 c #8f4e0c", -".Jt c #8f4e0e", -"dxW c #8f4e14", -"bz3 c #8f4e16", -"#H1 c #8f4e18", -".ZV c #8f4f05", -"cBb c #8f4f07", -"afo c #8f4f08", -"bwE c #8f500d", -"c05 c #8f502f", -"aBJ c #8f5031", -"blx c #8f5108", -"dRo c #8f5116", -"#J1 c #8f5118", -"chS c #8f5213", -"aqG c #8f5300", -"all c #8f530a", -"bdl c #8f530d", -"c.L c #8f5314", -"#N5 c #8f5317", -"bNl c #8f531f", -"aBN c #8f532f", -".VD c #8f5412", -"bVc c #8f541c", -"dNH c #8f5503", -"dAU c #8f550b", -"bSH c #8f5515", -".BH c #8f5525", -"dMw c #8f5600", -"cPH c #8f5605", -"bVq c #8f5607", -"cP. c #8f560f", -"aA3 c #8f561f", -"dNG c #8f5700", -"aoE c #8f5702", -"aA2 c #8f5726", -"bWl c #8f5808", -"dNw c #8f5817", -"#Hp c #8f5900", -"cgZ c #8f5a0c", -"bRJ c #8f5a0e", -"dGf c #8f5a14", -"bxQ c #8f5a32", -"#Ho c #8f5b00", -"b15 c #8f5b08", -"bsT c #8f5b10", -"bsS c #8f5b12", -"bZj c #8f5c0b", -"#Fm c #8f5d00", -"dQp c #8f5d04", -"ai8 c #8f5d06", -"cMZ c #8f5d08", -"bJc c #8f5d14", -"aA9 c #8f5d22", -"aB. c #8f5d28", -".JF c #8f5e00", -"bXl c #8f5e0f", -".JM c #8f5e12", -"bzi c #8f5e19", -"bEK c #8f5e1b", -"bSU c #8f5f13", -"dQ1 c #8f5f17", -"bx7 c #8f5f1d", -"bsw c #8f5f21", -"bxE c #8f5f39", -"#vP c #8f600e", -"bUf c #8f6010", -"bUU c #8f601a", -".#w c #8f6032", -"bwo c #8f6034", -"bo7 c #8f6101", -"dPn c #8f6103", -"cJx c #8f610b", -"bov c #8f6114", -"#rL c #8f6116", -"bng c #8f6123", -"cZQ c #8f620f", -"ckV c #8f6211", -"bFP c #8f621f", -"bUT c #8f631a", -"bzh c #8f631c", -"c#V c #8f641f", -"coC c #8f6519", -"bNA c #8f651b", -"bH3 c #8f651d", -"dQP c #8f660a", -"#NI c #8f660e", -".NX c #8f6614", -"dIW c #8f6616", -"cms c #8f6617", -".qv c #8f6624", -"bvy c #8f6626", -"dR. c #8f6710", -"cux c #8f6712", -"caJ c #8f6721", -".hy c #8f6809", -"bm3 c #8f681b", -".F7 c #8f6900", -"dHi c #8f6916", -"dHg c #8f6a11", -"cmt c #8f6a19", -"cmJ c #8f6a1a", -".AV c #8f6a23", -"#0w c #8f6b0d", -"#tU c #8f6b17", -"coc c #8f6c1a", -"cdH c #8f6c28", -"#Ql c #8f6d09", -"cbP c #8f6d16", -"cpk c #8f6d25", -"#g9 c #8f6e0f", -"#d6 c #8f6f08", -"bPt c #8f6f32", -"#JB c #8f7016", -".UO c #8f705e", -"#HD c #8f7117", -"bRC c #8f7131", -".Uc c #8f720a", -"bSW c #8f7226", -"bBv c #8f722c", -"#0v c #8f7514", -"#iH c #8f7516", -"c.3 c #8f7528", -".Am c #8f7611", -"#aP c #8f7612", -".Em c #8f7619", -"dLj c #8f770b", -"bRA c #8f772f", -".Ub c #8f780e", -".EU c #8f7924", -"cpm c #8f7a29", -"#aL c #8f7b25", -"#J. c #8f7b46", -"aD3 c #8f7b72", -".jy c #8f7c15", -"#aM c #8f7c20", -"aEc c #8f7c6d", -"#Wi c #8f7d11", -"c#X c #8f7d2b", -"aEb c #8f7d6f", -".yt c #8f7e14", -"dSb c #8f7e24", -"aET c #8f7f7f", -"dM. c #8f8114", -"#Zf c #8f811e", -"#Qs c #8f8222", -"cRv c #8f8226", -".2S c #8f841a", -"dSh c #8f8428", -".ET c #8f842a", -".Mt c #8f8523", -".Iu c #8f8524", -".Qk c #8f861f", -".6p c #8f8627", -"d.v c #8f868b", -".1c c #8f871a", -".KC c #8f8722", -".AQ c #8f8724", -"ceG c #8f8732", -"#UD c #8f881e", -".ZB c #8f891b", -".ES c #8f892b", -"#sh c #8f8931", -"cfD c #8f8933", -"#zC c #8f8a14", -".GJ c #8f8a24", -".IE c #8f8a26", -".V1 c #8f8b1f", -"a3L c #8f8b6e", -"#Xy c #8f8b8a", -".Se c #8f8c23", -"aZV c #8f8c83", -"aYg c #8f8c87", -"dVa c #8f8d20", -".T7 c #8f8d26", -"dm7 c #8f8d8e", -"#T7 c #8f8f8d", -"ddi c #8f8f8f", -"dmo c #8f908b", -"dl5 c #8f9092", -"cLD c #902707", -"cBC c #902801", -"cCJ c #902803", -"cEM c #902805", -"cI0 c #90280b", -"cMs c #902900", -"cFw c #902906", -"cHk c #902908", -"cGo c #90290a", -"cNh c #902a04", -"cMt c #902b01", -"cHe c #902b0d", -"cHa c #902c08", -"cAt c #902d03", -"cOA c #902d04", -"cH7 c #902d10", -"cRK c #902e01", -"c#I c #902e07", -"adC c #902e0b", -"cP8 c #902f02", -"cRR c #902f04", -"#HO c #902f05", -"cNf c #902f0c", -"c#d c #902f0e", -"bnm c #903000", -"cVn c #903006", -"a.R c #903008", -"aZb c #90300a", -"bYe c #903100", -"b9a c #903101", -"blW c #903103", -"cOD c #903105", -"cQP c #903200", -"cNS c #90320c", -"#DN c #90320e", -"aau c #903210", -"aSF c #903307", -"#JO c #903308", -"cRS c #90330a", -"#UQ c #903312", -"doL c #903400", -"bnl c #903401", -"cQO c #903403", -"cNZ c #903405", -"crz c #90340b", -"dKf c #90340d", -"cVj c #90340f", -"awr c #903500", -"cff c #903506", -"b6s c #903508", -"cLQ c #903509", -"cx2 c #903516", -"a5y c #903600", -"dNS c #903602", -"cHK c #903604", -"alb c #903613", -"#LM c #903700", -"bUW c #90370b", -"b9j c #90370d", -"bHg c #90370f", -"b82 c #903806", -"bLB c #903808", -"ch9 c #90380a", -"b5j c #903810", -"aqY c #903812", -"bBK c #903903", -"cd8 c #903904", -"bHh c #90390c", -"#Pj c #90390e", -"a12 c #90391b", -"b3C c #903a00", -"bkm c #903a07", -"bCv c #903a09", -"bFK c #903a0b", -"dVz c #903b00", -"cHD c #903b02", -"bw2 c #903b04", -"asK c #903b05", -"cQN c #903b14", -"cZZ c #903b16", -"bDC c #903c00", -"bJ. c #903c0d", -"bFa c #903c0e", -".Fs c #903c10", -"cf1 c #903c17", -"cg1 c #903c18", -"bGw c #903d00", -"bRj c #903d07", -".zN c #903d09", -"#X4 c #903d0b", -"bLl c #903d11", -"b95 c #903d13", -"#FV c #903d1b", -"#LL c #903e02", -"bsi c #903e04", -"bD0 c #903e06", -"cWR c #903e0c", -"amZ c #903e0e", -"c## c #903e0f", -"aaB c #903e16", -".it c #903e18", -"aoV c #903f00", -"bBC c #903f07", -"b2e c #903f08", -"bk3 c #903f0a", -"bA6 c #903f10", -".Hq c #903f12", -"chb c #903f14", -"bA1 c #903f22", -"bIU c #904000", -"bBp c #904001", -"bFv c #904003", -"bO9 c #90400b", -"ccs c #90400d", -"bCc c #90400f", -"#DV c #90401f", -"bGv c #904100", -"bDo c #904106", -"bXE c #904108", -"bxt c #904109", -"cj3 c #904116", -"cj4 c #904118", -"bUP c #904202", -"bAf c #904204", -"#lW c #904211", -"brc c #904212", -"axn c #904300", -"byL c #90430b", -"byM c #90430d", -"acd c #90430f", -"bKY c #904317", -"bUZ c #904319", -"bSu c #904408", -"bA8 c #90440a", -"azp c #904410", -"buE c #904412", -"cM2 c #904502", -"bJB c #904504", -"dN9 c #90450b", -"c0W c #90450c", -".zg c #90450e", -"cEd c #90451d", -"a05 c #904526", -"#7s c #904600", -"bk5 c #904605", -"asf c #904609", -"#z4 c #904615", -"bTy c #904617", -"cZ2 c #904623", -"avx c #904702", -"#LK c #904703", -"bOk c #904710", -".A8 c #904712", -"bUA c #90471a", -"dRm c #904800", -"dom c #90480d", -".Ll c #90480e", -"#B2 c #904816", -"bAV c #904907", -"cGI c #904909", -"cho c #90490b", -"dPa c #904911", -".Nc c #904913", -"bZs c #904915", -"bVe c #90491b", -"ahi c #904a04", -"cEq c #904a05", -"bXC c #904a0c", -".CE c #904a0e", -"boo c #904a0f", -".oQ c #904a16", -"btb c #904a17", -"cxh c #904b00", -"bkv c #904b06", -"bAg c #904b08", -"cQ8 c #904b0a", -"bqS c #904b10", -"cTs c #904b12", -"dLL c #904c03", -"dGo c #904c05", -"#4D c #904c0f", -"bXw c #904c1b", -".Rm c #904c25", -"bH1 c #904d06", -"bmy c #904d07", -"by7 c #904d09", -"#N1 c #904d18", -"cSa c #904d19", -"cOk c #904e02", -"cva c #904e04", -"buL c #904e11", -"dkl c #904e1a", -"#F0 c #904e1e", -"dnk c #904e36", -"dO4 c #904f00", -"cYX c #904f0b", -"bqz c #904f0f", -"#JZ c #904f15", -"dJM c #904f17", -".Ow c #905006", -"#z5 c #905010", -"dSC c #905013", -"dP1 c #905102", -"clb c #905104", -"cel c #90510c", -"bt5 c #90510e", -".pH c #905200", -"#Qi c #905205", -"dId c #905215", -"#L5 c #905217", -"bAt c #905312", -"cVp c #90531d", -"c#S c #90540b", -"abZ c #90540e", -"b3S c #905415", -"brX c #905509", -".Ju c #90550f", -".V. c #905529", -".pG c #905602", -"bly c #90560c", -"dKD c #905628", -"bsG c #905710", -"cfQ c #905712", -"c#R c #905714", -".DI c #905720", -"#oO c #90580b", -".Rp c #905827", -"bZk c #905909", -".Rq c #905923", -"bOJ c #905a10", -"bou c #905b0f", -"bDG c #905b19", -"#Qj c #905c06", -".rs c #905c10", -"bPD c #905c11", -"cO2 c #905d0a", -".MG c #905d0c", -"ch3 c #905d0e", -"#XL c #905d1c", -"coB c #905e15", -"#IS c #905e2b", -"blz c #905f13", -"b9U c #905f1d", -"#Np c #905f25", -"#Ta c #906000", -"cjS c #90600c", -"bWk c #90610f", -"dQ3 c #906111", -"#IR c #90612d", -"cjU c #90620c", -"ai7 c #90620d", -"bvz c #906224", -"#Fn c #906300", -"bXm c #906312", -"bTM c #906322", -"dEX c #90640b", -"d#N c #906419", -"dPE c #906507", -"cno c #906520", -"bRK c #90661a", -"cQZ c #90661c", -"ckb c #90670f", -"cbR c #906718", -"#bj c #906753", -".J6 c #906900", -".JS c #906a07", -"cbQ c #906a17", -"bsJ c #906a21", -".CX c #906a29", -".J7 c #906b00", -"#xR c #906b12", -"#a7 c #906c14", -".JU c #906d07", -".Mh c #906d19", -"cfS c #906d1b", -"bCD c #906d29", -"#mP c #906e14", -"#DH c #906e15", -"ccv c #906e27", -"bPu c #906e31", -"bBw c #906f2a", -"bCC c #90732f", -"ccz c #907411", -"cqi c #907421", -"ccM c #907526", -"bTZ c #907528", -"bRB c #907734", -"aD4 c #907770", -"#aX c #90780c", -"#tT c #90781e", -".0o c #90794f", -"#xA c #907a17", -"#cj c #907a27", -"aEv c #907a62", -"aEa c #907a6d", -"dOR c #907b12", -"caG c #907b1e", -"#Ja c #907b44", -"cSs c #907c1d", -"#8w c #907c64", -"#ok c #907d17", -"dB5 c #907d6e", -"dM# c #907e12", -"dR9 c #907f2d", -"dR8 c #907f2f", -".9J c #90811c", -"#zK c #90821f", -"cRu c #908229", -"dov c #908281", -"#or c #908323", -"dLh c #908418", -"ciG c #908420", -".4I c #90842e", -"abH c #908478", -"#g5 c #90862d", -"#xC c #908710", -".2X c #90872a", -"dn7 c #908788", -".2R c #90881d", -".Oi c #908825", -".Gz c #90891f", -"#zJ c #908921", -".4H c #90892e", -".XT c #908a1a", -".IH c #908b27", -"aPR c #908b87", -"ceH c #908c2b", -".DO c #908c42", -"#jo c #908c8b", -".GL c #908d26", -"cfE c #908d2c", -"#sM c #908d7a", -"#oq c #908f23", -"#gm c #90908e", -"aYN c #909090", -"dcA c #909092", -"aTm c #909098", -"d.Y c #909193", -".5G c #90928d", -"d.Z c #909497", -"dGE c #912602", -"dKa c #912700", -"bQV c #912800", -"dSu c #91280a", -"cBB c #912902", -"cCI c #912904", -"cDI c #912906", -"cGq c #91290c", -"cPf c #912a00", -"cLv c #912a01", -"cGu c #912a07", -"cGt c #912a09", -"cBA c #912b03", -"cGk c #912b05", -"dJ9 c #912c00", -"cBz c #912c02", -"ccZ c #912e04", -"cNV c #912e05", -"ca5 c #912e07", -"cS# c #912f00", -"bnn c #912f02", -"#FO c #912f08", -"cNT c #912f0a", -"cH3 c #912f0c", -"blY c #913003", -"blX c #913005", -"cRe c #913006", -"ab8 c #913010", -"bqe c #913100", -"b9b c #913101", -"cP0 c #913107", -"cPh c #913109", -"#X5 c #91310b", -"aQC c #913200", -"b2u c #913202", -"cPt c #913204", -"cSL c #913206", -"bJq c #913300", -"#DM c #91330d", -"aji c #913317", -"dIt c #913400", -"cMB c #913408", -"cN2 c #913409", -"#NQ c #913502", -"blV c #913504", -"bOh c #913506", -"cZ. c #91350c", -"cOJ c #91350e", -"cev c #913510", -"bs4 c #913600", -"#7z c #913601", -"c#G c #913607", -"#LU c #913609", -"auA c #91360a", -"dlw c #913700", -"cc6 c #913702", -"bkr c #913703", -"arC c #913705", -"cVm c #913712", -"bHf c #913714", -"#Pb c #913800", -"cdl c #91380c", -"b63 c #91380e", -"bHe c #913816", -"aT3 c #913818", -"b6l c #913907", -"bOc c #913909", -"bPg c #91390b", -"cfs c #913911", -"bBE c #913a04", -"#HJ c #913a05", -"b8Z c #913a0d", -"cVQ c #913a0f", -"bPC c #913b00", -"#JG c #913b02", -"ayh c #913b08", -"aOl c #913b0c", -"dcZ c #913c00", -"bN6 c #913c03", -"bCW c #913c05", -"bJ# c #913c06", -"bMa c #913c15", -"ch6 c #913c17", -"bGP c #913d00", -"c.p c #913d01", -"bUI c #913d0e", -".R# c #913d0f", -".ev c #913d11", -"dJE c #913e00", -"bvN c #913e08", -".Rz c #913e0a", -"b7# c #913e0c", -".mp c #913e12", -".kp c #913e14", -"#12 c #913e1c", -"caq c #913f03", -"bvO c #913f05", -"bPi c #913f07", -"chu c #913f0d", -"bL9 c #913f0f", -"cgr c #913f10", -"bJa c #914000", -"bM3 c #914001", -"axE c #914008", -".i3 c #914009", -"buX c #91400b", -"caB c #914011", -"bRW c #914013", -"bWX c #914015", -"bLL c #914102", -"c.o c #914104", -"bJE c #914106", -"bPM c #91410c", -"awX c #91410e", -".v# c #914110", -"bDD c #914200", -"bCg c #914207", -"aoJ c #914209", -"bVz c #91420a", -"bB8 c #914223", -"b5L c #914300", -"bEH c #914301", -"bku c #914303", -"bHB c #914305", -"bQm c #914312", -"bTz c #914315", -"drO c #914400", -"bkx c #91440c", -"bP# c #91440e", -"awg c #914410", -"c5o c #914418", -"azr c #91441a", -"bWF c #914507", -".yO c #914509", -"asJ c #91450b", -".Ht c #914511", -"bJm c #914513", -"b6K c #914600", -"dGp c #914602", -"cpG c #914603", -"chr c #914605", -"bSG c #91460c", -".Ln c #91460d", -"ayt c #91460f", -"bLn c #914700", -"cXl c #914706", -"cZV c #914708", -"bXA c #91470a", -"brB c #914718", -"#FZ c #91471a", -"cEf c #914720", -"bDe c #914724", -"cz5 c #914803", -".Eu c #914804", -"b1p c #914811", -"cYy c #914813", -"bOm c #914815", -"#B1 c #91481d", -"cii c #914900", -"bl5 c #91490f", -".sA c #914919", -".Lw c #914a00", -"b7K c #914a08", -"cHB c #914a0a", -"bBW c #914a0c", -"cAU c #914a12", -"b6z c #914a14", -"bTp c #914a16", -"bvX c #914a1c", -".Rk c #914a1e", -".du c #914b00", -".Ct c #914b06", -"bXB c #914b0d", -"dPR c #914b0f", -"bz2 c #914b10", -"#ky c #914b1a", -"bhb c #914c01", -"cxx c #914c07", -"bl6 c #914c09", -"bpO c #914c0b", -"bzJ c #914c11", -"b2J c #914c13", -"dNt c #914c15", -"b5N c #914d00", -"bWQ c #914d04", -"bVN c #914d06", -"az# c #914d0e", -"bAu c #914d10", -"cRM c #914d1c", -".Rn c #914d28", -"bNh c #914e08", -"b60 c #914e0a", -"#HZ c #914e1a", -".K# c #914f05", -"a.2 c #914f12", -"b4i c #91500c", -"#1T c #91500e", -"ay8 c #915010", -".Ro c #915028", -"bLo c #915107", -"cdg c #915113", -"dji c #915202", -"#qf c #91520b", -"dzm c #915308", -"bm0 c #91530a", -"b3a c #915403", -"cOo c #915411", -"cO3 c #91550c", -"by8 c #91550f", -".T1 c #915600", -"bot c #91560a", -"bT6 c #91561c", -"#Jm c #915700", -"c#U c #915811", -"brZ c #915813", -"bAs c #915815", -".Q. c #915902", -"dCf c #915904", -"b1a c #91590c", -"aA4 c #91591c", -"dMD c #915a00", -"dRz c #915a07", -"cTF c #915a0a", -".Ga c #915a17", -"bH2 c #915b13", -"#cB c #915c00", -"bAr c #915c18", -".JG c #915d00", -"#Qv c #915d07", -"arJ c #915d12", -"brt c #915d14", -".RX c #915d24", -"dCl c #915e29", -"dOA c #915f00", -"dDC c #915f08", -"dIX c #915f16", -"bT5 c #915f20", -"bwQ c #915f22", -"bxL c #915f24", -"#1H c #916011", -"amP c #916013", -"cjP c #916014", -"brs c #91601b", -".79 c #916028", -"bVp c #91610f", -"bXn c #916210", -"bWi c #916212", -"aqk c #91621c", -"#Jk c #91630d", -".4W c #91630e", -"#D5 c #916318", -"av8 c #916411", -"bWj c #916413", -"bwu c #916423", -"cuA c #916502", -".29 c #91650c", -"#r3 c #916617", -"brr c #916621", -"dPl c #916701", -".EE c #916711", -"bAq c #91671f", -"cnE c #916816", -"#Qk c #91690a", -".9U c #916921", -".Cs c #916a1b", -".pZ c #916b47", -"bSV c #916c1e", -"ceT c #916c25", -"brq c #916c28", -"#iJ c #916d0c", -"#xz c #916d17", -"cpW c #916d19", -"#Fo c #916f01", -"cl6 c #916f18", -"ccR c #917021", -"bTY c #917023", -".Wd c #91711e", -".El c #91721f", -".90 c #917508", -".MA c #917522", -"bQy c #917534", -"cR4 c #91761b", -"dKk c #917716", -"#fB c #91771a", -"bQx c #917835", -"#I6 c #917838", -".L0 c #91790d", -"#r1 c #917921", -".Km c #917923", -"bfl c #917a1d", -".On c #917b16", -".1. c #917b18", -".dL c #917b28", -".rr c #917c23", -".RS c #917c4f", -"#FB c #917d1c", -".R6 c #917d1e", -"#vA c #917e15", -"#Jb c #917e46", -"#UE c #917f13", -"ccN c #917f1d", -"dS. c #917f2d", -".C4 c #917f33", -"aEU c #917f7f", -".Qa c #918026", -"aFM c #918160", -"bhf c #91821d", -"dM2 c #918316", -"dOS c #918318", -"cRx c #918320", -".yZ c #91832b", -"dyL c #918376", -".Mx c #91841e", -".PS c #918424", -".IM c #918428", -"aiB c #918461", -"dM3 c #918517", -".ZG c #91851f", -".KB c #918521", -".KA c #918523", -".T4 c #91861c", -".KD c #918725", -".EQ c #918726", -"#nU c #91877e", -"#eC c #91878f", -"#Fv c #91891c", -".Kx c #918926", -"#rP c #918a1f", -".AO c #918a30", -"aPm c #918a80", -".AP c #918b2b", -"cgI c #918b2d", -"c7h c #918b8d", -".#J c #918c24", -".GK c #918c26", -"cgJ c #918c28", -"aYo c #918c88", -"aYh c #918e89", -"cz. c #918f2b", -"#xG c #919119", -"aY# c #91918f", -"dcr c #919191", -"dmn c #919193", -"c7m c #919294", -"daL c #919390", -"daX c #919890", -"daY c #919a95", -"cTA c #91a01f", -"dGD c #922705", -"cBE c #922800", -"cBD c #922801", -"dKj c #922900", -"cFz c #922909", -"cKR c #92290b", -"cJT c #92290c", -"bR4 c #922a00", -"cLE c #922a03", -"cDH c #922a05", -"cEL c #922a07", -"c.H c #922b00", -"cMk c #922b02", -"cFC c #922b0a", -"cFA c #922b0c", -"dHA c #922c00", -"cKH c #922c04", -"cFD c #922c06", -"cPW c #922d00", -"dHH c #922d01", -"cBy c #922d03", -"dVn c #922f00", -"cNW c #922f05", -"ax7 c #922f08", -"cRd c #923000", -"cIO c #923001", -"cNl c #923003", -"a7C c #923009", -"ab7 c #92300d", -"c.d c #923100", -"czl c #923104", -"cLF c #923106", -"c.# c #923107", -"ass c #923111", -"dJi c #923200", -"#QD c #923202", -"cMz c #923208", -"dIS c #92320a", -"aPG c #923300", -"auy c #923303", -"b7e c #923305", -"cGT c #923307", -"aWD c #92331d", -"ayo c #923400", -"aLv c #92340e", -"auQ c #923500", -"cMx c #92350a", -"dOF c #923600", -"cVU c #923603", -"asL c #923605", -"b0D c #923607", -"asO c #92360f", -"#NO c #923700", -"cc5 c #923702", -"bZH c #923708", -"bSf c #92370a", -"b7k c #92370b", -"bDW c #923800", -"boQ c #923803", -"bOi c #923804", -"bsY c #923806", -"cgc c #923900", -"b6c c #92390d", -"aqX c #92390f", -"c5r c #92391b", -"#88 c #923a00", -"byd c #923a08", -"bOd c #923a0a", -"aM3 c #923a0c", -".G3 c #923a12", -"bGb c #923a14", -"cVk c #923a16", -"bAF c #923b05", -"bBJ c #923b06", -"bUX c #923b0e", -"dNn c #923b10", -"b0m c #923c00", -"bFM c #923c01", -"bqd c #923c03", -"b6w c #923c09", -"bH# c #923c0b", -"bZc c #923c0d", -"bZe c #923d00", -"bym c #923d04", -"bOj c #923d06", -"cK7 c #923d07", -"bsj c #923e00", -"bKb c #923e0f", -"cg# c #923e10", -"cEa c #923f00", -"#X3 c #923f09", -"amY c #923f0b", -"bOG c #923f0d", -"cha c #923f13", -"bS5 c #923f15", -"cZ1 c #923f1d", -"#DU c #923f21", -"axD c #924004", -"bvZ c #924006", -"bIp c #924008", -".xU c #92400e", -".tr c #924010", -"bXY c #924011", -"#3k c #924018", -"buG c #924100", -"b8f c #924102", -"bWG c #924109", -"bnW c #92410a", -"bVx c #92410c", -"bTA c #924112", -"c5s c #924116", -"cr5 c #924200", -"avP c #924203", -"bCh c #924205", -"#X2 c #924207", -"bP. c #92420d", -"bRn c #924211", -".De c #924221", -"b6J c #924300", -"b7M c #924301", -"bk4 c #924308", -"bE# c #92430a", -"cUE c #92430b", -"cRi c #924318", -"bJD c #924404", -"bC7 c #924406", -"bWW c #924413", -"cQI c #924414", -"axo c #924500", -"bJH c #92450d", -"bWV c #92450f", -"bL3 c #924511", -"dI2 c #924517", -"bJX c #924519", -".Lv c #924600", -".CD c #924608", -"cls c #92460a", -"bYu c #924612", -"cY0 c #924614", -"bph c #924615", -"aja c #924703", -"cWO c #924704", -"bJA c #924706", -"bGz c #92470e", -"#v8 c #924710", -".RE c #924727", -"cM7 c #924807", -"bDP c #924809", -"bky c #92480b", -"bvY c #924817", -"dNs c #924905", -"btc c #924912", -"bNf c #924914", -".BF c #924916", -"b5H c #924920", -".P9 c #924a00", -"dPT c #924a02", -"bNd c #924a10", -"bnx c #924b0b", -"bE9 c #924b13", -".Jq c #924b15", -"diI c #924b1d", -"brU c #924c00", -"#P# c #924c04", -"afp c #924c06", -".Sr c #924c07", -"cRr c #924c18", -".Oy c #924d02", -"#Zq c #924d08", -"bDE c #924d0a", -".PH c #924d14", -".Rl c #924d24", -".Lx c #924e00", -".Ox c #924e05", -"cwn c #924e07", -"dIY c #924e0d", -"#v9 c #924e0f", -"cWs c #924e11", -"ayG c #924e1d", -".EB c #924f01", -"aw3 c #924f08", -"cDU c #924f09", -"btk c #924f0b", -"#F1 c #924f1b", -"dVe c #925004", -"#NL c #925006", -"dIZ c #925013", -".CF c #925014", -"bxh c #925016", -"dm2 c #925038", -"aqq c #925100", -"cQr c #92510d", -"bmY c #92510f", -"ay9 c #925111", -"byR c #925117", -"aSI c #92513b", -"bkw c #92520b", -"chT c #925212", -"cWg c #925215", -"dT2 c #925306", -"adN c #92530c", -"bFN c #92530e", -"bBq c #925310", -"dlB c #92531e", -".hA c #925407", -"cnZ c #92540b", -"cvG c #925500", -"dkJ c #925502", -"cO9 c #925512", -".RY c #925516", -".#u c #92551f", -"dVj c #925600", -"bYg c #92560d", -"bhc c #925707", -"bGQ c #925711", -"aqp c #925804", -"bpb c #92580e", -"brY c #92580f", -"cUb c #925902", -"bEJ c #925914", -"c0T c #925916", -"dQq c #925a07", -"#BJ c #925a0d", -"bMA c #925a10", -"dLS c #925b00", -"cpx c #925b08", -"aA8 c #925b18", -"dHl c #925c14", -"b2N c #925c1c", -"aAF c #925d0f", -"ayQ c #925d11", -"b3Q c #925d17", -"bFO c #925d19", -"dCi c #925e0a", -".Mg c #925e0b", -"crp c #925e13", -".kF c #925e25", -"b3# c #925f04", -"atx c #925f10", -".kD c #925f2a", -"dDE c #92600b", -"bGR c #92611c", -"c#4 c #92611e", -"#cC c #926200", -"bYh c #926210", -"bqt c #926313", -"#1N c #92640c", -"#sf c #92640e", -"caL c #926416", -"cps c #926419", -"ctA c #92650a", -"dEY c #926512", -"dJJ c #926514", -"bwP c #926524", -"dKp c #926607", -".1q c #92660f", -"b9V c #926625", -".XP c #926804", -"adO c #926816", -"coG c #92690f", -"#rN c #92691a", -".ZJ c #926a12", -"c.4 c #926b1c", -"ckB c #926c23", -"aAJ c #926c3d", -".JT c #926d05", -"#zw c #926d14", -"clx c #926d1c", -"#1M c #926e10", -"c0N c #926e16", -"cbZ c #926e20", -"c#L c #926e24", -"ceX c #926f0b", -"#r2 c #926f1b", -".Uf c #927005", -"cly c #927019", -"a6B c #927259", -"dMe c #927318", -".AU c #927323", -"bSN c #927330", -".4K c #92742c", -"#O3 c #927517", -"cdN c #927612", -"bSM c #927730", -"cdK c #927817", -"#km c #927819", -"ciD c #92782e", -"cdL c #927912", -".CV c #927a30", -"c3h c #927b69", -".8l c #927c26", -"#z8 c #927d22", -"dS# c #927d2a", -".4J c #927d2e", -"#I9 c #927d46", -"#vO c #927e1f", -"dSa c #927e28", -"#HA c #927f20", -".GP c #927f23", -"##f c #92801e", -".6r c #92802c", -".GO c #928125", -"c#N c #928129", -".O. c #92822b", -"chK c #92822d", -".EH c #928324", -".yY c #928330", -".Ua c #928419", -".AR c #928423", -"aE9 c #928467", -"#xP c #92851f", -"#tS c #928527", -"dB2 c #92857c", -"aDW c #92857f", -"cgH c #928632", -".5Y c #92866e", -".wH c #92871b", -".6q c #92872d", -"c8S c #92878b", -"bfm c #928827", -"c9d c #928890", -".ER c #92892a", -".ZA c #928a1b", -".1b c #928a1d", -"cS0 c #928a1f", -".IF c #928a27", -"aOa c #928a87", -"c7a c #928a88", -".CP c #928b23", -"aQm c #928c80", -"#iE c #928d2f", -"aST c #928d89", -".H1 c #928e20", -"dn6 c #929091", -"aEk c #929093", -"aYd c #92918d", -"dmJ c #929196", -"#R9 c #929276", -"dct c #929290", -"dcq c #929292", -"daP c #92938e", -"dl8 c #92948f", -"daK c #929491", -"c9p c #929493", -"#l2 c #929675", -"daJ c #929697", -"#U3 c #929978", -"#vE c #929a20", -"dTJ c #932409", -"dLa c #932703", -"cCK c #932804", -"dKi c #932900", -"cCL c #932902", -"cEN c #932a0a", -"cFB c #932a0c", -"cCH c #932b04", -"cx8 c #932c00", -"cOw c #932c01", -"cAv c #932c03", -"cMn c #932c09", -"cPV c #932d00", -"cFE c #932d05", -"cEQ c #932d07", -"cLT c #932e00", -"boT c #932e02", -"cAu c #932e04", -"bno c #932f00", -"cMD c #933000", -"cTV c #933006", -"cSe c #933007", -"cSA c #933100", -"bQ8 c #933102", -"cN0 c #933104", -"cIS c #93310a", -"cOy c #93310c", -"cTq c #933200", -"awi c #933205", -"cTU c #933207", -"cNm c #933208", -"c.F c #933300", -"b8a c #933303", -"b76 c #933309", -"cRm c #93330b", -"dKg c #93330d", -"b2Z c #933400", -"bKo c #933404", -"cJ1 c #933406", -"cMA c #933408", -"bBH c #933500", -"cYq c #933501", -"brG c #933502", -"ax8 c #93350f", -"cJk c #933511", -"#89 c #933600", -"asN c #93360b", -".iu c #93360d", -"bJs c #933704", -"cQa c #933706", -"b5s c #933708", -"cer c #93370e", -"bNa c #933710", -"cza c #933712", -"b71 c #933800", -"bFZ c #933803", -"#Pi c #933809", -"bW. c #93380b", -"bUC c #933900", -"b72 c #933904", -"aux c #933905", -".Pd c #933907", -"#Ws c #933a00", -"b6j c #933a02", -"aqW c #933a0e", -"b7V c #933a10", -"bVA c #933b00", -"bDB c #933b09", -"bwV c #933b0b", -"bXI c #933b0d", -"cjX c #933b15", -".Dc c #933b17", -"bFL c #933c06", -"bEG c #933c07", -"ci6 c #933c0f", -"b66 c #933c11", -".#A c #933c20", -"cbw c #933d00", -"bBF c #933d04", -"bMx c #933d0a", -"bXH c #933d0c", -"bGe c #933d0e", -"bCi c #933e00", -"bDS c #933e05", -"ccV c #933e07", -"bPB c #933e08", -"bWf c #933f00", -"b2q c #933f01", -"cru c #933f03", -"bTB c #933f10", -".Ft c #933f11", -"bFw c #934000", -"bC2 c #93400a", -"cJb c #93400c", -"clZ c #93400e", -"bJY c #934016", -"bDm c #934105", -"amX c #934107", -"bSj c #934109", -"cK. c #93410f", -"bSy c #934111", -"b7N c #934200", -"byn c #934203", -"buF c #93420a", -"cJm c #93420b", -"bIr c #93420d", -"bvP c #934304", -"bCf c #934306", -"bA9 c #934308", -".i4 c #93430e", -"bzF c #934310", -"bHb c #934312", -".L8 c #934400", -"cqY c #934401", -".dy c #934409", -"bTo c #93440b", -"bQb c #93440c", -"bB7 c #934425", -"cil c #934500", -"cFd c #934503", -"bKB c #934505", -"bVD c #934507", -".qf c #934514", -"cNj c #934515", -"avz c #934600", -"bAU c #934602", -"cgn c #93460e", -"brQ c #934610", -".v6 c #934612", -"bYr c #934700", -"at6 c #934709", -"dNo c #93470d", -"cVN c #934713", -"bo1 c #934715", -"bL. c #934804", -"bKx c #934805", -"bJC c #934807", -"ciw c #93480e", -".R3 c #934900", -"axm c #934902", -"bOo c #934908", -"b2B c #93490a", -"bo2 c #93490c", -"b6D c #934922", -"bDf c #934926", -"brT c #934a00", -"cDo c #934a05", -"bKy c #934a06", -"bMj c #934a13", -"bUy c #934a17", -".iy c #934a1f", -"az8 c #934a21", -"a3G c #934a37", -"bUi c #934b00", -".TG c #934b01", -"cZq c #934b03", -"dN. c #934b11", -"b4X c #934c00", -"cz6 c #934c0a", -"bCJ c #934c0c", -"ahu c #934c0e", -"#lX c #934c14", -"b0o c #934c18", -"c.U c #934d05", -"#82 c #934d07", -"bmx c #934d08", -"cgR c #934d0f", -"dPQ c #934d11", -"cT0 c #934d12", -"cDa c #934d1a", -"dH7 c #934e00", -"bVr c #934e01", -"dOE c #934e03", -"bMm c #934e09", -"cM5 c #934e0b", -"cNJ c #934e0d", -"azR c #934e2d", -".1u c #934f04", -"dLy c #934f06", -"dws c #934f08", -"az. c #934f10", -"dMl c #935001", -"di3 c #935002", -"btj c #935009", -"bNi c #93500a", -"bEI c #93500c", -"brV c #935100", -"cka c #935103", -"bi1 c #935105", -"dxV c #935107", -"bQs c #935115", -".DH c #93511d", -"bYz c #935121", -"b2L c #935210", -"#x8 c #935212", -"cVW c #935218", -"dI0 c #93521a", -"cTM c #93521c", -"cL4 c #935309", -"dIc c #935313", -".pL c #935315", -"cjd c #935404", -"dMu c #93540d", -"bAh c #935411", -"dJN c #935421", -"#LJ c #93550c", -"#Pr c #93551a", -"aFz c #935530", -"bDF c #935613", -"bNk c #935615", -"amT c #935700", -".If c #93570e", -"dlc c #935808", -"bNz c #935910", -"ak2 c #935a01", -"bR7 c #935a0d", -"bAi c #935a17", -"dle c #935a23", -"#Wl c #935b00", -"bTe c #935b0e", -"#Jl c #935c00", -"aw7 c #935c0c", -"dPW c #935d07", -"dOC c #935e02", -"ckR c #935e12", -"bp9 c #935e2a", -"cfW c #936005", -"dQO c #936007", -"dCk c #936021", -"aDh c #936160", -"b3. c #936206", -"dNy c #936213", -"#ov c #93630e", -"cjT c #93630f", -"caM c #936311", -"bm2 c #936317", -"dQ0 c #93641e", -"#Qp c #936507", -"cNE c #93650f", -".ZM c #936510", -"dGd c #936517", -"aaF c #93651a", -"c2p c #93654e", -"#O0 c #936600", -"#O7 c #93660b", -"bVo c #936615", -"caK c #93671e", -"bwv c #936824", -"cUa c #936905", -"dQ4 c #936915", -"cny c #93691d", -"dRy c #936a0e", -"cvF c #936b0b", -"#O2 c #936b0c", -"c.Z c #936b25", -"#el c #936c0d", -"#j7 c #936c0f", -"bo8 c #936c11", -"cbH c #936c27", -"#Hq c #936d00", -"cUZ c #936d02", -"cou c #936d24", -"caE c #936d26", -".cs c #936d2e", -"#H5 c #936e2a", -"#fT c #936f0f", -".Q# c #936f17", -"#FE c #936f19", -"#oj c #937118", -".Ug c #937207", -".Sj c #93730c", -"#tD c #93731c", -"cpl c #937328", -".YK c #937344", -"dQ5 c #937419", -"cbY c #93741a", -".u1 c #93751f", -"#co c #937612", -"#Qr c #93761a", -".CW c #937630", -"clA c #93781d", -"ckD c #93791c", -".Mz c #937925", -"#vy c #937a1d", -".Sn c #937a20", -"#d2 c #937b23", -"#I8 c #937b3d", -".KH c #937d27", -"#d1 c #937d2a", -"aFg c #937d7f", -"a.a c #937e63", -"dKl c #937f1c", -".NS c #938017", -"#iG c #938021", -".Gx c #93811d", -".2Y c #93812b", -".V7 c #938218", -".It c #938226", -"cdw c #938321", -".1g c #938425", -"dOU c #93851c", -".Kz c #938524", -".Gy c #93861e", -".lx c #938628", -".dM c #93862a", -".CQ c #938723", -".Ky c #938725", -".CK c #938733", -"c9Q c #938787", -"c51 c #93898a", -"#Bx c #938a15", -".nw c #938a25", -".7t c #938a81", -"d#z c #938a8d", -"d.w c #938a8f", -"c9e c #938c93", -".V0 c #938d1d", -"#RJ c #938d2b", -"c7i c #938d8f", -"doR c #938f8e", -"#PA c #939071", -"#3C c #939184", -"c8V c #939194", -"dm6 c #939196", -"dcu c #939391", -"dcs c #939393", -"#sz c #93948f", -"dl6 c #939496", -"daM c #939592", -"#Tz c #939677", -"dkX c #939894", -"cTB c #939c1f", -"daZ c #939c9b", -"dUV c #94220a", -"dLb c #942601", -"dHB c #942801", -"dL5 c #942802", -"cAx c #942900", -"cAw c #942a02", -"dKh c #942a03", -"czf c #942b00", -"cEP c #942b0b", -"cER c #942c05", -"cIb c #942c09", -"cx7 c #942d00", -"cb8 c #942d04", -"#Wu c #942d0a", -"cTo c #942e00", -"ab6 c #942e06", -"cHl c #942e08", -"cW3 c #942f00", -"cRL c #942f01", -"cTn c #942f03", -"#HN c #942f05", -"czk c #943000", -"aat c #94300c", -"cfg c #943100", -"cvQ c #943107", -"#FN c #943108", -"cWo c #943201", -"czm c #943205", -"cPj c #94320b", -"b2v c #943300", -"#JN c #943306", -"cnH c #943308", -"cN1 c #943309", -"b0. c #943400", -"cLr c #943401", -"bP4 c #943402", -"aSE c #943404", -"cRl c #94340a", -"cLP c #94340c", -"#9. c #943500", -"b0E c #943505", -"bSe c #943507", -"cVS c #943509", -"bfe c #943600", -"#NP c #943602", -"bJp c #943603", -"cZm c #943610", -"bDV c #943700", -"cLR c #94370b", -"cOI c #94370c", -"cPx c #94370e", -"#11 c #943718", -"bPh c #943805", -"aFu c #943807", -"b4q c #943809", -"ces c #94380f", -"ala c #943811", -"b8H c #943900", -"ayk c #943902", -"a03 c #943904", -"b7R c #94390a", -"bVf c #94390c", -".F. c #94390d", -"bs3 c #943a00", -"blU c #943a05", -".Ne c #943a06", -"aFv c #943a08", -"bGc c #943a15", -"azW c #943a17", -"b2r c #943b00", -"#UP c #943b01", -"bCN c #943b03", -"cey c #943b0f", -"bGd c #943b13", -"btF c #943c00", -"av# c #943c0a", -"bL7 c #943c0c", -"bOI c #943d00", -"b6k c #943d07", -"bZF c #943d08", -"c.m c #943d10", -"cmT c #943d12", -"bDj c #943e01", -"bET c #943e03", -"bzx c #943e05", -"bBR c #943e0b", -"ahs c #943e0d", -"b83 c #943e0f", -"bB# c #943f00", -"bwf c #943f06", -".g5 c #943f08", -"bvM c #943f09", -"dmE c #943f16", -"bM2 c #944000", -"bKc c #944002", -"blS c #944004", -"cVO c #944012", -"ch# c #944014", -"bMy c #944100", -"#FK c #94410b", -"dzp c #94410f", -"cfu c #944115", -"c.q c #944117", -"cB6 c #944200", -"bDR c #944206", -"bmu c #944208", -"cSD c #94420a", -"dmV c #944210", -"c2e c #944212", -".DE c #944213", -"b9p c #94421a", -".G5 c #94421d", -"bKA c #944302", -"bEr c #944304", -"bRc c #94430b", -"bVy c #94430c", -"b0T c #94430e", -".Ka c #944400", -"ase c #944405", -"aoI c #944407", -"apV c #944409", -"cis c #94440f", -"bL4 c #944411", -".Hr c #944413", -"cS5 c #944500", -"bw4 c #944503", -"bzY c #94450a", -"bC1 c #94450c", -"bRd c #94450d", -"bYq c #944600", -"dGq c #944604", -"#X1 c #944606", -"bDQ c #944608", -"bG. c #944615", -"c.r c #944622", -"cTZ c #944700", -"bLQ c #944701", -"cAT c #944703", -"bPl c #94470f", -"cjq c #944711", -"bOa c #944713", -"avA c #944800", -"bIn c #94480a", -"afE c #94480c", -"#np c #94480e", -"bnw c #944814", -".uh c #944816", -"de6 c #944826", -"cSN c #944905", -"b8s c #944906", -"bWE c #944908", -".PG c #944910", -"b7n c #944912", -"brO c #944921", -".T0 c #944a00", -"bNy c #944a01", -".Cv c #944a03", -"#zO c #944a09", -"bBB c #944a0d", -"ckv c #944a19", -"dVg c #944b00", -".Qw c #944b06", -"cfn c #944b07", -".PI c #944b16", -"#HY c #944b18", -"dii c #944b1e", -"cKm c #944c00", -"bMz c #944c02", -"bMY c #944c04", -"cSg c #944c11", -"bNg c #944c12", -"cEb c #944c1a", -"bx. c #944c1c", -"dJ# c #944d00", -"cM6 c #944d0b", -"bqR c #944d0d", -".DG c #944d19", -"#D1 c #944d1f", -"b6L c #944e00", -"bOp c #944e08", -"aw2 c #944e09", -"bpu c #944e10", -"dNe c #944e12", -"#L2 c #944e13", -"cSE c #944e1a", -"dT3 c #944f02", -"cek c #944f04", -"#Qh c #944f0a", -"buK c #944f0c", -"bn2 c #944f0e", -"dMk c #945000", -"adw c #945009", -"b4j c #94500f", -"dSm c #945011", -"c3z c #945102", -"bWm c #945103", -"aal c #94510a", -"brg c #94510d", -"cTe c #94511c", -"b4Y c #945200", -"b1e c #945204", -"cVo c #945216", -".BG c #945220", -"dfZ c #945232", -"apX c #945311", -"cXB c #945313", -"dNu c #94531d", -"bNj c #94540d", -"bxA c #945417", -"dSP c #945506", -"dLx c #945508", -"cQv c #945512", -".Rr c #94551f", -"aw4 c #945609", -"bm1 c #94560b", -".u2 c #94560d", -"djB c #945706", -"br0 c #945716", -"dCe c #945800", -".tg c #94580f", -"cWY c #945819", -"chU c #945913", -"b2M c #945917", -"clL c #945a11", -"bR8 c #945b0c", -"ayO c #945b0e", -"cyW c #945b16", -"ar9 c #945c11", -"dKY c #945d02", -".N8 c #945d0a", -".hz c #945e08", -"bfj c #945f0f", -"cuv c #945f19", -"#O9 c #94600d", -"dDD c #94620d", -".VE c #946223", -".TW c #94622f", -"#hg c #946400", -"cqm c #946418", -"#Dp c #946509", -"ciZ c #94650d", -"#JC c #946515", -"##k c #94651f", -"#S5 c #94660e", -"#RF c #94670c", -"dJI c #946712", -"dKt c #946716", -"cnF c #946811", -"dQZ c #946821", -"#p0 c #94691a", -".T2 c #946a08", -"co3 c #946a18", -"cpt c #946a1e", -"#F5 c #946a22", -"#Qq c #946b11", -"dLo c #946b13", -"coF c #946b19", -"dIa c #946b1c", -"#HE c #946c17", -"#lu c #946d10", -"cnD c #946d1e", -"caX c #946d20", -"#RL c #946e09", -".Kl c #946e1b", -".8c c #946e23", -"#T# c #946f07", -"#j6 c #946f14", -".TI c #946f29", -"#qb c #94701a", -"#cG c #947117", -".N9 c #94711d", -"##x c #94720e", -"#JA c #947218", -".EF c #947219", -"aC2 c #947245", -"#Lm c #94753c", -"ccQ c #94761c", -"bkH c #947620", -".CI c #947731", -"#j9 c #94780b", -".Sm c #947814", -".6s c #94782e", -".Ui c #947920", -"cdJ c #947922", -"c6A c #947972", -"#xQ c #947a1b", -"#HB c #947a1d", -".AT c #947a23", -"bnD c #947a25", -"c.1 c #947a30", -".9Z c #947b05", -".Qp c #947b14", -"dPH c #947b16", -"cbI c #947b1e", -"#I7 c #947b3b", -".Qr c #947c18", -"#tH c #947e1b", -"bkG c #947f26", -"c8f c #947f7c", -"cRy c #94801f", -"c.O c #948029", -"#T. c #948118", -".Oo c #94811a", -".AS c #948123", -"#lw c #948212", -".H2 c #948317", -"dL9 c #948319", -"#r0 c #948327", -"bi8 c #948329", -".RO c #948436", -"#0u c #94851e", -"ciF c #948526", -"dOT c #94861b", -"aZG c #948679", -"aNO c #948781", -".IG c #948a28", -"c8T c #948a8b", -"#OI c #948a92", -"c7g c #948b8e", -".nu c #948c21", -"aYr c #948d85", -"#eY c #948e8e", -"dnK c #948e90", -"#TY c #948f93", -"#am c #949084", -"aXI c #94908d", -"dot c #94908f", -"aYT c #94918c", -"a#m c #94937f", -"#3D c #94948c", -"aYQ c #949492", -"dcp c #949494", -"d.8 c #949590", -"dlK c #949693", -"aLG c #949695", -"daW c #94978e", -"dU# c #952200", -"dSt c #952807", -"cCN c #952902", -"cBF c #952a00", -"cDJ c #952a08", -"dMI c #952b00", -"cH0 c #952b01", -"cJG c #952b03", -"cCM c #952b04", -"cBx c #952c00", -"cEO c #952c0c", -"cJU c #952c0e", -"dNX c #952d00", -"cCG c #952d06", -"cDG c #952d08", -"cDM c #952e01", -"cH1 c #952e03", -"adB c #952e05", -"caa c #952e0b", -"cQC c #952f00", -"cMl c #952f07", -"afv c #952f09", -"cW2 c #953000", -"cTW c #953004", -"c#e c #953006", -"#9# c #953100", -"cPz c #953200", -"cPk c #953209", -"cI1 c #953302", -"a.P c #953304", -"c.J c #953306", -".gx c #95330c", -"cbd c #953400", -"a.O c #953401", -"csF c #953409", -"cP1 c #95340a", -"bQW c #953500", -"bXe c #953502", -"aPH c #953503", -"cTL c #953505", -"aws c #953600", -"bZI c #953606", -"cM8 c #953608", -"dO9 c #95360a", -"a5C c #95361a", -"bus c #953700", -"dDM c #953701", -"bF0 c #953703", -"bId c #953704", -"#UO c #953800", -"al# c #95380c", -"bNb c #95380d", -"b8l c #95380f", -"bvD c #953906", -"cmU c #953908", -"ci1 c #95390a", -"cKn c #953a00", -"#Tj c #953a01", -"cHA c #953a03", -"b03 c #953a05", -"#NU c #953a0b", -"b#p c #953a0d", -"cd9 c #953a0e", -"bOH c #953b00", -"bAy c #953b06", -"dOg c #953b07", -"afC c #953b09", -"b4G c #953c00", -"bw1 c #953c02", -"cXC c #953c04", -"cZn c #953c10", -"bFb c #953c12", -"ck1 c #953c14", -"b4w c #953d00", -"bYJ c #953d0b", -"bL8 c #953d0d", -"bLA c #953d0f", -"bAE c #953e08", -"cj. c #953e09", -"bMb c #953e13", -".#B c #953e22", -"car c #953f02", -".Pm c #953f04", -"blT c #953f06", -"bAP c #953f0c", -"bK2 c #953f0e", -".LN c #954000", -"buY c #954007", -"bXz c #954009", -"chv c #95400a", -"aSG c #954019", -"cD. c #954100", -"bDl c #954101", -"dGr c #954103", -"buw c #954105", -"c#v c #954112", -"cft c #954115", -"bAT c #954200", -".zO c #95420c", -"cXn c #95420e", -"bSz c #954210", -"b8i c #95421a", -"ct9 c #954300", -"bnX c #954307", -".AF c #954309", -"bbj c #95430b", -"bE5 c #954311", -"cjr c #954313", -"cOF c #954314", -"cSM c #954402", -"bzy c #954403", -"bB. c #954405", -".bv c #95440c", -"auw c #95440d", -"cjs c #95440f", -"bqm c #954415", -".s# c #954419", -".Ey c #954500", -"cF5 c #954506", -"bi0 c #954508", -"bIT c #95450a", -"bXX c #954510", -".Hs c #954512", -".rC c #954514", -"cej c #954600", -"cL9 c #954601", -"ajb c #954603", -".CC c #954604", -"bIo c #95460b", -"bE. c #95460d", -"bK5 c #95460e", -"c#w c #95461f", -".Gq c #954700", -"b3o c #954705", -"bKD c #954709", -"cK# c #954716", -"b7u c #954800", -"cTr c #954802", -"ahj c #954804", -"bK6 c #954810", -"bMf c #954812", -"bOb c #954814", -"ak4 c #954900", -"cjn c #95490b", -"b57 c #95490d", -"bl4 c #954915", -".Fv c #954917", -"btI c #954a06", -".Gk c #954a07", -"bWS c #954a09", -".U9 c #954a10", -"cD# c #954a11", -"cwo c #954b02", -"axl c #954b04", -"axV c #954b0a", -"apW c #954b0c", -"btd c #954b0e", -".fA c #954c00", -"bLO c #954c07", -"bzI c #954c08", -"#x7 c #954c15", -"dzi c #954d00", -".1t c #954d01", -".Ay c #954d03", -"di2 c #954d05", -"ccm c #954d12", -"cOV c #954d13", -"c3A c #954e00", -"#4C c #954e0e", -"cPC c #954e16", -"b0P c #954f00", -"cQq c #954f09", -"bXk c #954f0a", -"b54 c #954f11", -"bop c #954f13", -"cQV c #954f1b", -"bti c #955005", -"dU4 c #95500b", -"b4L c #95500f", -"cQd c #955019", -"c0d c #955027", -"dO3 c #955100", -".yG c #955106", -"bPW c #955108", -"bOq c #95510a", -"cNK c #955110", -"cVV c #955112", -"#57 c #955203", -"b0h c #955204", -"ab0 c #95520b", -"bMn c #95520c", -"cxZ c #955300", -"cZJ c #955305", -"dGn c #955309", -"dmF c #95533b", -"b1J c #955404", -"#0C c #95550d", -"bpQ c #95550e", -".3# c #955607", -"cgS c #955611", -"#Pp c #955620", -"c06 c #955635", -"c#T c #95570a", -"bR6 c #95570c", -"bMp c #95571a", -"ayL c #955819", -"cR6 c #955913", -"dNv c #95591d", -"dkM c #955923", -"b4Z c #955a00", -".F8 c #955b00", -"dCg c #955b09", -"b3R c #955b12", -"dlb c #955c0b", -"cnA c #955c15", -"cqq c #955d06", -"b2H c #955d10", -"bWh c #955d12", -"cfV c #955e03", -"dEU c #955e04", -"aoD c #955e0b", -"bYi c #955e0e", -"ckQ c #955f15", -"b2F c #955f17", -"b38 c #956004", -"cVz c #956100", -"caP c #956116", -".9O c #956127", -"#Jo c #956200", -"b29 c #956206", -"dKq c #956207", -"cnG c #956211", -"boK c #956229", -"b37 c #956302", -"cfX c #95630a", -"bVn c #956415", -"b36 c #956503", -"cOg c #956511", -"caN c #956513", -"#XM c #95651b", -"#rM c #95651d", -"cfY c #95660a", -"#NJ c #956712", -"#pZ c #95671a", -"cpw c #95680d", -".jB c #956815", -".X3 c #956a0c", -"c8o c #956b15", -"cpv c #956c10", -"dGc c #956c1a", -".Ch c #956d0e", -"dGb c #956d16", -"#cF c #956e11", -"aHj c #956e45", -"#tG c #956f1c", -".20 c #956f28", -"#UF c #957005", -"coD c #957022", -"bfk c #95711b", -"ceW c #95720e", -"#vx c #95721e", -"#Wj c #957308", -"c#W c #95732b", -"#lv c #957512", -"cdI c #957528", -".0P c #95754c", -".tf c #957721", -".91 c #957812", -"dLf c #957915", -".77 c #957926", -".Zx c #957a11", -".8k c #957a21", -".Gw c #957b1a", -".T3 c #957c15", -"dPI c #957c18", -"aIH c #957c68", -"dM5 c #957d13", -"##h c #957d1b", -"ccy c #957e1e", -"cTD c #958017", -".KE c #958128", -"aDS c #958168", -"##g c #95821c", -".CR c #958224", -"#B6 c #958226", -"c5B c #958379", -"#ly c #958412", -"dN1 c #958418", -".IL c #95842c", -".My c #958523", -"#lx c #958613", -"dN4 c #95871c", -".Cj c #958726", -"#RI c #95882a", -".Zz c #958b18", -"dN2 c #958b1c", -".bK c #958b2a", -"#S9 c #958c25", -"#RK c #958c27", -"aMH c #958d80", -".po c #958e23", -"c9f c #958e95", -"cTC c #95901b", -"c7j c #959192", -"c16 c #959231", -"#eI c #95928b", -"aYU c #95928d", -"dcB c #959396", -"#.p c #959482", -"daU c #95958d", -"dcv c #959593", -"dco c #959595", -"dcz c #959597", -"#ir c #959691", -"daN c #959794", -"da0 c #959a9d", -"c9m c #959b9b", -"c9y c #959e99", -"bQU c #962800", -"cAy c #962900", -"cH# c #962a00", -"dUZ c #962a06", -"bPU c #962b00", -"dHG c #962b01", -"cDK c #962b07", -"cIR c #962c02", -"cEK c #962c04", -"cPU c #962d00", -"ca6 c #962e07", -"dSx c #962e09", -"cJV c #962e0b", -"cO. c #962f00", -"#HM c #962f02", -"c.I c #962f04", -"cNd c #962f06", -"cLw c #962f0c", -"bQ7 c #963000", -"cGv c #963008", -"cMm c #96300a", -"cXF c #963100", -"aas c #963103", -"bqf c #963105", -"a.Q c #963107", -"bLH c #963200", -"cBJ c #963201", -"aho c #96320e", -"auh c #963210", -"cK4 c #963300", -"cH2 c #96330a", -"cwU c #963314", -"cy# c #963403", -"cEB c #963405", -"cLO c #96340d", -"b1C c #963500", -"#Pg c #963502", -"cya c #963508", -"cP9 c #96350a", -"cuG c #96350b", -"bAA c #963600", -"a0a c #963603", -"#Ph c #963604", -"crA c #963606", -".kq c #96360c", -"cuL c #96360e", -"aVq c #96361d", -"a.N c #963700", -"cnT c #963701", -"#LT c #963707", -"auz c #963709", -"ce. c #96370b", -"auK c #963800", -"ccd c #963802", -"bs5 c #963804", -"cMC c #963805", -"a3D c #963812", -"ajd c #963900", -".mq c #96390d", -"a.Z c #963917", -"afr c #963a00", -"bIe c #963a07", -"al. c #963a09", -"bYN c #963a0b", -"bDU c #963b02", -"bzr c #963b04", -"arD c #963b06", -"cg4 c #963b0c", -"bCO c #963c00", -"b7Q c #963c07", -"ayi c #963c08", -"cgb c #963c0a", -"c2h c #963d00", -"b8e c #963d01", -"byl c #963d03", -"boP c #963d05", -"bAS c #963e00", -"c#F c #963e0c", -"bT8 c #963e0e", -"cex c #963e10", -".G4 c #963e18", -"cvb c #963f00", -"bLm c #963f09", -"bYH c #963f0a", -"dgz c #964000", -"bZy c #964003", -"bAG c #964005", -"bFY c #964007", -"c.n c #96400d", -"bTC c #96400f", -"ahk c #964100", -"ajc c #964101", -"#HI c #964108", -"cgs c #96410a", -"bNc c #96410b", -"#87 c #964200", -"bnY c #964202", -"bEq c #964204", -"btE c #964206", -"cLH c #964213", -"cVP c #964214", -".LO c #964300", -"#Qy c #964301", -".g6 c #96430d", -"bJn c #964311", -"dop c #964317", -".qh c #964319", -"b9i c #96431b", -"di4 c #964400", -"bzX c #964408", -"bGu c #96440a", -"aqs c #964503", -"bDp c #964504", -"bmv c #964506", -".w2 c #96450d", -"bG2 c #96450e", -"bRo c #964510", -"cas c #964516", -"cPr c #964518", -"btH c #964600", -"c6J c #964601", -"bLR c #964607", -"bSt c #964609", -"bCK c #96460b", -"bN. c #964611", -".Fu c #964615", -"bYp c #964700", -"dI5 c #964702", -"at5 c #964705", -"aw0 c #96470c", -"bqn c #96470e", -"cbz c #96470f", -"#7w c #964800", -"bBV c #964806", -"dKe c #964808", -"bz1 c #96480a", -"cQJ c #964818", -"bKZ c #96481a", -"dHx c #964901", -".fB c #964903", -"bQY c #964905", -"bPk c #964913", -"aAa c #96491f", -".Cw c #964a00", -"bTG c #964a0c", -"cks c #964a0e", -"b55 c #964a10", -"bYv c #964a16", -"b0Q c #964b00", -"ckr c #964b07", -"bKw c #964b0a", -"bHG c #964b11", -"b6A c #964b14", -"cEe c #964b24", -"drP c #964c01", -"cwp c #964c03", -"bMX c #964c05", -"cu# c #964c0b", -"bMl c #964c0d", -"dOn c #964c0f", -"#7t c #964d00", -".u3 c #964d08", -"b7L c #964d09", -"bZr c #964d18", -"bth c #964e02", -"bXu c #964e04", -"bLP c #964e06", -"dMr c #964e14", -"dMj c #964f00", -"b3l c #964f0f", -"dtO c #964f11", -".N7 c #965000", -"dsS c #965103", -"cO6 c #965104", -"cl5 c #965106", -"bPm c #96510e", -".Rs c #965118", -"c0e c #965128", -"bAM c #965200", -"dPU c #965207", -"dQc c #965209", -"byz c #965213", -"bBO c #965305", -"bpP c #96530f", -"boL c #96531c", -"dlz c #965503", -"dly c #965505", -"bMo c #965511", -"dRn c #965515", -"b5O c #965600", -"bZg c #96560e", -"bmZ c #96560f", -"bqr c #965700", -".3. c #965707", -"bl7 c #965708", -"#Zp c #96570a", -"bQZ c #96580d", -"cUB c #965900", -"b90 c #965916", -"dmi c #96593d", -"bsF c #965a14", -".Tr c #965a1c", -"atw c #965b0f", -"c08 c #965b3d", -"#Jn c #965c00", -"dKZ c #965c08", -"dLv c #965c0a", -"cmG c #965c13", -".H4 c #965d00", -".J1 c #965d04", -"c5e c #965e09", -"aqo c #965e0b", -"#Lo c #965e11", -"cuw c #965e14", -"b40 c #965f02", -"b14 c #965f0d", -"#4y c #96600a", -"b41 c #966101", -"dCj c #966113", -"bo6 c #966200", -".ex c #966229", -"cwP c #966307", -"cgY c #96630a", -"dOB c #966405", -"aCA c #96641b", -"c0F c #966518", -"aSJ c #966556", -"akZ c #966612", -"ciQ c #96661a", -"aoA c #96661c", -"ciY c #96670d", -"c.5 c #966719", -"#Wc c #966918", -".oz c #966928", -".VY c #966b05", -"dJs c #966e19", -"dQX c #966e26", -"cfT c #966f14", -"coE c #966f20", -".H3 c #967001", -"#a4 c #96700b", -"#tF c #96701f", -".78 c #967029", -".sm c #967032", -"#XU c #967211", -"#ho c #967212", -".jz c #967214", -".Ue c #96730b", -"#iI c #967315", -"cgT c #967319", -"cmu c #967322", -"#OY c #967409", -"bTK c #96742c", -".Ud c #96750c", -"caW c #967518", -"cjC c #96762d", -"#qa c #96771d", -"#D6 c #967725", -"#aQ c #967818", -"c#0 c #967820", -"#hf c #967900", -"c5f c #96791b", -".6z c #96791d", -"cpq c #967929", -"dMa c #967a0f", -"#mT c #967a17", -"#1L c #967c1b", -"#UB c #967c25", -"bi9 c #967c27", -"#XO c #967d23", -"dQi c #967d2b", -".Qq c #967e14", -"cbX c #967e1a", -"dM4 c #968116", -".CS c #968128", -"cdu c #96812e", -".Op c #96821f", -"#O6 c #968324", -".RP c #968336", -"#c. c #968484", -"dLg c #96851d", -"cdv c #968529", -"aeD c #96857e", -".Zy c #968615", -"#zx c #968617", -"bm# c #968720", -"c7B c #96878e", -".75 c #968825", -".VZ c #968919", -"#Hw c #968920", -"#rZ c #96892b", -"#l0 c #968952", -"dxd c #968983", -"aLd c #968a7a", -"c7f c #968d8e", -"aXf c #968e7b", -"aNh c #96918d", -"c9g c #969198", -".VI c #969275", -"c5L c #96928f", -"a0J c #96938a", -"dhh c #96938e", -"aRp c #969495", -"daQ c #969591", -"daO c #969694", -"deF c #969696", -"#3z c #96988d", -"c9q c #969895", -"#gk c #969897", -"c9l c #969a9b", -"d.0 c #969a9d", -"c9k c #969c9c", -"d#g c #96a097", -"#PH c #96a375", -"dUo c #972200", -"dTI c #972407", -"dL6 c #972904", -"dHF c #972a01", -"dHC c #972a03", -"axT c #972b00", -"bMS c #972c00", -"cDL c #972c08", -"dNW c #972d00", -"cNc c #972d03", -"cKG c #972d05", -"dMi c #972d06", -"azF c #972e00", -"cTX c #972e01", -"bXf c #972f00", -"cNe c #972f08", -"cME c #973000", -"ab5 c #973003", -"czo c #973005", -"cBK c #973100", -"#Pf c #973200", -"cdY c #973204", -"czn c #973206", -"#FM c #973208", -"b3F c #973300", -"bP3 c #973301", -"#JM c #973302", -"cOR c #973400", -"cP2 c #97340a", -"cF2 c #973504", -"cTd c #973506", -"coH c #973508", -"bJw c #973600", -"cnU c #973601", -"cPc c #973603", -"cw2 c #973609", -"awj c #97360b", -"cOH c #97360c", -"ajh c #973613", -"cd6 c #973700", -"csC c #973704", -"cqu c #973705", -"cMw c #973707", -"cPw c #97370d", -"cUn c #97370f", -"a01 c #973800", -"cbm c #973802", -"b5k c #973808", -"asM c #97380a", -"cVT c #97380c", -"bCQ c #973900", -"coJ c #973903", -"b4r c #973905", -"ck4 c #973906", -"a10 c #973a00", -"b7b c #973a0e", -"cXo c #973b00", -"cf2 c #973b08", -"bJo c #973b0a", -"dOm c #973b0c", -"aPI c #973b12", -"cVg c #973b14", -"brF c #973c03", -"bEU c #973c05", -"ayj c #973c07", -"c.k c #973c0d", -"cew c #973c10", -"bl0 c #973d00", -"bw0 c #973d01", -"ci9 c #973d08", -"bWC c #973d09", -"bUJ c #973d0b", -"che c #973e00", -"cHL c #973e02", -"dGs c #973e04", -".e2 c #973e06", -"bl1 c #973f00", -"cg. c #973f0d", -"ci7 c #973f11", -"bDk c #974000", -"bK4 c #97400a", -"cJX c #97400b", -"bnj c #974104", -"#6. c #974106", -"cUF c #974108", -"brC c #974110", -"bMc c #974112", -"aXT c #974128", -"afq c #974200", -"bM1 c #974201", -"bVB c #974202", -"cWM c #974209", -"cS9 c #97420b", -"cIi c #97420c", -"dd6 c #97421d", -"bZp c #974300", -"axC c #974303", -"amW c #974305", -"byN c #974307", -"bK1 c #974315", -"bpq c #974400", -"#7x c #974402", -"bRp c #97440e", -"bzG c #974410", -"aBq c #974412", -"b6I c #974500", -"bA7 c #974509", -"bHA c #97450b", -"bIS c #97450d", -"dGk c #974513", -"cWq c #974604", -"aoH c #974605", -"cwS c #974607", -"bUw c #97460e", -"boM c #97460f", -"aht c #974611", -"b7j c #974619", -"buH c #974700", -"b8O c #974702", -"bmw c #974708", -"chq c #97470a", -"bG8 c #97470c", -"bIs c #974712", -"bzz c #974803", -"bha c #974805", -".U8 c #974806", -"bCl c #97480d", -"b1N c #974810", -".Ez c #974900", -".Ex c #974901", -"cBa c #974907", -"byQ c #974909", -".DF c #974918", -".LP c #974a00", -"dSQ c #974a02", -"bw5 c #974a04", -"bvQ c #974a06", -"b5f c #974a12", -"cZK c #974b00", -"aw1 c #974b0d", -"cjp c #974b0f", -"#X0 c #974c08", -"bte c #974c09", -"cir c #974c0b", -"#JX c #974c13", -"bOn c #974c15", -"btg c #974d02", -"#Qx c #974d04", -"btf c #974d06", -"bIX c #974d10", -".LD c #974e00", -"bZV c #974e01", -".th c #974e09", -"azm c #974e0a", -"bE8 c #974e17", -"bR9 c #974f03", -"buJ c #974f05", -"a.I c #974f07", -"b2K c #974f14", -".ew c #974f1d", -"cRg c #974f1f", -".LC c #975000", -"#xV c #975010", -"bRv c #975012", -"bzC c #975100", -"cJr c #97510b", -"cdf c #97510c", -"bD9 c #975113", -"b4k c #975115", -"c5d c #975204", -"bO2 c #975205", -"dSB c #97520d", -"btJ c #97520f", -"chz c #975219", -"avf c #97530a", -"bC0 c #97530c", -"br2 c #975312", -"b4M c #975316", -".Ly c #975400", -"atV c #975405", -"b0b c #97540d", -".pI c #975507", -"bny c #975509", -"dT7 c #975602", -"b1I c #975604", -"b1H c #975606", -"bsE c #975612", -".P2 c #975614", -"#Lp c #975700", -"dla c #97570d", -"c3y c #975808", -".H7 c #975809", -"avg c #97580b", -"arI c #975811", -"#OV c #975904", -"dLu c #975906", -"cOd c #975910", -"dPV c #975a09", -"dLw c #975a0a", -"b39 c #975b03", -"bUd c #975b12", -"c.8 c #975b1c", -"cPI c #975c0e", -"dkI c #975c10", -"ctx c #975d13", -"dHd c #975e07", -"aw6 c #975e0d", -"avh c #975e0f", -"dVk c #975f0a", -"csu c #975f15", -"cuB c #976003", -"aqn c #97600e", -"#OW c #976206", -"#4x c #97630d", -"ciW c #97630f", -"c0I c #976310", -"bpa c #97631a", -"ctz c #976411", -"bUe c #976415", -"b35 c #976504", -"ch2 c #97650c", -"ciX c #976510", -"aql c #97651c", -"#UG c #976600", -".NP c #976705", -"cuY c #976715", -"#23 c #976810", -"dJK c #97681a", -"dQY c #976822", -"cR5 c #97691b", -".PP c #976a0d", -"csx c #976b12", -"#Uy c #976b14", -"cVy c #976c03", -"#Dq c #976d0b", -"c.M c #976d25", -"#a2 c #976e00", -".4S c #976e12", -"#NH c #976e14", -"dHj c #976e1e", -".RK c #976f1a", -".JV c #977011", -"#Bq c #977013", -"#Qt c #977110", -"#Zd c #977120", -"#mS c #977217", -"#22 c #977315", -"#LG c #97731b", -"bo9 c #97731d", -".sl c #977337", -"#a6 c #977418", -".PX c #977535", -".3t c #977569", -"ceU c #977625", -"c.0 c #97762f", -"#iQ c #977700", -"#d7 c #97780e", -"cRz c #97781d", -"ckC c #977923", -".2Z c #977a2c", -"ccP c #977b18", -"#hp c #977b1a", -"cdM c #977c15", -".CU c #977d30", -"#Fp c #977e07", -"c#M c #977e2c", -"caF c #977f27", -"dM1 c #978018", -".ZH c #978020", -".EG c #978023", -".lu c #97811c", -".KG c #97812b", -"aEx c #978169", -"#q. c #978225", -"#0s c #978322", -"cjE c #978324", -".IJ c #97832a", -"dPK c #978523", -"dN5 c #97861e", -".bJ c #97862c", -"a4m c #97867c", -"#NF c #978728", -"dOV c #978821", -"dN3 c #97891c", -"bi5 c #978a21", -"#LD c #978a2a", -"doS c #978c8a", -"aGf c #978d8c", -"#J7 c #978e53", -"c52 c #978e8f", -"aVZ c #97928e", -"aYX c #97938a", -"c7k c #979596", -"aYc c #979692", -"dmm c #97969b", -"aP7 c #97978b", -"ddD c #979797", -"#nu c #97985e", -"d.9 c #979893", -"dlH c #97989a", -"da1 c #97989d", -"dlJ c #979996", -"dlI c #979998", -"d.5 c #979b9a", -"c9x c #979c96", -"d#h c #97a29c", -"c9z c #97a29e", -"dUU c #982206", -"dU0 c #982604", -"dJk c #982900", -"bPT c #982a00", -"bXg c #982b00", -"czr c #982c00", -"cJF c #982c05", -"cCO c #982d00", -"cET c #982e00", -"cCF c #982e04", -".S9 c #982f00", -"cFG c #982f02", -"bW# c #983000", -"cDF c #98300b", -"cGw c #983108", -"cSB c #983201", -"cx6 c #983202", -"cSC c #983300", -".Lo c #983305", -"cKD c #983307", -"#FL c #983309", -"aar c #983400", -"cQz c #983402", -"ce# c #983403", -"afs c #983500", -"cTl c #98350c", -"bzu c #983600", -"b7f c #983605", -"cJW c #983607", -"cyb c #983609", -"cnN c #983700", -"bKt c #983702", -"bYP c #983704", -"aGz c #98370a", -"cLN c #98370c", -"auL c #983800", -"bTk c #983805", -"bYO c #983806", -"cLs c #983808", -"aRz c #983900", -"bO6 c #983901", -"cbc c #983903", -"cGU c #983909", -"cUK c #98390b", -"bCP c #983a00", -"b1m c #983a04", -"bF1 c #983a06", -"bIc c #983a07", -"aJ7 c #983a18", -"awC c #983b00", -"bLI c #983b02", -"dNm c #983b0f", -"clU c #983b12", -"bvK c #983c00", -"atq c #983c09", -"bVT c #983c0b", -"cu. c #983d00", -"arE c #983d04", -"bK3 c #983d06", -".PF c #983d08", -"bWI c #983d0e", -"bN5 c #983e00", -"#Wr c #983e02", -"b5n c #983e09", -"bAQ c #983e0a", -"bVH c #983e0c", -"doK c #983f00", -"bh# c #983f03", -"bF4 c #983f05", -".Ry c #983f07", -"bCj c #984000", -"b0# c #984001", -"bFf c #98400e", -"dm1 c #984018", -"dnj c #98401a", -"dd1 c #984100", -"cY. c #98410b", -"bSA c #98410c", -"b1z c #984205", -"bYM c #984207", -"bQl c #984209", -"du7 c #98420f", -"a.1 c #984211", -"bEs c #984300", -"cax c #984302", -"b2l c #984303", -"cVF c #98430a", -"bG3 c #98430c", -"afD c #98430d", -"ax4 c #98431a", -".Cz c #984400", -"bAH c #984404", -"bCd c #984406", -"bXG c #984408", -"bLy c #984416", -"b9h c #984418", -"chn c #984500", -"dJP c #984501", -".CB c #984503", -"cVa c #98450f", -"bI# c #984511", -"b8g c #984513", -"aqF c #984600", -"dLU c #98460a", -"cby c #98460c", -"b7i c #984614", -"bAI c #984705", -"bKz c #984706", -"bQn c #984708", -"awZ c #98470f", -"bMe c #984710", -"bK0 c #984718", -".Kb c #984800", -"cfm c #984801", -".Ig c #984803", -"bY2 c #984809", -"#JF c #98480b", -"cRD c #98480d", -"b4m c #984813", -"amV c #984900", -"diH c #984904", -"bnZ c #984906", -"bVC c #984907", -"chp c #98490e", -"cYx c #984910", -"bo0 c #98491e", -".Az c #984a00", -".Ih c #984a02", -"cjo c #984a0a", -"bGy c #984a0c", -"bx# c #984a19", -"dxS c #984b00", -".EA c #984b03", -"bl2 c #984b05", -"b8P c #984b07", -"caz c #984b13", -"b3n c #984b15", -"cK8 c #984b17", -".LE c #984c00", -"cPL c #984c01", -"brR c #984c0e", -"bJG c #984c12", -"cku c #984c18", -"bnv c #984c1b", -"bLN c #984d09", -"cWr c #984d0a", -".Es c #984d0c", -"bMk c #984d13", -"b3m c #984d14", -"cxy c #984e03", -"bNM c #984e05", -"bY1 c #984e07", -"bn1 c #984e0d", -"bpt c #984e0f", -"cRh c #984e1f", -"bYf c #984f0b", -".LQ c #985000", -"c6K c #985004", -"b5e c #985015", -"cix c #985016", -"csB c #985103", -"cRB c #98510f", -"#Ns c #985200", -"dLK c #98520d", -"av7 c #985305", -"bNZ c #985306", -"bNY c #985308", -"bWg c #98530e", -"bv0 c #985310", -"bxz c #985312", -"dMG c #98540b", -".gA c #985423", -"#XZ c #985507", -"#BK c #98550e", -".pK c #985511", -"b17 c #985608", -"#56 c #985705", -"dkK c #985707", -"dMt c #985715", -"ayK c #98571d", -"#Pq c #98571f", -"cYW c #98580e", -"bos c #985811", -"br1 c #985818", -"#m5 c #985a05", -"c93 c #985a0d", -"c3B c #985b08", -".VV c #985b24", -"cji c #985c04", -"cPO c #985c16", -"aw5 c #985d0d", -"#JD c #985e14", -"cyU c #985e15", -"#UH c #985f05", -"aA6 c #985f1c", -".4V c #98600d", -"#qe c #986015", -"#NK c #986111", -"bi2 c #98620c", -".LX c #986303", -"aoC c #986313", -"aqm c #986315", -"aAD c #98631d", -"dLe c #98640e", -"cnz c #98641b", -"caO c #986516", -".mG c #986629", -"c.6 c #98671b", -"cOf c #986813", -"csw c #986816", -"bqu c #986921", -".1n c #986923", -".JW c #986a0c", -".jA c #986a14", -"#m1 c #986a15", -".mE c #986a2f", -"aXU c #986b54", -"bhd c #986c13", -"#OX c #986e0a", -"cC5 c #986e22", -".L4 c #986f05", -"dHf c #986f15", -"c#2 c #986f1f", -"#ls c #987018", -"c#1 c #98731b", -"cpr c #987323", -"bTL c #98732d", -"#iZ c #987615", -"ceV c #98761d", -"#We c #98761f", -"#Dr c #98790d", -"##i c #98791e", -"#fF c #987a0a", -".93 c #987a22", -"##q c #987b1d", -".XQ c #987c0f", -"cwO c #987c19", -"bhe c #987c1b", -"#RH c #987d22", -"cU# c #987e0d", -"#NC c #987e1f", -"#Ze c #987f23", -".CT c #987f2d", -"c3g c #987f6b", -"#H6 c #98803a", -".76 c #988326", -".IK c #98832a", -"ciE c #98842e", -".9K c #988620", -"bkC c #98871d", -"aJM c #988773", -"aE2 c #98877d", -"cxY c #988826", -"#0t c #988924", -"dOW c #988b25", -"c7C c #988b92", -"#zy c #988c14", -"#mY c #988c1e", -"c3D c #988c28", -"dyM c #988c80", -"#xD c #988e13", -".XS c #988e1b", -"#vD c #98911c", -"#k2 c #989495", -"a1o c #989590", -"aUX c #989697", -"dcM c #989795", -"#dy c #98988c", -"dcw c #989896", -"ddh c #989898", -"c7l c #98989a", -"#T4 c #989994", -"dcy c #98999b", -"cT6 c #989a1b", -"c55 c #989a97", -"d.4 c #989a99", -"d.3 c #989c9b", -"c9n c #989c9d", -"d#f c #989e94", -"dUj c #991a00", -"dS8 c #991f00", -"dVo c #992200", -"dK# c #992300", -"dSX c #992400", -"dU3 c #992500", -"dTH c #992903", -"bPS c #992a00", -"bR3 c #992b00", -"bWa c #992c00", -"dSs c #992c03", -"cEJ c #992d00", -"dN# c #992d06", -"cFv c #992e00", -"cFH c #992e02", -"czq c #992e04", -"cFI c #992f00", -"czp c #992f05", -"#JL c #993000", -"cGj c #993003", -"cJ6 c #993100", -"cwY c #993205", -"cFF c #993207", -"dMU c #993209", -"cDP c #993302", -"cDR c #993303", -"aft c #993400", -"cQF c #993406", -"cKC c #993408", -"bZJ c #993501", -"bqg c #993503", -"cCQ c #993504", -"cx3 c #993511", -"ahl c #993600", -"cId c #993706", -"dNT c #993708", -"cvS c #99370a", -"ccj c #993801", -".Lr c #993803", -"bsZ c #993805", -"b7l c #99380b", -"cAl c #99380e", -"auN c #993900", -"bXJ c #993906", -"b#o c #993907", -"cI2 c #993909", -"bs2 c #993a00", -"cYt c #993a02", -"cnS c #993a04", -"cV. c #993a0a", -"cU9 c #993a0c", -"bwZ c #993b00", -"#Pc c #993b05", -"bG5 c #993b07", -"b5p c #993b08", -"blZ c #993c00", -"#Ti c #993c01", -"cda c #993c03", -"cKi c #993c13", -"ady c #993d00", -"cKW c #993d0a", -"bYI c #993d0c", -"bFc c #993d14", -"b0j c #993e00", -"bUp c #993e05", -"#RV c #993e07", -"b5o c #993e09", -"bFe c #993e0f", -"bEa c #993e11", -"bFd c #993e12", -".LM c #993f01", -"bAR c #993f03", -"bG4 c #993f0a", -"c3P c #993f0b", -"bBS c #993f0d", -"c8n c #994000", -"boO c #994004", -"bZz c #994006", -"bDT c #994008", -"bLz c #994014", -"cgm c #994100", -"bBa c #994101", -"bzH c #994102", -"bTl c #99410f", -"awh c #994111", -"b0s c #994200", -"buv c #99420c", -"bIa c #99420d", -"cik c #994300", -"ak8 c #994306", -"c3Q c #994308", -"bXF c #99430a", -"bMd c #994310", -".oj c #994312", -".Qx c #994401", -"bCe c #994403", -".AE c #994404", -".Pn c #99440b", -".e3 c #99440d", -"dE4 c #99440e", -".Fa c #99441f", -".CA c #994500", -"bxc c #994505", -"dKQ c #994507", -"dNj c #994509", -"b9o c #994516", -".dv c #994600", -"aqr c #994602", -"bBU c #994604", -"cLI c #994614", -"b8h c #99461a", -".Kd c #994700", -"bZX c #99470b", -"ciu c #99470d", -"cXJ c #99470f", -"dHr c #994715", -"bql c #99471f", -"dLH c #994800", -"b7O c #994806", -"bQo c #994807", -"cTG c #994809", -"ace c #994810", -"awY c #994811", -"cNY c #994819", -"cYM c #994900", -"ak5 c #994902", -"bpr c #994904", -"cOU c #99490a", -"bIl c #99490c", -"cNk c #994918", -"cSv c #994a00", -"bZW c #994a05", -"bsl c #994a07", -".Rt c #994a0f", -"cjt c #994a11", -"cwQ c #994b00", -"dIm c #994b01", -"byo c #994b03", -"bn0 c #994b09", -"bKC c #994b0b", -"bJ2 c #994b0d", -"cNX c #994b1b", -"b3g c #994c04", -".ZU c #994c06", -"bu1 c #994c08", -"b7o c #994c16", -"buI c #994d01", -".yH c #994d02", -"bK7 c #994d11", -"cju c #994d13", -"dJV c #994e00", -"cyK c #994e0a", -".Pu c #994e0b", -"dK2 c #994e0d", -"aA. c #994e24", -"bAJ c #994f04", -"dJ. c #994f06", -"bBL c #994f08", -"c.w c #994f0e", -"cM4 c #994f10", -"bw6 c #995001", -"dsQ c #995003", -"bw7 c #995100", -".LS c #995105", -"cO5 c #995107", -"bl3 c #995109", -"cQU c #995117", -"ctD c #995202", -"dsR c #995204", -"cS3 c #995210", -"bq. c #99521e", -".LB c #995300", -"b1# c #99530d", -"cQ7 c #99530e", -"#JY c #995318", -".LR c #995400", -"dLt c #995406", -"#53 c #995407", -".ru c #995409", -"bu2 c #99540f", -"bwk c #995411", -".H5 c #995500", -".Mf c #995504", -"bO1 c #99550a", -".pJ c #99550c", -"boq c #995514", -"dMs c #995518", -".Lz c #995600", -"bXo c #995608", -"cV5 c #995700", -"#m4 c #995703", -"b12 c #995709", -"bPX c #99570b", -"#N2 c #99571d", -"b33 c #995804", -"b4. c #995806", -"dld c #995814", -"#eh c #995900", -"bqy c #995912", -"dDz c #995b04", -"#P. c #995b0e", -"b5P c #995e02", -"b13 c #995e0e", -"djT c #995e10", -"cMV c #995e12", -"cPP c #995e18", -".Eh c #995f0b", -"cgX c #996009", -"cZI c #99600f", -"dKy c #99610c", -"#ei c #996200", -"b43 c #996303", -"cmF c #99631b", -"b42 c #996404", -"b34 c #996406", -"#4w c #99650f", -"dKz c #996511", -"aoB c #996519", -"cfU c #99660a", -"dKA c #996613", -"#LI c #996617", -"ch1 c #99680c", -"cjQ c #99681b", -".Vs c #99692b", -"dOz c #996a02", -"#ou c #996a12", -".Er c #996a22", -"cMY c #996b13", -"cS1 c #996c1b", -"dL8 c #996e0f", -"dLk c #996f09", -"#Zk c #997014", -"#lt c #997016", -"#ot c #997018", -"#Jp c #997100", -"#LH c #99711a", -"#aS c #99711c", -"cTE c #997215", -"cpu c #997223", -".Ek c #997227", -"dMb c #99730e", -"#LF c #99741b", -"#a5 c #997515", -"#tE c #997521", -"coz c #997527", -".V8 c #997811", -".X8 c #997924", -".92 c #997a1d", -".8j c #997a1f", -"##u c #997b03", -".Ci c #997c1e", -"c.N c #997c2c", -".Sl c #997d12", -"ccw c #997e2d", -"#g8 c #997f20", -".1h c #997f28", -"aex c #997f72", -"ccx c #998127", -".KF c #99812b", -"c2J c #998270", -"#fz c #99852f", -".6c c #99877b", -"#vB c #99891a", -".7S c #998f86", -"dnL c #99918f", -"aN9 c #99928c", -"c53 c #999594", -"dhI c #999691", -"daR c #999893", -"daV c #99998f", -"c9r c #999997", -"aYP c #999999", -"#dI c #999a95", -"cT7 c #999b1c", -"dcx c #999b9a", -"d.2 c #999d9c", -"c9j c #999da0", -"c56 c #999e9a", -"d#i c #99a3a2", -"dUa c #9a2000", -"bR1 c #9a2100", -"dTQ c #9a2600", -"dJl c #9a2700", -"bQT c #9a2800", -"dUT c #9a2803", -"dTM c #9a2804", -"dIu c #9a2900", -"dHE c #9a2a02", -"dHD c #9a2a04", -"cGi c #9a2b00", -"dK7 c #9a2c07", -"dRh c #9a2d00", -"cb9 c #9a2d02", -"cEU c #9a2e00", -"dJ7 c #9a2e0a", -"#JJ c #9a2f00", -"cAq c #9a2f01", -"cY6 c #9a2f03", -"cZg c #9a2f05", -"#JK c #9a3000", -"cKF c #9a3006", -"cK0 c #9a3008", -"cK1 c #9a3009", -"cCR c #9a3100", -"#HL c #9a3102", -"cab c #9a3104", -"bP2 c #9a3200", -"ci. c #9a3300", -"cIP c #9a3306", -"cJC c #9a3308", -"cJ0 c #9a330a", -"ci# c #9a3400", -"cBI c #9a3403", -"cES c #9a3404", -"adA c #9a3500", -"ab4 c #9a3501", -"dwk c #9a3507", -"cQE c #9a3509", -"cKA c #9a3600", -"cbe c #9a3602", -"b8b c #9a3604", -"cDQ c #9a3605", -"adz c #9a3700", -"cLM c #9a370d", -"cTS c #9a370e", -"bvJ c #9a3800", -"b6a c #9a3807", -"cpz c #9a3809", -"brH c #9a380b", -"cUi c #9a3902", -"aje c #9a3904", -"b6b c #9a3906", -"cLL c #9a390c", -"cPv c #9a390e", -"aqE c #9a3a00", -"bWK c #9a3a07", -"#NT c #9a3a08", -"cmP c #9a3a10", -"a.0 c #9a3a12", -"byj c #9a3b00", -"bzs c #9a3b01", -"ccT c #9a3b03", -"bVI c #9a3b05", -"a3C c #9a3b0b", -"bBG c #9a3c00", -"bF2 c #9a3c06", -"bQk c #9a3c08", -"bWJ c #9a3c09", -"cVi c #9a3c16", -"bdi c #9a3d00", -"auP c #9a3d02", -".cX c #9a3d04", -"b9k c #9a3d12", -"a02 c #9a3e00", -"bIb c #9a3e0b", -".F# c #9a3e17", -"cWd c #9a3f06", -"bTD c #9a3f08", -"cN8 c #9a3f0a", -"bC3 c #9a3f10", -"bZn c #9a4000", -"cbq c #9a4001", -"cM. c #9a4002", -"byk c #9a4004", -"dA0 c #9a400b", -"cU6 c #9a400c", -"bVU c #9a400e", -"b0A c #9a4100", -"bnk c #9a4105", -"bvL c #9a4107", -"ak9 c #9a4109", -".Dd c #9a411f", -"#Wq c #9a4202", -"bEp c #9a4203", -"axB c #9a4300", -"dIh c #9a430d", -"cV# c #9a430e", -"cfl c #9a4400", -"b2p c #9a4407", -"cbx c #9a4409", -".cY c #9a440b", -".PJ c #9a4415", -"adx c #9a4502", -"ak7 c #9a4504", -"clr c #9a4505", -"bxb c #9a450c", -"bCT c #9a450e", -"c0X c #9a450f", -".P8 c #9a4600", -"bpp c #9a4606", -".Ru c #9a4608", -"cWe c #9a460a", -"bZP c #9a4700", -"aoG c #9a4701", -"dig c #9a4703", -"bz0 c #9a4705", -"bq# c #9a4713", -".In c #9a4800", -"cR8 c #9a480e", -"#FJ c #9a4810", -"axp c #9a4900", -"bQp c #9a4907", -"bCk c #9a4908", -"cFS c #9a490a", -".Pr c #9a4911", -".#t c #9a4912", -"bxa c #9a4914", -"b0R c #9a4a01", -".Lu c #9a4a03", -".ZT c #9a4a05", -"b3h c #9a4a0b", -"byr c #9a4a17", -"b8n c #9a4a19", -".NH c #9a4b00", -"bK8 c #9a4b06", -"b4f c #9a4b08", -"b61 c #9a4b09", -"c3S c #9a4b10", -"bVE c #9a4b13", -"#Te c #9a4c01", -".L9 c #9a4c02", -"bK9 c #9a4c04", -"bps c #9a4c0a", -"cMd c #9a4c0c", -"#oM c #9a4c0e", -".Tb c #9a4c1b", -"b8w c #9a4d00", -"brS c #9a4d05", -"cNH c #9a4d07", -"bwj c #9a4d09", -"caA c #9a4d17", -"dNd c #9a4e00", -"b3d c #9a4e02", -"#RQ c #9a4e03", -"bVw c #9a4e10", -"bvS c #9a4f00", -"bQr c #9a4f0b", -"bZf c #9a4f0c", -"bCX c #9a4f0e", -"cQc c #9a4f15", -"bN0 c #9a5005", -"#58 c #9a5007", -".Pv c #9a5009", -"bZU c #9a5102", -"#7u c #9a5104", -"byp c #9a5200", -".wU c #9a5208", -".P3 c #9a520a", -"cRq c #9a5218", -"cV6 c #9a5300", -"dVi c #9a5301", -"#OU c #9a5305", -"dlA c #9a5311", -"cKl c #9a540c", -"ciy c #9a5420", -"b4# c #9a5508", -"bO0 c #9a550a", -"#JE c #9a5510", -"bxg c #9a5514", -"atv c #9a560f", -"b6M c #9a5700", -"dT4 c #9a5708", -"dkL c #9a5711", -"dLT c #9a580e", -"#54 c #9a5909", -"bor c #9a5a13", -"dMF c #9a5b0c", -"bQ1 c #9a5b0e", -"cQu c #9a5b16", -"asa c #9a5c07", -"#XY c #9a5c09", -"bQ0 c #9a5c0f", -"dT8 c #9a5d0a", -"as# c #9a5d0c", -"cS2 c #9a5e16", -"as. c #9a5f11", -".4U c #9a600c", -"#Zo c #9a600e", -"amS c #9a610a", -"cyV c #9a611a", -"aA7 c #9a611c", -"b5Q c #9a6203", -"ch0 c #9a620d", -"cSu c #9a6218", -".Kk c #9a6311", -"#RN c #9a640c", -".Gi c #9a641e", -"#HF c #9a6517", -"ciU c #9a6610", -"amQ c #9a6613", -"#FF c #9a691a", -".6D c #9a6b0f", -"#0x c #9a6b13", -"acg c #9a6b1d", -"#O1 c #9a6c0a", -"ciT c #9a6c16", -"c#3 c #9a6c21", -"crq c #9a6d1c", -"#cD c #9a6e0b", -"#21 c #9a7117", -"cSt c #9a711f", -".ox c #9a7133", -"#cE c #9a7212", -"chV c #9a721d", -"bp# c #9a7328", -"#fM c #9a7400", -"dOv c #9a7423", -"dSM c #9a751a", -"#1I c #9a751c", -".X2 c #9a7616", -".Gv c #9a7618", -"#kl c #9a7719", -".9M c #9a7723", -".1i c #9a7725", -"##z c #9a781f", -"bm. c #9a7910", -".8h c #9a7912", -"##y c #9a791a", -".Uh c #9a7a15", -".ZI c #9a7b20", -"#oP c #9a7b2b", -"#q# c #9a7c22", -"#Hr c #9a7d07", -"#1J c #9a7d1f", -".X1 c #9a7e1a", -"bnC c #9a7e1d", -"#Br c #9a7f16", -"#F6 c #9a7f32", -"ccO c #9a811a", -"dM6 c #9a811d", -"#1K c #9a8220", -".9L c #9a8222", -"#Ds c #9a8510", -"dRt c #9a862d", -".XR c #9a8818", -".nv c #9a8824", -".WU c #9a8a7b", -"#zB c #9a8c12", -".13 c #9a8d6d", -"c4m c #9a8d87", -"#iF c #9a8e2c", -"c7b c #9a8e8e", -"#xF c #9a9017", -"c15 c #9a902e", -"c8U c #9a9599", -"#tI c #9a9726", -"daT c #9a9994", -"c54 c #9a9997", -"aYO c #9a9a9a", -"ddg c #9a9a9c", -"c9w c #9a9b96", -"#gC c #9a9c97", -"dkt c #9a9c9b", -"a5f c #9a9e87", -"c9o c #9a9e9f", -"d.1 c #9a9ea1", -"c9A c #9aa4a3", -"dUk c #9b1900", -"dUl c #9b2200", -"dUi c #9b2300", -"dK. c #9b2400", -"dJm c #9b2600", -"bR2 c #9b2700", -"dSA c #9b2800", -"bR0 c #9b2900", -"dMP c #9b2904", -"dJn c #9b2a00", -"dLc c #9b2b05", -"dIx c #9b2c00", -"dKc c #9b2c01", -"bOV c #9b2d00", -"bVg c #9b2e00", -"cGy c #9b2e03", -"cBG c #9b2f00", -"cNQ c #9b2f01", -"dKb c #9b2f08", -"#LP c #9b3000", -"dNV c #9b3002", -"cNb c #9b3004", -"cJE c #9b3006", -"crH c #9b3100", -"cBs c #9b3101", -"afu c #9b3107", -"#LQ c #9b3200", -"cG9 c #9b3202", -"cDN c #9b3203", -"cLt c #9b3205", -"cBL c #9b3300", -"ci8 c #9b3500", -"b4h c #9b3504", -"bZ9 c #9b3600", -"crB c #9b3602", -"cM9 c #9b3608", -"cyc c #9b360a", -"cnO c #9b3700", -"c#k c #9b3703", -"#LS c #9b3705", -"awB c #9b3800", -"b7W c #9b3801", -"cUo c #9b380f", -"dlX c #9b3900", -"crD c #9b3908", -"cUJ c #9b390a", -"cPu c #9b390c", -"cUR c #9b3912", -"aIC c #9b3916", -"cXp c #9b3a00", -"bIi c #9b3a03", -".PE c #9b3a05", -"cJY c #9b3a07", -"auO c #9b3b00", -"bs1 c #9b3b01", -"cbb c #9b3b08", -"b67 c #9b3b0b", -"cUP c #9b3b13", -"ci2 c #9b3c00", -"bAz c #9b3c02", -"QtS c #9b3c04", -"b4z c #9b3c06", -"aM2 c #9b3c0c", -"a.M c #9b3d00", -"b93 c #9b3d07", -"bIf c #9b3d09", -"cj0 c #9b3d0a", -"b0y c #9b3e00", -"cY3 c #9b3e01", -".Ls c #9b3e03", -"b1t c #9b3e05", -"aaC c #9b3e12", -"cfk c #9b3f00", -"cf9 c #9b3f0c", -"bBT c #9b3f0e", -"b0z c #9b4000", -"ca1 c #9b4007", -"cee c #9b4009", -"cOP c #9b400b", -"bOY c #9b4102", -"#Qz c #9b4103", -"boN c #9b4105", -"b6o c #9b410c", -"ava c #9b410d", -"bZE c #9b4200", -"b2o c #9b4206", -"QtT c #9b4208", -"bIj c #9b420a", -"cde c #9b4300", -"bzZ c #9b4303", -".dx c #9b4304", -".RF c #9b431b", -".Nn c #9b4400", -".Ya c #9b4401", -"bEd c #9b440e", -"bYW c #9b4500", -"bRq c #9b4508", -"bGt c #9b450a", -"cZk c #9b4514", -"dJU c #9b4600", -"cim c #9b4603", -"cHO c #9b4605", -".yN c #9b4606", -"bIk c #9b460d", -"bDZ c #9b460f", -".NG c #9b4700", -"#Wp c #9b4701", -"bBc c #9b4707", -"bLK c #9b470b", -".M# c #9b4800", -"bsk c #9b4802", -"ak6 c #9b4804", -"byP c #9b4806", -"azB c #9b481e", -".AA c #9b4900", -".Ps c #9b4911", -"dI3 c #9b4917", -"cU1 c #9b4a00", -"cGZ c #9b4a09", -"bS. c #9b4b02", -".NI c #9b4b04", -"bOZ c #9b4b06", -"cFT c #9b4b0c", -".Pt c #9b4b10", -"dxR c #9b4c00", -".Kc c #9b4c01", -"cof c #9b4c07", -"bJF c #9b4c13", -"bXt c #9b4d02", -"c.A c #9b4d03", -"dqD c #9b4d05", -".Gj c #9b4d0b", -"bJz c #9b4d0d", -".#n c #9b4d0f", -"dzh c #9b4e00", -"b9R c #9b4e06", -"cuX c #9b4e08", -"bJ4 c #9b4e0a", -"bzA c #9b4f01", -"bvR c #9b4f03", -"#7v c #9b4f04", -"cQT c #9b4f11", -"dLI c #9b4f13", -"bvT c #9b5000", -".Gl c #9b500c", -"#HH c #9b500f", -"b4l c #9b5019", -"dtM c #9b5106", -"bY0 c #9b5108", -"cz4 c #9b510a", -"cRV c #9b5110", -".JY c #9b5200", -"dT5 c #9b5203", -"aze c #9b5205", -"du2 c #9b520d", -"bzB c #9b5301", -"bQ2 c #9b5307", -"bo3 c #9b5309", -"c.y c #9b530b", -".VW c #9b5414", -".LA c #9b5500", -".RZ c #9b550f", -"b92 c #9b5517", -"#L3 c #9b5519", -"bqq c #9b5600", -"dJ4 c #9b570e", -"dK1 c #9b5811", -"bYj c #9b590b", -"#55 c #9b5a08", -"#28 c #9b5a16", -"cPJ c #9b5c0f", -"#1S c #9b5c15", -"cZF c #9b5d10", -"#4z c #9b5e0d", -"b44 c #9b6006", -"#24 c #9b610f", -"#DI c #9b6117", -"#XX c #9b6209", -"cQl c #9b6211", -"b5R c #9b6304", -"ak1 c #9b630c", -"dJr c #9b6318", -"dNF c #9b6407", -"c.7 c #9b651d", -"b2G c #9b661a", -".4T c #9b6711", -"cjR c #9b6819", -"dHe c #9b6910", -"bqv c #9b6a25", -"#Wk c #9b6b07", -"cqp c #9b6d0f", -".6E c #9b6d15", -"#20 c #9b6d17", -"cgU c #9b7014", -"cqn c #9b7021", -"#Wd c #9b711d", -"#oh c #9b711f", -".9N c #9b7127", -"cUA c #9b7208", -"#iS c #9b7300", -".W# c #9b740d", -"#Ny c #9b7604", -"#iR c #9b7700", -".8i c #9b7918", -".L1 c #9b7a06", -"#iM c #9b7b0e", -".Sk c #9b7c12", -"dQT c #9b7c21", -"dPh c #9b7c2a", -".Wc c #9b7d23", -"#cs c #9b7e18", -"cUY c #9b800d", -"#ct c #9b8113", -".lw c #9b8124", -".6G c #9b8228", -"dPJ c #9b8321", -"cjD c #9b832d", -".CJ c #9b8539", -"#Jw c #9b8822", -"ag3 c #9b8975", -"#Bs c #9b8a18", -"a5M c #9b8b7c", -"#Dx c #9b8c19", -"cU. c #9b8f15", -"c7e c #9b8f8f", -"#zz c #9b9014", -"aKX c #9b9187", -"dou c #9b9190", -"dVb c #9b922b", -".TK c #9b925b", -"#1w c #9b9289", -"c7F c #9b949b", -"da4 c #9b949c", -"da3 c #9b959f", -"da2 c #9b989f", -"dd9 c #9b9982", -"d#. c #9b9a95", -"#3A c #9b9b8f", -"dez c #9b9b9b", -"#jD c #9b9b9d", -"dl4 c #9b9ca0", -"#Vy c #9b9d98", -"ddN c #9b9d9a", -"#So c #9b9d9c", -"aWQ c #9b9f90", -"#TS c #9b9f9e", -"c7L c #9b9fa0", -"#TL c #9ba197", -"d#j c #9ba3a5", -"c9B c #9ba4a3", -"dU2 c #9c2200", -"dS7 c #9c2600", -"dK8 c #9c2801", -"dL0 c #9c2803", -"dIw c #9c2b00", -"dLX c #9c2c00", -"cAz c #9c2d00", -"bNS c #9c2e00", -"cCz c #9c2f00", -"cHZ c #9c2f04", -"dO7 c #9c2f0e", -"cFu c #9c3000", -"dNa c #9c3001", -"ca7 c #9c3009", -"czj c #9c3100", -"ast c #9c3105", -"cGx c #9c3107", -"cqD c #9c3200", -"cH. c #9c3202", -"cKE c #9c3208", -"dMV c #9c320a", -"crI c #9c3300", -"cDS c #9c3303", -"cze c #9c3304", -"cIc c #9c3306", -"#NR c #9c3400", -"cQA c #9c3401", -"av3 c #9c340f", -"bbh c #9c3500", -"cvP c #9c3508", -"cMe c #9c350a", -"ahn c #9c350c", -"cDO c #9c3605", -"dQH c #9c3606", -"cah c #9c3700", -"bYQ c #9c3701", -"b9c c #9c3703", -"dP. c #9c3709", -"bdg c #9c3800", -"#NS c #9c3804", -"b6t c #9c3806", -"cWp c #9c3807", -"aaq c #9c3900", -"bJv c #9c3902", -"ajg c #9c3910", -"awt c #9c3a00", -"cVH c #9c3a0b", -"ccb c #9c3b04", -".Rf c #9c3b06", -"b3k c #9c3b08", -"b8m c #9c3b10", -"b9g c #9c3c00", -"bIQ c #9c3c02", -"cnR c #9c3c09", -"dNl c #9c3c0c", -"b9f c #9c3d00", -"bHw c #9c3d03", -"bye c #9c3d05", -"bvE c #9c3d07", -"cmS c #9c3e00", -"bzv c #9c3e01", -"aym c #9c3e08", -"bZA c #9c3e0a", -"b6g c #9c3e0b", -"cVh c #9c3e18", -"dnE c #9c3f00", -"bGq c #9c3f02", -"b1l c #9c3f04", -"bqc c #9c3f06", -"aGA c #9c3f13", -"ax5 c #9c3f16", -"bEo c #9c4000", -"bN4 c #9c4001", -"#Pe c #9c400d", -"c.E c #9c4108", -"c6I c #9c410c", -"b2m c #9c4203", -"b2n c #9c4204", -"#7y c #9c4206", -".Rg c #9c420e", -"cB. c #9c4300", -"bns c #9c4301", -".NJ c #9c4307", -"bJ1 c #9c4309", -".aX c #9c430b", -"avO c #9c4400", -"bBb c #9c4404", -"bfg c #9c4405", -".AD c #9c4500", -"bM0 c #9c4502", -"azH c #9c450f", -".qg c #9c4518", -"axA c #9c4600", -"cF4 c #9c4609", -"bHz c #9c460b", -"aFw c #9c4615", -"dKP c #9c4700", -".U7 c #9c4704", -"bRr c #9c4706", -"byu c #9c4707", -"chw c #9c470e", -"c#E c #9c4711", -"boY c #9c4800", -"bUE c #9c4808", -"c3R c #9c480a", -"cZX c #9c480c", -".yI c #9c4900", -"bwi c #9c4903", -"bxy c #9c4905", -"b6H c #9c4907", -"bys c #9c4913", -"bZQ c #9c4a00", -"bYX c #9c4a01", -".Po c #9c4a10", -"cit c #9c4a12", -"bQO c #9c4a18", -"djU c #9c4b00", -"dLG c #9c4b09", -"cay c #9c4b0a", -"b4g c #9c4b0c", -".Pq c #9c4b13", -"bD5 c #9c4b14", -".LF c #9c4c00", -"bQq c #9c4c07", -"cS4 c #9c4c0d", -"b1M c #9c4c11", -"buz c #9c4d00", -"#UK c #9c4d02", -"bMW c #9c4d0a", -"bJ3 c #9c4d0b", -"dMq c #9c4e03", -".VX c #9c4e06", -"cRC c #9c4e0c", -"buA c #9c4f00", -"#83 c #9c4f07", -"bqo c #9c4f09", -"aRD c #9c4f35", -"asw c #9c5000", -"dtL c #9c5002", -"bZT c #9c5004", -".Gr c #9c5005", -"b8x c #9c5100", -"bLM c #9c510e", -"cZr c #9c520b", -"dkH c #9c5211", -"byy c #9c530e", -"b3b c #9c540a", -"b0O c #9c5503", -"#Td c #9c5505", -".Tc c #9c5529", -"dIr c #9c5601", -"bR5 c #9c5610", -"dPb c #9c570c", -".F9 c #9c5805", -"cWf c #9c581b", -"#RP c #9c590a", -"dzj c #9c5a03", -"#Qw c #9c5a0c", -"b91 c #9c5b19", -"cty c #9c5c12", -"#HG c #9c5c15", -"dJ3 c #9c5d0e", -"dAR c #9c5e07", -"dK0 c #9c5f0f", -".G# c #9c5f20", -"dAT c #9c6111", -"#iT c #9c6200", -"crt c #9c630a", -"#cA c #9c6400", -"#qq c #9c6411", -"dKr c #9c660e", -"ciV c #9c6610", -"#XW c #9c670b", -"cOe c #9c6717", -"bkz c #9c6910", -"dR1 c #9c6918", -"c10 c #9c6c1a", -"dIb c #9c6c22", -"#S6 c #9c6e18", -"#ek c #9c7011", -"cqo c #9c7113", -"cRA c #9c721e", -"#oi c #9c7220", -"#Nv c #9c7309", -"chW c #9c741d", -"#NB c #9c7615", -"##j c #9c7625", -".Wa c #9c770f", -"bp. c #9c7727", -".TV c #9c774b", -"#Nx c #9c7b08", -".Is c #9c7e26", -"#S8 c #9c8128", -"#Fq c #9c8408", -"#fA c #9c842a", -"dua c #9c8480", -"a5j c #9c8577", -".9Y c #9c870a", -"c2K c #9c8774", -"#Bw c #9c8911", -"#aY c #9c8913", -"dAB c #9c8b83", -"dSJ c #9c8e2b", -"dTZ c #9c8f27", -"#tm c #9c8f7c", -"c4# c #9c8f86", -"aKi c #9c918b", -"c7D c #9c9197", -"aLT c #9c9290", -"#th c #9c9384", -"#.Q c #9c9489", -"aG8 c #9c958d", -"#U. c #9c9793", -"c9h c #9c979e", -"aIM c #9c9895", -"cT8 c #9c9b1c", -"daS c #9c9b96", -"aV9 c #9c9c92", -"c7R c #9c9c9c", -"d.7 c #9c9d98", -"dkV c #9c9d9f", -"d#e c #9c9e91", -"d.6 c #9c9e9b", -"c7M c #9ca0a1", -"c9K c #9ca2a2", -"dVu c #9d1d00", -"dS9 c #9d2100", -"dU1 c #9d2201", -"dTF c #9d2300", -"dTP c #9d2400", -"dTN c #9d2502", -"dRl c #9d2700", -"bQS c #9d2900", -"cc0 c #9d2d00", -"czs c #9d2e00", -"crJ c #9d2f00", -"bY# c #9d3000", -"cHn c #9d3005", -"dL7 c #9d3007", -"cBr c #9d3100", -"cRJ c #9d3102", -"dMW c #9d310a", -"bT9 c #9d3200", -"#HK c #9d3204", -"cHm c #9d3208", -"cqC c #9d3300", -"dO. c #9d3301", -"czg c #9d3303", -"cJD c #9d3309", -"cB4 c #9d3400", -"cwZ c #9d3405", -"bYd c #9d3500", -"#LR c #9d3502", -"b#l c #9d3600", -"clY c #9d3700", -"cHo c #9d3706", -"cGa c #9d3707", -"csP c #9d3800", -"b5t c #9d3802", -"cnI c #9d3804", -"ajf c #9d380a", -"cw3 c #9d380c", -"czb c #9d380e", -"cd5 c #9d3900", -"c#l c #9d3905", -"cTp c #9d3907", -"csI c #9d3908", -"c3O c #9d3915", -".NE c #9d3a00", -"cuQ c #9d3a01", -"bs0 c #9d3a03", -".gy c #9d3a11", -"auM c #9d3b00", -"dOi c #9d3b0a", -"b1y c #9d3c05", -"cf5 c #9d3c09", -"cc7 c #9d3c11", -"a5B c #9d3c19", -"duX c #9d3d00", -"b3B c #9d3d01", -"bMP c #9d3d03", -"cba c #9d3d0a", -"bs6 c #9d3d0b", -"ab3 c #9d3e00", -".Rx c #9d3e04", -"chc c #9d3e06", -"cdb c #9d3e08", -"cY7 c #9d3e12", -"b4F c #9d3f00", -"doJ c #9d3f01", -"#UN c #9d3f02", -"ayl c #9d3f09", -"#Pd c #9d3f0b", -"cei c #9d4000", -"bSr c #9d4003", -".LL c #9d4005", -"bEV c #9d4007", -".NF c #9d4100", -"b3y c #9d4102", -"bEc c #9d410e", -"bEb c #9d4112", -".ol c #9d4118", -"dpL c #9d4200", -"a5z c #9d4209", -"b3j c #9d420b", -"b9l c #9d4213", -".Un c #9d4304", -"bFu c #9d4305", -"bSB c #9d4307", -"btG c #9d4400", -"ab2 c #9d4402", -"dhr c #9d4408", -"bIR c #9d440a", -".dw c #9d4500", -"b3z c #9d4505", -"bQX c #9d4506", -"b2. c #9d4600", -"bnt c #9d4603", -".Kg c #9d4700", -"arF c #9d470a", -"byt c #9d470c", -"bEW c #9d470e", -"dfV c #9d4800", -"#RR c #9d4805", -"dMp c #9d4807", -"bUb c #9d4808", -"dI4 c #9d4811", -".Cy c #9d4900", -".No c #9d4901", -"cXI c #9d4903", -"cE# c #9d4909", -"cx0 c #9d4a00", -"ab1 c #9d4a04", -"bGx c #9d4a08", -".N6 c #9d4b00", -"dih c #9d4b01", -"#86 c #9d4b02", -"bSF c #9d4b0f", -"bUq c #9d4b13", -".Ke c #9d4c00", -"cCS c #9d4c0a", -"dKR c #9d4c0d", -"bWn c #9d4d04", -"bux c #9d4d06", -"cp1 c #9d4d08", -"b1L c #9d4d0e", -"bPN c #9d4d10", -".N1 c #9d4e01", -"buy c #9d4e03", -"bXS c #9d4e09", -"#4B c #9d4e0b", -"bO3 c #9d4f05", -"b0a c #9d4f0d", -"cZt c #9d4f0f", -"aOm c #9d4f29", -"c11 c #9d5002", -"b9Q c #9d5008", -"dHw c #9d5308", -".N0 c #9d530a", -"#BL c #9d5312", -"c.x c #9d540f", -"arH c #9d5410", -"dIq c #9d5500", -"bZl c #9d5509", -"c.V c #9d550b", -"dV1 c #9d550d", -".H6 c #9d5600", -"bAK c #9d5606", -".Kj c #9d580a", -"cYV c #9d580b", -"bVl c #9d5813", -"dST c #9d5904", -"atW c #9d5906", -"dxU c #9d5a0b", -"asb c #9d5b04", -"dKx c #9d5c0c", -".JX c #9d5d00", -"#Wm c #9d5d06", -"cQm c #9d5d13", -"bTd c #9d5d15", -"dzl c #9d5e0e", -"dPD c #9d5f08", -"#Tc c #9d5f0c", -"c3u c #9d5f16", -"bo5 c #9d6003", -"b5S c #9d6005", -"#RO c #9d600f", -"dG. c #9d610b", -"cNB c #9d6118", -"bqx c #9d621e", -"#1O c #9d630f", -"bVm c #9d6319", -"chZ c #9d640b", -"dkh c #9d6415", -"amR c #9d6510", -"#4v c #9d6512", -"dKX c #9d6602", -"#Tb c #9d660c", -"dhT c #9d6647", -"dl0 c #9d6648", -"#Nu c #9d6705", -"bl8 c #9d670d", -"dND c #9d6802", -"b28 c #9d680c", -"bqw c #9d6824", -"ctB c #9d6904", -"dKs c #9d6915", -"#qd c #9d6a1b", -"dLl c #9d6b0a", -"c1Y c #9d6c1f", -"dJH c #9d6d18", -"#ow c #9d6d19", -"csy c #9d6f0f", -"chX c #9d6f17", -"dHk c #9d6f22", -"coA c #9d6f24", -"ciR c #9d701f", -"#fS c #9d7110", -".X4 c #9d7213", -"dMc c #9d7513", -"#RG c #9d751d", -".W. c #9d7611", -"c3C c #9d761b", -".V9 c #9d7712", -".qt c #9d7738", -".6F c #9d7820", -"#em c #9d7a1e", -".lv c #9d7e21", -"#K5 c #9d8070", -".8g c #9d8113", -".6A c #9d8219", -"#k# c #9d840e", -".RQ c #9d853f", -".SS c #9d8579", -"#fL c #9d8900", -"#Du c #9d890c", -"#Dt c #9d890e", -".#H c #9d8930", -"aE4 c #9d8c7c", -"#Bt c #9d8d14", -"#Bu c #9d8e11", -"#g6 c #9d8e33", -"aKy c #9d8e87", -"##T c #9d928c", -"c4n c #9d938a", -".5z c #9d939c", -"c7E c #9d9499", -"dTY c #9d962b", -"d#m c #9d97a1", -"aUp c #9d9892", -"c5K c #9d9895", -"c7G c #9d989e", -"aNg c #9d9996", -"#sB c #9d9a91", -"d#l c #9d9aa3", -"c9v c #9d9c98", -"djM c #9d9c9a", -"c9i c #9d9ca1", -"c9s c #9d9d9b", -"deE c #9d9d9d", -"#p. c #9d9e8e", -"dkU c #9d9ea0", -"dl7 c #9d9f9c", -"dks c #9d9f9e", -"d#k c #9da0a5", -"c70 c #9da1a0", -"c7K c #9da1a2", -"c9C c #9da2a5", -"c57 c #9da39f", -"c9M c #9da3a3", -"d#w c #9da5a7", -"c9L c #9da6a5", -"dSY c #9e2200", -"dMQ c #9e2301", -"bT# c #9e2400", -"dSz c #9e2500", -"dNM c #9e2601", -"dSy c #9e2800", -"bXh c #9e2a00", -"dRk c #9e2b00", -"dML c #9e2c00", -"cSz c #9e2e00", -"b7E c #9e2f00", -"cFt c #9e2f01", -"cGh c #9e2f02", -"bTb c #9e3000", -"b6T c #9e3100", -"dRP c #9e3106", -"dO6 c #9e3114", -"cae c #9e3200", -"cCB c #9e3201", -"cBt c #9e3203", -"cNP c #9e3204", -"crL c #9e3300", -"cFm c #9e3305", -"bNP c #9e3400", -"bSd c #9e3402", -"cAp c #9e3404", -"cyd c #9e340a", -"cKZ c #9e340c", -".iv c #9e340d", -"csO c #9e3500", -"ahm c #9e3505", -"ctF c #9e3506", -"cIQ c #9e3508", -".ND c #9e3600", -"cai c #9e3601", -"cx5 c #9e3603", -"cg8 c #9e3700", -"dOM c #9e370a", -"axQ c #9e370c", -"clV c #9e3800", -"ce9 c #9e3807", -"cUp c #9e3808", -"cZ# c #9e3810", -"b0F c #9e3901", -"cqv c #9e3903", -"bLG c #9e3905", -"awu c #9e3a00", -"c#j c #9e3a06", -"cTY c #9e3a08", -"cJ4 c #9e3a09", -"cDT c #9e3b00", -"bbi c #9e3b02", -"bIh c #9e3b04", -"bur c #9e3c00", -"dRO c #9e3c0b", -"dbp c #9e3d00", -"bG6 c #9e3d06", -"bIg c #9e3d08", -"dNk c #9e3d0a", -"chd c #9e3e01", -"bG7 c #9e3e04", -"dkF c #9e3e0b", -"brD c #9e3e0c", -"b5m c #9e3f00", -"bJ0 c #9e3f05", -"a11 c #9e3f07", -"cef c #9e3f09", -"bnr c #9e4000", -"b3A c #9e4002", -"c#8 c #9e4003", -"atr c #9e400a", -".v. c #9e400c", -"b1g c #9e4100", -"bs7 c #9e4104", -"but c #9e4106", -"bRk c #9e4108", -".LI c #9e4200", -"cqZ c #9e4201", -"bTx c #9e4203", -"bC4 c #9e4213", -"bZO c #9e4300", -"bzw c #9e430a", -"dDK c #9e430c", -"cfe c #9e430e", -"bSC c #9e4405", -"cC9 c #9e4406", -".rB c #9e4410", -".Nm c #9e4501", -"a3B c #9e4503", -"cTH c #9e4509", -"avc c #9e450b", -"avb c #9e450d", -".AC c #9e4600", -"bxx c #9e4607", -"aRC c #9e4622", -"cJy c #9e4700", -"boX c #9e4702", -"b6u c #9e4704", -".Nv c #9e4800", -"avd c #9e480b", -"b3i c #9e480d", -"aQG c #9e482d", -".LH c #9e4900", -"czy c #9e4906", -".Lt c #9e4908", -"cPB c #9e4909", -"cMc c #9e4910", -"b0i c #9e4a01", -"cKz c #9e4a02", -"cUC c #9e4a04", -"b0S c #9e4a0a", -"bXs c #9e4b00", -"bHD c #9e4b05", -"cjm c #9e4b09", -"cWB c #9e4c00", -".Cx c #9e4c02", -"bWu c #9e4c03", -"cYw c #9e4c10", -".Pp c #9e4c12", -"b0L c #9e4d00", -"ave c #9e4d0b", -"cQS c #9e4d0c", -"bUr c #9e4d16", -"#84 c #9e4e05", -"a.J c #9e4e07", -"b32 c #9e4e09", -"cUg c #9e4e0f", -"#FI c #9e4e13", -".M. c #9e4f02", -"dUm c #9e4f0a", -"cBM c #9e4f0c", -"#qo c #9e4f0d", -".JZ c #9e5000", -"#Wo c #9e5005", -"dLs c #9e5006", -".Ii c #9e5008", -"bHF c #9e5010", -"b9x c #9e5103", -"byx c #9e5109", -"cZs c #9e510b", -"cQ6 c #9e510d", -"aAc c #9e5125", -"dMY c #9e5204", -"dAM c #9e5300", -"#qp c #9e5409", -"dLJ c #9e5413", -"cRp c #9e5415", -"aaE c #9e5417", -"#UJ c #9e5506", -"asc c #9e5601", -"b0N c #9e5604", -"dwr c #9e560a", -"dHz c #9e560c", -"dT6 c #9e5705", -"acf c #9e5715", -"atX c #9e5802", -"dQb c #9e5810", -"bAL c #9e5a07", -"#L4 c #9e5a1d", -"b5T c #9e5c05", -"#UI c #9e5c08", -"#N4 c #9e5c1f", -"cZP c #9e5d0d", -"b6P c #9e5e04", -"cgW c #9e5e06", -"cQs c #9e5f1a", -"#0B c #9e6013", -"ctC c #9e6106", -"dH8 c #9e610e", -"bnz c #9e620a", -"csv c #9e6219", -"cgV c #9e650b", -"dMZ c #9e650c", -"ak0 c #9e6714", -"cL7 c #9e6810", -"cQ1 c #9e701b", -"#Uz c #9e711c", -"ciS c #9e711e", -"#qc c #9e7120", -"#hn c #9e7213", -"#Lt c #9e7406", -".1o c #9e7428", -".L3 c #9e7501", -".Xu c #9e7541", -"#mQ c #9e761f", -"dMd c #9e7718", -"dM0 c #9e7817", -".0# c #9e786d", -".Wb c #9e7c1a", -"#NG c #9e7d20", -"cB2 c #9e7d2c", -"dQl c #9e7e17", -"#cp c #9e7e1b", -"#d8 c #9e7f15", -"c3f c #9e826c", -"bi4 c #9e8520", -"aFh c #9e8588", -"#Fr c #9e860a", -"c6z c #9e8682", -".PT c #9e8a27", -"aEI c #9e8b84", -"dAj c #9e8b85", -"#zA c #9e8e14", -"#vC c #9e8e1d", -"c2N c #9e8e77", -"c8e c #9e8f8c", -"#xE c #9e9016", -"aga c #9e9083", -"a3Q c #9e9188", -"dn8 c #9e9493", -"d#n c #9e949f", -"aMQ c #9e9791", -"da5 c #9e979f", -"c9P c #9e9898", -"cT9 c #9e991b", -"c6b c #9e9996", -"#SP c #9e9a99", -"d#y c #9e9c9f", -"c9u c #9e9d99", -"deO c #9e9d9b", -"#d. c #9e9e94", -"d#c c #9e9e96", -"c7Z c #9e9e9e", -"dba c #9e9ea0", -"c9N c #9ea09f", -"#qA c #9ea19a", -"c7N c #9ea2a3", -"#TT c #9ea4a4", -"d#s c #9ea7a6", -"dVw c #9f2100", -"dTO c #9f2300", -"dRH c #9f2500", -"bTa c #9f2900", -"cI9 c #9f2b00", -"dVt c #9f2b04", -"dIv c #9f2c00", -"cGG c #9f2d00", -"cc. c #9f2e02", -"dUh c #9f2e06", -"cPd c #9f2f00", -"dJ6 c #9f2f0a", -"cDE c #9f3000", -"cdZ c #9f3002", -"cyf c #9f3003", -"dS6 c #9f3005", -"crK c #9f3100", -"cea c #9f3200", -"cHY c #9f3207", -"cAC c #9f3302", -"ca8 c #9f3304", -"cMf c #9f3305", -"bNQ c #9f3400", -"cHW c #9f3406", -".Lp c #9f3408", -"cMF c #9f3500", -"cAo c #9f3501", -"cCP c #9f3503", -"caj c #9f3505", -"cJZ c #9f350b", -"bP1 c #9f3600", -".Lq c #9f3607", -"dS5 c #9f3609", -"ck5 c #9f3700", -"bMQ c #9f3702", -"cg9 c #9f3800", -"dNU c #9f380d", -"cfh c #9f3900", -"cvV c #9f3908", -"bXK c #9f3a02", -"cHp c #9f3a04", -"b#n c #9f3a06", -"cc8 c #9f3a10", -"aww c #9f3b00", -"bKs c #9f3b07", -"cYp c #9f3b09", -"cqr c #9f3b0a", -"bvI c #9f3c00", -"b80 c #9f3c01", -"b68 c #9f3c03", -"cWc c #9f3c05", -"awA c #9f3d00", -"cUQ c #9f3d16", -"cY# c #9f3e00", -"cRT c #9f3e07", -"aap c #9f3f02", -"bUK c #9f3f03", -"bUo c #9f3f05", -"bXR c #9f4000", -".bu c #9f4006", -"ccc c #9f4008", -"ceg c #9f400a", -"bWq c #9f4100", -"bnq c #9f4101", -"b4t c #9f4103", -"b2d c #9f410b", -"cg3 c #9f4200", -"bPV c #9f4205", -"b4x c #9f4207", -"b4y c #9f4209", -"boW c #9f4300", -"b4u c #9f4302", -"cb4 c #9f4304", -"axP c #9f431c", -"bYV c #9f4400", -"bRl c #9f440b", -"bC6 c #9f440d", -"avN c #9f4500", -"co5 c #9f4506", -"cLq c #9f4507", -"cUG c #9f4509", -"#UL c #9f4602", -"dKG c #9f4604", -"dMH c #9f460a", -"cW# c #9f460c", -"bAD c #9f460e", -"brM c #9f4700", -"bYo c #9f4800", -"bt. c #9f4801", -".Qy c #9f4803", -"byO c #9f4805", -".gz c #9f481b", -".Nu c #9f4900", -"bJx c #9f4910", -"cZl c #9f4916", -"bS6 c #9f4918", -".Ma c #9f4a00", -"cUD c #9f4a07", -"cS6 c #9f4a09", -".LG c #9f4b00", -"byv c #9f4b05", -"cQb c #9f4b0b", -"cE6 c #9f4b0d", -"dwm c #9f4c00", -"bYY c #9f4c06", -"bRu c #9f4c08", -".Ss c #9f4c0a", -"dNc c #9f4d01", -"bZR c #9f4d03", -".rv c #9f4d04", -"c#D c #9f4d13", -"dHy c #9f4e00", -"arG c #9f4e0d", -"bZm c #9f4f06", -"bnu c #9f4f08", -".Pw c #9f4f0a", -"cU4 c #9f5003", -"bZS c #9f5005", -"bNX c #9f500b", -"bIW c #9f510f", -"c#B c #9f5111", -"b0M c #9f5202", -"duY c #9f5204", -"dNp c #9f520e", -"bE6 c #9f521c", -"b3e c #9f5305", -"b3f c #9f5307", -"c.B c #9f5308", -"cKj c #9f5317", -"dtN c #9f5410", -"bE7 c #9f541d", -"azj c #9f550a", -"cC7 c #9f5514", -".J0 c #9f5600", -"#lG c #9f5702", -"b8y c #9f5703", -"dki c #9f5705", -"du1 c #9f570d", -"bxf c #9f570f", -"#FH c #9f5816", -"dAN c #9f5904", -"#N3 c #9f5a1f", -"c5a c #9f5b12", -"dJe c #9f5c01", -".G. c #9f5c18", -"bo4 c #9f5d07", -"dAO c #9f5d09", -"cD7 c #9f5e1a", -"b6N c #9f5f05", -"#fQ c #9f6000", -"dJF c #9f6010", -"dht c #9f603f", -"dJ1 c #9f6303", -"dJ2 c #9f630d", -"c5b c #9f6416", -"b27 c #9f660d", -"dAS c #9f660f", -"chY c #9f680e", -"#2Z c #9f6818", -"#Ls c #9f6a04", -"bnA c #9f6a0a", -"cZH c #9f6a1a", -"#ej c #9f6d0c", -"cVx c #9f7004", -".Gu c #9f7018", -"crr c #9f7314", -".6C c #9f7415", -"#mR c #9f751f", -"bi3 c #9f7718", -".L2 c #9f7801", -"#UA c #9f7924", -"#Nw c #9f7b0b", -"#aR c #9f7c22", -"#cr c #9f7d1c", -"#fU c #9f7e1f", -"#ka c #9f7f0e", -"bdm c #9f802e", -"#he c #9f8500", -"#iP c #9f850c", -".RR c #9f874b", -"aEu c #9f876d", -"dRv c #9f8820", -"aeO c #9f8962", -"aQu c #9f897e", -"#cu c #9f8a13", -"#Bv c #9f8b12", -".#I c #9f9031", -"c2O c #9f9079", -"c7c c #9f908d", -"a3Z c #9f928a", -"dB3 c #9f9387", -"c5J c #9f9593", -"aLB c #9f959d", -"d#o c #9f959e", -"#eF c #9f9999", -"aUm c #9f9c97", -"c7H c #9f9da2", -"d## c #9f9e99", -"aU0 c #9f9e9a", -"d#d c #9f9f95", -"#jk c #9f9f97", -"aYb c #9f9f9d", -"deG c #9f9f9f", -"#dE c #9fa098", -"dkW c #9fa1a0", -"#QZ c #9fa382", -"c9J c #9fa3a4", -"d#v c #9fa9aa", -"dVv c #a01a00", -"dVB c #a02000", -"dVA c #a02200", -"dLZ c #a02500", -"dK6 c #a02600", -"dSq c #a02700", -"bT. c #a02a00", -"dKd c #a02b00", -"dT. c #a02c00", -"dMK c #a02c03", -"dMO c #a02c05", -"dK4 c #a02f0d", -"bPR c #a03000", -"cFs c #a03002", -"cPS c #a03100", -"cGg c #a03103", -"cad c #a03200", -"cEI c #a03201", -"ca9 c #a03300", -"cqB c #a03400", -"cak c #a03405", -"cHX c #a03406", -"cAn c #a03500", -"cye c #a03509", -"caf c #a03600", -"cwV c #a03602", -"czd c #a03604", -"cZa c #a0360e", -"bXj c #a03700", -"cvJ c #a03707", -"cUI c #a03708", -"cbf c #a0370a", -"b7X c #a03800", -"b07 c #a03801", -"coI c #a03803", -"c#p c #a03805", -"bWP c #a03900", -"bUN c #a03a00", -"cXq c #a03b00", -"b77 c #a03b03", -"bJu c #a03b05", -"c.e c #a03b07", -"awx c #a03c00", -"bJZ c #a03c01", -"brI c #a03c0a", -"byf c #a03d02", -"bVJ c #a03d04", -"bup c #a03d06", -"cPA c #a03e00", -"a9w c #a03e01", -".tq c #a03e0d", -"a7B c #a03e0f", -"dp2 c #a03f00", -"ctS c #a03f08", -"brE c #a03f0a", -"cIj c #a03f0c", -"brJ c #a04003", -"cdc c #a04004", -"bnp c #a04006", -"ccl c #a04100", -"bGr c #a04101", -".RG c #a04107", -"b0x c #a04109", -"dlx c #a0410b", -".yK c #a04200", -"axU c #a04202", -".LJ c #a04204", -"b5l c #a04205", -"bqa c #a0420e", -"boV c #a04300", -".Rv c #a04306", -".LK c #a04308", -"#RU c #a0430a", -"cWC c #a04400", -"bqj c #a04401", -"dO8 c #a04403", -"b5v c #a04405", -"asd c #a04500", -"buu c #a0450c", -"#QC c #a04510", -"bYn c #a04600", -"b4v c #a04607", -"bSs c #a04608", -"dS2 c #a0460a", -"bs8 c #a04703", -"buZ c #a04705", -"bDX c #a0470d", -"dwl c #a04800", -"bs9 c #a04801", -"cM3 c #a04808", -"axz c #a04900", -"czQ c #a04902", -"#Tf c #a04904", -"bRs c #a04906", -".AB c #a04a00", -".Nt c #a04a01", -"bKu c #a04a11", -"dNi c #a04b08", -"cTI c #a04b0a", -"bKv c #a04b12", -".Ns c #a04c03", -".wV c #a04c04", -"bYZ c #a04c06", -".TZ c #a04d00", -"dQu c #a04d01", -"aam c #a04d07", -"cq2 c #a04d09", -"cR7 c #a04d0b", -"b4c c #a04e04", -"byw c #a04e05", -".Rh c #a04e1e", -"avB c #a04f00", -"cQo c #a04f10", -"bxd c #a05007", -".Yc c #a0500b", -"c#C c #a05013", -"dwn c #a05102", -"dO2 c #a05106", -"cvc c #a0510c", -".Io c #a05207", -"bXp c #a05208", -"dIn c #a05301", -".Ki c #a05305", -"b4a c #a0530b", -"atu c #a0530f", -"b9y c #a05406", -"#BM c #a05416", -"bqp c #a05502", -".LW c #a05600", -"du0 c #a0560b", -"b3c c #a0560d", -"cV4 c #a05700", -".Gm c #a05712", -"cz3 c #a0580c", -"bBM c #a0580e", -"atY c #a05901", -"#Wn c #a05909", -"b7x c #a05a04", -"cKk c #a05a15", -"dKS c #a05b00", -"#DJ c #a05b16", -"dSU c #a05c09", -"dAQ c #a05c0b", -"b6Q c #a05d04", -"dAP c #a05e0a", -"cYL c #a05f0f", -"#Nt c #a06006", -"#FG c #a0611a", -"cQt c #a0611c", -"#m2 c #a0620d", -"#4u c #a06215", -"dIT c #a06310", -"csA c #a0650b", -"dLR c #a06807", -"#Zn c #a06811", -"#m6 c #a06813", -"cZG c #a06919", -"dMC c #a06a0a", -"dNz c #a06e15", -"dQQ c #a07519", -".qu c #a07938", -"#lK c #a07b20", -"ago c #a07b69", -"#cq c #a07e1d", -"#m0 c #a07e25", -"#Lu c #a07f0b", -"c3a c #a08059", -"#LE c #a08126", -".ZQ c #a08127", -"c44 c #a08278", -"aD5 c #a0857c", -".NT c #a08615", -"#hd c #a08804", -".8d c #a0881c", -"#LA c #a08826", -"#Dw c #a08a13", -"c14 c #a08a27", -"c2M c #a08e78", -"c7d c #a09090", -"aIo c #a0917c", -"#pw c #a09383", -"aHd c #a09488", -".3Z c #a09593", -"#mp c #a09895", -"aHu c #a09987", -".9v c #a09991", -"c6t c #a09b95", -"dno c #a09b98", -"#3B c #a09c90", -"c9O c #a09e9f", -"#8# c #a09f9b", -"dey c #a0a0a0", -"c7J c #a0a1a3", -"c7Q c #a0a2a1", -"dcJ c #a0a4a5", -"db# c #a0a4a7", -"c71 c #a0a6a2", -"c72 c #a0a9a4", -"d#u c #a0aeaf", -"dPr c #a12800", -"bWb c #a12900", -"dNL c #a12a02", -"dLW c #a12d08", -"cIp c #a12e00", -"b7A c #a12f00", -"cAs c #a13000", -"cPe c #a13100", -"cHz c #a13101", -"cEH c #a13103", -"czi c #a13200", -"cMh c #a13205", -"bNR c #a13300", -"cCA c #a13302", -"cuW c #a13400", -"cbg c #a13409", -"cZb c #a1340d", -"c#g c #a13500", -"cHw c #a13504", -"dPz c #a13506", -"bNT c #a13600", -"dJ5 c #a13608", -"cLu c #a1360a", -"c#h c #a13700", -"cXD c #a13703", -"cAB c #a13705", -"bXQ c #a13800", -"crC c #a13801", -"cvT c #a13808", -"cuK c #a13809", -"clX c #a13900", -"bYR c #a13902", -".PD c #a13904", -"bS9 c #a13a00", -"b69 c #a13b00", -"cJ5 c #a13b0a", -"cBn c #a13b0b", -"ax6 c #a13b13", -"b08 c #a13c04", -"b5b c #a13c06", -"cce c #a13c10", -"b6h c #a13d00", -"b70 c #a13d01", -"b#m c #a13d02", -"bJt c #a13d09", -"byi c #a13e00", -"ccU c #a13e03", -"cUc c #a13e05", -"b3L c #a13f00", -"bUO c #a13f02", -"bVt c #a14000", -"cQQ c #a14009", -"b8# c #a1400b", -"cVA c #a14100", -"boU c #a14104", -"bNO c #a14105", -"cUh c #a14107", -"dkG c #a1410e", -"bqh c #a14200", -"csE c #a14202", -"bAB c #a14208", -"b6m c #a1420a", -"dtT c #a1420c", -"av6 c #a14300", -"#UM c #a14303", -".Rw c #a14305", -"b6n c #a14306", -"cR9 c #a1430d", -"bC5 c #a14310", -"brK c #a14400", -"bqi c #a14401", -"bGs c #a14407", -"bHy c #a14409", -"#QA c #a1440b", -"cCg c #a14500", -".yM c #a14502", -".Wh c #a14504", -"cpY c #a14506", -"aaD c #a14512", -"dc2 c #a1451e", -".P7 c #a14600", -"at4 c #a14700", -"b09 c #a14709", -".Mc c #a14800", -"aan c #a14804", -".Yb c #a14806", -"bLJ c #a1480e", -"cQp c #a14901", -"doo c #a14902", -"bUD c #a14909", -"ats c #a1490a", -".mt c #a14923", -"bXr c #a14a00", -"cWF c #a14a03", -"bu0 c #a14a05", -"b4W c #a14a07", -"ayp c #a14b12", -"dg5 c #a14b1a", -"dMo c #a14c09", -"dOd c #a14c0b", -"bJy c #a14c13", -"bt# c #a14d04", -"a.K c #a14d05", -"cPK c #a14d07", -"cS8 c #a14d0f", -"dLd c #a14e08", -"cWA c #a14f00", -".bq c #a14f03", -".Np c #a14f05", -"bN1 c #a14f06", -"axq c #a15000", -"cUf c #a1500f", -"bHE c #a1510c", -"cQ3 c #a15112", -"dkk c #a15210", -"b8u c #a15308", -".Ij c #a15309", -"dIj c #a1530b", -"bxe c #a1550a", -"b8B c #a15605", -".Ev c #a15710", -"dUN c #a15813", -"bUc c #a15814", -"b6R c #a15905", -"b18 c #a1590d", -"dOo c #a1590f", -"dwq c #a15a0a", -"b5U c #a15b06", -"cWX c #a15b1d", -"#eg c #a15c00", -"#Nr c #a15c0e", -"dxT c #a15d08", -"#Lq c #a15e03", -"#hl c #a15f01", -"dLM c #a16000", -"dJf c #a16006", -"cLg c #a16215", -"dQr c #a16414", -"#iY c #a1690c", -"dJG c #a16b15", -"dLn c #a16e13", -".kE c #a16e37", -"crs c #a17011", -"#XV c #a17315", -"c2q c #a1745d", -"#Nz c #a1750a", -"bl9 c #a17512", -"cND c #a1751c", -"dQS c #a17a1f", -"#XN c #a17b2a", -"#S7 c #a17c24", -"c3b c #a17f5a", -"#Hs c #a1850a", -"bkB c #a1861d", -"#Dv c #a1870e", -"a5H c #a18a5e", -"abt c #a18a6a", -"#Fu c #a18b1c", -"a#P c #a18c6d", -"c2L c #a18c77", -"aDB c #a18d82", -"dRu c #a18e28", -"ds2 c #a19181", -"dSK c #a1932a", -"aI4 c #a1948c", -"dyN c #a1978b", -"aEQ c #a19893", -".5k c #a1989b", -"c4o c #a19a90", -"d#p c #a19aa1", -"#M# c #a19b6b", -"aZU c #a19e95", -"#VE c #a19e99", -"#eP c #a19fa0", -"aR1 c #a1a09e", -"c9D c #a1a0a5", -"aYa c #a1a19f", -"dkT c #a1a1a1", -"#b2 c #a1a29d", -"c7O c #a1a2a4", -"d#x c #a1a2a6", -"c8a c #a1a3a0", -"c7P c #a1a3a2", -"c8# c #a1a5a4", -"dMR c #a22200", -"dOH c #a22602", -"dK5 c #a22700", -"dOG c #a22800", -"cc1 c #a22c00", -"dRQ c #a22c04", -"dRg c #a22e00", -"bYb c #a23000", -"cMg c #a23105", -"cyJ c #a23200", -".Nf c #a23202", -"cEG c #a23204", -"cB5 c #a23300", -"cNO c #a23305", -"dQJ c #a23306", -"bYc c #a23400", -"cFr c #a23401", -"cRI c #a23403", -"cac c #a23500", -"cMj c #a2350a", -"dMX c #a2350c", -"czh c #a23605", -"cUH c #a23607", -"cNa c #a23608", -"cQ9 c #a23700", -"cy. c #a23701", -"cuH c #a23703", -"c#f c #a23800", -"bZ8 c #a23804", -"cRE c #a23806", -"cw0 c #a23808", -"ccf c #a2380e", -"b4B c #a23900", -"cWb c #a23902", -"cYh c #a23909", -"cw4 c #a2390c", -"bUk c #a23a00", -"bZK c #a23a03", -"c#m c #a23a05", -"cIn c #a23a07", -"bYU c #a23b00", -"ced c #a23b01", -"b7. c #a23c00", -"dOj c #a23c0b", -"cig c #a23d00", -"b0G c #a23d05", -"cTa c #a23d07", -"cVC c #a23e00", -"byg c #a23e02", -"dtS c #a23e03", -"cI6 c #a23e0c", -"cCh c #a23f00", -"b04 c #a23f04", -".#s c #a23f06", -"cdd c #a24000", -"cCl c #a24001", -"bHx c #a24003", -"cnK c #a24100", -"cZW c #a2410a", -"cIe c #a2410c", -"cmR c #a24200", -"b5. c #a24205", -".Pk c #a24208", -"aBt c #a2420f", -"cq0 c #a24300", -"cWL c #a24301", -".Su c #a24303", -".T# c #a24309", -"cPy c #a2430b", -"bqb c #a2430d", -"a5A c #a24315", -"b5w c #a24404", -".Py c #a24406", -"#Th c #a24407", -"cT. c #a2440e", -"brL c #a24500", -"b5x c #a24502", -"cGV c #a24508", -".w1 c #a2450a", -"dDL c #a2450c", -"bWr c #a24600", -"bMZ c #a24603", -"bSD c #a24605", -"cUe c #a24701", -"dUn c #a24809", -"#59 c #a2480a", -"b2c c #a2480c", -".Nw c #a24900", -"dOc c #a24905", -"bwg c #a24907", -"cXe c #a24a02", -"cB# c #a24a0a", -"cGY c #a24a0b", -"cXb c #a24b00", -"bRt c #a24b04", -"bwh c #a24b06", -".Px c #a24b08", -"cVE c #a24c03", -"dfW c #a24d00", -"cr7 c #a24d0a", -"bEX c #a24d14", -"b7z c #a24e05", -"boZ c #a24e06", -"cYu c #a24e08", -"cS7 c #a24e0e", -"dKO c #a24f00", -".Kh c #a24f01", -"cA8 c #a24f03", -"b45 c #a24f09", -"att c #a24f0d", -"bRX c #a24f1d", -"b9w c #a25006", -"b1f c #a25007", -".Me c #a25100", -"cXY c #a25102", -"b6S c #a25304", -"dwo c #a25306", -"b4e c #a25308", -"b1. c #a25311", -"dDx c #a25409", -"b4b c #a2540c", -"dwp c #a25507", -"dNr c #a2550d", -"dNq c #a2550f", -"b9z c #a25608", -"duZ c #a2560a", -"bYk c #a2560b", -".NO c #a25800", -"dIp c #a25803", -"cQn c #a25914", -"dPc c #a25a10", -"#m3 c #a25c07", -"#iX c #a25d02", -"#25 c #a25d10", -"dIs c #a25e0d", -"b7v c #a25f06", -"#27 c #a25f18", -"b26 c #a2610f", -"dzk c #a2620b", -"b6O c #a26306", -"c12 c #a2640f", -"cLi c #a26514", -"c5c c #a26717", -"dOQ c #a26910", -".TH c #a2691c", -"dRW c #a26a15", -".Ei c #a26a20", -"dLm c #a26b0e", -"cQ2 c #a26b1b", -"dNE c #a26c0a", -"#fR c #a26c0c", -"csz c #a2700d", -"#kk c #a27518", -"dQR c #a2771b", -"#Jq c #a2810d", -"dT1 c #a28124", -".VF c #a2814c", -"c3e c #a28269", -"c2Y c #a28273", -"aE# c #a28577", -"cUz c #a28714", -"#lz c #a2871c", -"#g7 c #a28d30", -"#U# c #a29a97", -"#n6 c #a29b91", -"#Oo c #a29c9c", -"a1c c #a29d99", -"c6c c #a29d9a", -"c4p c #a29e93", -"c7Y c #a29e9f", -"a4M c #a29f9a", -"c6. c #a2a0a1", -"d#q c #a2a0a5", -"#qK c #a2a18c", -"d#b c #a2a19c", -"c7S c #a2a19f", -"c9I c #a2a1a6", -"dkS c #a2a2a2", -"c7I c #a2a2a4", -"c9t c #a2a39e", -"d#r c #a2a3a5", -"ddK c #a2a4a3", -"dNN c #a32202", -"dMN c #a32500", -"b7D c #a32700", -"dK9 c #a32800", -"cJ7 c #a32d00", -"cc2 c #a32e00", -"cd0 c #a32f00", -"cYo c #a33001", -"cc# c #a33100", -"dQK c #a33206", -"cyI c #a33301", -"cal c #a33303", -"cN. c #a33305", -"cAr c #a33400", -"cN# c #a33406", -"cMi c #a33407", -".NC c #a33500", -"cRF c #a33502", -"cRc c #a33504", -"cEF c #a33600", -"cb. c #a33700", -"cBu c #a33706", -".kr c #a33710", -"bWO c #a33800", -"b5u c #a33802", -"bMR c #a33804", -"asu c #a33900", -"cwX c #a33905", -"b5c c #a33907", -"bYT c #a33a00", -"bOW c #a33a01", -"c#o c #a33a03", -"cKY c #a33a0d", -"cqw c #a33b00", -"cGJ c #a33b04", -"b8c c #a33b06", -"dd3 c #a33c00", -"b7h c #a33c01", -"bXL c #a33c02", -"ch. c #a33d00", -"crv c #a33d0d", -"cYa c #a33e00", -"bZ6 c #a33e06", -"b51 c #a33e08", -"bKr c #a33e0a", -"c2f c #a33e14", -"cmQ c #a33f00", -"awv c #a33f01", -".Pz c #a33f03", -"cb# c #a33f04", -"cCv c #a33f0b", -"cRf c #a33f0e", -"ceh c #a34000", -"bvF c #a34005", -"b5a c #a34009", -"cjY c #a34100", -"b6i c #a34102", -"b20 c #a34104", -"b0K c #a34200", -"cT# c #a3420d", -"ci3 c #a34300", -"cib c #a34306", -"dxY c #a34307", -"b5# c #a34309", -"bTF c #a34402", -"cAD c #a34404", -".S8 c #a3440a", -"c.j c #a3440e", -".ok c #a34418", -".yL c #a34500", -"bQR c #a34505", -"co4 c #a34507", -"cQR c #a34508", -"#QB c #a3450f", -"avM c #a34600", -"cx1 c #a34601", -"aao c #a34603", -"cF3 c #a34609", -".ix c #a3461d", -".yJ c #a34700", -"b2# c #a34704", -"b1Z c #a34708", -".rw c #a34801", -"dn0 c #a34802", -"dS3 c #a3480f", -"bXq c #a34900", -"b2b c #a3490a", -"cWW c #a3490d", -"aul c #a34a00", -"b8E c #a34a06", -"b2a c #a34a08", -"bZo c #a34c00", -"dLD c #a34c07", -".Kf c #a34d00", -"brN c #a34d04", -"c.D c #a34d10", -".R1 c #a34e00", -"bNW c #a34e0b", -"bXT c #a34e0d", -"cYv c #a34e0e", -".Nr c #a34f06", -"dJR c #a34f07", -"dI9 c #a35004", -"c#A c #a3500a", -"b23 c #a3500c", -"dOb c #a35105", -".Nq c #a35107", -"cRo c #a35211", -"cTK c #a35213", -"bIV c #a3530c", -"b10 c #a3530e", -"cD9 c #a35314", -"#hk c #a35400", -".P4 c #a35409", -"bOS c #a3540f", -"djS c #a35412", -"b24 c #a3550b", -"bTc c #a35513", -"cXA c #a35517", -"b5V c #a35608", -"aAb c #a3562a", -"dIo c #a35701", -"b9A c #a35709", -"#BN c #a3571b", -"dOp c #a35910", -"bCY c #a35a16", -"b8z c #a35b07", -"#26 c #a35b11", -"b25 c #a35c0e", -"dF9 c #a35f0e", -"#ki c #a36007", -"#lH c #a3630c", -"#Lr c #a36405", -"#hm c #a36b0c", -"#Zm c #a36d13", -"dNC c #a36e04", -"#oz c #a37223", -".Ej c #a3722d", -"c1Z c #a37424", -"c0M c #a3751d", -".Ir c #a37923", -"aCB c #a37d59", -"c3c c #a37f5d", -"#Lw c #a3800a", -".6B c #a3801c", -"djX c #a3805a", -"#Lv c #a3830c", -"c32 c #a38376", -".1p c #a3852d", -"c28 c #a38771", -"cUX c #a38813", -".0F c #a38966", -"#ed c #a38a00", -"#k. c #a38c18", -"#mZ c #a38d28", -".8e c #a38f16", -".7C c #a3948d", -"c2P c #a3957b", -"c5I c #a39594", -"aQZ c #a39997", -"#pK c #a39a91", -"c9G c #a39ca3", -"#O# c #a39d79", -"aZ2 c #a39e9a", -"c9E c #a39ea5", -"aU1 c #a39f9c", -"c75 c #a39f9e", -"#bV c #a3a194", -"c4q c #a3a195", -"d#a c #a3a29d", -"c6# c #a3a2a0", -"#jj c #a3a39b", -"c59 c #a3a3a1", -"dhC c #a3a3a3", -"aYM c #a3a3a5", -"#T0 c #a3a49e", -"#T5 c #a3a49f", -"#T6 c #a3a5a2", -"c58 c #a3a8a4", -"c73 c #a3a9a5", -"db. c #a3aeb0", -"dRI c #a42400", -"dLY c #a42600", -"dMM c #a42700", -"bWc c #a42a00", -"cJ. c #a42c00", -"dMJ c #a42d03", -"dVp c #a42f04", -"cqE c #a43000", -"dNI c #a43001", -"cZf c #a43007", -"cqF c #a43200", -"cc9 c #a43300", -"cDD c #a43402", -"cyg c #a43404", -"dQ# c #a43406", -"cZc c #a4340c", -"cnY c #a43500", -"ccg c #a43507", -"ceb c #a43600", -"cBH c #a43601", -"bSc c #a43603", -"cCC c #a43605", -"cf7 c #a43700", -"cqA c #a43800", -"cG5 c #a43807", -"cY5 c #a43809", -"cip c #a43905", -"cw5 c #a4390b", -"bTh c #a43a00", -"cY4 c #a43a06", -"cvO c #a43a08", -"b7Y c #a43b00", -"bVM c #a43b01", -"b50 c #a43b02", -"c#n c #a43b04", -"cvW c #a43b0b", -"b9H c #a43b0c", -"cj1 c #a43c00", -"cW4 c #a43c05", -"bTj c #a43c07", -"cf8 c #a43d00", -"c.h c #a43d02", -"c#i c #a43d03", -"cKX c #a43d10", -".mr c #a43d12", -"bvH c #a43e00", -"dOl c #a43e0d", -"ck2 c #a43f00", -"ctT c #a43f07", -"clW c #a44000", -"b0I c #a44002", -"bVK c #a44004", -"bMT c #a44005", -"bKq c #a4400e", -"bZN c #a44100", -"bwW c #a44106", -"dfX c #a44108", -"b9# c #a4410a", -"ck3 c #a44200", -"dmD c #a44201", -"cEn c #a44203", -"bdh c #a44205", -"bWp c #a44300", -"dp. c #a4430c", -"cjZ c #a44400", -"bNV c #a44407", -".Nl c #a44505", -"cSw c #a4450f", -".wW c #a44600", -"cpZ c #a44606", -"b1k c #a44608", -"bMU c #a44609", -"cN9 c #a44610", -".kt c #a44620", -"at3 c #a44700", -"bSE c #a44702", -"cml c #a4470a", -".RH c #a44800", -"dVs c #a44805", -".St c #a44807", -".N5 c #a44900", -"bYm c #a44902", -"cHM c #a44b09", -"bWU c #a44b13", -".LV c #a44c00", -"cXf c #a44c04", -"b5K c #a44c05", -"bMV c #a44c0c", -"bqk c #a44d06", -"bWt c #a44e05", -"b22 c #a44f0e", -"bYl c #a45008", -".ti c #a4500a", -"dKN c #a45105", -"c.C c #a4510f", -"#85 c #a45209", -".TY c #a4540b", -"bPO c #a4540f", -"#DL c #a45419", -"b7y c #a45506", -"dIl c #a4550a", -".Ew c #a45510", -"cYU c #a4560b", -"#DK c #a45618", -"cZO c #a45908", -"b11 c #a45a11", -"#zP c #a45a1b", -"dSR c #a45b0e", -"azl c #a45b16", -"dJW c #a45c00", -".Gs c #a45c10", -"#nq c #a45d1d", -"bBN c #a45f12", -"dJg c #a4640d", -"#1R c #a4661b", -".Gt c #a46716", -"dRV c #a46a16", -"cL5 c #a46c19", -"c3v c #a46c1f", -"#kj c #a46d12", -"aBI c #a46e52", -"dN0 c #a47316", -".NW c #a47a18", -"bkA c #a47c1a", -"dPk c #a47d14", -"djC c #a4805c", -"#Lz c #a4811d", -"c3d c #a48163", -".8f c #a48b15", -"c29 c #a48b6d", -"c3. c #a48c68", -"dQj c #a48d30", -"c5C c #a48d85", -".9X c #a48f0f", -"#cw c #a4980e", -"#Ud c #a49a98", -"c9F c #a49aa3", -"c6j c #a49b9e", -"#nX c #a49d8d", -"c6u c #a49d95", -"#TX c #a49da4", -"c7X c #a49e9e", -"aN# c #a49f9b", -"a19 c #a49f9c", -"c9H c #a49fa5", -"aSm c #a4a095", -"aZz c #a4a09d", -"#in c #a4a1a8", -".7d c #a4a3a1", -"c4r c #a4a498", -"dfz c #a4a4a4", -"#st c #a4a59d", -"#Vz c #a4a59f", -"ddM c #a4a6a5", -"d#t c #a4b0b0", -"dUQ c #a51c00", -"dTE c #a51f00", -"dRM c #a52700", -"dPs c #a52701", -"dLV c #a52d0a", -"bUa c #a52f00", -"dUe c #a53100", -"bXi c #a53300", -"cPT c #a53301", -"cRH c #a53505", -"czv c #a53507", -"cBw c #a53600", -"cXE c #a53601", -"cw6 c #a53608", -"cc3 c #a53700", -"csG c #a53702", -"bZd c #a53704", -"cCD c #a53706", -"c#q c #a53800", -"b9. c #a53900", -"dd5 c #a5390b", -".Nj c #a53a02", -".PC c #a53a04", -"cS. c #a53a06", -"cxg c #a53b00", -"cWV c #a53b01", -"azE c #a53b07", -"cI3 c #a53b0b", -"cgj c #a53c00", -"bZM c #a53c02", -".Pj c #a53c03", -"b7g c #a53c05", -"b78 c #a53d00", -"b06 c #a53d06", -"c.f c #a53d08", -"dOk c #a53d0a", -"bUM c #a53e00", -"bWL c #a53e03", -"cfj c #a53e04", -"bwY c #a53f00", -"b7Z c #a53f01", -"cYN c #a54000", -"b0H c #a54008", -"de5 c #a54014", -"bUL c #a54103", -".Nk c #a54105", -"buq c #a54106", -"cSx c #a5410d", -"bVs c #a54200", -"b4E c #a54201", -"dAZ c #a54207", -"b8. c #a54209", -"cij c #a54300", -"cwR c #a54302", -"bzt c #a54304", -"cuE c #a54306", -"asv c #a54400", -".rA c #a5440d", -".PK c #a54411", -"ci4 c #a54500", -"cnc c #a54509", -"#RT c #a5460c", -"cg2 c #a54700", -"b30 c #a54707", -"bS8 c #a5470a", -"bWT c #a54711", -"dS4 c #a54713", -"dUg c #a54802", -"bWo c #a54803", -"bN2 c #a54805", -"bff c #a5480b", -"cEV c #a5480d", -"b46 c #a54906", -"#Tg c #a54908", -"#RS c #a5490a", -"bWs c #a54a01", -"bS# c #a54a04", -"bAC c #a54a11", -"dLF c #a54b00", -"a.L c #a54d06", -"b31 c #a54d0d", -"aDv c #a54d1b", -"b1G c #a54e07", -"dKM c #a54e09", -"aDu c #a54e19", -"dQv c #a54f04", -"cYI c #a54f06", -"bXW c #a55010", -"dg4 c #a55108", -"c.z c #a55109", -"dJT c #a55202", -"cA9 c #a55206", -"bNN c #a5520c", -"b4d c #a55307", -"b8v c #a55309", -"dI6 c #a5530a", -"dTc c #a5550c", -"#4A c #a55510", -"b8C c #a55609", -".R0 c #a5560b", -"dU. c #a55613", -"b19 c #a5570d", -"azi c #a55a07", -"dkg c #a55a17", -"azd c #a55b12", -"atZ c #a55c00", -"b8A c #a55d09", -"bD8 c #a55f21", -"dJd c #a56001", -".Ip c #a56013", -"dDy c #a5610e", -"b7w c #a56209", -"cYK c #a56213", -"dJh c #a56410", -"dR0 c #a56617", -"dJ0 c #a56702", -"dET c #a56712", -"c07 c #a5684b", -"#0A c #a56b19", -"c0L c #a56d16", -"c0H c #a57624", -"c0G c #a57626", -"c13 c #a57a1e", -"c27 c #a57e77", -".9V c #a58329", -"c2v c #a58471", -"#Js c #a5850c", -"dVd c #a5862b", -"#Fs c #a5870f", -".PU c #a58926", -"#fG c #a58a15", -"#Hv c #a58a1f", -"df0 c #a58a6d", -".4a c #a58d81", -"dT0 c #a58f2c", -"#fK c #a59205", -"cUv c #a59219", -"#cv c #a59313", -"cUx c #a5951b", -"c4A c #a5968f", -"aMq c #a5978c", -"dg8 c #a59887", -"dxe c #a59892", -"#ec c #a59905", -"dAz c #a59a96", -"#VM c #a59a98", -"c6v c #a59c97", -"#sR c #a59d92", -"aJg c #a59d9a", -"a3# c #a59e96", -"#mh c #a59f93", -"#MP c #a59f9f", -"a0v c #a5a195", -"aUl c #a5a19e", -"aU3 c #a5a29b", -"#PR c #a5a2a9", -"#o5 c #a5a394", -"c7T c #a5a4a2", -"ddE c #a5a5a5", -"dcL c #a5a6a8", -"#ss c #a5a79c", -"c8. c #a5a7a6", -"dL1 c #a62500", -"dQE c #a62700", -"b8G c #a62d00", -"dP9 c #a62d0e", -"cd2 c #a62e00", -"b5W c #a62f00", -"dK3 c #a62f0d", -"czP c #a63000", -"cHx c #a63002", -"b6X c #a63100", -"cbh c #a63200", -"cch c #a63300", -"aui c #a63306", -"cam c #a63400", -"czx c #a63402", -"cd. c #a63500", -"cZe c #a6350d", -"cZd c #a6360e", -"cAA c #a63700", -".NB c #a63702", -"dQI c #a6370a", -"cWS c #a63800", -"cCE c #a63807", -"c.b c #a63900", -"bXP c #a63901", -"crG c #a63a00", -"bWe c #a63b05", -"cw1 c #a63b07", -"cd# c #a63c00", -".PA c #a63c02", -"b9E c #a63c0a", -"csL c #a63d00", -"don c #a63d04", -"djh c #a63d06", -"csD c #a63d0d", -"ce4 c #a63e00", -"bXM c #a63e01", -"cUd c #a63e07", -"cuU c #a63e09", -"b47 c #a63f00", -"b79 c #a63f04", -"cbl c #a63f05", -".bt c #a64000", -"cfd c #a64002", -"cag c #a64109", -"awy c #a64204", -"cKs c #a64206", -"c.i c #a64207", -"bTE c #a64300", -"b0J c #a64302", -"bUn c #a64308", -"a9x c #a6430a", -"c#t c #a6430c", -"bN3 c #a64403", -"cJq c #a64405", -"awz c #a64407", -".NK c #a64609", -"dRN c #a64703", -"dm0 c #a64711", -"ayn c #a64812", -"aBu c #a64815", -".LU c #a64900", -"cW. c #a64903", -".Pl c #a64910", -"dKK c #a64a00", -"cQ4 c #a64a01", -"cla c #a64a07", -"cHN c #a64a09", -"b9D c #a64a0b", -".br c #a64b00", -"cV9 c #a64b02", -"dQt c #a64b05", -".NN c #a64c00", -"cGX c #a64c0d", -"cRU c #a64c10", -".Mb c #a64d00", -"djV c #a64e06", -"bXU c #a64e0f", -"bQ3 c #a64f08", -"bO4 c #a64f0a", -"dgA c #a65005", -"cQ5 c #a65007", -".N2 c #a65101", -"cTJ c #a65212", -"dI8 c #a65307", -"avC c #a65400", -"dIk c #a6540a", -"#iW c #a65500", -"#lF c #a65503", -"#kh c #a65600", -"dRD c #a65909", -"cYJ c #a65a0e", -"b8t c #a65a0f", -"dSS c #a65b0a", -"dVm c #a65b17", -"dTb c #a65e12", -"azk c #a65e16", -"c0K c #a65f0d", -".PO c #a66001", -"#kd c #a66706", -"aGD c #a66843", -"#lC c #a66a14", -"dKW c #a66b03", -"c3x c #a66f1d", -"c3w c #a67121", -"aHJ c #a67152", -"#Zl c #a6741b", -"dH9 c #a6741d", -"#NA c #a67912", -"dIV c #a67a23", -"#m9 c #a67c26", -"dkm c #a6835d", -".NU c #a68512", -"c2Z c #a68775", -"#Jr c #a6880e", -"#d9 c #a68a1c", -"dQk c #a68a26", -"c3# c #a68a63", -".9W c #a69019", -"#Qd c #a69082", -"cUy c #a69219", -"cUw c #a6931a", -".0q c #a6967c", -"c5H c #a69794", -"#TO c #a69990", -"aWN c #a69b97", -"aFH c #a69e8b", -"aQM c #a6a29f", -"c7W c #a6a2a1", -"#VB c #a6a39c", -"#TR c #a6a5a1", -"#qv c #a6a684", -"#ar c #a6a69a", -"dex c #a6a6a6", -"#fj c #a6a79f", -"c6k c #a6a89d", -"c74 c #a6a8a5", -"deL c #a6a8a7", -"da9 c #a6b2b2", -"dQD c #a71f00", -"dRL c #a72800", -"dQz c #a72901", -"bU# c #a72a00", -"cd1 c #a72d00", -"cHy c #a72e01", -"bVh c #a72f00", -"dUb c #a73006", -"cyq c #a73200", -"dbr c #a73400", -"cGb c #a73407", -"cR. c #a73500", -"bYa c #a73501", -"cQB c #a73503", -"cyr c #a73600", -"czu c #a7360a", -"csK c #a73700", -"cRG c #a73705", -"cRb c #a73707", -"csH c #a73800", -"cx9 c #a73801", -"ctG c #a73803", -"c.a c #a73900", -"cU8 c #a73904", -"cBv c #a73906", -"cYi c #a73908", -"cgi c #a73a00", -"bWN c #a73a01", -".Ra c #a73a02", -".#r c #a73b00", -".wY c #a73c00", -"bP0 c #a73c04", -"cTb c #a73c06", -"bWM c #a73d00", -"cuS c #a73d03", -"dlZ c #a73d09", -"dP# c #a73d0b", -"c2g c #a73d13", -".iw c #a73d15", -"bVL c #a73e00", -"cuR c #a73e04", -"bZL c #a73e05", -"cuC c #a73e07", -"cfc c #a73f00", -"cdS c #a73f02", -"bLF c #a73f0c", -"cpA c #a74000", -"b1D c #a74006", -"bUj c #a74100", -"bTg c #a74101", -"b4C c #a74103", -"cnJ c #a74200", -"bvG c #a74305", -"bLE c #a7430f", -"dd0 c #a74400", -"de3 c #a74401", -"cp0 c #a74403", -"bOX c #a74409", -"dNb c #a74504", -"cl4 c #a74506", -"dCo c #a74508", -"cX1 c #a74600", -"b1h c #a74601", -"cID c #a74602", -"chk c #a74700", -"aQD c #a7470b", -"cWG c #a74804", -"cX2 c #a74901", -".#o c #a74b02", -"dVr c #a74c05", -"bCR c #a74c15", -"cWz c #a74d00", -"bXV c #a74d0f", -"cX7 c #a75009", -"bDY c #a75118", -"bQQ c #a75211", -"b8D c #a7530a", -"#fP c #a75400", -"dJS c #a75408", -"b9B c #a7550c", -"avD c #a75600", -"b9u c #a75b10", -"at0 c #a75c00", -"#fN c #a75f00", -"b9s c #a75f17", -"bCZ c #a7621d", -"#1P c #a76818", -"dRX c #a76a17", -"dMA c #a76e05", -".Iq c #a76e1d", -"dIU c #a7731d", -"dlC c #a77655", -"#ox c #a77723", -"cMX c #a77921", -".ZN c #a77a25", -".oy c #a77b3a", -".X5 c #a77c1d", -"dI. c #a77e24", -"c33 c #a7877c", -"#ha c #a78d16", -"#hc c #a79010", -"ac4 c #a7916c", -"#fJ c #a7930c", -"dVc c #a79330", -"#TP c #a79895", -"ds3 c #a79a89", -"c6i c #a79aa1", -"aeq c #a79b8d", -"#Kr c #a79f78", -"c6d c #a79f9c", -"aQk c #a7a096", -"#eE c #a7a1a3", -"dqI c #a7a29c", -"#4f c #a7a29e", -"aU5 c #a7a39a", -"c8b c #a7a3a0", -"c6a c #a7a3a2", -"c6s c #a7a6a1", -"#6N c #a7a6a2", -"#Q8 c #a7a6ab", -"dj4 c #a7a7a7", -"dkr c #a7a9a8", -"dcK c #a7abac", -"#Mi c #a7c97f", -"dNK c #a82900", -"dNJ c #a82b00", -"dS1 c #a82c00", -"cv6 c #a82f02", -"cv7 c #a82f04", -"djz c #a83200", -"cbi c #a83300", -"cfa c #a83400", -".Pe c #a83401", -"cf. c #a83500", -"czw c #a83506", -"cci c #a83600", -".Ni c #a83602", -"b5Z c #a83700", -"bQ6 c #a83806", -"dRR c #a83808", -"bXO c #a83901", -"cJa c #a83902", -"cMI c #a83a00", -"do9 c #a83a05", -"dlY c #a83a07", -"cBo c #a83a09", -"cDn c #a83b00", -"cf6 c #a83b02", -".PB c #a83b03", -"cfb c #a83c00", -"cvX c #a83c0b", -"cWD c #a83d00", -"b8d c #a83d05", -"bTi c #a83d07", -"cec c #a83e00", -"dgy c #a83e02", -"cap c #a83e04", -"crw c #a83e0a", -"cdU c #a83f00", -"b1E c #a83f05", -"c#s c #a83f06", -"cuD c #a83f08", -"d#L c #a84000", -"cfi c #a84001", -"bUl c #a84003", -".Re c #a84009", -"cdT c #a84100", -"bO5 c #a84106", -"cwm c #a84107", -"cCi c #a84200", -"crx c #a84202", -"b4D c #a84204", -"c0Y c #a84212", -"cLo c #a8430d", -"b1Y c #a84408", -"d#K c #a84501", -".Uq c #a84504", -"cYs c #a8450e", -".Nx c #a84600", -"dCn c #a84609", -"cWI c #a84700", -"d#J c #a84703", -"dni c #a84712", -"at2 c #a84800", -"avL c #a84900", -"dnh c #a84905", -"cOQ c #a84a14", -"aBs c #a84a16", -"dQs c #a84b06", -"cGW c #a84b0e", -"b4V c #a84c09", -"co6 c #a84c0b", -"cnd c #a84c0d", -"b0l c #a84d07", -"bS7 c #a84d16", -".LT c #a84e00", -"bBI c #a84f17", -"dNY c #a85006", -"dSW c #a85010", -"dJQ c #a8510c", -"bCS c #a8511b", -"dI7 c #a8540b", -"#hh c #a85500", -"cZN c #a85505", -"axr c #a85602", -"at1 c #a85800", -"cE5 c #a85819", -"dRE c #a8590c", -".Gp c #a85a12", -"azf c #a85c0e", -".TE c #a85f2a", -"dES c #a86113", -"dRZ c #a86315", -"dTa c #a86316", -"dKV c #a86b00", -"dLP c #a86e03", -"cNC c #a87522", -"cMW c #a87621", -"#oy c #a87826", -"#lJ c #a87a22", -"#kb c #a88215", -"djj c #a8825e", -".X6 c #a88426", -"#Ht c #a8850f", -"c20 c #a88776", -"#Jv c #a88821", -"##t c #a88a0e", -".X7 c #a88a30", -"#cx c #a89209", -"#aZ c #a89218", -"c6y c #a89591", -"c2Q c #a89881", -"c4B c #a89a91", -"c6w c #a89b95", -".UZ c #a89c86", -"c6h c #a89ca0", -"aF2 c #a89d97", -"#pj c #a89e92", -"#Ub c #a89e9c", -"c76 c #a89e9f", -"aN7 c #a8a093", -"c6m c #a8a095", -"aRh c #a8a199", -"#sP c #a8a296", -"#Vw c #a8a2a2", -"#nw c #a8a487", -"ab. c #a8a49b", -"aUk c #a8a4a1", -"#SO c #a8a4a3", -"#VC c #a8a59e", -"#48 c #a8a697", -"c79 c #a8a6a7", -"#VF c #a8a7a2", -"c7V c #a8a7a3", -"aUY c #a8a7a5", -"#by c #a8a89c", -"dfA c #a8a8a8", -"#qW c #a8a9a4", -"c4s c #a8aa9c", -"ddL c #a8aaa9", -"dOI c #a92403", -"b6W c #a92a00", -"cYg c #a92f00", -"cJ# c #a93100", -"cXx c #a93200", -"cv5 c #a93400", -"cv4 c #a93500", -"cpD c #a93502", -"can c #a93600", -"cFn c #a93607", -"cWT c #a93800", -"dpM c #a93907", -"cbk c #a93a02", -".Nz c #a93a03", -"coK c #a93a05", -"cqz c #a93b00", -"cnV c #a93b06", -"cvY c #a93b08", -".Ny c #a93c01", -"c#r c #a93c03", -"bSb c #a93c04", -"cif c #a93d00", -"b9d c #a93e06", -"bXN c #a93f03", -"bYS c #a93f05", -"ctP c #a94000", -"bZ7 c #a94007", -"cd3 c #a94102", -"cca c #a94104", -".wX c #a94200", -"dUf c #a94301", -"b1F c #a94303", -"cCk c #a94305", -".bs c #a94400", -"cIE c #a94603", -"djR c #a9460d", -"cU2 c #a94700", -".Uo c #a94708", -"dO# c #a94804", -"bVu c #a94a06", -"cw# c #a94a08", -"dkf c #a94a12", -"dKL c #a94d00", -"cX3 c #a94d04", -"bVv c #a94d0a", -"coe c #a94d0c", -"dQw c #a94e07", -"azU c #a94f2c", -".R2 c #a95000", -".Md c #a95202", -"bQP c #a9541b", -".Im c #a9570d", -"axs c #a95800", -"dRB c #a95a0d", -".Ik c #a95b10", -".TF c #a95b19", -"bD6 c #a95d23", -"dNZ c #a9610d", -"dT# c #a96115", -".RJ c #a96710", -"dJZ c #a96800", -"#0z c #a9711c", -"dMB c #a9720e", -"#lI c #a9731b", -"#kc c #a97a12", -"c26 c #a97d7c", -"#Lx c #a97e0e", -".PW c #a98434", -"c34 c #a98b80", -"#Ft c #a98c17", -"c2T c #a98c7e", -"#iN c #a98e1b", -".VR c #a99980", -"c6x c #a99a95", -"c8d c #a99e9c", -"#Vl c #a99f9d", -"#Ua c #a9a19e", -".3D c #a9a1ac", -"#5# c #a9a5a2", -"aU2 c #a9a6a1", -"da6 c #a9a7aa", -"a1v c #a9a8a4", -"#TZ c #a9a8a6", -"dfy c #a9a9a9", -"#Vf c #a9ab9d", -"deN c #a9abaa", -"#7Z c #a9c59d", -"acy c #a9c68c", -"cJ8 c #aa2d00", -"dSZ c #aa2f06", -"cxf c #aa3000", -"cXw c #aa3100", -"cf# c #aa3200", -"b5Y c #aa3300", -".Nh c #aa3404", -"cnX c #aa3500", -"dQF c #aa3600", -"bWd c #aa3603", -"cyh c #aa3605", -"av4 c #aa3607", -"cbj c #aa3700", -"cR# c #aa3804", -"drS c #aa3900", -"cw7 c #aa3a08", -"czt c #aa3a0a", -"dnA c #aa3b00", -"b3G c #aa3b03", -"b2w c #aa3b04", -"cuV c #aa3b06", -"cgd c #aa3c00", -"cBp c #aa3c01", -"cvN c #aa3c07", -".tp c #aa3c09", -"c.g c #aa3d04", -"cin c #aa3d05", -"cic c #aa3e00", -"cI5 c #aa3e0f", -"cuT c #aa3f07", -"b3K c #aa4002", -"cpB c #aa4004", -".ry c #aa4100", -"cXz c #aa4108", -"dfU c #aa4203", -".rz c #aa4205", -"dfT c #aa4300", -"b49 c #aa4301", -"b05 c #aa4308", -"bNU c #aa4309", -"cIF c #aa4402", -"dQG c #aa4404", -".w0 c #aa4406", -"chj c #aa4500", -"byh c #aa4608", -"bOU c #aa460b", -"c92 c #aa4704", -"cYr c #aa470e", -".rx c #aa4801", -".Sv c #aa4807", -".Wj c #aa4809", -"cWK c #aa4904", -"cZL c #aa4a00", -"b1i c #aa4b09", -"b1j c #aa4b0b", -"cXj c #aa4c06", -".Wk c #aa4d0a", -"b21 c #aa4d10", -"bPY c #aa4e0b", -"dfY c #aa4e27", -"b0k c #aa4f08", -"cZM c #aa5004", -"bRZ c #aa5011", -"#hj c #aa5100", -"bPP c #aa510f", -"axv c #aa5300", -"b9C c #aa5310", -"avE c #aa5700", -".RI c #aa5804", -"b9v c #aa580e", -"#1Q c #aa6d1d", -"#ee c #aa6f00", -"dMz c #aa7004", -"dLQ c #aa710a", -"#0y c #aa721d", -"cL6 c #aa771e", -"dij c #aa7959", -"#a1 c #aa8008", -".NV c #aa8117", -"#Jt c #aa8210", -"di5 c #aa825f", -"dkN c #aa845d", -".PV c #aa872d", -"c2U c #aa8d7f", -"c2S c #aa8e80", -"aDR c #aa9173", -"c5D c #aa938b", -"#fI c #aa9515", -"#e# c #aa961b", -"dAk c #aa9791", -"c5G c #aa9896", -"aE7 c #aa997b", -"#TE c #aa9c91", -"#.4 c #aa9d97", -"#Uc c #aaa19c", -"c77 c #aaa1a4", -"aO8 c #aaa297", -"dsG c #aaa29f", -"#sN c #aaa494", -"#3G c #aaa5a1", -"acL c #aaa69b", -"a0I c #aaa7a0", -"c6l c #aaa89b", -"aTk c #aaa89c", -"c7U c #aaa9a5", -"#Vx c #aaaaa8", -"ddF c #aaaaaa", -"#45 c #aaac9e", -"dj5 c #aaacab", -"#qB c #aaada6", -"dcI c #aab0b0", -"#9D c #aac69e", -"dUP c #ab1500", -"dTD c #ab1600", -"dNO c #ab2202", -"dSp c #ab2603", -"cK6 c #ab3100", -"dUd c #ab3200", -"cYn c #ab3203", -"cv8 c #ab3205", -"bU. c #ab3301", -"cpF c #ab3503", -"cpE c #ab3505", -"dPq c #ab3601", -"cv3 c #ab3700", -"coN c #ab3704", -"auj c #ab3800", -"cYj c #ab3809", -"cGf c #ab3900", -"cIq c #ab3903", -".NA c #ab3905", -"cio c #ab3907", -"cao c #ab3a00", -"ctJ c #ab3a02", -"chf c #ab3b00", -"axR c #ab3b09", -"cIk c #ab3b0d", -"b9e c #ab3c04", -".Pi c #ab3c05", -"cVD c #ab3d00", -"dmg c #ab3d02", -".u9 c #ab3d08", -"cgl c #ab3e00", -"cvK c #ab3e03", -"cAm c #ab3e05", -"cqx c #ab3f00", -"dgx c #ab4000", -"bQ5 c #ab4008", -"b2A c #ab4103", -"cJp c #ab4200", -"cXG c #ab4209", -"c0Z c #ab4212", -"cCj c #ab4304", -"cYO c #ab4400", -".PL c #ab4402", -"bUm c #ab4409", -"dON c #ab440a", -".#p c #ab4500", -"bwX c #ab4505", -".Up c #ab4709", -"cWH c #ab4804", -".tj c #ab4805", -".Wi c #ab490a", -"cWJ c #ab4a03", -"dRG c #ab4b0e", -"dbo c #ab4e00", -".PN c #ab5200", -"cXa c #ab5202", -"dd2 c #ab5500", -"cYT c #ab550a", -"dPC c #ab5606", -"axt c #ab5700", -"#lD c #ab5d0a", -"b9t c #ab6116", -"dMx c #ab7008", -"#m7 c #ab7721", -".mF c #ab7b3d", -"c25 c #ab7f7c", -"dlf c #ab805d", -"aIe c #ab855e", -"c21 c #ab8a79", -"c43 c #ab8e86", -"##r c #ab9025", -"c2R c #ab9180", -"a4r c #ab9587", -"#VQ c #ab9995", -".Xw c #ab9b82", -"c4W c #aba197", -"aKP c #aba1a2", -"aGp c #aba390", -"c6e c #aba3a0", -"c8c c #aba3a1", -"#ti c #aba492", -"c78 c #aba5a7", -"aJr c #aba692", -"aUn c #aba6a2", -"dhV c #aba79c", -".7s c #aba79e", -"aTj c #aba899", -"#9P c #aba8a3", -".3z c #aba9ac", -"dew c #ababab", -"#46 c #abac9c", -"dj6 c #abadac", -"a42 c #abb1a3", -"a43 c #abb1a5", -"dPx c #ac2d00", -"b5X c #ac2f00", -"bVi c #ac2f01", -"cJ9 c #ac3000", -"di1 c #ac3201", -".Ng c #ac3203", -"cyp c #ac3304", -"cyn c #ac350a", -"cym c #ac350b", -"cyj c #ac3701", -"cV7 c #ac3900", -"dNR c #ac3902", -"cIm c #ac390c", -"cvU c #ac3a00", -"cmV c #ac3a04", -"dhq c #ac3a06", -"cMG c #ac3b00", -"cCy c #ac3b01", -"cWU c #ac3b03", -"cVB c #ac3c00", -"cHC c #ac3d06", -"cI4 c #ac3d0f", -"cx4 c #ac3e00", -"cid c #ac3e01", -"dqE c #ac3e03", -"cSy c #ac3e09", -"cCw c #ac3e0b", -"cX0 c #ac3f00", -"cEo c #ac3f06", -"b48 c #ac4000", -"dwz c #ac4002", -"auk c #ac4100", -"cpC c #ac4206", -".ks c #ac421a", -"cKo c #ac4300", -"cM# c #ac4309", -"bPQ c #ac430c", -"ck# c #ac4405", -"cd4 c #ac4407", -"de2 c #ac4502", -"cs9 c #ac4503", -"bPZ c #ac450a", -".NM c #ac4600", -".PM c #ac4700", -"cq1 c #ac4906", -"avK c #ac4c00", -".N4 c #ac5100", -"axy c #ac5102", -"dOa c #ac510a", -"axu c #ac5800", -"avF c #ac5900", -"dkj c #ac5a10", -"dOP c #ac5b0a", -"bD7 c #ac6127", -".Gn c #ac621b", -"#ef c #ac6300", -"dRY c #ac6719", -"dRU c #ac6918", -"dVl c #ac6f1f", -"aT5 c #ac7058", -"cVw c #ac7207", -"#cz c #ac7302", -"dOy c #ac7d13", -"#m8 c #ac7e28", -"#Ly c #ac8216", -"c24 c #ac8679", -"dPj c #ac8925", -"#Hu c #ac8b1a", -"aEA c #ac8c63", -"c2V c #ac8f81", -"c35 c #ac9085", -"#e. c #ac931f", -"dub c #ac9792", -"aWH c #ac9988", -"c5F c #ac9995", -"aF4 c #ac9a86", -"c6n c #ac9f96", -".9i c #aca299", -"c6g c #aca2a1", -"dyO c #aca497", -"#Se c #aca592", -"a3a c #aca59b", -"#2d c #aca59f", -"#tk c #aca88f", -".7R c #aca89f", -"c6r c #aca8a5", -"aU4 c #aca9a2", -"dcC c #acaaad", -"dqo c #acaba9", -"aX# c #acacac", -"ddf c #acacae", -"dfH c #acaeab", -"deM c #acaead", -"aTQ c #acb0b3", -"dPw c #ad2400", -"dMS c #ad2500", -"b6U c #ad2a00", -"dRJ c #ad2c05", -"cK5 c #ad3100", -"diF c #ad3300", -"djA c #ad3405", -"cyk c #ad3500", -"ctN c #ad3600", -"ctO c #ad3700", -"cnW c #ad3705", -"cyi c #ad3803", -"cU3 c #ad3900", -"coL c #ad3906", -"chg c #ad3a00", -"dPy c #ad3a01", -"cgh c #ad3b00", -"dhS c #ad3b07", -"cRa c #ad3b09", -"dsV c #ad3c00", -"cIM c #ad3c02", -"cuI c #ad3c04", -".#q c #ad3d00", -"cFq c #ad3e06", -"cvZ c #ad3e09", -"cie c #ad3f00", -"cDC c #ad3f04", -"bVk c #ad3f0a", -"cwW c #ad4005", -"cvM c #ad4007", -"ctR c #ad4101", -"cDz c #ad420a", -"cOS c #ad4305", -"cXZ c #ad4402", -"ctQ c #ad4403", -"cXH c #ad440b", -"dAY c #ad4506", -"c90 c #ad4603", -".ms c #ad471f", -"dbn c #ad4800", -"cYP c #ad4802", -"dRi c #ad490b", -"bSa c #ad4a09", -"cXg c #ad4c07", -"cX6 c #ad500a", -".P6 c #ad5200", -"de4 c #ad5704", -"cXX c #ad570a", -"avG c #ad5900", -"dRC c #ad5e0f", -"dT9 c #ad6b1d", -"dLN c #ad6e00", -"dLO c #ad6f02", -"cC6 c #ad772f", -"#lB c #ad8023", -"cUW c #ad8815", -"c2W c #ad9080", -"#ea c #ad9a17", -".YM c #ad9a7c", -"c4C c #ad9c94", -"c4K c #ad9e97", -"a5L c #ada098", -"a5K c #ada399", -"#04 c #ada49f", -"#tl c #ada78f", -"a1E c #adaaa3", -"#T1 c #adaca7", -"aUZ c #adacaa", -"dpO c #adaea0", -"da7 c #adafae", -"#f# c #adb09f", -"a44 c #adb0a7", -"#sp c #adb29e", -"da8 c #adb3b3", -".7M c #adb7ae", -"b7C c #ae2500", -"dRK c #ae2d05", -"dMT c #ae2f02", -"dP8 c #ae3017", -"cw9 c #ae3500", -"cG6 c #ae3506", -"cw. c #ae3604", -"chh c #ae3800", -"coM c #ae3806", -"cYm c #ae3808", -"cMH c #ae3a00", -"cYk c #ae3a0b", -"chi c #ae3b00", -"ctH c #ae3b04", -"dsU c #ae3c00", -"b3H c #ae3d03", -"b2x c #ae3d05", -"cJz c #ae3e00", -"dmC c #ae3f08", -"dzn c #ae4001", -"cjc c #ae4003", -"dho c #ae4100", -".wZ c #ae4202", -"cDm c #ae4204", -"b9F c #ae4213", -"dPA c #ae450e", -"cr6 c #ae4705", -".NL c #ae4800", -"dQx c #ae4b0a", -"cYQ c #ae4c03", -"dRS c #ae4c0b", -"dOO c #ae4d08", -"#iV c #ae5200", -"avH c #ae5600", -".P5 c #ae5707", -"#lE c #ae5805", -"dQN c #ae580b", -"bRY c #ae581f", -"bOT c #ae5a14", -"dRT c #ae5c10", -"dRA c #ae5c12", -"dJa c #ae6509", -"dJc c #ae6808", -"cLh c #ae7120", -"aCn c #ae845a", -".ZO c #ae862f", -"c23 c #ae8d7a", -"c2X c #ae8e7f", -"c36 c #ae9388", -"#iO c #ae941d", -"#hb c #ae961a", -"#fH c #ae961c", -"c5E c #ae9994", -"#eb c #ae9f12", -"#VN c #ae9f9a", -"c6o c #aea199", -"dvD c #aea19b", -"#.j c #aea49a", -"aQj c #aea79d", -"aOT c #aea9a5", -"#.U c #aeaa9e", -"a1F c #aeaba2", -"aYi c #aeaba6", -"aWq c #aeadab", -"c4t c #aeaea2", -"dgR c #aeaeae", -"dcG c #aeb0af", -"a41 c #aeb2a3", -"#6z c #aecaa1", -"dQC c #af2500", -"dPt c #af2808", -"cxb c #af3109", -"cx# c #af3300", -"cx. c #af3400", -"cYf c #af3601", -"cv9 c #af3607", -"cyo c #af3609", -"dnB c #af3700", -"cXy c #af3702", -"cyl c #af390b", -"cv2 c #af3a04", -"cl2 c #af3a05", -"cIl c #af3a0e", -"ctI c #af3b00", -"cge c #af3d00", -"cYb c #af3d01", -"d#M c #af3e00", -"cBq c #af3f00", -"chm c #af4000", -"cEp c #af4008", -"czc c #af4102", -"b3J c #af4104", -"dQL c #af410e", -"cvL c #af4209", -"dzo c #af4303", -"cOT c #af4305", -"dbs c #af460f", -"cJn c #af4700", -"cc4 c #af470a", -"dVq c #af4907", -"dSr c #af490b", -"cXi c #af4a04", -"dPB c #af4c08", -"cXh c #af4d06", -"cX4 c #af4e07", -"cYS c #af5308", -"#kg c #af5401", -".N3 c #af5604", -"#fO c #af5700", -".Il c #af6015", -"dKT c #af6d00", -"#cy c #af8109", -"dc3 c #af8259", -"diJ c #af8261", -"aCk c #af8674", -"#Ju c #af8718", -"dOw c #af882d", -"#lA c #af8c28", -".WI c #af8d81", -"c22 c #af8e7b", -"dPi c #af9035", -"##s c #af921a", -"c37 c #af978d", -"c4J c #af9a99", -"#VP c #af9d99", -"c4D c #af9e96", -"c4v c #afa29c", -"c4L c #afa395", -"#ZI c #afa49e", -"c4M c #afa794", -"aPp c #afa79a", -"c6f c #afa7a4", -"#WX c #afa99d", -"#tj c #afaa96", -"a45 c #afafa7", -"dfB c #afafaf", -"#Ma c #afb086", -"#sr c #afb1a4", -"#3u c #afc8a0", -"#40 c #afcaa1", -"dTC c #b01503", -"dSo c #b02006", -"b6V c #b02600", -"cxc c #b03209", -"dRf c #b0320c", -"diG c #b03303", -"cxe c #b03305", -"cxa c #b03307", -"cXv c #b03400", -"b8F c #b03607", -"dnC c #b03700", -"cIN c #b03702", -"dS0 c #b0370c", -".Rb c #b03800", -"cmW c #b03804", -"av5 c #b03901", -"cFp c #b03a00", -"cYl c #b03a0c", -"dhp c #b03b06", -"cXd c #b03c00", -"cw8 c #b03c09", -"cWE c #b03d00", -"cG8 c #b03d04", -"ck8 c #b03d06", -"cCx c #b03d07", -"dUc c #b03d0e", -"dmy c #b03e00", -"dtQ c #b03e02", -"dmh c #b03e0a", -"dhP c #b03f03", -"b3I c #b03f05", -"dmZ c #b03f07", -".u4 c #b04000", -"dwy c #b04001", -"cj7 c #b04109", -"cqy c #b04203", -"b2z c #b04205", -"cj# c #b04207", -"cJo c #b04300", -"csM c #b04403", -"cX5 c #b04f08", -"bQ4 c #b0510f", -"dgB c #b0521e", -"axx c #b05504", -"#ke c #b05801", -"cV3 c #b05900", -"dSV c #b0661b", -"dKU c #b07002", -"aB6 c #b07d62", -"c2r c #b0836e", -"aH. c #b0a295", -"c4V c #b0a39a", -"c4w c #b0a39d", -"#Ys c #b0a69d", -"c4u c #b0a7a0", -"#TQ c #b0a8a5", -"aRi c #b0a99f", -"#sQ c #b0aa9e", -"aUo c #b0aba7", -"#VD c #b0ada6", -"aRH c #b0ada8", -"aKd c #b0afaa", -"dfx c #b0b0b0", -"djL c #b0b2af", -"dfE c #b0b2b1", -"#Of c #b0c88a", -"dUO c #b11403", -"dNP c #b12501", -"dOJ c #b12607", -"dQA c #b12c09", -"b7B c #b12d00", -"cuP c #b13700", -"cHU c #b13704", -"cJA c #b13800", -".to c #b13801", -"die c #b13803", -"dnD c #b13904", -"cV8 c #b13b00", -"bVj c #b13b09", -".Ph c #b13c06", -"cYc c #b13d04", -"dwv c #b13e00", -"dtR c #b13f01", -"cjb c #b13f03", -"cgk c #b14000", -"b2y c #b14006", -".tk c #b14101", -"b9G c #b14215", -"cMb c #b14306", -"cl# c #b14308", -"crF c #b14403", -"cO# c #b14507", -"dTG c #b14a0f", -".T. c #b14d0f", -"avJ c #b14e00", -"cYR c #b14f06", -"avI c #b15100", -"cXW c #b15407", -"aPJ c #b16043", -".Go c #b1641e", -"dJb c #b16907", -"aDy c #b16c45", -".Td c #b1734a", -"cUV c #b18814", -"aGO c #b19f87", -"c4. c #b1a096", -"a4j c #b1a2a5", -"#bJ c #b1a6a2", -"#c3 c #b1a7a8", -"c6q c #b1a9a6", -"aXD c #b1ada2", -"aKH c #b1b0ac", -"#rr c #b1b1a5", -"dev c #b1b1b1", -"dga c #b1b1b3", -"a40 c #b1b2a2", -"#qX c #b1b2ad", -"aWu c #b1b2b4", -"ddJ c #b1b3b2", -"dcH c #b1b5b6", -"#U4 c #b1bba0", -"#2a c #b1c7a0", -"ad7 c #b1ce8e", -".Pf c #b23300", -"cxd c #b23509", -"cG7 c #b23805", -"cEE c #b23900", -"cHV c #b23904", -"cXr c #b23a00", -".u8 c #b23b03", -"cGe c #b23c00", -"c91 c #b23e01", -"dmz c #b23e03", -".Rc c #b23e05", -"cja c #b23f06", -"dww c #b24001", -"cNu c #b24002", -"cLn c #b24105", -"dxX c #b24202", -"cKr c #b24203", -".Rd c #b2430b", -"cLk c #b24409", -"csN c #b24504", -"cMa c #b2450a", -"dUR c #b24c0e", -"azG c #b24d15", -"cX# c #b24e00", -"#hi c #b25000", -"axw c #b25802", -"azg c #b26714", -"dMy c #b27608", -"dNB c #b27c10", -"#a0 c #b28e14", -".ZP c #b2943a", -"aFi c #b2979c", -".Z# c #b29b7b", -"dgD c #b29e86", -"c4x c #b2a59f", -"c4N c #b2a791", -"#Y5 c #b2aa95", -"drC c #b2adaa", -"a3c c #b2aea2", -"aZW c #b2afa6", -"#k5 c #b2afa8", -"#nB c #b2b0a3", -"dgm c #b2b1af", -"ddG c #b2b2b2", -"a4V c #b2b49f", -"dfG c #b2b4b3", -"#01 c #b2c6a3", -"dSn c #b31e0a", -"dOL c #b32a00", -".u6 c #b33500", -"cYe c #b33a05", -"cgg c #b33d00", -"du4 c #b33f02", -"cuJ c #b33f06", -"cEC c #b34009", -"cv1 c #b3400a", -"cXc c #b34102", -"cv0 c #b3410b", -"chl c #b34400", -"dd4 c #b34506", -"dOx c #b38822", -"de7 c #b3916e", -".Yt c #b39185", -"aEp c #b39480", -"c4I c #b3989d", -"c42 c #b39a93", -"aEy c #b39b7f", -"c38 c #b39d92", -"c4P c #b3a189", -"aF6 c #b3a18d", -"c4z c #b3a49d", -"a5I c #b3a67c", -"c4y c #b3a69e", -"c4O c #b3a78f", -"aLe c #b3a797", -"c6p c #b3a8a4", -"a46 c #b3aca4", -"#47 c #b3b0a1", -"a0L c #b3b0a7", -"#qV c #b3b4af", -"#Oa c #b3b697", -"aSu c #b3b7ba", -"dPv c #b42602", -"dNQ c #b42c02", -"dRe c #b42d10", -".tn c #b43600", -"dnf c #b43700", -"cXu c #b43802", -".Pg c #b43804", -"dif c #b43805", -"dhR c #b43a07", -"cYd c #b43b04", -"cGc c #b43c07", -"cgf c #b43e01", -"du6 c #b44003", -"ck. c #b44005", -"du5 c #b44102", -"dQy c #b4470e", -"#iU c #b45000", -"dQM c #b4510e", -"dNA c #b4801a", -"c4H c #b49a9d", -".5V c #b49d95", -"c39 c #b4a097", -"aNQ c #b4a190", -"c4E c #b4a39b", -"a31 c #b4a79e", -"a4h c #b4a8aa", -"aOX c #b4aaa1", -"a4. c #b4aaa8", -"a39 c #b4aba6", -"aQn c #b4aca1", -"a4# c #b4aca9", -"#sO c #b4aea0", -"a4a c #b4afac", -"aSe c #b4b0a4", -"#Vm c #b4b0ad", -"a4Z c #b4b2a3", -".8P c #b4b3a1", -"dfw c #b4b4b4", -"deK c #b4b6b5", -"#gE c #b4b8aa", -"dOK c #b52703", -"dPu c #b52a09", -".tm c #b53700", -"cl3 c #b53905", -"cXs c #b53a01", -"cED c #b53c03", -"dhQ c #b53c07", -"cGd c #b53e06", -"cDA c #b5400a", -"dwx c #b54203", -"cXV c #b54a02", -"dUS c #b54e13", -"#kf c #b55501", -"dJX c #b56e02", -"cD8 c #b5702d", -"dJY c #b57207", -"a3H c #b57d66", -"a07 c #b58d81", -"#Ru c #b59272", -".4l c #b5a79a", -"c4X c #b5a79e", -"dvE c #b5a8a2", -"#3H c #b5aaa4", -".7F c #b5ac9d", -"#5a c #b5aca7", -".4j c #b5acaf", -".3L c #b5ad98", -"aRl c #b5ada2", -"aSp c #b5afa3", -"aVW c #b5b0ac", -"a4b c #b5b0ad", -"a4Y c #b5b2a1", -".5K c #b5b4b0", -"djs c #b5b4b2", -"ddI c #b5b5b5", -"dde c #b5b5b7", -"dgl c #b5b7b4", -"dfF c #b5b7b6", -"#ZG c #b5c6a6", -"aaX c #b5d1a0", -"dRd c #b62a13", -"dQB c #b62d0b", -".u5 c #b63c00", -".tl c #b63e00", -"dmB c #b63e0a", -"cDB c #b63f07", -"cXU c #b64400", -"dbq c #b64600", -"cWy c #b64d00", -"c41 c #b69f99", -"c4Q c #b6a18c", -".2r c #b6a190", -"a5m c #b6a595", -"#SV c #b6a697", -"#Vk c #b6a8a5", -".0l c #b6a996", -"a3K c #b6ab8b", -"a38 c #b6aba7", -"a5c c #b6af9d", -"a1N c #b6afa7", -"a1O c #b6afa9", -"a0T c #b6b0b0", -"aP6 c #b6b2a6", -"aZT c #b6b3ac", -".7Q c #b6b5b0", -"dcF c #b6b6b6", -"aJi c #b6b6b8", -"djK c #b6b8b7", -"#TA c #b6c0a5", -".u7 c #b73900", -"cXt c #b73a02", -"cFo c #b73c01", -"cj8 c #b73f0a", -"dc1 c #b74415", -"cKp c #b74705", -".Tp c #b78b5c", -".W4 c #b79c7e", -"c40 c #b7a39a", -"c4U c #b7a69c", -".53 c #b7a9a6", -"ds4 c #b7ab9b", -"a5o c #b7ab9d", -"#Vv c #b7acb0", -"aGq c #b7af98", -"dyP c #b7b1a3", -"aTK c #b7b1a5", -"aNa c #b7b3b0", -"#rq c #b7b4ad", -"dgZ c #b7b6b4", -"diu c #b7b7b7", -"a3v c #b7b8a6", -"dh6 c #b7b9b8", -"#Yn c #b7c5ab", -"a#i c #b7d4a8", -"dng c #b83904", -"ck9 c #b83c08", -"dmY c #b83c09", -"cj9 c #b83f08", -"cKq c #b84504", -"cVv c #b8750c", -"aBx c #b87e58", -"aB4 c #b8866d", -"dpt c #b88c73", -".U2 c #b8957f", -"aVt c #b89d8c", -"c4G c #b8a39e", -"a4u c #b8a49b", -"#Vj c #b8a5a1", -"c4Y c #b8a79d", -"a4k c #b8aaa9", -"a35 c #b8aaaa", -"#2e c #b8aba3", -"a5J c #b8ad8f", -"aVz c #b8adb3", -"ab# c #b8b0a5", -"aZp c #b8b3af", -"aWn c #b8b4a9", -"aIK c #b8b6c1", -"aUj c #b8b7b3", -"aS# c #b8b7bd", -"ddH c #b8b8b8", -"dgj c #b8bab9", -"#sq c #b8bcad", -"af0 c #b8d68e", -"dmW c #b93a03", -"cl. c #b93d09", -"dmA c #b93d0a", -"axS c #b9460d", -"dc0 c #b94708", -"dRF c #b9621b", -"c2u c #b99481", -"agW c #b99885", -".S2 c #b99a7b", -"#Nn c #b9a17d", -"c4R c #b9a290", -"c4Z c #b9a69f", -"dAl c #b9a6a0", -"#Vi c #b9a8a0", -"#05 c #b9aca3", -"#W5 c #b9ada1", -"#hG c #b9af94", -"#Y4 c #b9b2a2", -"aX8 c #b9b4b0", -"#rs c #b9b5a9", -"aNf c #b9b5b4", -"a1f c #b9b6b1", -"dcD c #b9b7ba", -"aWf c #b9b9b9", -"dfD c #b9bbba", -"dc6 c #b9bda6", -"#WN c #b9c6ac", -"#Mh c #b9d49d", -"dmX c #ba3b08", -"cLm c #ba4407", -"cLl c #ba460b", -"cX. c #ba4900", -"aJn c #baa496", -"c4S c #baa594", -"c4T c #baa799", -"#M7 c #baa7a9", -"c4F c #baa99f", -"a4L c #baaaaa", -".5B c #baaaad", -"a37 c #baaca9", -"a34 c #baacac", -".7E c #baad9d", -"a32 c #baada7", -"#8g c #baae9e", -"#eW c #bab0ae", -"#Uk c #bab1a8", -".9b c #bab2a5", -"aPu c #bab2af", -"aO# c #bab3ad", -"aO2 c #bab4b8", -"aQO c #bab5b1", -"aYZ c #bab6ab", -"a4W c #bab9a7", -"#hU c #bab9b5", -"dhg c #bab9b7", -"dfv c #bababa", -"#.q c #babbad", -"#le c #babbb5", -"dgY c #babcb9", -"a5e c #babea7", -"#44 c #babeb0", -"aGF c #bb9884", -"#K6 c #bba08d", -".4t c #bba194", -"a4J c #bba6a1", -".2u c #bba888", -"a5p c #bba8a2", -"ae9 c #bbaa9a", -"aDI c #bbac97", -"a36 c #bbadaa", -"a5b c #bbae9d", -"a4y c #bbb1a5", -"ds5 c #bbb2a3", -"#gt c #bbb3b1", -"aep c #bbb5a9", -"a5d c #bbbaa6", -"dcE c #bbbbbb", -"dfC c #bbbdbc", -"dhv c #bbc0ba", -"#Kj c #bbc684", -"a0c c #bc8469", -"aHB c #bc9683", -"aEG c #bc9d88", -"a2L c #bca796", -"duc c #bca9a5", -"#ZJ c #bcaea3", -"acM c #bcb2a6", -"#q2 c #bcb3aa", -"#pC c #bcb3ae", -"a0j c #bcb7b3", -"a4c c #bcb7b4", -"aU8 c #bcb8ad", -"aXA c #bcb9b0", -"dja c #bcbbb9", -"dmI c #bcbcbc", -"dg9 c #bcbeb3", -".59 c #bcbeb9", -"dgk c #bcbebd", -"c2s c #bd937d", -".0N c #bda990", -"af. c #bdac9a", -"a4w c #bdaca5", -"aIp c #bdad94", -"#Lj c #bdaf8a", -"dvF c #bdb0aa", -".8I c #bdb1a5", -"#Uf c #bdb3b1", -"#9Q c #bdb4ad", -"aEl c #bdb4b7", -"aHv c #bdb5a0", -"aGR c #bdb79d", -"aOR c #bdb8b4", -"a4X c #bdbcaa", -"dhH c #bdbcba", -"djq c #bdbdbd", -"dg# c #bdbdbf", -"dhX c #bdbec2", -"aWR c #bdbfba", -"djr c #bdbfbc", -"#gB c #bdbfbe", -"#sx c #bdc0b9", -"dhW c #bdc3c1", -"cV2 c #be5f03", -"aDg c #be8c8b", -"a4K c #beaaa9", -"#WY c #beb2a2", -"drY c #beb4aa", -"#Mu c #beb8a8", -"dyQ c #beb8ac", -"#gv c #beb8b8", -"dfu c #bebebe", -"#VG c #bebfba", -"dhf c #bec0bd", -"#qz c #bec1b8", -"#OQ c #bf9d7a", -".2I c #bfa08c", -"a4t c #bfaba0", -"a4g c #bfb4b0", -"aFN c #bfb695", -"aMI c #bfb7aa", -"#c6 c #bfbab4", -"aLP c #bfbab6", -"aMv c #bfbbb8", -"#pa c #bfbfb3", -"ddd c #bfbfbd", -"deH c #bfbfbf", -"a1w c #bfc0bb", -"dpc c #bfc1bc", -"dgh c #bfc1c0", -"a4U c #bfc3ac", -"cW9 c #c04700", -"aRF c #c09489", -"#Yt c #c0b0a3", -"#eV c #c0b8b6", -"aKE c #c0bbb7", -"aKF c #c0bdb8", -"#5K c #c0bfbb", -"aY6 c #c0bfbd", -"djp c #c0c0c0", -"#Vg c #c0c2aa", -"diS c #c0c2bf", -"dgW c #c0c2c1", -"cWx c #c15100", -"dhu c #c19b86", -"aE. c #c1a091", -"aIu c #c1a69d", -"aFJ c #c1ac91", -"#Yz c #c1ac9b", -"dAm c #c1aea8", -"aJN c #c1b198", -"a4i c #c1b5b9", -"a5n c #c1b6a4", -".7h c #c1b6b2", -"#.P c #c1b8b1", -".5m c #c1b8bd", -".4m c #c1baa8", -"#gq c #c1bbbb", -"aWv c #c1bcb8", -"dge c #c1c1c1", -"#ii c #c1c2ba", -"#if c #c1c2c6", -"dd# c #c1c3b6", -"dhG c #c1c3c0", -"dgi c #c1c3c2", -"a4T c #c1c7ad", -"#S. c #c1c9b1", -"agw c #c2a49c", -"#ZQ c #c2ab9b", -"aIS c #c2b0a6", -"abf c #c2b3a0", -"a3T c #c2b4b1", -".83 c #c2b6aa", -"a4f c #c2b7b1", -"#c2 c #c2b7bb", -"a47 c #c2b8af", -"aH9 c #c2b9b4", -"#Ks c #c2ba95", -"aWV c #c2bdb9", -"#jL c #c2bdc4", -".6# c #c2bebb", -"aSd c #c2bfb6", -"aUc c #c2c0b1", -"dil c #c2c2ba", -"dha c #c2c2c2", -"#qQ c #c2c3b5", -"ddc c #c2c3be", -"dhF c #c2c4c3", -"aSO c #c2cdc9", -"aGv c #c39f8f", -".WW c #c3a897", -"#VO c #c3b1ad", -"a5a c #c3b3a3", -"a33 c #c3b5b2", -"#.A c #c3b6ad", -"aPs c #c3beba", -"#k1 c #c3bec2", -".88 c #c3bfbe", -"#bU c #c3c0b7", -".7e c #c3c2c0", -"aOt c #c3c3c3", -"dsF c #c3c4c8", -"#qC c #c3c5c0", -"dix c #c3c5c2", -"dhD c #c3c5c4", -".9u c #c3c6bf", -"aBH c #c4967c", -"a4H c #c4a99e", -"#1# c #c4ad9f", -"#6T c #c4b4a5", -"a30 c #c4b7ae", -"dvG c #c4b9b3", -"aKk c #c4bbb6", -"#mo c #c4bbbc", -"a5# c #c4bca7", -"aNC c #c4bfbb", -"aKn c #c4c0bf", -"diy c #c4c3c1", -"#kC c #c4c4a2", -"##0 c #c4c4b8", -"deJ c #c4c4c4", -"aV8 c #c4c5bd", -"ddb c #c4c5bf", -"#gQ c #c4c5c7", -"dh7 c #c4c6c3", -"dgX c #c4c6c5", -"dAn c #c5b0ab", -"#5h c #c5b2a4", -"a48 c #c5b7ac", -"aOO c #c5b8b0", -".14 c #c5bba2", -"a2n c #c5c0ba", -"aZn c #c5c0bc", -"aSM c #c5c1be", -"a0n c #c5c2bd", -"deI c #c5c5c5", -"#PB c #c5c9b2", -"c2t c #c69d89", -".5X c #c6b299", -"a4v c #c6b2ab", -"aCJ c #c6baa0", -".5N c #c6bbb9", -"aW5 c #c6c1bb", -"dgE c #c6c5b3", -"dft c #c6c6c6", -"#nF c #c6c7b9", -"dhe c #c6c8c7", -"#2l c #c7aca1", -"#3O c #c7afa3", -".2i c #c7b29f", -".9h c #c7bcb8", -"#.3 c #c7beb9", -"aV3 c #c7c0b0", -"#5O c #c7c0b8", -"aY7 c #c7c2be", -"#k4 c #c7c4bd", -"#T3 c #c7c6c1", -"a#l c #c7c7bd", -"dgF c #c7c7bf", -"dgf c #c7c7c7", -"dda c #c7c9be", -"diQ c #c7c9c8", -"#Oe c #c7d9af", -"aWG c #c89d8a", -"aCj c #c8a89b", -".TU c #c8aa84", -"aEs c #c8ab8d", -".2t c #c8ae8b", -"a5l c #c8b2a4", -"aHW c #c8b7a7", -".UQ c #c8b9b2", -"a5r c #c8bcb0", -"#Sd c #c8c1b7", -"aLk c #c8c1b9", -"aZm c #c8c3bf", -"#8L c #c8c4bb", -"#5I c #c8c7c2", -"aXw c #c8c8c6", -"deu c #c8c8c8", -"aX1 c #c8c9b9", -"#qU c #c8c9c3", -"dpw c #c8c9c4", -"dtA c #c8c9cd", -"#fc c #c8cabf", -"#VH c #c8cac7", -"div c #c8cac9", -"#QU c #c8cdb7", -"aOo c #c99482", -"aDL c #c9a187", -"dd7 c #c9a27b", -"dhU c #c9aa96", -"aew c #c9ac9a", -"ag2 c #c9b6a5", -".4s c #c9b6af", -"#Ky c #c9b7a1", -".Xq c #c9b89e", -"aNx c #c9bcb4", -".Z. c #c9c2b0", -"a0s c #c9c4c0", -"aLS c #c9c4c1", -"#io c #c9c4ca", -"aL8 c #c9c5c2", -"a#r c #c9c6b5", -"det c #c9c9c9", -"#dx c #c9cac2", -"#e8 c #c9cbc6", -"dhE c #c9cbca", -"dc8 c #c9ccb7", -"a15 c #caa698", -".Vb c #caa88d", -"dAo c #cab5b0", -"dud c #cab8b4", -"aRq c #cabbb6", -"#a. c #cabdb5", -"#gW c #cabfb9", -"aRV c #cac1ba", -"aUt c #cac3bd", -"dp7 c #cac5bf", -"aMf c #cac6bb", -"#rp c #cac7c2", -"aK5 c #cac9c5", -"des c #cacaca", -"dc9 c #cacdba", -"dd. c #cacdbc", -"#43 c #cacdc6", -"a2K c #cbb5a0", -"#KM c #cbb8a9", -".5U c #cbbac2", -"#pA c #cbc2b1", -"aKs c #cbc4be", -"#jr c #cbc5c5", -"aQ9 c #cbc6c0", -"dh8 c #cbcac8", -"#jC c #cbcacf", -"aWY c #cbcbc9", -"der c #cbcbcb", -"aUz c #cbccce", -"dhw c #cbcdcc", -"aF5 c #ccb8a0", -"aF9 c #ccbaa4", -"dqH c #ccbeb3", -"dvH c #ccc1bb", -"aOW c #ccc2c0", -"a4x c #ccc3ba", -"aS8 c #ccc3bc", -"#rl c #ccc4b9", -"#bH c #ccc4c1", -"aMP c #ccc5bd", -".0M c #ccc8bf", -"aPP c #ccc8c7", -"aW3 c #ccc9c4", -"#fe c #cccacb", -"aWZ c #cccbc7", -"aWr c #cccbc9", -"dfo c #cccccc", -"aVE c #ccd0c1", -"#PG c #ccd7b9", -"adf c #cdbdad", -"#kB c #cdc093", -"a3R c #cdc1b5", -"aK9 c #cdc5c2", -".6a c #cdc6c0", -".9a c #cdc7bb", -"aK7 c #cdc9c6", -"#jN c #cdc9c8", -"aXz c #cdcac3", -"aUA c #cdccca", -"#6J c #cdcdc1", -"aNe c #cdcdcb", -"#eO c #cdcdcd", -".6. c #cdcec9", -"#qD c #cdcfca", -"dh5 c #cdcfce", -"doO c #cdd5ca", -"#Kd c #cdf1ab", -"aQH c #ce8775", -".Te c #ce9874", -"#hF c #ceb395", -"a4G c #ceb3a2", -".ST c #cebab1", -"a5q c #cebbb7", -"aNR c #cec1b0", -"aCK c #cec2a8", -"a#A c #cec3b1", -"aZ1 c #cec6c3", -"#hZ c #cec8c8", -"aIh c #cecac7", -"dp9 c #cecdcb", -"aWX c #cececc", -"aXv c #cecece", -"dqL c #cecfc9", -"aOn c #cf8c71", -"dp# c #cfa78e", -".Vn c #cfad7d", -".XH c #cfb79b", -"#KK c #cfbcae", -"#rw c #cfc1b8", -"ds7 c #cfc5bb", -".2q c #cfc6c7", -"#al c #cfc8c0", -"aLj c #cfc8c2", -"a0O c #cfcac4", -"agP c #cfcac6", -"#9M c #cfcdbe", -"#nC c #cfcebc", -"aXu c #cfcfcf", -"#J8 c #cfd097", -"#fd c #cfd0ca", -"#73 c #cfd1c6", -"ds# c #cfd3d2", -"aUL c #cfd4d8", -".To c #d0aa83", -".Xr c #d0ad85", -"aEr c #d0b290", -"aHS c #d0b5ac", -"a4I c #d0b9b1", -".Zd c #d0bca1", -"aKA c #d0bfb7", -"due c #d0c1bc", -"ds6 c #d0c4b8", -"aO9 c #d0c6bc", -"aPW c #d0c6bd", -"a2z c #d0c7c0", -"a.p c #d0c8bd", -"#jp c #d0caca", -".5s c #d0ccc0", -"acD c #d0ccc1", -"#.T c #d0cdbc", -"#qY c #d0cfcb", -"aUi c #d0cfcd", -"#l9 c #d0d0c4", -"dfn c #d0d0d0", -"dgG c #d0d1cc", -"drB c #d0d1d3", -"#Sp c #d0d2c5", -"diw c #d0d2d1", -"#fa c #d0d3c2", -"aZF c #d1c2af", -"aGY c #d1c2bd", -".4# c #d1c2c9", -"#pv c #d1c3b8", -"aNu c #d1c4bc", -"#nT c #d1c6c2", -"aKt c #d1c8c3", -"#VW c #d1c9be", -"aKr c #d1c9c6", -"#Xk c #d1cac4", -"aK8 c #d1ccc9", -".5g c #d1cec9", -"duJ c #d1d0d5", -"#Rl c #d1d1c7", -"dfl c #d1d1d1", -"#QY c #d1d2c0", -".57 c #d1d2ca", -"agO c #d1d2cd", -"dkP c #d1d9cc", -".Zq c #d2ab8a", -"#Up c #d2c2a9", -"aL4 c #d2c3bc", -"ds8 c #d2c5bf", -"##7 c #d2cbc5", -"aUa c #d2cecd", -"#5H c #d2cfca", -".87 c #d2d0d1", -"#o6 c #d2d1bd", -"aXH c #d2d1cf", -"#kI c #d2d2d0", -"dfm c #d2d2d2", -"diR c #d2d4d3", -"dsa c #d2d6d5", -"doM c #d3af97", -"acR c #d3bcaa", -"aPz c #d3c1b5", -"a4l c #d3c4bf", -"ds9 c #d3c4c1", -"#YO c #d3c8c2", -"dvI c #d3c8c4", -"#.i c #d3c9c0", -"#VL c #d3c9c8", -"drZ c #d3cbc0", -"#PM c #d3cda9", -"aKo c #d3cecb", -"#h4 c #d3cfd0", -"aXy c #d3d0cb", -"aUT c #d3d1c5", -"aWc c #d3d3c7", -"#qF c #d3d3d1", -"deq c #d3d3d3", -"aYD c #d3d4cc", -"aKe c #d3d4ce", -"din c #d3d4d8", -"dqN c #d3d5d0", -"dqO c #d3d5d2", -"dql c #d3d5d4", -"#6D c #d3d6cd", -"drA c #d3d7d8", -"dtz c #d3d7da", -"dsD c #d3d8db", -"dos c #d3ddd5", -"dlh c #d3ded0", -"aVs c #d4a48e", -"#K4 c #d4b7a7", -"#SW c #d4ba9f", -"#KW c #d4bba5", -".Vl c #d4c0a8", -"#KN c #d4c1b0", -".7B c #d4c6c6", -"aKw c #d4c7c1", -"aXg c #d4cabe", -"aQT c #d4cac1", -"af7 c #d4cec2", -"dr7 c #d4cfd3", -".9# c #d4d0c5", -"diL c #d4d3ce", -"djl c #d4d4cc", -"deg c #d4d4d2", -"#Vn c #d4d4d4", -"dqM c #d4d5d0", -"aYJ c #d4d6c9", -"dqk c #d4d6d5", -"drz c #d4d8d7", -"dsC c #d4dad8", -"aFm c #d5b2b0", -"aD6 c #d5b9ae", -".2H c #d5beb0", -"dAp c #d5c0bb", -"#dl c #d5cbc9", -"#U8 c #d5cbca", -"aKb c #d5cbd6", -"agg c #d5cdc0", -"agJ c #d5ceb4", -"aPl c #d5cec4", -"a1J c #d5cec8", -"dr8 c #d5ced5", -"dv9 c #d5d0d4", -"aTG c #d5d1c8", -"dr4 c #d5d2cb", -"aW2 c #d5d2cd", -"di7 c #d5d4cf", -"#c9 c #d5d5cb", -"aVK c #d5d5d3", -"deh c #d5d5d5", -"dgQ c #d5d5d7", -"#b0 c #d5d6c8", -"#l8 c #d5d6d0", -"def c #d5d6d1", -"duI c #d5d6db", -"dnI c #d5d7d6", -"dea c #d5d8c7", -"dpv c #d5d9cb", -"dsb c #d5d9d8", -"dty c #d5d9dc", -".58 c #d5dad4", -"#Kn c #d5dbb7", -"dpb c #d5dbcf", -"aSN c #d5dbd9", -"dim c #d5dedd", -"dqV c #d5dfde", -"aDf c #d6a6a2", -"aBy c #d6ab89", -"doq c #d6b39f", -".S1 c #d6bfa0", -"#KH c #d6c1ac", -"dt. c #d6c6c6", -"a#Q c #d6c7b2", -"#2y c #d6c9c1", -"dpu c #d6cbb7", -"#Sx c #d6cdc4", -"dvJ c #d6cdc8", -"aML c #d6cfc9", -".2z c #d6d0d0", -"djZ c #d6d1cb", -"aK6 c #d6d2cf", -"dr6 c #d6d2d3", -"agf c #d6d3ca", -"#5N c #d6d3cc", -"aR7 c #d6d4c7", -"#P7 c #d6d4d7", -"#5J c #d6d5d1", -"#mb c #d6d6ca", -"aUO c #d6d6cc", -"dfj c #d6d6d6", -"dhx c #d6d6d8", -"dee c #d6d7d1", -"#fb c #d6d8ca", -"dfa c #d6d8cb", -"dqP c #d6d8d7", -"a1B c #d6dacc", -"duH c #d6dadd", -"dqZ c #d6dbde", -"dqX c #d6dfde", -"af1 c #d6e3ae", -"aCC c #d7b7a0", -".4c c #d7be9f", -"a4s c #d7c1b3", -".YF c #d7c5b9", -"dxf c #d7cac1", -"aei c #d7cbbd", -"a#4 c #d7cdc1", -"aL# c #d7cec7", -"agb c #d7cfc4", -"#gu c #d7cfcd", -"aW9 c #d7d2ce", -"dtg c #d7d2cf", -"aTu c #d7d3c8", -"aLl c #d7d3ca", -".89 c #d7d4cf", -"aSv c #d7d5d6", -"aW0 c #d7d6d2", -"aQY c #d7d6d4", -"dhY c #d7d6db", -"#49 c #d7d7cd", -"#qG c #d7d7d5", -"dep c #d7d7d7", -"#Ku c #d7d8b9", -"#gP c #d7d8d0", -"deb c #d7d9cb", -"dc7 c #d7dac5", -"a0G c #d7dbcd", -"#is c #d7dbdc", -"dq0 c #d7dbde", -"dqY c #d7dddd", -"dqW c #d7e0df", -"#K. c #d7e2b7", -"aCv c #d8b186", -"a0d c #d8b29f", -".YZ c #d8c29b", -".WV c #d8c2b4", -"#TI c #d8c7ad", -"#32 c #d8cbc3", -"dxg c #d8ccc0", -"#Q4 c #d8cdaf", -"#XC c #d8cdb7", -"#TD c #d8cdc9", -"aO3 c #d8cdcb", -"aJh c #d8d0ce", -"dr9 c #d8d1d9", -".TL c #d8d29e", -"#Kw c #d8d2b8", -"#bO c #d8d4c9", -"aY1 c #d8d4d1", -"dr5 c #d8d4d3", -"#78 c #d8d6c9", -"#SJ c #d8d6ca", -"dp8 c #d8d7d5", -"dqR c #d8d7dd", -"den c #d8d8d8", -"dei c #d8d8da", -"#uv c #d8d9d3", -"dqm c #d8dad9", -"de. c #d8dbc8", -"dsE c #d8dcdf", -"dqU c #d8dde0", -"#Kk c #d8e1a8", -"dkQ c #d8e7e0", -".VB c #d9a375", -".Zc c #d9b88d", -"a4F c #d9bda7", -".2h c #d9c6b5", -"a.b c #d9c9b9", -"dxh c #d9cdc1", -"#U9 c #d9ceca", -"aPa c #d9cfc6", -"#Ue c #d9cfcd", -"dw. c #d9cfd0", -"dtf c #d9d1cf", -"#h0 c #d9d3d3", -"#VZ c #d9d4d0", -".7n c #d9d5d2", -"a2l c #d9d6d1", -"aNK c #d9d7cb", -"#PZ c #d9d7dc", -"aXx c #d9d8d4", -"dgL c #d9d9d7", -"deo c #d9d9d9", -"dq# c #d9d9db", -"#lf c #d9dacc", -"df9 c #d9dad5", -"aR0 c #d9dadc", -"dqQ c #d9dade", -"aZP c #d9dbce", -"dm5 c #d9ddde", -"dli c #d9ede4", -"#K1 c #dabfac", -".5a c #dac0af", -"a3J c #dac1a2", -"aI7 c #dac6bb", -"aCL c #dacbb4", -"aKQ c #dacbc6", -"aEm c #daccc9", -"#5v c #dacdc4", -"aKY c #dad0c6", -"aQh c #dad0c7", -"aRf c #dad1c8", -"#nY c #dad2c7", -"dte c #dad2d0", -"aSi c #dad3c9", -"#4g c #dad3cb", -"dyR c #dad5cf", -"aZY c #dad5d1", -"ds. c #dad5db", -"aKN c #dad7d0", -"#Q9 c #dad9d4", -"dse c #dad9de", -"#Ox c #dad9df", -"dr3 c #dadad0", -"dgM c #dadad8", -"dfk c #dadada", -"dqa c #dadadc", -"dh. c #dadbd6", -"dnm c #dadcdb", -"dlE c #daddd2", -"#Mn c #dadfa7", -".7N c #dae6dc", -"aCi c #dbc2bb", -"#KR c #dbc6b1", -"aEH c #dbc7c0", -"dt# c #dbcbcb", -"aLo c #dbcdc0", -".54 c #dbcdc2", -"#V4 c #dbd1b8", -"aNV c #dbd1c8", -"#pI c #dbd2c9", -".0k c #dbd2cb", -"aKu c #dbd2cd", -"#c5 c #dbd3d0", -"aRO c #dbd6d2", -"aJw c #dbd7ce", -"#c8 c #dbd8cf", -"dqS c #dbd8e1", -"dv8 c #dbd9de", -"#Kv c #dbdabe", -"aW1 c #dbdad6", -"#jO c #dbdad8", -"#dH c #dbdbd9", -"dfs c #dbdbdb", -"dgP c #dbdbdd", -"dgH c #dbdcd7", -"djn c #dbdddc", -"dlG c #dbdfde", -"dml c #dbdfe0", -"dlj c #dbe1df", -"#Km c #dbe2b9", -"dn3 c #dbe4df", -".Tw c #dca06a", -"#KL c #dcc9bb", -".U0 c #dccab4", -"aeP c #dccdb0", -"dxi c #dcd0c4", -"aKv c #dcd1cb", -"#ph c #dcd3cc", -".5l c #dcd3d6", -"aN3 c #dcd5cb", -"aEO c #dcd5cd", -"dnH c #dcd5cf", -"#.L c #dcd6ca", -"dth c #dcd6d6", -"aKq c #dcd7d3", -".5L c #dcd7d4", -"dn2 c #dcd8cd", -"#c7 c #dcd8cf", -"a0U c #dcd9d2", -"aa0 c #dcdace", -"dsm c #dcdadd", -"dv7 c #dcdbe1", -"#eJ c #dcdcd4", -"dg. c #dcdcda", -"aTb c #dcdcdc", -"#h5 c #dcdcde", -"dqT c #dcdce4", -"agN c #dcddd5", -"df7 c #dcddd7", -"dsk c #dcdddf", -"df# c #dcded0", -"dkR c #dce1dd", -"dvW c #dce2e0", -"dl2 c #dce5e2", -"aFB c #ddb7a2", -"aD9 c #ddbbaf", -"#K2 c #ddc0b0", -"dik c #ddc4b0", -"#KP c #ddc8b5", -"aH2 c #ddc9be", -"#re c #ddcebb", -"aMp c #ddd0c7", -"#Nl c #ddd1b9", -"aNt c #ddd2cc", -"dxj c #ddd3c7", -"aLi c #ddd6d0", -"#Xw c #ddd8d4", -"duk c #ddd8d5", -"dor c #ddd9cd", -"aQ8 c #ddd9d8", -"dl1 c #dddad3", -"#5M c #dddad5", -"dq6 c #dddae1", -"#SI c #dddbcf", -"dtl c #dddbdc", -"dsn c #dddbde", -"dej c #dddce1", -"#Rk c #ddddd3", -"dgN c #dddddb", -"#gl c #dddddd", -"dhB c #dddddf", -"dfc c #ddded6", -"dqb c #dddee0", -"dut c #dddfda", -"dl3 c #dddfde", -"dvY c #dde1e0", -"dsc c #dde1e2", -"dvX c #dde3e1", -"#Ka c #dde6c7", -".V# c #deac87", -"#KT c #dec8b1", -"dAq c #dec9c6", -"agI c #decfb0", -"#8x c #ded1c1", -"aCH c #ded3b7", -"##S c #ded3cf", -"dtd c #ded4d2", -".8J c #ded5c6", -"#2M c #ded5cc", -"aNp c #ded5d0", -"aa6 c #ded7c7", -"aKp c #ded9d5", -"aY3 c #ded9d6", -"#jM c #ded9dd", -"aNZ c #dedad7", -"duo c #dedad9", -"#e3 c #dedbd2", -"a0l c #dedbd6", -"dq5 c #dedbe2", -"a#E c #dedcd0", -"dtk c #dedcdd", -"aIL c #dedce1", -".8U c #dedde2", -"dgK c #dededc", -"dfp c #dedede", -"dek c #dedee0", -"df2 c #dedfd1", -"dq1 c #dedfe3", -"dv6 c #dedfe4", -"dqc c #dee0df", -"a2Z c #dee2d1", -"dv1 c #dee2e1", -"dtx c #dee2e3", -".2B c #dee5de", -"#J9 c #dee6b3", -"dlF c #deeae6", -"a06 c #dfa58f", -"dn1 c #dfbca9", -"aDQ c #dfc19f", -"aFj c #dfc2c7", -"#KS c #dfcab5", -"#KJ c #dfccbd", -"dta c #dfcfd0", -"duf c #dfd1ce", -"aKx c #dfd2ca", -"aNH c #dfd4ce", -"a2u c #dfd6d1", -"#kU c #dfd9cd", -"dti c #dfd9d9", -"#MO c #dfd9db", -"duh c #dfdad6", -"dul c #dfdad7", -"dup c #dfdbda", -"aYW c #dfdcd5", -"dq7 c #dfdce3", -"#l1 c #dfdeb0", -"de9 c #dfdeca", -"dqK c #dfded9", -"#5L c #dfdeda", -"dq4 c #dfdee4", -"dgI c #dfdfdd", -"dfg c #dfdfdf", -"dit c #dfdfe1", -"#nG c #dfe0d2", -"#qT c #dfe0d8", -"dfd c #dfe0da", -"aZJ c #dfe0db", -"dqe c #dfe0e2", -"dq2 c #dfe0e4", -"dko c #dfe1dc", -"dxu c #dfe1de", -"dqd c #dfe1e0", -"duA c #dfe3e2", -"dvU c #dfe4dd", -"dry c #dfe4e0", -".VA c #e0b799", -"aJq c #e0bf9c", -"#Kz c #e0c5b2", -".Zp c #e0c6ad", -"#KO c #e0cbba", -"#Xt c #e0cdc7", -"abu c #e0d1ba", -"#q9 c #e0d4c6", -"dug c #e0d5d1", -"aLb c #e0d6cc", -".55 c #e0d7c8", -"aLa c #e0d7ce", -"dmk c #e0d9d3", -"aec c #e0dace", -"aNY c #e0dcd9", -".7r c #e0ddd8", -"aQ4 c #e0ded2", -"dqn c #e0dedf", -"dq8 c #e0dee3", -"dgJ c #e0e0de", -"aVa c #e0e0e0", -"dfh c #e0e0e2", -"dj0 c #e0e1dc", -"dq9 c #e0e1e3", -"duu c #e0e2dd", -"dtu c #e0e2df", -".7P c #e0e3dc", -"#Kb c #e0e4cb", -"#TM c #e0e5ce", -"dvV c #e0e5df", -"dvZ c #e0e6e4", -"dnl c #e1b9ad", -".Xf c #e1c391", -"#K0 c #e1c8b2", -"aRG c #e1cac4", -"#KU c #e1cbb4", -"agu c #e1cdcc", -".84 c #e1d3c8", -"#Kx c #e1d7be", -".85 c #e1d7ce", -"dtc c #e1d7d5", -"aKL c #e1d8d3", -"dy6 c #e1d8d9", -"dyT c #e1d9d6", -"#rm c #e1dad2", -"#ra c #e1dad4", -"dui c #e1dcd8", -"dum c #e1dcd9", -"#hN c #e1dce0", -"aKG c #e1ddda", -"drp c #e1dddc", -"#sC c #e1decb", -"agc c #e1ded7", -"dsf c #e1dfe4", -"duq c #e1e0de", -"dfi c #e1e0e5", -"dq3 c #e1e0e6", -"dem c #e1e1e1", -"del c #e1e1e3", -"df3 c #e1e2da", -"dr. c #e1e2e4", -"af4 c #e1e3ce", -"dux c #e1e3de", -"dtq c #e1e3e2", -"#qw c #e1e4d1", -"dvT c #e1e4dd", -"dv2 c #e1e5e4", -"aBG c #e2bda2", -".Yu c #e2c7bc", -"agv c #e2c9c5", -"#KX c #e2ccb5", -"aXV c #e2ccb7", -"#KQ c #e2cdba", -"#YW c #e2cec5", -".SU c #e2d0c4", -"#0# c #e2d0c6", -"aO5 c #e2d2c3", -"abI c #e2d5c5", -"aMs c #e2d5cd", -"#r. c #e2d8cc", -"aEP c #e2d9d2", -"#ad c #e2dcd0", -"aNl c #e2ddda", -"#jv c #e2ded3", -"dsw c #e2dedd", -"dtj c #e2dedf", -"#Kt c #e2dfbe", -"dsl c #e2e0e3", -"#fg c #e2e1dd", -"dur c #e2e1df", -"dh1 c #e2e1e6", -"dso c #e2e1e7", -"djJ c #e2e2e0", -"dgb c #e2e2e2", -"dhA c #e2e2e4", -"#8k c #e2e3db", -"df6 c #e2e3dd", -"dkp c #e2e3de", -"di9 c #e2e3e5", -"ded c #e2e4d9", -"duv c #e2e4df", -"dxt c #e2e4e1", -"djE c #e2e4e3", -"af5 c #e2e6d5", -"duB c #e2e6e5", -"djm c #e2e6e7", -"dkn c #e2e7e3", -"#Kc c #e2f1ca", -"dmG c #e3bbaf", -".XI c #e3bf9b", -"a5k c #e3c9bc", -"#KZ c #e3cab4", -"#KV c #e3cdb6", -"aFW c #e3cec9", -"#1r c #e3d0c9", -"#M9 c #e3d1d1", -"dtb c #e3d8d6", -"#OJ c #e3d9e1", -"dun c #e3dedb", -"dr1 c #e3dfd4", -"dsx c #e3dfde", -"dr2 c #e3e0d7", -"dsg c #e3e0e7", -"dst c #e3e1e2", -"#P8 c #e3e1e4", -"dxD c #e3e1e6", -"drq c #e3e2e0", -"dh2 c #e3e2e7", -"dio c #e3e2e8", -"dvP c #e3e3db", -"djI c #e3e3e1", -"dfq c #e3e3e3", -"dh4 c #e3e3e5", -"dj1 c #e3e4de", -"dsd c #e3e4e6", -"diN c #e3e4e8", -"#YC c #e3e5d8", -"#90 c #e3e5da", -"duw c #e3e5e0", -"duy c #e3e5e2", -"dtt c #e3e5e4", -"dvS c #e3e6df", -"duz c #e3e7e6", -"dv0 c #e3e9e7", -"aBO c #e4b08b", -"#KC c #e4b2a7", -"dmj c #e4bfaf", -".VT c #e4c199", -"agX c #e4c7b7", -"#KY c #e4cbb5", -"aG. c #e4cdae", -".VG c #e4d1a6", -"#2H c #e4d3cc", -"#Sj c #e4d4ba", -"aH0 c #e4d5ce", -"aNq c #e4d9d5", -"aK0 c #e4dad1", -"doN c #e4dece", -"dtB c #e4dee0", -"#gd c #e4dee2", -".9. c #e4dfd9", -"duj c #e4dfdb", -"#ro c #e4dfdc", -"aPQ c #e4e0dd", -"aT9 c #e4e0e1", -"#7a c #e4e1da", -"dsh c #e4e1e8", -"dsp c #e4e1ea", -"dr# c #e4e2e5", -"#Ok c #e4e3b7", -"aK4 c #e4e3df", -"dus c #e4e3e1", -"dir c #e4e3e8", -"dsq c #e4e3e9", -"agM c #e4e4da", -"#W9 c #e4e4dc", -"dff c #e4e4e2", -"dgc c #e4e4e4", -"dj# c #e4e4e6", -"#sy c #e4e5e0", -"df. c #e4e6d8", -"dec c #e4e6d9", -"dfb c #e4e6db", -"age c #e4e6e1", -"dts c #e4e6e5", -"duE c #e4e8e7", -"di8 c #e4e9ec", -"diM c #e4ecee", -"dm3 c #e5bbaf", -"#V# c #e5d1b8", -"a0z c #e5d3c5", -"#KI c #e5d4c0", -"#4# c #e5d4cd", -"#La c #e5d6b9", -"djY c #e5d6bf", -"#fp c #e5d6cf", -"ac5 c #e5d7bc", -"dmH c #e5dad8", -"de8 c #e5dcbf", -"acH c #e5dccd", -"dxk c #e5ddd2", -"aN4 c #e5ded4", -"aUH c #e5dfd1", -"dxm c #e5dfd3", -"aI. c #e5dfdf", -"a0i c #e5e0dc", -"#Kq c #e5e1bc", -"#i# c #e5e1d6", -"aIi c #e5e1de", -"drm c #e5e1e0", -"dxo c #e5e2d9", -"dvO c #e5e2db", -"#oT c #e5e3bc", -"dqf c #e5e3e4", -"#Y0 c #e5e3e6", -"dq. c #e5e4e2", -"dh3 c #e5e4e9", -"drd c #e5e4ea", -"#Kp c #e5e5c3", -"#fi c #e5e5d9", -"dxp c #e5e5db", -"aOu c #e5e5e3", -"dfr c #e5e5e5", -"dj. c #e5e5e7", -"drc c #e5e6ea", -"drv c #e5e7dc", -"duF c #e5e7e4", -"duC c #e5e9e8", -"dnG c #e6c1b1", -"ae2 c #e6c7b5", -".Xv c #e6caa5", -".UP c #e6cfc1", -"aeE c #e6d0c5", -"agr c #e6d1ce", -"#5D c #e6d4d0", -"agt c #e6d4d4", -"#7. c #e6d5ce", -"dkO c #e6d8be", -"#Lh c #e6d9b6", -"aP3 c #e6dcda", -"#bq c #e6dcdb", -"duL c #e6dde0", -"#q1 c #e6dfd9", -"#gc c #e6dfe6", -"aPt c #e6e1db", -"aOS c #e6e1dd", -".86 c #e6e1de", -"#hO c #e6e1e5", -"a3j c #e6e2d7", -"aVV c #e6e2df", -"drj c #e6e2e1", -"#6V c #e6e3dc", -"dre c #e6e3ec", -"#ZT c #e6e4d8", -"dqg c #e6e4e5", -"#gL c #e6e4e7", -"duG c #e6e5e1", -"drs c #e6e5e3", -"diO c #e6e5ea", -"drf c #e6e5eb", -"af3 c #e6e6cc", -"dvQ c #e6e6de", -"djH c #e6e6e4", -"dgg c #e6e6e6", -"dhz c #e6e6e8", -"dru c #e6e7df", -"dvR c #e6e7e1", -"df8 c #e6e7e2", -"dxs c #e6e8e5", -"dtr c #e6e8e7", -"af2 c #e6eac5", -"#KD c #e7b7ab", -"#KE c #e7bbae", -".Vm c #e7cdaa", -".3u c #e7cfc5", -"aCh c #e7d2cd", -".61 c #e7d7c0", -"djD c #e7d8c1", -"#Lb c #e7d9bc", -"dm4 c #e7dcda", -"aCI c #e7dec1", -"#rb c #e7dfdc", -"dxn c #e7e0d6", -"#5k c #e7e2dc", -"a1l c #e7e2de", -"dvL c #e7e2df", -"dsi c #e7e2e9", -"#dr c #e7e3d8", -"#1b c #e7e3da", -"#jq c #e7e3e2", -"agK c #e7e4d3", -"dqh c #e7e5e6", -"dv5 c #e7e5e8", -"dsj c #e7e5ea", -"drt c #e7e6e2", -"dro c #e7e6e4", -"dis c #e7e6eb", -"dsr c #e7e6ec", -"djo c #e7e7e5", -"dgO c #e7e7e7", -"agL c #e7e8da", -"dtv c #e7e8e0", -"agd c #e7e8e2", -"dfe c #e7e8e3", -"dsz c #e7e9dc", -"dsy c #e7e9de", -"dtw c #e7e9e6", -"dtn c #e7e9e8", -"drw c #e7eae1", -"duD c #e7ebea", -".YL c #e8cfa7", -"#Va c #e8d4bc", -"#M8 c #e8d6d6", -"di6 c #e8d7c3", -"#V. c #e8d8cb", -".8C c #e8dac0", -"dy8 c #e8dad7", -".6b c #e8dbd5", -"dyY c #e8dcde", -"aNs c #e8ddd7", -"aNo c #e8dedc", -"dxl c #e8e0d5", -"aNm c #e8e0dd", -"aL. c #e8e1db", -"a1T c #e8e3dd", -"dyS c #e8e3df", -"aLD c #e8e3e0", -"a1p c #e8e4d8", -"#ux c #e8e4db", -"drk c #e8e4e3", -"dri c #e8e6e7", -"drb c #e8e6e9", -"a1e c #e8e7e2", -"a2R c #e8e7e3", -"drr c #e8e7e5", -"diq c #e8e7ec", -"dss c #e8e7ed", -"#mD c #e8e8de", -"dqj c #e8e8e6", -"dgd c #e8e8e8", -"#qS c #e8eadf", -"drx c #e8eae5", -"dto c #e8eae7", -"dn4 c #e8eae9", -"#K# c #e8f2cf", -"aBS c #e9c5b9", -"#KG c #e9ccba", -"#f9 c #e9cfb6", -".WJ c #e9cfc2", -"#K7 c #e9d0ba", -"diK c #e9d4c1", -"dAr c #e9d5d4", -"dlg c #e9d7bf", -"djk c #e9d8c4", -"#Lg c #e9dbb8", -"aG9 c #e9ddd1", -"aMd c #e9ded8", -"aNr c #e9deda", -"dyV c #e9dfdd", -"aQd c #e9e1d6", -"dvK c #e9e1de", -".3C c #e9e1ec", -"#2o c #e9e2da", -"#3Q c #e9e2dc", -"aZx c #e9e4e0", -"dvM c #e9e4e1", -"aHp c #e9e4ea", -"aNA c #e9e5e2", -"drn c #e9e5e4", -"dtm c #e9e7e8", -"dra c #e9e7ea", -"dxC c #e9e7ec", -"dxw c #e9e8e6", -"dh0 c #e9e8ed", -"dqi c #e9e9e7", -"aUW c #e9e9e9", -"drg c #e9e9eb", -"dsA c #e9eae2", -"dj2 c #e9eae5", -"dtp c #e9ebe8", -"dsB c #e9ece5", -"aDe c #eabdb7", -"#KA c #eac5b5", -"dlD c #ead1bb", -".Xe c #ead2ac", -"#ey c #ead4bd", -"ags c #ead8d6", -"#VS c #eadcdb", -"#Li c #eaddba", -"#Uj c #eae1d8", -"#Op c #eae1da", -"dxx c #eae1e4", -"#Mv c #eae2cd", -"dpa c #eae3d1", -"dy5 c #eae4e6", -"aN8 c #eae5df", -"dxB c #eae5eb", -"aN0 c #eae6e3", -"drl c #eae6e5", -"aYj c #eae7e2", -"drh c #eae8e9", -"aQ7 c #eae8eb", -"dhZ c #eae9ef", -"#qE c #eaeae8", -"dgS c #eaeaea", -"diP c #eaeaec", -"dkq c #eaebe6", -"#qR c #eaecdf", -"dxq c #eaece9", -".TA c #ebcec0", -"a.m c #ebd7ce", -"#rd c #ebddd0", -"a3S c #ebded6", -".5A c #ebdee5", -"dyW c #ebe1df", -"aMU c #ebe2d3", -"aLC c #ebe2e5", -"#OK c #ebe4eb", -"dv3 c #ebe5e5", -"df1 c #ebe6d0", -"dvN c #ebe6e0", -"aXa c #ebe6e2", -"dxA c #ebe6ea", -"dsu c #ebe7e6", -"dv4 c #ebe7e8", -"aO0 c #ebe9dd", -"aU# c #ebe9ea", -"#gn c #ebeae8", -"dhy c #ebeaef", -"djF c #ebebe9", -"dhb c #ebebeb", -"#kJ c #ebece7", -"dxr c #ebedea", -"#Kl c #ebf3c2", -"aM5 c #ecbaa1", -"aQI c #ecbaaf", -"aIG c #ecc2a9", -"aCY c #eccbac", -"#K3 c #eccfbf", -"aKU c #ecd4bc", -"aGe c #ecd7c6", -"a1t c #ecd9c8", -"aE8 c #ecdcbb", -"#.c c #ecddc6", -"aOc c #ecded1", -"#rt c #ece2d6", -"aNn c #ece2e0", -"dyU c #ece4e1", -"dr0 c #ece5db", -"aQN c #ece7e3", -"aZ5 c #ece7e4", -"aHo c #ece7ed", -"#R. c #ece8dd", -"a1b c #ece8e5", -"aOv c #ece8e7", -".7c c #eceaeb", -".2A c #ecebe6", -"dip c #ecebf1", -"#kN c #ecece2", -"#b1 c #ecece4", -"dxv c #ececea", -"dhd c #ececec", -"df4 c #ecede5", -"dj3 c #ecede7", -"af6 c #eceee0", -".Tn c #edceaf", -".U1 c #edd3bc", -"#cX c #edd8c3", -"ag1 c #eddac9", -"ag0 c #eddacb", -"aCg c #eddad4", -"aQt c #edded7", -"#rv c #eddfd6", -"aJm c #ede0da", -"aH# c #ede3da", -"dAy c #ede3e1", -"dy7 c #ede3e2", -"dy1 c #ede4e7", -"#Ul c #ede5e2", -"aN1 c #ede8e4", -".5u c #ede9de", -"dgV c #ededed", -"djG c #edeee9", -"de# c #edf0dd", -"#qy c #edf0e7", -"aDb c #eec8bb", -"aCP c #eed2c4", -"dAs c #eedcdc", -"#L# c #eeddc1", -"aMm c #eeddcb", -"dAu c #eee0df", -"dyZ c #eee2e4", -"#Re c #eee3df", -"aGW c #eee3e1", -"aQa c #eee4da", -"dxy c #eee5e8", -"#rn c #eee9e5", -"dy4 c #eee9ed", -"dsv c #eeeae9", -"#Xz c #eeeced", -".3K c #eeeee2", -"dhc c #eeeeee", -"aBP c #efc1a0", -"#KF c #efcaba", -"aD7 c #efd1c6", -"a#Y c #efd9cc", -"aC6 c #efdbba", -"aCF c #efdbc0", -"#bk c #efddc9", -"##N c #efdeca", -"aT8 c #efded7", -"dAt c #efdfdf", -"dAv c #efe3e3", -"dyX c #efe5e4", -"dy2 c #efe6e9", -"aIf c #efe9d3", -".9l c #efe9db", -"aeV c #efeae4", -"aLM c #efeae6", -"#qZ c #efeae7", -"#oU c #efeed2", -"aVb c #efeeec", -"dgU c #efefef", -"df5 c #eff0ea", -"#Ko c #eff3d2", -"agp c #f0cec2", -"dy0 c #f0e4e6", -".VH c #f0e7c6", -"#r# c #f0e7de", -"#rc c #f0e7e0", -"dxz c #f0e7ea", -".64 c #f0e8dd", -"dqJ c #f0ede6", -"dh# c #f0f0f0", -"#eN c #f0f0f2", -"#KB c #f1c3b6", -"aIv c #f1ccc3", -"aC3 c #f1cf9f", -"aHT c #f1d5c9", -"aCe c #f1d9cd", -"aC7 c #f1dabb", -"#Vb c #f1e0ce", -"#dR c #f1e0d9", -"acT c #f1e3d8", -"dy3 c #f1ebef", -"aYq c #f1edea", -"dgT c #f1f1f1", -".7o c #f1f3f0", -"a3I c #f2cbae", -"aBT c #f2cec2", -"aC4 c #f2d3a5", -"aEz c #f2d8b7", -"aCS c #f2dbbb", -"#Rt c #f2dbc9", -"aGu c #f2dedf", -"aCf c #f2dfd8", -".0p c #f2e0bc", -"#L. c #f2e1c5", -"aOL c #f2e5dd", -"#Vu c #f2e8f0", -"#Oq c #f2e9e0", -".10 c #f2ecde", -"dxE c #f2edf1", -"#n5 c #f2eee5", -"duK c #f2f0f3", -"doQ c #f2f2f2", -"#dF c #f2f3ee", -"aCo c #f3cca3", -"aZd c #f3cdb6", -"aC# c #f3ceb1", -"aC0 c #f3d1ab", -"aBU c #f3d2c3", -"aCX c #f3d4b8", -"aCR c #f3d9be", -"aCT c #f3dabc", -"agY c #f3dccc", -"aI5 c #f3e2da", -".7g c #f3e9e7", -"dAx c #f3e9e8", -"#.x c #f3eae3", -".3N c #f3ebd8", -"#nL c #f3ebe0", -"#di c #f3ebe9", -"aN2 c #f3ece4", -"#PS c #f3ece6", -"aRb c #f3ede1", -".3A c #f3f1f6", -"#gw c #f3f2f7", -"#jU c #f3f3e7", -"aVh c #f3f3f5", -".Tf c #f4c3a2", -"aC. c #f4cfb2", -".Y0 c #f4d8a8", -"aJ8 c #f4d8c0", -"#K9 c #f4e0c7", -".S0 c #f4e3c7", -"#aA c #f4e5e2", -"#Ld c #f4e7c7", -"dxG c #f4e8e8", -"#Lc c #f4e9cb", -"dAw c #f4eae9", -"aH8 c #f4ebe4", -"aKc c #f4ebf0", -"#mi c #f4eee0", -"aGj c #f4eef2", -"a#S c #f4efe9", -"aND c #f4efeb", -"aU. c #f4f2f5", -"#qJ c #f4f3e1", -"dn5 c #f4f4f4", -"aTc c #f4f5f7", -"#qx c #f4faee", -"aCa c #f5d0b5", -"aCZ c #f5d2b2", -"aCV c #f5d9c1", -"aCU c #f5dabf", -"aC5 c #f5ddb7", -"#K8 c #f5dfc8", -"agZ c #f5dfd1", -"#8J c #f5e2db", -"aXZ c #f5eae8", -"#Ug c #f5edea", -"#VK c #f5efef", -"aVG c #f5f0ec", -"aLE c #f5f5ed", -"aBV c #f6d2c2", -"aFl c #f6d7df", -"aCd c #f6dbca", -"aCO c #f6dccd", -"aCE c #f6dec4", -"aC8 c #f6dfc0", -"aCM c #f6e4d0", -"#Le c #f6e7c6", -".3W c #f6e7ec", -"#Lf c #f6e8c5", -".TM c #f6ecb7", -"aX0 c #f6efe7", -"aJu c #f6f2e9", -"#Z5 c #f6f3ee", -"#YP c #f6f5f1", -"aVY c #f6f6f6", -"a14 c #f7bfb0", -"aB7 c #f7c1a7", -"aBW c #f7d4c1", -"aD# c #f7d8c3", -"aCW c #f7d9c1", -"aCQ c #f7dcc9", -".0a c #f7dcd3", -".YE c #f7e6dc", -"aF3 c #f7e7da", -"#pB c #f7efe2", -"aX6 c #f7f2ee", -"aXt c #f7f7f9", -"aXm c #f7f8f0", -".7O c #f7fef6", -"aB2 c #f8c8b1", -"aCu c #f8d2ab", -"aBR c #f8d5c2", -"aBz c #f8dfc1", -".0Q c #f8e0bc", -".0E c #f8e1c1", -"#c# c #f8e5de", -"aFU c #f8e6e2", -"aI# c #f8e8db", -"a3n c #f8ebe3", -"#eD c #f8eff4", -"a.e c #f8f1e9", -"abk c #f8f2e6", -"aWT c #f8f3ef", -".TR c #f8f6e1", -"#dG c #f8f8f6", -"#p# c #f8f9eb", -"aNc c #f8f9fb", -"aBE c #f8fbde", -"aX2 c #f8fcee", -".TC c #f9c7b0", -"aT6 c #f9cebd", -"aB9 c #f9d0b4", -"aBX c #f9d4c2", -"aCb c #f9d5bb", -".Tz c #f9d5bf", -"aDa c #f9d6c3", -"ada c #f9dccc", -"aD. c #f9ddc5", -"abD c #f9dfd2", -".35 c #f9eae5", -"#q0 c #f9f1ee", -"#2A c #f9f4ee", -"aSU c #f9f4f0", -"aUb c #f9f7eb", -"#ff c #f9f7f8", -".7p c #f9f9f7", -"aTn c #f9fdff", -"aBD c #f9ffe8", -".Tx c #fac79a", -"aHK c #fad6be", -"aCc c #fadac5", -"aLy c #fadcc4", -"aC9 c #fae0c5", -"aCG c #faebce", -".5F c #faebe4", -"aMi c #faeeee", -"aNN c #faf0f1", -"#pJ c #faf1e8", -"a2E c #faf4e8", -"#33 c #faf5ef", -"aKD c #faf5f1", -"#Xl c #faf6f3", -"#Sq c #faf9e7", -"#TN c #fafae2", -"#ic c #fafaf2", -"#dc c #fafafc", -"aLF c #fafbf5", -"aTR c #faffff", -"aDz c #fbc0a0", -"aBY c #fbd5c0", -"aJZ c #fbded6", -".VS c #fbe2c3", -"#8B c #fbf4ec", -"aZA c #fbf6f0", -"#kX c #fbf7ee", -"aUw c #fbf7f4", -"#bD c #fbfaff", -"a0B c #fbfcf7", -"aCr c #fcd8b6", -"agq c #fce1d8", -"aKh c #fcf1ed", -"#5w c #fcf5ef", -"aMa c #fcf7f3", -"#uw c #fcf8f7", -".8T c #fcfbff", -"#db c #fcfcfe", -"#T2 c #fcfdf7", -"aBC c #fcffe8", -"aBZ c #fdd4c0", -"aCp c #fdd5b1", -"aCq c #fdd7b3", -"aCt c #fdd9b5", -"aCs c #fdd9b7", -"aHA c #fddfd4", -"aYw c #fdf1e1", -"aQ. c #fdf7f7", -"#jF c #fdfcf7", -"#hW c #fdfcf8", -"#bE c #fdfdff", -".Va c #fed5b5", -"aBQ c #fed5b9", -"aDc c #fed6cc", -"aDK c #fee0c8", -"#Nm c #feedd1", -"#po c #fef4e8", -"#nM c #fef6e9", -".56 c #fef8ea", -".5h c #fef9f6", -"aXK c #fefaf7", -"##4 c #fefdff", -"#jh c #fefefc", -"aNb c #fefefe", -"aPK c #ffbdaa", -".TD c #ffc5a1", -"aGE c #ffd0b2", -"aFA c #ffd0b3", -"aB0 c #ffd4bf", -"aDd c #ffd4cb", -"aB8 c #ffd5ba", -"aB3 c #ffd7c0", -"aB1 c #ffd8c1", -".Ty c #ffdbbb", -".W3 c #ffddb7", -".TB c #ffe2d3", -"aEo c #ffe3d7", -".1M c #ffe3d8", -".Tg c #ffe4c7", -".Tm c #ffe4cb", -"aCD c #ffe4cc", -"aFk c #ffe4ec", -"#OP c #ffe8d0", -"aCN c #ffead7", -"#Qe c #ffebd2", -".TT c #ffeccd", -"aDA c #ffecd5", -".03 c #ffecd7", -".Tk c #ffedd9", -"aT7 c #fff0e4", -".Vt c #fff1bd", -"aDJ c #fff1da", -".4k c #fff1ec", -".Th c #fff2d9", -"aJK c #fff3e6", -"aIm c #fff3e8", -"aEn c #fff3ec", -".TS c #fff4da", -".Tj c #fff4de", -"aNS c #fff4eb", -".3X c #fff4f5", -".Ti c #fff5dd", -".3Y c #fff5f3", -".TN c #fff6c4", -".Tl c #fff6e0", -"aHe c #fff6e2", -".SV c #fff6e7", -".Y4 c #fff7d5", -"aRS c #fff7f0", -"aE5 c #fff8e1", -"#Mw c #fff8e3", -"dxF c #fff8fb", -".SX c #fff9e5", -".SZ c #fffadf", -"#0f c #fffaea", -"#pi c #fffaef", -".38 c #fffaf5", -"aVA c #fffafc", -"aWM c #fffafd", -".3V c #fffaff", -".Xk c #fffbcf", -".0I c #fffbe6", -"#ms c #fffbf0", -"#ag c #fffbf5", -"aBF c #fffce1", -"aFI c #fffce6", -"aGN c #fffce8", -".2l c #fffcef", -"aPT c #fffcf6", -"#eS c #fffcf9", -".5M c #fffcfa", -"aBA c #fffde3", -".SY c #fffde5", -".SW c #fffdec", -"#aq c #fffdee", -"#ru c #fffdf1", -".8Z c #fffdf6", -"aS5 c #fffdf8", -".5Q c #fffdfa", -".3B c #fffdff", -"#nQ c #fffef3", -"#ml c #fffef4", -".7x c #fffef6", -"#bR c #fffef7", -"abv c #fffef8", -"#YZ c #fffefd", -"#.t c #fffeff", -".TO c #ffffd3", -"#nv c #ffffd5", -".TP c #ffffdd", -"aBB c #ffffe6", -".TQ c #ffffea", -".4n c #fffff1", -".9e c #fffff6", -"#du c #fffff8", -"#fh c #fffffa", -".7q c #fffffb", -"aNd c #ffffff", -"Qt.Qt#QtaQtbQtcQtdQteQtfQtgQthQtiQtjQtkQtlQtmQtnQtoQtpQtqQtrQtsQttQtuQtvQtwQtxQtyQtzQtAQtBQtCQtDQtEQtFQtGQtHQtIQtJQtKQtLQtMQtNQtOQtPQtQQtRQtSQtTQtUQtVQtWQtXQtYQtZQt0Qt1Qt2Qt3Qt4Qt5Qt6Qt7Qt8Qt9.#..##.#a.#b.#c.#d.#e.#f.#g.#h.#i.#j.#k.#l.#m.#n.#o.#p.#q.#r.#s.#t.#u.#v.#w.#x.#y.#z.#A.#B.#C.#D.#E.#F.#G.#H.#I.#J.#K.#L.#M.#N.#O.#P.#Q.#R.#S.#T.#U.#V.#W.#X.#Y.#Z.#0.#1.#2.#3.#4.#5.#6.#7.#8.#9.a..a#.aa.ab.ac.ad.ae.af.ag", -".ah.ai.aj.akQtc.al.am.an.ao.ap.aq.ar.as.at.au.av.aw.ax.ay.az.aA.aB.aC.aD.aE.aF.aG.aH.aI.aJ.aK.aL.aM.aN.aO.aP.aQQtHQtKQtL.aR.aS.aT.aU.aV.aWQtS.aX.aY.aZ.a0.a1.a2.af.a3.a4.a5.a6.a7.a8.a9.b..b#.ba.bb.bc.bd.be.bf.bg.bh.#f.bi.bj.bk.bl.bm.bn.bo.bp.bq.br.bs.bt.bu.bv.bw.bx.by.bz.bA.bB.bC.bD.bE.bF.bG.bH.bI.bJ.bK.bL.bM.bN.bO.bP.bQ.bR.bS.bT.bU.bV.bW.bX.bY.bZ.b0.b1.b2.b3.b4QtqQtr.b5.b6.b7.b8.b9.c..c#.ca.cb.ab.cc.cd.cd.ce", -".cf.cg.ch.ci.cj.ck.cl.cm.cn.co.cp.cq.cr.cs.ct.cu.cv.cw.cx.cy.cz.cA.cB.cC.cD.cE.cF.cG.cH.aL.cI.cJ.cK.cL.cM.cN.cO.aP.cP.cQ.cR.cS.cT.cU.cV.cW.cX.cY.cZ.c0.c1.c2.c3.c4.c5.c6.c7.c8.c9.d..d#.da.db.dc.dd.de.df.dg.dh.di.dj.dk.dl.dm.dn.do.dp.dq.dr.ds.dt.du.dv.dw.dx.dy.dz.dA.dB.dC.dD.dE.dF.dG.dH.dI.dJ.dK.dL.dM.dN.dO.dP.dQ.dR.dS.dT.dU.dV.dW.dX.dY.dZ.d0.d1.d2.d3.d4.d5.d6.d7.d8.d9.e..e#.ea.eb.ec.ed.ee.ef.eg.eg.cn.eh.ei.ej", -".ek.el.em.en.eo.ep.eq.er.es.et.eu.ev.ew.ex.ey.ez.eA.eB.eC.eD.eE.eF.eG.eH.eI.eJ.eK.eL.eM.eN.eO.cJ.eP.eQ.eR.eS.cN.eT.eU.eV.eW.eX.eY.eZ.e0.e1.e2.e3.cq.e4.e5.e6.e7.e8.e9.f..f#.fa.fb.fc.fd.fe.ff.fg.fh.fi.fj.fk.fl.fm.fn.fo.fp.fq.fr.fs.ft.fu.fv.fw.fx.fy.fz.fA.fB.fC.fD.fE.fF.fG.fH.fI.fJ.fK.fL.fM.fN.fO.fP.fQ.fR.fS.fT.fU.fV.fW.fX.fY.fZ.f0.f1.f2.f3.f4.f5.f6.f7.f8.f9.g..g#.ga.gb.gc.gd.ge.gf.gg.gh.gi.gj.gk.gk.gl.e6.gm.gn", -".go.gp.gqQtE.gr.gs.gt.gu.gv.gw.gx.gy.gz.gA.gB.gC.gD.gE.gF.gG.gH.gI.gJ.gK.gL.gM.gN.gO.gP.gQ.gR.gS.gT.aU.gU.gV.gW.gX.gY.gZ.eW.g0.g1.g2.g3.g4.g5.g6.g7.g8.g9.h..h#.ha.hb.hc.hd.he.hf.hg.hh.hi.hj.hk.fi.#e.hl.fm.hm.hn.fo.fo.ho.hp.hq.hr.hs.ht.hu.hv.hw.hx.hy.hz.hA.hB.hC.hD.hE.hF.hG.hH.hI.hJ.hK.hL.hM.hN.hO.hP.hQ.hR.hS.hT.hU.hV.hW.hX.hY.hZ.h0.h1.h2.h3.h4.h5.h6.h7.h8.h9.i..i#.ia.ib.ic.id.e..ie.if.ig.ih.ii.ii.ij.ik.il.im", -".in.io.cd.ip.iq.aM.ir.is.it.iu.iv.iw.ix.iy.iz.iA.iB.iC.iD.iE.iF.iG.iH.iI.iJ.iK.iL.iM.iN.iO.iP.iQ.iR.iS.iT.iU.iV.iT.iW.iX.iY.iZ.cG.i0.i1.i2.i3.i4.g3.i5.i6.i7.i8.i9.j..j#.ja.jb.jc.jd.je.jf.hj.jg.jh.ji.jj.jk.jl.jm.jn.jo.jp.jq.jr.bV.js.jt.ju.jv.jw.jx.jy.jz.jA.jB.jC.jD.jE.jF.jF.jG.jH.jI.jJ.jK.jL.jM.jN.jO.jP.jQ.jR.jS.jT.jU.jV.jW.jX.jY.jZ.j0.j1.j2.j3.j4.j5.gL.j6.j7.j8.j9.k..k#.ka.kb.kc.kd.ke.kf.kg.kh.gj.gl.im.ki.kj", -".kk.kl.eq.km.iq.kn.eM.ko.kp.kq.kr.ks.kt.ku.kv.kw.kx.ky.kz.eq.kA.kB.kC.kD.kE.kF.kG.kH.kI.kJ.kK.kL.kMQtW.kN.kO.kO.iS.iX.kP.kP.kQ.kR.kS.kT.kU.kV.kW.kX.kY.kZ.k0.k1.k2.k3.k4.k5.k6.k7.k8.k9.l..l#.la.lb.lc.ld.le.lf.lg.lh.li.lj.lk.ll.lm.ln.lo.lp.lq.lr.ls.lt.lu.lv.lw.lx.ly.lz.lA.lB.lC.lD.lE.lF.lG.lH.lI.lJ.lK.lL.lM.lN.lO.lP.lQ.lR.lS.lT.lU.lV.lW.lX.lY.lZ.l0.e5.l1.l2.l3.l4.l5.l6.l7.l8.l9.m..m#.ma.mb.mc.md.me.cn.mf.mg.mh", -".mi.mj.mk.ml.mm.iV.mn.mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.mA.mB.mC.mD.mE.mF.mG.mH.mI.mJ.mK.mL.mM.mN.mO.mP.mQ.gt.kP.kP.kP.mQ.kR.mR.mS.mT.mU.mV.mW.mX.mY.mZ.m0.m1.m2.m3.m4.m5.m6.m7.m8.m9.n..n#.na.nb.nc.nd.ne.nf.ng.nh.ni.nj.nk.nl.nm.nn.no.np.nq.nr.ns.nt.nu.nv.nw.nx.ny.nz.nA.nB.nC.nD.nE.nF.nG.nH.nI.nJ.nK.nL.nM.nN.nO.nP.nQ.nR.nS.nT.nU.nV.nW.nX.nY.nZ.n0.n1.n2.cb.n3.n4.n5.n6.n7.n8.n9.o..o#.eH.ej.oa.ob.b7.ob.oc.odQtA", -".oe.of.iY.iq.kn.og.oh.cg.oi.oj.ok.ol.om.on.oo.op.oq.or.os.ot.ou.ov.ow.ox.oy.oz.oA.oB.oC.oD.oE.oF.oG.oH.oI.oJ.oK.oK.oK.cGQtW.oL.oM.oN.oO.oP.oQ.oR.kO.oS.oT.oU.oV.oW.oX.oY.oZ.o0.o1.o2.o3.o4.o5.o6.o7.o8.o9.p..p#.pa.pb.pc.pd.pe.pf.pg.no.ph.pi.pj.pk.pl.pm.pn.po.pp.pq.pr.ps.pt.pu.pv.pw.px.py.pz.pA.pB.pC.pD.pE.pF.pG.pH.pI.pJ.pK.pL.pM.pN.pO.pP.pQ.pR.ed.pS.pT.pU.pV.pW.pX.pY.pZ.p0.p1.p2.p3.p4.p5.p6.p7.p8.p8.p9.q..q..q#", -".qa.qb.gZ.qc.eU.qd.gO.#D.qe.qf.qg.qh.qi.qj.qk.ql.qm.qn.qo.qp.qq.qr.qs.qt.qu.qv.qw.qx.qy.qz.qA.qB.qC.qD.qE.oK.cF.cF.oK.cG.qF.qG.qH.qI.qJ.qK.qL.kJ.kP.qM.qN.oT.qO.qP.qQ.qR.qS.qT.qU.qV.qW.qX.qY.qZ.q0.q1.q2.p..p..q3.q4.q5.q6.q7.q8.q9.r..r#.ra.rb.rc.rd.re.rf.rg.rh.ri.rj.rk.rl.rm.fk.rn.ro.rp.rq.rr.rs.rt.ru.rv.rw.rx.ry.ry.rz.rA.rB.rC.rD.rE.rF.rG.rH.j6.rI.rJ.rK.rL.rM.rN.rO.rP.rQ.rR.rS.rT.rU.rV.rW.rX.rY.rX.rZ.r0.r1.rZ", -".r2.r3.r4.r5.gX.r6.r7.r8.r9.s..s#.sa.c0.sb.sc.sd.se.sf.sg.sh.si.sj.sk.sl.sm.sn.so.sp.sq.sr.ss.st.su.gu.sv.oa.sw.sw.cF.sv.sx.sy.sz.sA.sB.qL.sC.sD.cd.sE.sF.sG.mZ.sH.sI.sJ.sK.sL.sM.sN.sO.sP.sQ.sR.sS.sT.q2.sU.sV.sW.sX.sY.#e.sZ.jg.s0.hk.s1.s2.s3.s4.s5.s6.s7.s8.s9.t..dg.t#.ta.tb.b#.py.tc.td.te.tf.tg.th.ti.tj.tk.tl.tm.tn.to.tp.tq.tr.ts.tt.tu.tv.tw.tx.ty.tz.tA.tB.tC.tD.tE.tF.tG.tH.es.kN.tI.tJ.tKQtZ.gr.rV.tL.tM.tN.tM", -".oh.aK.tO.tP.tQ.tR.tS.tT.tU.tV.tW.tX.g9.tY.tZ.sd.t0.t1.an.t2.si.t3.t4.t5.t6.t7.t8.t9.u..u#.ua.ub.uc.ud.eK.oa.sw.sw.cF.gq.ue.uf.ug.uh.ui.uj.uk.ul.mg.um.un.ce.mh.uo.up.uq.ur.jW.us.ut.uu.uv.uw.ux.sT.uy.o9.uz.uA.uB.uC.uD.uE.uF.uG.uH.uI.l#.uJ.uK.uL.uM.uN.uO.uP.uQ.uR.uS.uT.uU.uV.uW.uX.uY.uZ.u0.u1.u2.u3.ti.tj.u4.u5.u6.u7.u8.u9.v..v#.va.vb.vc.gi.vd.ve.vf.vg.vh.vi.vj.vk.vl.vm.vn.vo.vp.sx.vq.vr.vs.vt.vu.a..gt.kQ.vv.vw", -".vx.vy.vz.vA.vB.vC.vD.vE.vF.vG.vH.vI.vJ.vK.vL.vM.vN.vO.vP.vQ.vR.vS.vT.vU.vV.vW.vX.ss.vY.vZQtC.v0.v1.v0.gq.oa.oV.v2.af.kN.v3.v4.v5.v6.v7.v8.v9.w..w#.wa.kA.il.wb.wc.wd.we.wf.wg.wh.wi.wj.wk.wl.wm.wn.wo.wp.wq.wr.ws.wt.wu.wv.ww.wx.wy.wz.wA.wB.wC.wD.wE.wF.wG.wH.wI.wJ.wK.dh.b#.wL.wM.wN.wO.wP.wQ.wR.wS.wT.wU.wV.wW.wX.wY.wZ.w0.w1.w2.w3.w4.w5.w6.w7.w8.w9.x..x#.xa.xb.xc.xd.xe.xf.xg.xh.xi.ek.xj.xk.oG.xl.xm.xn.xo.xp.rL.xq", -".xr.xs.xt.xu.gW.xv.xw.gm.xx.aK.xy.xz.xA.xB.xC.xD.xE.xF.m1.xG.xH.xI.xJ.kf.gk.xK.e5.mN.xL.xM.xN.xO.xP.ue.gq.xQ.v2.xR.ae.kM.xS.xT.xU.i4.xV.xW.xX.xY.xZ.x0.x1.x2.x3.x4.x5.x6.x7.x8.x9.y..y#.ya.yb.yc.wo.yd.ye.yf.yg.yh.yi.wt.yj.yk.yl.ni.ym.yn.yo.yp.yq.yr.wJ.ys.yt.yu.yv.yw.yx.rj.bg.yy.yz.yA.yB.yC.yD.yE.yF.yG.yH.yI.yJ.yK.yL.yM.yN.yO.yP.yQ.yR.yS.yT.yU.yV.yW.yX.yY.yZ.y0.y1.y2.y3.y4.y5.y6.y7.y8.y9.z..z#.za.zb.zc.zd.ze.zf", -".zg.zh.zi.zj.zk.zl.eh.zm.zn.zo.zp.zq.zr.q#.zs.zt.zu.zv.oW.ma.zw.zx.zy.zz.zA.zB.zC.zD.zE.ci.ak.zF.zG.zH.kN.af.mz.zI.zJ.zK.zL.zM.zN.zO.zP.zQ.zR.zS.u..zT.zU.zV.zW.zX.zY.zZ.#e.z0.z1.z2.z3.jk.z4.z5.yd.z6.z7.z8.z9.A..A#.lb.Aa.Ab.Ac.Ad.Ae.Af.Ag.Ah.d#.Ai.Aj.Ak.Al.Am.An.Ao.Ap.Aq.wP.Ar.As.At.Au.Av.Aw.wT.Ax.Ay.Az.AA.AB.AC.dw.AD.AE.AF.AG.AH.zQ.AI.AJ.AK.AL.AM.AN.AO.AP.AQ.AR.AS.AT.AU.AV.AW.AX.AY.AZ.A0.A1.A2.A3.A4.A5.A6.A7", -".A8.AH.A9.B..B#.Ba.xm.c1.Bb.Bc.Bd.zq.Be.Bf.Bg.Bh.Bi.Bj.Bk.ot.Bl.Bm.Bn.Bo.Bp.Bq.vr.xA.Br.Bs.Bt.Bu.Bv.Bw.Bx.By.Bz.ep.BA.BB.BC.BD.BE.i4.BF.BG.BH.BI.BJ.BK.BL.BM.BN.BO.BP.BQ.BR.BS.BT.BU.BV.BW.BX.BY.BZ.B0.B1.B2.B3.B4.B5.B6.B7.B8.B9.C..o5.C#.Ca.Cb.Cc.Cd.Ce.Cf.Cg.Ch.Ci.Cj.Ck.Cl.Cm.Cn.Co.Cp.Cq.Cr.Cs.Ct.Cu.Cv.Cw.Az.Cx.Cy.Cz.CA.CB.CC.CD.CE.CF.CG.CH.CI.CJ.CK.CL.CM.CN.CO.CP.CQ.CR.CS.CT.CU.CV.CW.CX.CY.CZ.C0.C1.C2.C3.C4.C5", -".C6.C7.cg.C8.C9.D..D#.Da.Db.Dc.Dd.De.Df.Dg.Dh.Di.Dj.Dk.Dl.Dm.Dn.Do.eG.Dp.Dq.tN.Dr.DsQtD.Bw.Dt.Du.Dv.Dw.Dx.Dy.Dz.DA.DB.DC.DD.DE.DF.DG.DH.DI.DJ.DK.qr.DL.DM.DN.DO.DP.DQ.DR.DS.DT.DU.DV.yz.DW.DX.DY.DZ.D0.D1.D2.D3.o5.D4.D5.D6.D7.D8.D9.E..E#.Ea.Eb.Ec.Ed.Ee.Ef.Eg.Eh.Ei.Ej.Ek.El.Em.En.bL.Eo.Ep.Eq.Er.Es.Et.Eu.u3.Ev.Ew.Ex.Ey.Ez.EA.EB.EC.ED.EE.EF.EG.EH.AQ.EI.EJ.EK.EK.EL.EM.EN.EO.EP.EQ.ER.ES.ET.EU.EV.EW.EX.EY.EZ.E0.E1.E2", -".E3.E4.E5.E6.E7.E8.g4.E9.F..F#.Fa.Fb.Fc.Fd.Fe.Ff.Dj.Fg.cD.Fh.Fi.Fj.Fk.Bj.b7.kQ.kN.Fl.oG.Fm.Fn.Fo.pV.aaQtW.xL.Fp.Fq.Fr.Fs.Ft.Fu.Fv.Fw.Fx.Fy.Fz.FA.w6.FB.FC.FD.FE.FF.FG.FH.FI.FJ.FK.fY.FL.FM.FN.fY.FO.FP.FQ.FR.FS.FT.FU.FV.FW.FX.FY.FZ.F0.F1.F2.F3.F4.F5.F6.F7.F8.F9.G..G#.Ga.Gb.Gc.Gd.Ge.Gf.Gg.Gh.Gi.Gj.Gk.Gl.Gm.Gn.Go.Gp.Gq.Gr.Gs.Gt.Gu.Gv.Gw.Gx.Gy.Gz.GA.GB.GC.GD.GE.GF.GG.GH.GI.GJ.GK.GL.GM.GN.GO.GP.GQ.GR.GS.GT.GU.GV.GW", -".GX.GY.GZ.E5.G0.qe.G1.G2.G3.G4.G5.G6.G7.G8.G9.H..H#.Dl.Ha.Hb.Hc.Hd.He.Hf.Hg.zA.Hh.Hi.Hj.Hk.rK.Hl.pV.Hh.Hi.Hm.Hn.Ho.Hp.Hq.Hr.Hs.Ht.mV.Hu.Hv.Hw.Hx.iL.Hy.Hz.HA.HB.HC.HD.HE.HF.HG.HH.HI.HJ.HK.HL.HM.HN.HN.HO.HP.HQ.HR.HS.HT.HT.HU.HV.HW.HX.HY.HZ.H0.H1.H2.H3.H4.H5.H6.H7.H8.H9.I..I#.Ia.Ib.Ic.Id.Ie.If.Ig.Ih.Ii.Ij.Ik.Il.Im.In.Io.Ip.Iq.Ir.Is.It.Iu.Iv.Iw.Ix.Iy.Iz.IA.IB.IC.ID.IE.IF.IG.IG.IH.EI.II.IJ.IK.IL.IM.IN.IO.IP.IQ.IR", -".IS.IT.IU.GZ.iN.IV.IW.IX.IY.aj.IZ.I0.gn.I1.I2.I3.I4.p3.I5.I6.I7.I8.I9.J..J#.Ja.Jb.Jb.Jc.Jd.ig.Je.Jf.aa.Jg.qC.Jh.Ji.Jj.Jk.Jl.zP.Jm.Jm.Jn.Jo.Jp.Jq.JrQt#.Js.Jm.Jt.Ju.Jv.Jw.Jx.Jy.Jz.JA.JB.JC.JD.JE.JF.JG.JH.JI.JJ.JK.JL.JM.JN.JO.JP.JQ.JR.JS.JT.JU.JV.JW.JX.JY.JZ.J0.J1.J2.J3.J4.J5.J6.J7.J8.J9.K..K#.Ka.Kb.Kc.Kd.Ke.Kf.Kg.Kh.Ki.Kj.Kk.Kl.Km.Kn.CL.Ko.Kp.Kq.Kr.Ks.Kt.Ku.Kv.Kw.Kx.Ky.Kz.KA.KB.KC.KD.KE.KF.KG.KH.KI.KJ.KK.KL.KM", -".KN.KO.KP.qG.KQ.KR.KS.KT.KU.KV.KW.aJ.ei.KX.KY.KZ.K0.K1.I6.K2.K3.K4.K5.K6.K7.K8.K9.K9.L..L#.La.Lb.Lc.rS.Ld.Le.ua.sD.Lf.Lg.Lh.Li.Lj.Lk.Ll.Lm.Ln.g6.Lo.Lp.Lq.Lr.Ls.Lt.Lu.Lv.Lw.Lx.Ly.Lz.LA.LB.LC.LD.LE.LF.LG.LH.dw.LI.LJ.LK.LL.LM.LN.LO.LP.LQ.LR.Ly.LS.Io.LT.LU.LV.LW.LX.LY.LZ.L0.L1.L2.L3.L4.L5.L6.L7.L8.L9.M..M#.Ma.Mb.Mc.Md.Me.Mf.Mg.Mh.Mi.Mj.Mk.Ml.Mm.Mn.Mo.Mp.Mq.Mr.Ms.IE.Mt.Mu.Mv.Mw.En.Mx.My.rr.Mz.MA.MB.MC.MD.ME.MF.MG", -".MH.MI.MJ.aK.MK.xj.ML.MM.Jh.HmQtB.oI.MN.cm.MO.MP.MQ.MR.k1Qtq.MS.MT.MU.MV.MW.MX.MY.MZ.M0.M1.M2.M3.M4.M5.M6.M7.gk.M8.M9.sq.N..N#.Na.Nb.Nc.Jm.Nd.Ne.Nf.Ng.Nh.Ni.Nj.Nk.Nl.Nm.Nn.No.Np.Nq.Nr.Ns.Nt.Nu.Nv.Nw.LU.Nx.wX.Ny.Nz.NA.NB.NC.ND.NE.NF.NG.NH.NI.NJ.NK.NL.NM.NN.NO.NP.NQ.NR.NS.NT.NU.NV.NW.NX.hC.NY.NZ.u3.N0.N1.N2.N3.N4.N5.N6.N7.N8.N9.O..O#.Oa.Ob.Oc.Od.Oe.Mp.Of.Og.Oh.Oi.Oj.Ok.Ol.Om.On.Oo.Op.Oq.Or.Os.Ot.Ou.Ov.Ow.Ox.Oy", -".Oz.OA.OB.OC.OD.OE.Fn.OF.OG.OH.OI.zA.OJ.OK.OL.OM.ON.OO.OP.OQ.OR.OS.OT.OU.OV.OW.OX.OY.kl.OZ.O0.O1.O2.O3.O4.O5.O6.O7.O8.O9.w7.P..vb.P#.Pa.Pb.Pc.Pd.Pe.Pf.Pg.Ph.Pi.Pj.Pk.Pl.Pm.Pn.Po.Pp.Pq.Pr.Ps.Pt.Pu.Pv.Pw.Px.Py.Pz.PA.PB.PC.PD.PE.PF.g6.PG.PH.PI.PJ.PK.PL.PM.PN.PO.PP.PQ.PR.PS.PT.PU.PV.PW.PX.PY.PZ.P0.P1.P2.P3.P4.P5.P6.P7.P8.P9.Q..Q#.Qa.Qb.Qc.Qd.Qe.Qf.Qg.Mq.Qh.Qi.Qj.Qk.Ql.Qm.Qn.Qo.Qp.Qq.Qr.Qs.dr.Qt.Qu.Qv.Qw.Ig.Qx.Qy", -".Qz.QA.QB.Dx.QC.G7.gK.rI.QD.QE.Ja.Hg.qa.QF.Dl.QG.QH.QI.QJ.QK.QL.QM.QN.QO.QP.QQ.QR.QS.QT.QU.QV.QW.QX.QY.QZ.Q0.Q1.Q2.Q3.G9.Q4.Q5.Q6.Q7.Q8.Q9.R..R#.Ra.Rb.Rc.Rd.Re.Rf.Rg.Rh.Ri.Rj.Rk.Rl.Rm.Rm.Rn.Ro.Rp.Rq.Rr.Rs.Rt.Ru.Rv.Rw.Rx.Ry.Rz.RA.oN.RB.RC.RD.RE.RF.RG.RH.RI.RJ.RK.RL.RM.RN.RO.RP.RQ.RR.RS.RT.RU.RV.RW.RX.RY.RZ.R0.R1.R2.LG.R3.R4.R5.R6.R7.R8.R9.S..S#.Sa.Sb.Sc.Sd.Se.Sf.Sg.Sh.Si.Sj.Sk.Sl.Sm.Sn.So.Sp.Sq.Sr.Ss.St.Su.Sv", -".Sw.iZ.Sx.oK.rT.Sy.Sz.K9.SA.SB.OY.QS.SC.SD.cE.sw.SE.SF.MY.SG.SH.SI.SJ.SK.SL.SM.SN.SO.SP.aB.SQ.SR.SS.ST.SU.SV.SW.SX.SY.SZ.S0.S1.S2.S3.S4.S5.S6.S7.S8.S9.T..T#.Ta.Tb.Tc.Td.Te.Tf.Tg.Th.Ti.Tj.Tk.Tl.Tm.Tn.To.Tp.Tq.Tr.Ts.Tt.Tu.Tv.Tw.Tx.Ty.Tz.TA.TB.TC.TD.TE.TF.TG.TH.TI.TJ.TK.TL.TM.TN.TO.TP.TQ.TR.TS.TT.TU.TV.TW.TX.NZ.TY.TZ.AA.T0.T1.T2.T3.T4.T5.T6.T7.T8.T9.U..GC.U#.lt.Ua.Ub.Uc.Ud.Ue.Uf.Ug.Uh.Ui.Uj.Uk.Ul.Um.Un.Uo.Up.Uq", -".Ur.Us.Ut.Uu.qb.Uv.Uw.Ux.Uy.Uz.eB.QS.SC.UA.UB.UC.oK.UD.rS.UE.UF.UG.UH.zz.UI.UJ.UK.UL.UM.UN.UO.UP.UQ.UR.US.UT.UU.UV.UW.UX.UY.UZ.U0.U1.U2.U3.U4.U5.U6.U7.U8.U9.DH.V..V#.Va.Vb.Vc.Vd.Ve.Vf.Vg.Vh.Vi.Vj.Vk.Vl.Vm.Vn.Vo.Vp.Vq.Vr.Vs.Vt.Vu.Vv.Vw.Vx.Vy.Vz.VA.VB.VC.VD.VE.VF.VG.VH.VI.VJ.VK.VL.VM.VN.VO.VP.VQ.VR.VS.VT.VU.VV.VW.VX.LP.du.T1.VY.Sl.VZ.V0.V1.V2.V3.V4.GC.yv.V5.V6.V7.T3.V8.V9.W..W#.Wa.Wb.Wc.Wd.We.Wf.Wg.Wh.Wi.Wj.Wk", -".Wl.Hd.Wm.QS.Wn.Wo.Wp.Wq.cm.Wr.Ws.Wt.Wu.Wv.p8.Ww.vt.Wx.Wy.Wz.WA.WB.zz.WC.WD.WE.WF.WG.WH.WI.WJ.WK.WL.WM.WN.WO.WP.WQ.WR.WR.WS.UU.WT.WU.WV.WW.WX.vP.WY.WZ.W0.W1.W2.W3.W4.W5.W6.W7.W8.W9.WR.X..X..X#.Xa.Xb.Xc.Xd.Xe.Xf.Xg.Xh.Xi.Xj.Xk.Xl.Vf.Xm.Xn.Xo.Xp.Xq.Xr.Xs.Xt.Xu.Xv.Xw.Xx.Xy.Xz.WN.XA.XB.XC.XC.XD.XE.XF.XG.XH.XI.XJ.XK.XL.XM.XN.XO.XP.XQ.XR.XS.XT.XU.XV.XW.XX.XY.XZ.X0.Oo.X1.X2.Ch.X3.X4.X5.X6.X7.X8.X9.Y..Y#.Ya.St.Yb.Yc", -".Yd.Ye.Yf.Yg.Bl.OJ.OJ.Yh.Yi.zv.zv.Wt.Yj.Yk.Ww.Yl.gr.Ym.iX.oc.Yn.er.eh.Yo.Yp.Yq.Yr.Ys.Yt.Yu.Yv.Yw.W8.Yx.Yy.Yz.YA.YA.YA.YB.YC.WM.UU.Xp.YD.YE.YF.YG.YH.YI.YJ.YK.YL.YM.YN.YO.WM.WR.YP.YQ.YR.YS.YT.YU.YV.YW.W8.YX.YY.YZ.Y0.Y1.Y2.Y3.Y4.Y5.YX.Y6.Y7.Y8.Y9.Z..Z#.Za.Zb.Zc.Zd.Ze.Zf.Zg.Zg.Zh.Zi.Zj.Zk.Zl.Zm.VM.VM.Zn.Zo.Zp.Zq.Zr.Zs.Zt.Zu.Zv.Zw.Zx.Zy.Zz.ZA.ZB.ZC.ZD.ZE.ZF.T5.ZG.ZH.ZI.ZJ.ZK.ZL.ZM.ZN.ZO.ZP.ZQ.ZR.Y..ZS.Ka.ZT.ZU.ZV", -".ZW.ZX.ZY.ZZ.Z0.Z1.sw.SD.Z2.Z3.Wt.QS.Z4.oK.tL.Z5.Z6.tJ.Z7Qt0.ej.gH.gH.Yh.Z8.Z9.0..0#.0a.0b.Xp.W8.Y9.0c.X#.X#.0d.0e.0f.0g.0h.0i.W8.W8.YO.0j.0k.0l.0m.0n.0o.0p.0q.YX.0r.0s.X..0t.0u.0u.0v.0w.0x.0y.YV.0z.0A.0B.0C.0D.0E.0F.0G.0H.0I.0J.Xp.0K.0L.YV.Zh.0M.0N.0O.0P.0Q.0R.WM.0S.0T.0U.0V.0W.0X.0Y.0Z.00.01.XA.WM.Xp.02.03.04.05.06.07.08.09.1..1#.1a.1b.1c.1d.1e.bL.ID.1f.1g.1h.1i.1j.1k.1l.1m.1n.1o.1p.ZI.1q.1r.1s.1t.1u.1v.1w", -".1x.1y.1z.1A.1B.1C.1D.SN.Wu.Z2.QS.QS.1E.oK.QA.1F.1G.rZ.p8.1H.OJ.1I.Bm.eG.1J.1K.1L.1M.1N.1O.WR.XA.WR.1P.Yx.1Q.1R.1S.1T.1U.1V.1V.1W.1X.1Y.WM.1Z.10.11.12.13.14.15.UU.WM.16.17.18.19.2..2#.2a.2b.2c.2d.0u.2e.2f.Xp.2g.2h.2i.2j.2k.2l.2m.2n.2e.2o.2p.18.2q.2r.2s.2t.2u.YO.2v.2w.2x.0z.2y.2z.2A.2B.2C.2D.YA.2E.Y9.2F.2G.2H.2I.2J.2K.2L.2M.2N.2O.2P.2Q.2R.2S.2T.2U.2V.2W.2X.2Y.2Z.20.21.22.23.24.25.26.27.28.29.N8.3..3#.3a.3b.3c", -".3d.3e.3f.3g.3h.3i.1D.1D.sw.QF.3j.Yh.1E.Sx.3k.3l.3m.3n.UC.3o.mA.cm.3p.3q.3r.3s.3t.3u.3v.WM.3w.3x.XA.WR.3y.3z.3A.3B.3C.3D.3E.3F.3G.3H.3I.WR.3J.3K.3L.3M.3N.3O.3P.W8.3Q.3R.3S.3T.3U.3V.3W.3X.3Y.3Z.30.31.XA.32.33.Xp.34.35.36.37.38.UU.39.WR.XA.X..4..4#.4a.4b.4c.4d.4e.4f.4g.4h.4i.4j.4k.4l.4m.4n.4o.WR.4p.4q.UU.4r.4s.4t.4u.4v.4w.4x.4y.4z.4A.4B.4C.4D.4E.4F.4G.4H.4I.4J.4K.4L.4M.4N.dG.4O.tu.4P.4Q.4R.4S.4T.4U.4V.4W.4X.4Y", -".4Z.40.41.42.43.Wu.un.44.sw.m0.OJ.1E.oK.aI.tI.eU.45.46.iY.um.47.eC.48.49.5..5#.5a.5b.5c.VN.5d.5e.WR.5f.5g.5h.5i.5j.5k.5l.5m.5n.3H.5o.WR.5p.5q.5r.5s.5t.5u.5v.W8.5w.5x.3F.5y.5z.5A.5B.5C.5D.5E.5F.5G.5H.5I.5J.5K.5L.5M.5N.5O.5P.5Q.W8.WM.5R.VM.5S.5T.5U.5V.5W.5X.5Y.5Z.5d.50.51.18.52.53.54.55.56.57.58.59.6..6#.6a.6b.6c.6d.6e.6f.6g.6h.6i.6j.6k.6l.6m.6n.6o.6p.6q.6r.6s.cs.6t.6u.6v.6w.xZ.6x.6y.6z.6A.6B.6C.6D.6E.6F.6G.6H", -".6I.cw.6J.6K.6L.6M.UA.Wv.Wv.6N.6O.6P.6Q.vC.6R.MI.6S.6T.eV.6U.6V.6W.6X.6Y.6Z.60.61.62.XA.VM.16.3H.0B.63.64.65.66.67.68.69.5u.7..WM.7#.WR.Zi.7a.7b.7c.7d.7e.WM.WN.W8.W8.UU.7f.7g.7h.7i.7j.7k.7l.7m.7n.7o.7p.7q.7r.7s.7t.7u.7v.7w.7x.7y.W8.7z.7A.WM.Xp.7B.7C.7D.7E.7F.2f.WM.Zh.19.7G.7H.7I.7J.7K.7L.7M.7N.7O.7P.7Q.7R.7S.7T.7U.7V.7W.7X.7Y.7Z.70.71.ES.72.73.74.75.76.77.78.79.8..qC.qC.8#.8a.8b.8c.8d.8e.8f.8g.8h.8i.8j.8k.8l", -".8m.8n.SE.Z4.SD.SD.UA.6N.8o.8p.Z7.8q.8r.8s.gW.8t.8u.8v.mm.8w.8x.8y.8zQtN.8A.8B.8C.8D.8E.XA.8F.8G.8H.8I.8J.8K.8L.8M.8N.8O.8P.8Q.8R.WR.Yx.Zh.18.8S.8T.8U.8V.8W.WM.WM.8X.UU.8Y.8Z.80.81.82.83.84.85.86.87.88.89.9..9#.9a.9b.9c.9d.9e.9f.UU.WN.WM.W8.9g.9h.9i.9j.9k.9l.9m.9n.9o.1V.18.9p.18.9q.X#.XA.9r.9s.9t.9u.7r.9v.9w.9x.9y.9z.9A.9B.9C.9D.9E.9F.9G.9H.9I.9J.9K.9L.9M.9N.9O.9P.9Q.9R.9S.9T.9U.9V.9W.9X.9Y.9Z.90.91.92.93.Aw", -".8n.8n.Dp.OJ.Wu.SD.94.95.96.97.gZ.3k.r4.tQ.98.99#..#.#QtE.6U.6V.aG#.aQtN.aF#.b#.c#.d#.e.YA#.f#.g#.h#.i#.j#.k#.l#.m#.n#.o#.p#.q.WS.WR#.r.Zh.Zg#.s#.t#.t#.u#.v.WM.WM.8X.UU#.w#.x#.y#.z#.A#.B#.C#.D#.E#.F#.G#.H#.I#.J#.K#.L#.M#.N.9e.3P#.O.WN.WM.W8.YO#.P#.Q#.R#.S#.T#.U#.V.W8#.W#.X.Zg.Zh#.Y#.Z#.0.VM.VM.XA#.1#.2#.3#.4#.5#.6#.7#.8#.9##.#####a##b##c##d##e##f##g##h##i##j##k##l##m##n##o##p##q##r##s##t##u##v##w##x##y##z##A", -"##B##B.Dp.Dp.m0.Wu.94.6U##C##D.gr.1F##E.aO.cN##F#..##G.vt##H##I.aG##J##K##L##M##N.WN##O.X###P##Q##R##S##T##U##V##W##X##Y##Z##0.WR.WR##1.2e##2##3##4#.t##5.Yx.1X.WM.UU.8X##6##7##8##9#a.#a#.2G.Xp.W8#aa#ab.WN.W8.UU#ac#ad#ae#af#ag#ah#ai.Y9.Yx#aj#ak#al#am#an#ao#ap#aq#ar#as#at#au.Yx#av.5S#aw.XA.8E.WR#ax.W8#ay#az#aA#aB#aC#aD#aE#aF#aG#aH#aI#aJ#aK#aL#aM#aN#aO#aP#aQ#aR#aS#aT#aU#aV#aW#aX#aY#aZ#a0#a1#a2#a3.JB#a4#a5#a6#a7", -"#a8#a8.Dp.Dp.m0.Wu#a9#b.##C##D.gr#b##ba#bb#bc#bd#be#bf.vu##H##I#bg#bh#bi.6Y#bj#bk#bl#bm.Zg#bn#bo#bp#bq#br#bs#bt#bu#bv#bw#bx#by.WR#bz#bA.2e#bB#bC#bD#bE#bF.3H#ab.WM.UU.8X#bG#bH#bI.1O#bJ#bK#bL.YO.WM.Yx.Y9.WM.7z#bM#bN#bO#bP#bQ#bR#bS#ai.Y9.Yx#bT.WM#bU#bV#bW#bX#bY#bZ#b0#b1#b2#b3#b4.WO.WR.XA#b5.WR#b6#b7#b8#b9.2G#c.#c##ca#cb#cc#cd#ce#cf#cg#ch#ci#cj#ck#cl#cm#cn#co#cp#cq#cr#cs#ct#cu#cv#cw#cx#cy#cz#cA#cB#cC#cD#cE#cF#cG", -"#cH#cH.Dp.OJ.Wu.SD#cI#cJ#cK#cL.eV#cM#cN#cO#cP#cQ#cR#cS.Wx#cT.Wu.1D#cU.rW#cV#cW#cX#cY.5S.18#cZ#c0#c1#c2#c3#c4#c5#c6#c7#c8#c9#d..WR.XE.WR.Yx#d##da#db#dc#dd#de#df.WM#dg.UU#dh#di#dj#dk#dl#dm.YX#dn#do#dp.8W.3I.WM.7A#dq#dr#ds#dt#du#dv.4q.Yx.2e#dw.WR#dx#dy#dz#dA#dB#dC#dD#dE#dF#dG#dH#dI#dJ#dK#dL.Y9.2e#dM#dN#dO#dP#dQ#dR#dS#dT#dU#dV#dW#dX#dY#dZ#d0#d1#d2#d3#d4#d5#d6#d7#d8#d9#e.#e##ea#eb#ec#ed#ee#ef#eg#eh#ei#ej#ek#el#em", -"#en.eH#eo.QF##I##I#ep#eq#er.rY.cQ#es#et#eu#ev#ev#eu#ew.oK.Uu.Yj.UJ.eo.tJ.p5#ex#ey#ez.WR#eA#cZ#c0#eB#eC#eD#eE#eF#eG#eH#eI#eJ#eK.7#.WR.Y9#eL.Yx#eM#eN#eO#eP.WM#df.WM#eQ.W8#eR#eS#eT#eU#eV#eW#eX#eY#eZ#e0.Yx.Y9.7z#e1#e2#e3#e4#e5#du.WN#ax#e6.2e.16#e7#e8#e9#f.#f##fa#fb#fc#fd#dH#fe#ff#fg#fh#fi#fj#fk.Zh.8F#fl#fm#fn#fo#fp#fq#fr#fs#ft#fu#fv#fw#fx#fy#fz#fA#fB#fC#fD#fE##w#fF#fG#fH#fI#fJ#fK#fL#fM#fN#fO#fP.LW#fQ#fR#fS#fT#fU", -"#fV.Wp#eo.SC.6V.6V#fW#fX#fY#fZ#f0#f1#f2#f3#ev#cO#f4.QA.cF.Ur.Yj#f5#f6#f7.tN#f8#f9#g..WM#g##ga#c0#.g#gb#gc#gd#ge.W8.W8#gf#gg#gh.W9#gi.WO#gj.Yx#gk#gl#gm#gn.WM#go.WM.W8#eQ#gp#gq#eV#gr#gs#gt#gu#gv#gw#gx#.r#gy.WM.7A#e2#e3#gz#gA#du.WM#gy#dw.Zi.X##e6#gB#gC#gD#gE#gF#gG#gH#gI#gJ#gK#gL#gM#gN#gO#gP#gQ#gR#gS#gT.5x#gU#gV#gW#gX#gY#gZ#g0#g1#g2#g3#g4#g5#g6#g7#g8#g9.Cg#h.#h##fF#ha#hb#hc#hd#he#hf#hg#hh#hi#hj#hk#hl#hm#hn#ho#hp", -"#hq#fV.47#hr#hs#ht#hu.Fg#eq#erQtZ.aN#hv#hw#hx#hy#cM#hz#hA.3j.1I.oJ#hB#hC#hD#hE#hF#hG#hH.Y9#hI#hJ#hK#hL#hM#hN#hO#hP#hQ#hR.WM.WM#hS.0s.Y9.7A#hT#eO#hU#hV#hW#hX.WM#dv.UU#.O.W8#hY#hZ#h0#h1#h2#h3#h4#h5#h6#h7.7A#h8#h9#i.#i##ia#ib#ic.7z#id.Yx.2e#ie.Zh#if#ig#ih#ii#ij#ik.WR#il#.W#im#in#io#ip#iq#ir#is#it.Zh#iu.1V.3H#iv#c7#iw#ix#iy#iz#iA#iB#iC#iD#iE#iF#iG#iH#iI#iJ#iK#iL#iM#iN#iO#iP#iQ#iR#iS#iT#hj#iU#iV#iW#iX#iY#hn#iZ.Gw", -"#fV#en#i0#hs#i1#i1#ht#ht#i2#eq##D.iq#i3#es.cP#i4#i5#cK.6L.Bk#i6#i7#i8.tX#i9#j.#j#.TP#ja#jb#dN#hK.3F#.W.5x#jc#jd#je#jf.WM#hR#h8.WR.WR#id.Y9#jg#jh#eK#ji#jj#jk#jl.WM.W8.W8#jm.UU#jn#jo#jp#jq#jr#js#jt#h7.Y9.WM.WM.W8#ju#jv#jw#jx#du#jy#jz#jA#jB.2e.Zh#jC#jD#jE#jF#jG#jH#jI#jJ.3R.7H#jK#jL#jM#jN#jO#jP#jQ#jR.X#.2e#jS#jT#jU#jV#jW#jX#jY#jZ#j0#j1#j2#j3.Qk#j4#j5#j6#j7#j8.JU#j9.NT#k.#k##ka#kb#kc#kd#ke#kf#kg#kh#ki#kj#kk#kl#km", -"#kn.47.Dl#hs#ko#ko#kp#ht#kq#ep.8o.Z7.a2#kr#ks#kr#kt#ku#kv.Yi.cn.st#kw#kx#ky#kz#kA#kB#kC#kD#kE#kF#do#aa.3H.Yx.Yx.Y9.Y9#b4.Y9.Y9#kG.7A.Y9#kH#kI#kJ#kK#kL#kM#kN#kO.7A#kP#jH.WM#kQ.WM#kR.W8.WM#kS.WM.Y9#hT.WM.W8#ah.UU#kT#kU#kV#kW#kX#kY.W8.WM#gj#kZ#k0#k1#k2#k3#k4#k5.W8.W8#k6#k7##Q.3T#k8#k9#l.#l##la.XA#lb#lc.WR#ld#le#lf#lg#lh#li#lj#lk#ll#lm#ln#lo#lp#lq#lr#ls#lt#lu#lv#aX#lw#lx#ly#lz#lA#lB#lC#lD#lE#lF#lG#lH#lI#lJ#lK#lL", -".47#i0.Dl#hs#lM#lM#lN#lO#lP#hu#lQ.44.rU#lR.QB.ml#lS.6Y#lT.eB#lU.el#lV#lW#lX#lY#lZ#l0#l1#l2#l3.UU.WM#ax#l4#gy#gy.4q#l5.Y9.Y9.WO.Y9#l6.3I.Y9#l7#l8#l9#m.#m##ma#mb#mc.7A.7A#md#kQ.WM#dv.WM.WM#me.WM.1X.WM.W8#mf.UU#mg#mh#mi#mj#mk#ml#mm#mn.W8.WM.WM.UU#mo#mp#mq#mr#ms#mt#mu#mv#mw#mx#my.3F#mz#mA.WM.WR.5Z.WR.5Z#mB#mC#mD#mE#mF#lh#mG#mH#mI#mJ#mK#mL#mM#mN#mO#mP#mQ#mR#mS#mT#mU#mV#mW#mX#mY#mZ#m0#m1#m2#m3#m4#m5#m6#m7#m8#m9#n.", -".3i.Z1#n#.Dl#na#nb#nb#nc#nd#nd#n##ne#nf#ng#nh#ni#nj#nk#nl.Wr#nm#nn#no#np#nq#nr#ns#nt#nu#nv#nw#nx#ny.WR.WR.XA.XA.WR.Y9.4q#l5.WO.Y9#l6.WR.WR#nz#nA#nB#nC#nD#nE#nF#nG#nH#e1#nI.7A.WM#hR.W9.W9.Y9.WM#ai#nJ.5v#mq#nK#nL#nM#nN#nO#nP#nQ.YO.YO#ak#nR.UU#nS#nT#nU#nV#nW#nX#nY#nZ#n0#b8#dN#n1#b7.W8.W8.W8.W8#n2#n3.XF#n4#n5#n6.67#n7#n8#n9#o.#o##oa#ob#oc#od#oe#of#og#oh#oi#oj#ok#ol#om#on#oo#op#oq#or#os#ot#ou#ov#ov#ow#ox#oy#oz#oA", -".Z1.Z1#n##oB#nc#oC#oC#oC.49.49.48.47.3i#oD#oE#oF#oG#oH#oI#oJ#oK.tU#oL#oM#oN#oO#oP#oQ#oR#oS#oT#oU#oV#oW#oX#oY#oZ.WR.Y9#kG#o0#o1#o2#o3.7##o4.WM.7A#o5#o6#o7#o8#o9#p.#p##pa#pb#pc#pd.WM.WR.W9.Y9#pe#.O#pf#pg#ph#pi#pj#pk#pl#pm#pn#po#pp#pq#pr#ps#pt#pu#pv#pw#px#py#pz#pA#pB#pC#pD#pE.UU.W8.2f.5c.W8#pF#pG#pH#pI#pJ#pK#pL#pM#pN#pO#pP#pQ#pR#pS#pT#pU#pV#pW#pX#pY#pZ#p0#p1#p2#p3#p4#p5#p6#p7#p8.Sb#p9#q.#q##qa#qb#aS#qc#qd#qe#qf", -".oV.v2.6W#oB#nc#qg#qg#qh#qh#qi#qj.Do.of.Bk.QQ#hr#qk#ql#oI#qm#oK#qn.Ln#qo#qp#qq#qr#qs#qt.k3#qu#qv#qw#qx#qy#qz#qA#qB#qC#qD#qE#qF#dG#qG#qH.Y9#h8#qI#qJ#qK#qL#qM#qN#qO#qP#qQ#qR#qS#qT#qU#qV#qW#qX#qY#qZ#q0#q1#q2#q3#q4#q5#q6#q7#q8#q9#r.#r##ra#rb#rc#rd#re#rf#rg#rh#ri#rj#rk#rl#rm#rn#ro#rp#rq#rr#rs#rt#ru#rv#rw#rx#ry#rz#rA#rB#rC#rD#rE#rF#rG#rH#rI#rJ#rK.MD#rL#rM#rN#rO#rP#rQ#rR#rS#rT#rU#rV#rW#rX#rY#rZ#r0#r1#r2#r3#r4#r5#r6", -".eI#r7.Z4.OJ#r8#eo.Dl.Dl#r9#hr.m0.Yj.qP.WC.iF#s.#s##sa#hr.Jf#sb#sc#sd.RZ#se#sf#sg#sh#si#sj#sk#sl#sm#sn#so#sp#sq#sr#ss#st#su#sv#sw#sx#sy#sz#sA#sB#sC#sD#sE#sF#sG#sH#sI#sJ#sK#sL#sM#sN#sO#sP#sQ#sR#sS#sT#sU#sV#sW#sX#sY#sZ#s0#s1#s2#s3#s4#s5#s6#s7#s8#s9#t.#t##ta#tb#tc#td#te#tf#tg#th#ti#tj#tk#tl#tm#tn#to#tp#tq#tr#ts#tt#tu#tv#tw#tx#ty#tz#tA#tB#tC#tD#tE#tF#tG#oj#tH#tI#tJ#p6#tK#tL#tM#tN#tO#tP#tQ#tR#tS#tT#tU#tV#tW#tX#tY", -"#tZ#t0#t1#t2#t3#t4.gq.kN.kO.kN#t5#t5.OC.og#t6#t7#t6#t8.cI#t9#u.#u##ua#ub#uc.KL#ud#ue#uf#ug#uh#ui#uj#uk#ul#um#un#uo#o7#up#uq#ur#us#ut#uu#uv#uw#ux#uy#uz#uA#uB#uC#uD#uE#uF#uG#uH#uI#uJ#uK#uL#uM#uN#uO#uP#uQ#uR#uS#uT#uU#uV#uW#uX#uY#uZ#u0#u1#u2#u3#u4#u5#u6#u7#u8#u9#v.#v##va#vb#vc#vd#ve#vf#vg#vh#vi#vj#vk#vl#vm#vn#vo#vp#vq#vr#vs#vt#vu.dI#vv#vw.Cs#vx#vy#vz#vA#vB#vC#vD#vE#vF#vG#vH#vI#vJ#vK#vL#vM#vN#vO#oj#vP#vQ.XN#vR#r6", -"#vS#vS#vT#vU#vV#vW#vX#vY#vY.tO#vZ#v0#v1#v2#v3#v3#v4#v5#v6#v7#v8#v9#w.#w##wa#wb#wc#wd#we#wf#wg#wh#wi#wj#wk#wl#wm#wn#wo#wp#wq#wr#ws#wt#wu#wv#ww#wx#wy#wz#wA#wB#wC#wD#wE#wF#wG#wH#wI#wJ#wK#wL#wM#wN#wO#wP#wQ#wR#wS#wT#wU#wV#wW#wX#wY#wZ#w0#w1#w2#w3#w4#w5#w6#w7#w8#w9#x.#x##xa#xb#xc#xd#xe#xf#xg#xh#xi#xj#xk#xl#xm#xn#xo#xp#xq#xr#xs#xt#xu#xv#xw#xx#xy#xz#xA#xB#xC#xD#xE#xF#xG#xH#xI#xJ#xK#xL#xM#xN#xO#xP#xQ#xR#xS#xT.XM#xU#xV", -"#xW#xW.kX.kX#xX#xY#v2.eS.eT#xZ#xZ.cN#x0#x0#x1#x2#x3#x4#x5#x6#x7#x8#x9#y.#y#.d2#ya#yb#yc#yd#ye#yf#yg#yh#yi#yj#yk#yl#ym#yn#yo#yp#yq#yr#ys#yt#yu#yv#yw#yx#yy#yz#yA#yB#yC#yD#yE#yF#yG#yH#yI#yJ#yK#yL#yM#yN#yN#yO#yP#yQ#yR#yS#yT#yU#yV#yW#yX#yY#yZ#y0#y1#y2#y3#y4#y5#y6#y7#y8#y9#z.#z##za#zb#zc#zd#ze#zf#zg#zh#zi#zj#zk#zl#zm#zn#zo#zp#zq#zr#zs#zt#zu#zv#zw.Qr#zx#zy#zz#zA#zB#zC#zD#zE#zF#zG#zH#zI.wG#zJ#zK#iH#zL#zM#zN.Ct#zO#zP", -"#zQ#zR#zS#zTQtQ#zU#zV#zW.99#zX#zY.KO.cO#zZ#z0#z1#z2.v3#z3#z4#lX#z5#z6#z7#z8#z9#A.#A##Aa#Ab#Ac#Ad#Ae#Af#Ag#Ah#Ai#Aj#Ak#Al#Am#An#Ao#Ap#Aq#Ar#As#At#Au#Av#Aw#Ax#Ay#Az#AA#AB#AC#AD#AE#AF#AG#AH#AI#AJ#AK#AL#AM.2s#AN#AO#AP#AQ#AR#zb#AS#AT#AU#AV#AW#AW#AX#AY#AZ#A0#A1#A2#A3#A4#A5#A6#A7#A8#A9#B.#B##Ba#Bb#Bc#Bd#Be#Bf#Bg#Bh#Bi#Bj#Bk#Bl#Bm#Bn#Bo#Bp.JQ.1q#Bq#Br#Bs#Bt#Bu#Bv#Bw#Bx#By#Bz#BA#BB#BC#BD#BE#BF#BG#BH#BI#BJ#BK#BL#BM#BN", -"#BO#BO#BP#BQ#BR#BS#BT#BU#cQ#BVQtb#BW#BX#BY#BZ#B0.xP.S7#B1#B2#u##B3#B4#B5#B6#B7#B8#B9#C.#C##Ca#Cb#Cc#Cd#Ce#Cf#Cg#Ch#Ci#Cj#Ck#Cl#Cm#Cn#Co#Cp#Cq#Cr#Cs#Ct#Ct#Cu#Cv#Cw#Cx#Cy#Cz#CA#CB#CC#CD#CE#CF#CG#CH#CI#CJ#CK#CL#CM#CM#CN#CO#CP.22#CQ#CR#CS#CT#CU#CV#CW#CX#CY#CZ#C0#C1#C2#C3#C4#C5#C6#C7#C8#C9#D.#D##Da#Db#Dc#Dd#De#Df#Dg#Dh#Di#Dj#Dk#Dl#Dm#Dn#Do#Dp#Dq#Dr#Ds#Dt#Du#Dv#Dw#Dx#Dy#Dz#DA#DB#DC#DD#DE#DF#DG#DH.jB#DI#DJ#DK#DL.Pq", -"#DM#DM#DN#DO#DP#DQ#DR#DS#DT.zp#DU#DV#DW#DX.vH#DY#DZ#D0#D1#D2#D3#D4#D5#D6##d#D7#D8#D9#E.#E##Ea#Eb#Ec#Ed#Ee#Ef#Eg#Eh#Ei#Ej#Ek#El#Ei#Em#En#Eo#Ep#Eq#Er#Es#Et#Eu#Ev#Ew#Ex#Ey#Ez#EA#EB#EC#ED#EE#EF#EG#EH#EI#EJ#C0#EK#EL#EM.W0#EN#EO#EP#EQ#ER#ES.Ul#ET#EU#EV#EW#EX#EY#EZ#E0#E1#E2#E3#E4#E5#E6#E7#E8#E9#F.#F##F##Fa#Fb#Fc#Fd#Fe#Ff#Fg#Fh#Fi#Fj#Fk.Jz#Fl#Fm#Fn#Fo#Fp#Fq#Fr#Fs#Ft#Fu#Fv#Fw#Fx#Fy#Fz#FA#FB#FC#FD#FE#FF#FG#FH#FI#FJ#FK", -"#FL#FM#FN#FO#FP#FQ#FR#FS#FT#FU#FV#FW#FX.Da#FY#FZ.qI#F0#F1#F2#F3#F4#F5#F6#F7#F8#F9#G.#G##Ga#Gb#Gc#Gd#Ge#Gf#Gg#Gh#Gi#Gj#Gk#Gl#Gm#Gn#Go#Gp#Gq#Gr#Gs#Gt#Gu#Gv#Gw#Gx#Gy#Gz#GA#GB#GC#GD#GE#u..Lh.yQ#GF#GG#GH#GI#GJ#GK#GL#GM#GN#GO#GP#GQ#GR#GS#GT#GU#GV#GW#GX#GY#GZ#G0#G1#G1#G2#G3#G4#G5#G6#G7#G8#G9#H.#H##Ha#Hb#Hc#Hd#He#Hf#Hg#Hh#Hi#Hj#Hk#Hl#Hm#Hn#Ho#Hp.JF#Hq#Hr#Hs#Hs#Ht#Hu#Hv#Hw#Hx#Hy#Hz#j3#HA#HB#HC#HD#HE#HF#HG#HH#HI.Ta#HJ", -"#HK#HL#HM#HN#HO#HP#HQ#HR#HS#HT#HT#HU#HV#HW#HX#HY#HZ#H0#H1#H2#H3#H4#H5#H6#H7#H8#H9#I.#I##Ia#Ib#Ic#Id#Ie#If#Ig#Ih#Ii#Ij#Ik#Il#Im#In#Io#Ip#Iq#Ir#Is#It#Iu#Iv#Iw#Ix#Iy#Iz#IA#IB.qC#IC#ID#IE#IF#IG#IH#II#IJ#II#IK#IL#IM.rM#IN#IO.iz.iz#IP#IQ#IR#IS#IT.t5#IU#IV#IW#IX#IY#IZ#I0#I1#I2#I3#I4#I5#I6#I7#I8#I9#J.#J##Ja#Jb#Jc#Jd#Je#Jf#Jg#Jh#Ji#Jj#Jk#Jl#Jm#Jn#Jo#Jp#Jq#Jr#Js#Jt#Ju#Jv#Jw#Jx#Jy.R8#Jz#vy#JA#JB#a7#JC#JD#JE#JF#JG#JH#JI", -"#JJ#JK#JL#JM#JN#JO#JP#JQ#JR#JS#JT#JU#JV#JW#JX#JY#JZ#J0#J1#J2#J3#J4#J5#J6#J7#J8#J9#K.#K##Ka#Kb#Kc#Kd#Ke#Kf#Kg#Kh#Ki#Kj#Kk#Kl#Km#Kn#Ko#Kp#Kq#Kr#Ks#Kt#Ku#Kv#Kw#Kx#Ky#Kz#KA#KB#KC#KD#KE#KF#KG#KH#KI#KJ#KK#KL#KM#KJ#KN#KO#KP#KQ#KR#KS#KT#KU#KV#KW#KX#KY#KZ#K0#Kz#K1#K2#K3#K4#K5#K6#K7#K8#K9#L.#L##La#Lb#Lc#Ld#Le#Lf#Lg#Lh#Li#Lj#Lk#Ll#Lm#Ln#Lo#Lp#Lq#Lr#Ls#Lt#Lu#Lv#Lw#Lx#Ly#Lz#LA.IF#LB#LC#LD#LE#LF#LG#LH#LI#LJ#LK#LL#LM#LN#LO", -"#LP#LQ#LR#LS#LT#LU#LV#LW#LX#LY#LZ#L0#L1#L2#L3#L4#L5.TX#L6#L7#L8#L9#M.#Iy#M##Ma#Mb#Mc#Md#Me#Mf#Mg#Mh#Mi#Mj#Mk#Ml#Mm#Mn#Mo#Mp#Mq#Mr#Ms#Mt#Mu#Mv#Mw#Mx#My#ds#Mz#MA#MB#MC#MD#ME#MF#MG#MH#MI#dm#MJ#MK#ML#MM#MN#MO#MP#MQ#MR#MS#dh#MT#MU#MV#MW#MX#MY#MZ#M0#M1#M2#M3#M4#M5#M6#M7#M8#M9#N.#N##Na#Nb#Nc#Nd#Ne#mk#Nf#Ng#Nh#Ni#Nj#Nk#Nl#Nm#Nn#No#Np#Nq#Nr#Ns#Nt#Nu#Nv#Nw#Nx#Ny#Nz#NA#NB#NC#ND.f5#NE#NF#NG#NH#NI#NJ#NK#NL#NM#NN#NO#NP#NQ", -"#LQ#NR#NS#NT#NU#NV#NW#NX#NY#NZ#N0.qJ#N1#N2#N3#N4#N5#L6#N6#N7.w5#N8#N9#O.#O##Oa#Ob.8E.XA.Zh#Oc#Od#Oe#Of#Og#Oh#Oi#Oj#Ok#Ol.UV.WR#Om#On#.W#Oo#Op#Oq#Or.9f.5v.W8.W8.UU.Xp.2G#Os#Os#Ot.Xp.WM.XA#Ou#Ov.X##.X#Ow#Ox#Oy#Oz.Zh#OA.1V.2e#OB#OC#OD#.W#OE#.W#OF#OG#OH#b8#fm#fm#fm#OI#OJ#OK#OL.5w#do.Y9.WR.Yx.2e#.v#OM.W8.UU#n0.YO.Xp#ON#OO#OP#OQ#OR#OS#OT#OU#OV#OW#OX#OY#Fo#OZ#O0#O1#O2#O3#O4.f5#O5#O6.Gv#O7#O8#O9#P.#P##Pa#Pb#Pc#Pd#Pe", -"#Pf#Pg#Ph#Pi#Pj.IY#zQ#Pk.ue#Pl#Pm#Pn#Po#Pp#Pq#Pr#Ps#Pt#Pu#Pv#Pw#Px#Py#Pz#PA#PB#PC#PD.0d.0S#PE#PF#PG#PH#PI#PJ#PK#PL#PM#PN#PO.1V.YV#PP#PQ#PR.86#PS.Xp.YO.2F#bS.1Y#l6#df#PT#PU#PU#b8#ab.XA.VN#PV#PW#PX#.W#PY#PZ#P0#.W#OD#.W#P1#OE#.W#.W#.W#.W#P2#Om.Yx.WR#P3.Y9#P4#P5.5w#P6#P7#P8#P9.Yx#Q..YA.5e#Q##Qa.18.Zg.1V#k6#Qb.5x#Qc.YO.2G#Qd#Qe#Qf.ar#Qg#Qh#Qi#Qj#Qk#Ql#Qm#Qn#Qo#Qp#Qq#Qr#Qs.II.Kx.Op#Qt#Qu#Qv.4V#Qw#Qx#Qy#Qz#QA#QB#QC", -"#QD#QE#QF#QG#QH#QI#hB#t5#QJ.qE#QK.qB#QL.AI#QM#QN#QO#QP.sr.M9#QQ#QR#QS.k.#QT#QU#QV.8E.X#.Zg#QW#QX#QY#QZ#Q0#Q1#Q2#Q3#Q4#Q5.UU.Xo.0L#Q6#Q7#Q8#Q9#R.#R#.Xp#Ra.7#.VM.VM.VM.5R.WM.WM.W8#Rb#Rc.VN.9r#PW.W8.2G#Rd#Re#Rf.YX#Rg.YX.Xp.Xp.Xp#Rh.Xp.Xp.Xp.UU#Ri.XA.XA.XA.7A#h9.W8#Rj#Rk#Rl#Rm.XA.VM.8E.8E#PW#Rn.Zh.Zh#Ro#k6#k6#Rp.1V#Rq#Rr#Rs#Rt#Ru#Rv#Rw#Rx#Ry#Rz#RA#RB#RC#RD#RE#RF#RG#RH#RI#RJ#RK##g#RL#RM#RN#RO#RP#RQ#RR#RS#RT#RU#RV", -"#RW#RX#RY#RZ#R0.r4.ml#R1#R2.1D.cF.a#.n0.c0#R3.r8.ul#R4#R5.uo.Lb#R6#R7#R8#R9#S.#S#.8E#Sa#jJ#Sb#Sc#Sd#Se#Sf#Sg#Sh#Si#Sj#Sk.YX#Oc#Sl#Sm#Sn#So#Sp#Sq#Sr.YX.YO.7#.VM#Ss.VM#.0.3I#dv#.O.WM.WR#St.8E#Su.UU#Sv#Sw#Sx#Sy#Sz.Xp#Sr.Xp#SA#SB.YO.YO#SC.YO#SD.7A#SE#SF#nI.UV.UV#SG#SH#SI#SJ#SK#SL.VM#SM.VM.XA#SN#SO#SP#SQ#SR#b7#SS.Zh.Zh#ST#SU#SV#SW#SX#SY#SZ#S0#S1#S2.09#S3#S4#S5#S6#S7#S8#rZ#RJ#S9#T.#T##Ta#Tb#Tc#Td#Te#Tf#Tg#Th#Ti#Tj", -"#Tk#Tl#Tm.99#Tn#To#.a#Tp#Tq#Tr##L.oV#r7.G7#Ts#tZ.n0#Tt#Tu.a3#Tv#Tw#Tx#Ty#Tz#TA#TB#PW.VN.7z.YO#TC#TD#TE#s2#TF#TG#TH#TI#TJ.9g.1V.0z.0S#TK#TL#TM#TN#TO#TP#TQ#TR#TS#TT#TU.Zh.Zg#my#TV.8G#TW#TX#TY#TZ#TR#T0#T1#T2#T3#b2#T4#qW#T5#T6#T7.WR.WR.WR.WR#T8#T9#U.#U##Ua#Ub#Uc#Ud#Ue#Uf#Ug#Uh.W8.WM.7A.Y9#kQ#Ui#Uj#Uk#rm#Ul#Um.Yx.0x#Un.YA#.1#Uo#Up#Uq#Ur#Us#Ut#Uu#Uv#tC#Uw#Ux#Uy#Uz#UA#UB#UC.Ix#UD#UE#UF#UG#UH#UI#UJ#UK#UL#UM#UN#UO#UP", -"#UQ#UR#US#UT.gZ.qO.8y#Tq#UU#oG#oG#UV.94.Uu#hE#UW#UXQtA#UY.vK#UZ#U0#U1#U2#U3#U4#U5.VN.XA.WM#U6#U7#U8#U9#V.#KI#V##Va#Vb#Vc.YO#.W#Vd#Ve.5Z#Vf#Vg#Vh#Vi#Vj#Vk#Vl#Vm#Vn#Vo#Vp#Vq.7H#Vr#Vs#Vt#Vu#Vv#Vw#Vx#Vy#Vz#VA#VB#VC#VD#VE#VF#VG#VH.WR#VI#VJ.YA.WR.1X#VK#VL#VM#VN#VO#VP#VQ#VR#VS#VT.YO#VU.W8.WM#jm#VV#VW#VX#VY#VZ#V0#V1.Yx.0x.WR#V2#V3#V4#V5#V6#V7#V8#V9#W.#W##Wa#Wb#Wc#Wd#We#Wf#Wg#DD#Wh#Wi#Wj#Wk#Wl#Wm#Wn#Wo#Wp#Wq#Wr#Ws#Wt", -"#Wu#Wv#Ww#vV#Wx#Wy.OK#lP#Wz#WA#WB#WC.Fg#WD#WE.xF#WF#WG#fV#WH#WI#WJ#WK#WL#WM#WN#WO.XA.WR.4q.Y9.4q#WP#WQ#WR#WS#WT#WU#WV#WW.WM.2e.2e.Yx#kY#WX#WY#WZ#W0#W1#W2#W3#W4#W5#W6.W8.WR#W7.YA.WR#W8#W9#X.#X##Xa#Xb#Xc#Xd#Xe#Xf#Xg#Xh#Xi#Xj#Xk#jy.WR.5Z.XA.WR.Y9#Xl#Xm#Xn#Xo#Xp#Xq#Xr#Xs#Xt#Xu.YO.UU.WM.WM.WN#Xv#Xw#Xx#Xy#Xz#XA.Yx#b6#l4.WM#n3#XB#XC#XD#XE#XF#XG#XH#XI#XJ#XK#XL#XM#XN#XO#XP#XQ#XR#XS#XT#XU#XV#XW#XX#XY#XZ#X0#X1#X2#X3#X4", -"#X5#X6#X7#X8.xo#X9#Y.#hr#Y##Ya#Yb.8z#Yc#Yd#Ye.eC#Yf#Yg.KX#Yh#Yi#Yj#Yk#Yl#Ym#Yn#Yo.WR.WM.4q.WR#e7#Yp.2e.Zf.W8.YO#Yq#Yr.W8#aa.2e.Yx.Y9.5v#Ys#Yt#W2#Yu#Yv#Yw#Yx#Yy#Yz#YA.YO.WR.VM.VM.VM#YB#YC#YD#YE#YF#YF#YG#YH#YI#YJ#YK#YL#YM#YN#YO.9f.WM.XE.XA.VM.WR#YP#YQ#YR#Yx#YS#YT#YU#YV#YW#YX.YO.UU.WM.WM.WN#YY#YZ#.t#Y0#Y1#Y2.2e#h7.W8#Y3.YO#Y4#Y5#Y6#Y7#.7#Y8#Y9#Z.#Z##Za#Zb#Zc#Zd#Ze#Zf#Zg#Zh#Zi#Zj#Zk#Zl#Zm#Zn#Zo#Zp#Zq#Zr#Zs#ZtQt#", -"#Zu#zQ#x4#Zv.vq.eK.xQ.OJ.eF#Yd#hs.gE.ag.km#Zw#Zx#Zy.eg#Zz#ZA#ZB#ZC#ZD#ZE#ZF#ZG#ZH.XA.WM#hR.WR.WR.X..Yx.Y9.W8.YX.YO.UU#jz#.Y.X#.X##gy.5v#ZI#ZJ#ZK#ZL#ZM#ZN#ZO#ZP#ZQ#ZR.Xp.WM#e7.YA.XA#ZS#ZT#ZU#ZV#ZW#.V#ZX#ZY#ZZ#Z0#Z1#Z2#Z3#Z4#YO.9f.WM#gi.WR.5Z.Y9#Z5#Sy#Z6#Z7#Z8#Z9#YU#0.#0##Xu.UU#df.Y9.Y9.7A#0a.WM.WM#0b.2e.2e#0c.Yx#0d.UU#0e#0f#0g#0h#0i#0j#0k#0l#0m#0n#0o#0p#0q#0r#q##0s#0t#0u#0v#0w#0x#0y#0z#0A#0B#0C#0D#0E#0F#0G#0H", -"#0I#0J.aL#0K#0L#0M.kP.OJ#0N#0O#0P.1I#0Q#0R#0S#0T.n0#Px#0U#0V#0W#0X#0Y#0Z#00#01#02.7A.W8.XF.WR.WR.WR#bA.7#.W8.3P.3P.W8#03#.Y.X#.X##e6#T9#04#05#06#07#08#09#09#1.#1##YN.YX.W8#e7.X..WR#1a#1b#.k#1c#1d#1e#1f#1g#1h#1i#1j#1k#1l#1m#.i#U6.WM#gi.WR.5Z.Y9#Z5#1n#Z6#Z7#Z8#1o#1p#1q#1r#1s.W8#aa.Yx.Yx.WR.Y9.WM#1t.WM.Yx#1u#1v.3H.W8.9f#1w#rt#1x#1y#1z#1A#rD#1B#1C#1D#1E#1F#1G#1H#1I#1J#1K#1L#1M#1N#1O#1P#1Q#1R#1S#1T.XL#1U#1V#JT.xt", -".WC#1W.aIQtE#kr.QA.kP.1E.MX#1X#1Y#1Z.Bw#10#11#12#13#14#15#16#17#18#19#2.#2##2a#2b#l5.W8#kY.WM.W9.XA#2c.WR.W8.UU#T9#bM.WR#PX.X#.Zi#PX#jz#2d#2e#2f#2g#2h#2i#2j#2k#2l#2m.2G.UU#aa.2e.WR#2n#2o#.k#1c#2p#l3#2q#2r#2s#2t#2u#2v#2w#2x#2y#2z.WM.4q.WR.5Z.Y9#2A.82#2B#2C#2D#2E#2F#2G#2H#2I.WM.Zi.X#.X#.X..Y9#hR#2J.WM#jA#V1.3H#2K#nJ#2L#2M#2N#2O#2P#2Q#2R#2S#2T#2U#2V#2W#2X#2Y#2Z#20#21#22.4S#23#24#25#26#27#28#x8#29#3.#3##3a#3b#3c", -".oV.sw#3d.UC#3e.Wx.kP.r2#3f#3g#3h.9R#3i#3j#3k#3l#3m#3n#16#3o#3p#3q#3r#3s#3t#3u#3v#h9.W8#SD#T9#3w#3x#3y#3z#3A#3B#3C#3D#3E#e7#3F.0x#Yp#jA#3G#3H#3I#3J#3K#3L#3M#3N#3O#3P.YX.W8#aa.X#.Yx#YY#3Q#3R#1c#3S#3T#3U#3V#3W#3X#3Y#3Z#30#31#32#2z.WM#ax.WR.Y9.WM#33#34#35#36#37#38#39#4.#4##4a.3H.0x.Zi.0x.X#.4q.WM.WM#4b.7A#4c#4d#4e#4f#4g#4h#4i#4j#4k#4l#4m#4n#4o#4p#4q#4r#4s#4t#4u#4v#4w#4x#4y#4z#25#4A#4B#4C#4D.Lj#4E#3#.D##4F#4G#4H", -"#4I#4J.Fg#lQ.un.oK.sv#4K.uc#4L#4M.Lg#4N#4O#4P#4Q#4R#4S#4T#4U#4V#4W#4X#4Y#4Z#40#41#md.UU.UU#42#0a#43#44#45#46#47#48#49#5..XA#3F.0x#Yp.5p#5##5a#5b#5c#5d#5e#5f#5g#5h#5i.YO.WM.0x.Zi.X.#5j#5k#5l#1c#.n#5m#5n#5o#5p#5q#5r#5s#5t#5u#5v.0B.W8#gy.Yx.Yx.7z#5w#5x#5y#ZO#5z#5A#5B#5C#5D#5E.3H#5F.0y.0y.X##5G#5H#5I#5J#5K#5L#5M#5N#5O#5P#5Q#5R#5S#5T#5U#5V#5W#5X#5Y#5Z#50#51#52#53#54#55#56#57#58.Yc#59#6.#6##6a.E8#6b#6c#6d.cI.em#6e", -"#6f#6g.Fg#lQ.cF.sv#6h#6i#6j#6k#6l#6m#6n#6o#6p#aH#6q#6r#6s#6t#6u#6v#6w#6x#6y#6z#6A#SF.UU#dN#6B#6C#6D#6E#6F#6G#6H#6I#6J#6K.XA.5d#PX#6L#6M#6N#5a#6O#6P#W2#6Q#6R#6S#6T#6U.W8.WR.0x.0x.5d#W8#6V#6W#ZV#6X#6Y#6Z#60#61#62#63#64#65#66.54.0B.W8#df.Yx.Yx.WM#5w#5x#67#ZO#68#5A#5B#69#7.#7#.WM.Zi.Zi.Zi.X..1Z#7a#7b#7c#7d#7e#7f#jw#Nf#7g#7h#7i#vj#7j#7k#7l#7m#7n#7o#7p#7q#7r#7s#RQ#7t#7u#7v#7w#7x#7yQtS#7z.e1#7A.D##7B#6d#7C#7D.OC.kN", -"#7E#7F#7G#7H.vr.MJ#7I#7J.i2#7K#7L#7M#7N#7O.hL#7P#7Q#7R#7S#7T#7U#7V#7W#7X#7Y#7Z#70.WM#b8#71#hK#72#73#74#o7#75#76#77#78#79.XA.5d#8.#3F#jS#8##5a#8a#8b#8c#8d#8e#8f#8g#8h.7A#8i.5d.4f.5d#8j#8k#8l#8m#8n#8o#8p#8q#8r#8s#8t#8u#8v#8w#8x#8y#8z.WM#8A#ax.WM#8B#8C#8D#8E#8F#8G#8H#8I#8J#1s.W8#jB.X#.X#.5p#8K#8L#8M#8N#kT#8O#cY#8P#8Q#8R#8S#8T#8U#8V#8W#8X#8Y#8Z#80#S0#81#82#83#84#85#86#87#88#89#9.#9##9a#9b#9c#7I#9d#9e#9f#9g#9h#0Q", -"#9i#kv.Yk.zD#9j#9k#9l.kW#9m#9n#9o#9p#9q#9r#9s#9t#9u#9v#9w#9x#9y#9z#9A#9B#9C#9D#9E.WM#9F#9G.Xo#9H#Rl#9I#9J#3T#9K#9L#9M#9N.XA.VM#3F.5d#9O#9P#9Q#9R#9S#9T#sZ#9U#9V#8g#9W#h9.XA.5d#9X#9Y#9Z#90#91#92#93#94#95#96#97#98#99a..a.#a.aa.ba.c.XF.WM.Y9.Y9a.da.ea.fa.ga.ha.ia.ja.ka.la.ma.n.YO.WN.Y9.WR.WMa.oa.pa.qa.ra.sa.ta.ua.va.w#dTa.xa.ya.za.Aa.Ba.Ca.Da.Ea.Fa.Ga.Ha.Ia.Ja.Ka.L.yMa.Ma.Na.Oa.Pa.Qa.Ra.Sa.Ta.Ua.V#vYa.W#9g.a1.Wy", -"a.Xa.Y.eL.IZa.Za.0a.1a.2a.3a.4a.5a.6a.7a.8a.9a#.a##a#aa#ba#ca#da#ea#fa#ga#ha#ia#j.7A.UU.5y.3Ta#ka#la#ma#na#oa#pa#qa#ra#s.WQa#ta#u.XA.3I#VB#q2a#v#5Ra#wa#xa#ya#za#Aa#B.7A.XAa#C.8E.8Ea#Da#Ea#Fa#Ga#Ha#Ia#Ja#Ka#La#M.b3a#Na#Oa#Pa#Q.Xp.W8.1Y#l5a#R.WMa#Sa#Ta#U#Z8#8Ga#Va#Wa#Xa#Ya#Za#0.UU.W8a#1a#2a#3a#4a#5a#6a#7a#8a#9aa.aa#aaaaabaacaadaaeaafaagaahaaiaajaakaal.Pvaamaanaaoaapaaqaaraas#FNaataauaav#USaaw#v1aax.og.iR.gqaay", -"aaz#IAaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaPaaQaaRaaSaaTaaUaaVaaWaaXaaY#o4#SD#fm.1VaaZaa0aa1aa2aa3aa4aa5aa6aa7.WR.XAaa8.XAaa9ab.ab#abaabbabcabdabeabeabfabgabh.WRabi.XAabj#7cabkabl#9T.7Uabmabnaboabpabqabrabs.MTabtabu.YX.UU#hR.WR.WR#kRabvabwabxabyabzabAabBabCabDabEabFabG.YO.Xp.XpabHabIabJabKabL#94abMabNabOabPabQabRabSabTabUabVabWabXabYabZab0.Pvab1ab2ab3.NEab4ab5ab6ab7ab8ab9ac.ac#.cO#v1.gW.og.cH.eKaca", -"acbacc.qJacdaceacfacg.9Hachaciacjackaclacmacnacoacpacqacracsactacuacvacwacxacyacz.5Z.UUacAacBacCacDacEacF#2O#7hacGacHacI#jHacJ.8E.WRacKacLacM#sXacNacO#ZZacPacQacRacS.2G.Xp.W8.WM.W8#bKacT#5yacUacVacWacXacYacZac0ac1ac2ac3ac4ac5ac6.Zn.7A.7##o4.WMa#Sac7#67#YJac8ac9ad.ad#adaadb.Vf#Otadc.Vfaddadeadf#4jadgadhadiadjadkadladmadnadoadpadqadradsadtaduadv#qfadw.ZUadxadyadzadA#HLadBadCadDadEadF#DTadG.cO.8taax.aLadH#QKadI", -"adJadKadLadMadNadOadPadQadR.dkadSadTadUadVadWadXadYadZad0ad1ad2ad3ad4ad5ad6ad7ad8ad9ae.ae#aeaaebaecaedaeeaefaegaehaeiaejaekaelaemaenaeoaepaeqaeraesaet#Z1aeuaevaewaexaeyaezaeAaeBaeCaeDaeEaeF#ZPaeGaeHaeIaeJaeKaeL.nWaeMaeNaeOaePaeQaeRaeS#jGaeTaeUaeVaeWaeX#Z1aeYaeZae0ae1ae2ae3ae4ae5ae6ae7ae8ae9af.af##ta#t.afaafbafcafdafeaffafgafhafiafjafkaflafmafnafoafp.fBafqafrafsaftafuafvafwafx#..afyafzadGafA.8taax#7D.i0.xmafB", -"afCafDafEafFafGafHafIafJafKafLafMadTafNafOafPafQafRafSafTafUafVafWafXafYafZaf0af1af2af3af4af5af6af7af8af9#trag.ag#agaagbagcagdageagdagfaggaghagiagjagkaglagmagnagoagpagqagragsagtaguagvagwagxagyagzagAagBagCagDagE.dHagFagGagHagIagJagKagLagMagNagOagPagQagR#5zagSagTagUagVagWagXagYagZag0ag1ag1ag2ag3ag4ag5ag6ag7ag8ag9ah..fKah#ahaahb#pYahcahdaheahfahgahhahiahjahk#UOahlahmahnahoahpahqahr.zrafAac#ac##z1#9e.v0.su.qB.xl", -"ahsahtahuahvahwahxahyahzahAahBahCahDahEahFahGahHahIahJahKahL.z5ahMahNahOahPahQahRahSahTahUahVahWahXahYahZah0ah1ah2ah3ah4ah5ah6ah7ah8ah9ai.ai#aia#5AaibaicaidaieaifaigaihaiiaijaikailaimainaioaipaiqairaisaitaiuaivaiwaixaiyaizaiAaiBaiCaiDaiEaiFaiGaiHaiIaiJaiKaiLaiMaiNaiOaiPaiQaiRaiSaiTaiUaiVaiWaiXaiYaiZ#xkai0ai1ai2ai3ai4ai5ai6#zuai7ai8ai9aj.#Zq.Sraj#ajaajbajcajdajeajfajgajhajiajjajkajlajm#z1a.V#9e#7D.guajn.n0ajo", -".8aajpajqajrajsajtajuajvajwajxajyajzajAajBajCajDajEajFajGajHajIajJajKajLajMajNajOajPajQajRajSajT.6d#YyajUajVajWajXajYajZaj0aj1aj2aj3aj4aj5#yOaj6aj7aj8aj9ak.ak#akaakbakcakdakeakf#yHakgakhakiakjakkaklakmaknakoakpakqakraksaktakuakvakwakxakyakzakAakBakC#uLakDakEakFakGakHakIakJakKakLakMakNakOakPakQakRakQakSakTakUakVakWakXakYakZak0ak1ak2ak3ak4.Kd.Kbak5ak6ak7ak8ak9al.al#alaalbalcaldaleQtH#4H.aKalf.DuafBalg.kj.zm.zz", -"alh.xqalialjalkallalmalnaloalpalqalralsaltalualvalwalxalyalzalAalBalCalDalEalFalGalHalIalJalKalLalMalNalOalPalQalRalSalTalUalValW#xbalXalYalZ#uTal0al1al2al3al4al5al6#ECal7al8al9am.am#amaambagUamcamd#y9ameamfamgamhamiamjamkamlammamnamoampamqamramsamt#ySamuamvamwamx#EzamyamzamAamBamCamDamEamFamGamHamIamJamKamLamMamNamOamPamQamRamSamTamUamV.Kg.NG#Wpak7amWamXamYamZam0#HTam1am2.KNam3am4.v0am5.DuafB.c2.ei#UY#a8#cH", -"am6am7.MM.kUam8am9an.an#anaanbancandaneanfanganhanianjankanlanm.fFannano.xY.c0anpanqanransantanuanvanwanxanyanzanAanBanCanDanEanFanGanHanIanJanKanLanManNanOamfanPanQanRanSanTanUanVanWanXanYanZan0aifan1an2an3an4an5an6an7an8an9ao.ao#aoaaobaocaodaoeaofaogaohaoiaojaokaolaom.KR.mL#nnaonaooaopaoqaoraosaotaouaovaowaoxaoyaozaoAaoBaoCaoDaoEaoF.EzaoG.IgaoHaoIaoJaoK.v7aoLaoMaoN.qF.kN.a1aoOaoP.OCaoQ.vq.r3.eKaoR.cd.rT.SE", -"aoSaoTQtDaoU#HJaoVaoWaoXaoYaoZao0ao1ao2ao3ao4ao5ao6ao7ao8ao9ap.ap#apaapbapcapdapeQtH#cRapfapgaphapiapjapk#y9aplapmapnapoappapqaprapsaptapuapvapwapxapyapzapAapBapCapDapEapFapGapHapIapJapKapLapMapNapOapPapQapRapSapTapUapVapWapXapYapZ.bHap0ap1ap2ap3ap4anBap5ap6ap7ap8ap9.E5aq..kKaq##vUaqaaqbaqcaqdaqeaqfaqg#AWaqhaqiaqjaqkaqlaqmaqnaqoaqpaqq.Ez#WpaqraqsaoIaqtaquaqvaqwaqx.oF.Fo.c#.SFaqy.1E.aJa.Wa.Waqz.iS.a1aqA.By.oc", -"aqBaqC#baaqDa.PaqEaqFaqGaqHaqIaqJaqKaqLaqMaqNaqOaqPaqQaqRaqSaqTaqUaqVaqWaqXaqYaqZ#FTaq0aq1aq2aq3aq4aq5aq6aq7aq8aq9ar.ar#araaomarbarcardarearfargarhariarjarkarlarmarnaroarparqarrarsartaruarvarwarxaryarzarAarBarCarDarEarFarGarHarIarJarKarLarMarNarOarParQarRarSarTarUarVarWarXarY.D.#NZarZar0ar1ar2ar3ar4ar5ar6#E2ar7ar8ar9as.as#asa#Wmasbasc.Nvasd.dw.Nn.CBaseasfadLasgashasi.4Oasjaskasl.ki.OCasmasm#0Kasn#9g#9haso#9h", -"aspasqasrassastasuasvaswasxasyaszasAasBasCasDasEasFasGasHasIasJasKasLasMasNasOasP#BQasQ#BTasRasSasTasUasVasWasXan5asYasZas0as1as2as3as4as5as6as7as8as9at.at#ataatbatcam5atdateatfatgathatiatjatkatlatmatnatoatpatqatr.LKatsattatuatvatwatxatyatz.9SatAatBatC#GIatDatEatFatGatHatIatJatKatL.E8atMatNatOatP#4ratQatRatSatTatUatVatWatXatYatZat0at1.brat2at3at4.dw.P8at5at6at7.Huat8at9.u.au.au#aua.em#vZaubaub#0Kauc#6e.zoaud", -"aueaufaugauhauiaujaukaul.pHaum.HRaunauoaupauqaurausautauuauvauwauxauyauzauAauB.euauCauD#x0auEauFauGauHauHauIauJ#89auKauLauMauNauO#UNauPauQauRauSauTauUauVauWauXauYauZ#t9au0au1au2au3au4au5au6au7au8asYau9av.av#avaavbavcavdave.Glavfavgavh.Mg.H8aviavjavkavlavmavnavoavpavqavravsavtavuaqTavvavw.NZaj#avx#oNavyavzavAavz.EzavBavCavDavEavFavGavHavIavJavKavLavMavNavO.QxavPavQ#6#avRavSavT.E6avUavVavWavWavXavX.cJavY.zHavZ", -"av0av1av2av3av4av5.#qav6av7av8av9aw.aw#awaawbawcawdaweawfawgawhauzawiawjauAawkawl#zSawmawnawo#z0awpawqawqawrawsauLawtawuawvawwawxawyawzawAawBawCawDawEawFawGawHawIawJawKawLawMawNawOawPawQawRawSawTawUawVawWawXahtawYawZaw0aw1aw2aw3aw4aw5aw6aw7aw8aw9ax.ax#axaaxbaxcaxdaxeaxfaxgaxhaxiamkaxjaxk#OTaxlaxmaxnaxo.Ih.Az.L8axpaxqaxraxsaxtavFaxuaxvaxwaxxaxy.NNaxzaxAaxBaxCaxDaxEaxF.ahaxGaxHaxI#6jaxJaxKaxKaxKaxKaxJ.etaxLaxM", -"axNaxOaxPaxQaxRaxSaxTaxUaxVaxWaxXaxYaxZax0ax1#ZBax2.KSax3ax4ax5.gyax6ax7ax8ax9ay.ay#ayaaybaycaydawPayeayf.cWaygayhayiayjaykaylaymaynaymaynayoaypayqayraysaytayuayvayw.uaayxayyayz.r3.kXayAayBayCayD.DHayEayFayGayH#F1ayIayJayKayLayMayNayOayPayQayRaySayTayUayVayWayXayYayZay0ay1ay2ay3ay4ay5ay6ay7ay8ay9az.az#adMazaazb.NZazcazdazeazfazgazhaziazjazkazlazmaznazoaysazpazq#kxazrazsazt#BY#BY#v3azuazvazwazxanR.Jiazy.tsazz", -"azAazBazCazDazEazFazGazHazIay5azJazKazLazMazNazOazPazQazRazSazTazUazVazWazXazYazZ.6Qaz0az1az2#Wzaz3az4.Du.Dt.Bwaz5az6az7az8az9aA.aA#aAaaAbaAcaAdaAeaAfaAg.dEaAh.iGaAiaAjaAkaAlaAmaAnaAo.vJaApaAqaAraAsaAtaAuaAvaAwaAxaAyaAzaAAaABaACaADaAEaAFaAGaAHaAIaAJaAKaALaAMaANaAOaAPaAQaARaASaAT.M2aAUaAVaAWaAXaAYaAY.y8aAZaA0aA1aA2.w4aA3aA4aA5aA6aA7aA8aA9.79aB.aB#.y8.sraBaaBbaBcaBdaBeaBfaBgaBhaBi.eVaBjaBkaBlap9aBmaBn#N0.qJaBo", -"aBpaBqaBraBsaBtaBuaBvaBwaBxaByaBzaBAaBBaBCaBDaBEaBFaBGaBHaBIaBJaBKaBLaBMaBNaBOaBPaBQ.TzaBRaBSaBTaBUaBUaBVaBWaBXaBYaBZaB0aB1aB2aB3aB4aB5aB6aB7aB8aB9aC.aC#aCaaCbaCcaCdaCeaCfaCgaChaCiaCjaCkaClaCm#IIaCnaCoaCpaCqaCraCsaCtaCuaCvaCwaCxaCyaCzaCA.y5aCBaCCaCDaCEaCFaCGaCHaCIaCJaCKaCLaCMaCNaCOaCPaCQaCRaCSaCTaCRaCUaCVaCWaCWaCXaCYaCZaC0aC1aC2aC3aC4aC5aC6aC7aC8aC9aD.aD#aDaaDbaDcaDdaDeaDfaDgaDhaDiaDjaDkaDlaDmaDnaDoaDpaDqaDr", -"aDsaDtaDuaDvaDwaDxaDyaDzaDAae2aDBaDCaDDaDEaDFaDGaDHaDIaDJaDKaDLaDMaDNaDOaDPaDQaDRaDSaDTaDUaDVaDWaDXaDYaDZaDZaD0aD1aD2aD3aD4aD5aD6aD7aD8aD9aE.aE#aEaaEbaEcaEdaEeaEfaEgaEhaEiaEjaEkaElaEmaEnaEoaEpaEqaEraEsaEtaEuaEvaEwaExaEyaEzaEAaEBaECaEDaEEaEFaEGaEHaEIaEJaEKaELaEMaENaEOaEPaEQaERaESaETaEUaEVaEWaEXaEYaEZaELaE0aE1aE1aE2aE3aE4aE5aE6aE7aE8aE9aF.aF#aFaaFbaEZaFcaFdaFeaFfaFgaFhaFiaFjaFkaFlaFmaFnaFoaFpaFqQtV#sbaFraFsaFt", -"aFuaFvaFwaFxaFyaFzaFAaFBaFCaFD.Xp.W8aFE#b4.WR.XAaFF.8EaFGaFHaFIaFJaFKaFLaFMaFNaFO.5Z.VMaFP.VM.XA.0xaFQ#5F.Zi.1VaFR#PT.YO.XpaFSaFTaFUaFVaFWaFX.Vg.UUaFY#8z#U6.UU.UU#df.X#.0uaFZaF0.0y.2eaF1aF2aF3aF4aF5aF6.VgaF7.YX.YXaF8.W6aF9aG.aG#aGaaGbaGcaGdaGeaGfaGg.YO.YO.UUaGhaGiaGj#gdaGk#mvaGl#fmaGm#mv.5S.VN.VM.WR.Yx.YxaFRaFR.UU.UUaGn#nLaGoaGpaGq.9f.7#.WR.WR.5d.WR.Yx.Yx#0b#OF#dN#fm#fmaGraGsaGtaGuaGvaGwaGx.Bk.QRaGy.Fc#tZ.co", -"aGzaGAaGBaGCaGDaGEaGFaGGaGHaGIaGJaGK.Xa.Yx.W8.4q.3x.VN.XAaGLaGMaGNaGOaGPaGQaGRaGS.VM.VNaGTaGU.0e.YR.YRaGV.0e.0y.Zi.X#.Yx#me#gpaEhaGWaGXaGYaGZaG0.Yx.YRaG1.Y9.WM.Y9#.Y.X#aGVaG2aG3aG4aG5aG6aG7aG8aG9aH.aH#aHaaHbaFYaHc.WM.YOaHdaHeaHfaHgaHhaHiaHj#0faHk.WM.WMaHlaHm.5waHnaHoaHpaHqaHr#OC#.W#.W.Yx.XA.8E.5d.X#.Zi.Zg.Zg.Zh#.WaHmaHs.7xaHtaHuaHvaHw.Y9.Zh.0f.0e.Zh.X#.X#.X#.2e.2e.2eaHxaHy#.Y.2caHzaHAaHBaHCaHDaHEaHF.gHaGyalg", -"aHGaHHaHI.KWaHJaHKaHL.XpaHM.0z.0L.0LaHNaHO#mA.7zaHP.0y#mzaHQaHRaHSaHTaHUaHVaHWaHX.YO.W8.1V#.f#PQ.ZiaHYaGU.4f#PX.5p#jA#ai.5v.XpaHZaH0aH1aH2aH3#Ot#jA#jR.WR.WM.W8aH4#jy.Y9.X.aH5aGUaH5aH6.WR.W8aH7aH8aH9aI.#bF.Zh.0y.18.Zg.3H#bIaI#aIaaIbaIcaIdaIeaIfaIg.VM.XA#gi.WMaHbaIh.6#aIiaIja.d.WR.XAaIk.VN.XA.XA.WR#e7.0i#il#b7#mv.XpabGaIlaImaInaIoaIpaIq.XpaIraIs.W8.W8#dgaFY.WR.0saItaIk.XA.VM.VM.VM.2faIuaIvaIwaIxaIyaIzarraIAaIB", -"aICaIDaIEaIFaIGaIHabG#de.18.YVaIIaIJaIKaILaIM#jf.ZgaIN.5y.YXaIOaIPaEnaIQaIRaISaITaIUaGl#Vs#QW.3TaIVaIWaIXaemaIYaIZaI0aI1aI2aI3aI4aI5aI6aI7aI8aI9.WM.X#.Y9#h8aJ.aJ#aJaaJbaJcaJd.YzaJe.WR.WRaJf.UUaJgaJh#SOaJiaJj.0y.0uaJk#.XaJlaJmaJnaJoanFaJpaJqaJraJs.9r#aw#jb.W8aJtaJuaJvaJwaJx.8R.WR#awaJy.XAaJzaJAaJBaJCaJDaJEaJFaJGaJHaJIaJJaJKaJLaJMaJNaJO.YXaJP.Xp.YOaJQaJRaJSaJTaJUaJV#l5.XAaJW.VM.VMaJXaJYaJZaJ0aJ1aJ2aJ3aJ4aJ5aJ6", -"aJ7#BQ.qd.BlaJ8aJ9aK..Y9aK###QaKaaKbaKc#MPaKdaKe#.raKf.3H.W8aKg.2maKhaKiaKjaKkaKl#U6#0d.3H.ZhaKmaKnaKoaKpaKqaKraKsaKtaKuaKvaKwaKxaKyaKzaKAaKB.YX.WM#e6.Y9#jIaKCaKDaKEaKFaKGaKHaKI#kG.Y9aKJ.Y9.2faKKaKLaKMaKNaKO.WR.WR.16#Om.5waKPaKQaKRaKSaKTaKUaKV.XA.XAaKW.UU.YOaKXaKYaKZaK0aK1.UU#kQ.Y9.WRaK2aK3aK4aK5aK6aK7aK8aK9aL.aL#aLaaLbacMaLcaLdaLeaLf.UUaLg.5v.UUaLhaLiaLjaLk#rmaLlaLm.W8.7A#bSaIt.W8aLnaLoaLpaLqaLraLsaAmaLtaLu", -"aLva.SaLwaLxaLyaLz.YOa.d#Qb.3FaLAaLBaLCaLDaLEaLFaLGaLHaLIaLJaLKaLLaLMaLNaLOaLPaLQ.WM#aj.Y9#.YaLRaLSaLTaLUaLVaLWaLX#bKaLYaLZaL0aL1aL2aL3aL4aL5.YX.WNaL6.Y9.4qaL7aL8aL9aM.aM#aMaaMb.WM.WM#jA.Yx.WMaMcaMdaMeaMfaMg.WR.7#.WR.2e#k0aMhaMiaMjaMkaMlaMmaMn.WR#o4.W8.YOaMoaMpaMqaMraMsaMt.YO#eQ#gy.Zi#6MaMuaMvaMwaMxaMyaMzaMAaMBaMCaMDaMEaMFaMGaMHaMIaMJ.5caFY.W8.UUaMKaMLaMMaMNaMOaMPaMQaMR.W8.WM.WMaMSaMTaMUaMVaMWaMXaMYaMZaM0aM1", -"aM2aM3aM4au1aM5aM6aM7.YX.WMaM8.2eaM8aM9aN.aN#aNaaNbaNcaNdaNeaNfaNgaNh#eHaNiaLPaNj.WM#df#gyaG1aNkaNlaNmaNnaNoaKLaNpaNqaNraNsaNtaNuaNvaNwaNxaNy.2G#jz#av.Y9.Y9aNzaNAaNBaNhaNCaNDaNE#kQaHc.Y9.YxaNFaNGaNHaNIaNJaNK#jb#o4.WR.2eaNLaNMaNNaNOaNPaNQaNR#bl.WR.0s.W8.UUaHtaNSaNTaNUaNVaNW.UU#dg#ax#d##6MaNXaNYaNZaN0aKqaN1aeVaeVaN2aN3aN4aN5aN6.63aN7#pF.WM.Y9.WM#nR#psaN8aN9aO.aO##5waOa#ak.W8.WM.WMaHbaObaOcaOdaOeaOfaOgaOhaOiaOj", -".RxaOkaOlaOmaOnaOoaOp.Vg.WM.5d#9XaOq.XA.WM.Xp#gVaOraOsaOtaOuaOvaOwaOxaOyaOzaKEaOA.WM.WM#ax.Yx#T8aOBaOCaODaOEaOFaOGaOHaOIaOJaOKaOLaOMaONaOOaOP#Rg.WM.Yx.Y9.Y9aOQaNZaORaOSaOTaOU#8z.WN#deaOV.Yx#jIaOWaOXaOYaOZaO0aO1.XE.WR#Y2.Zh.3FaO2aO3aO4aO5aO6.7A.XA.WR.W8aO7aO8aO9aP.aP#aPaaNW.UU#eQ#ax#d#.YxaPbaPcaPdaPeaPfaPgaPhaPiaPjaPkaPlaPmaPnaPoaPpaPq.WM.Y9.Y9#jIaPraPsaPsaPtaPu#XvaPv.W8aPwaPx#jA.W8aPyaPzaPAaPBaPCaj7aPDaPEaPF", -"aPGauKaPHaPIaPJaPKaPLaM7.WM.VNaPM.3w.8E#b4.YX.2GaPN.Yx#jAaPOaPPaPQaPRaPv#pfaORaOA.WM#df#jA.Yx.Y9#mu.YO.YO.YO.YO.Xp.Xp.XpabGaPSaPTaPUaPVaPWaPX.Xp#aiaPY.Y9.Y9aPZ#ivaP0aP1.UU.UU#jm.WM.WM.Y9.YxaP2aP3aP4aP5#6WaP6aP7.XE.WPaP8.Zh#SSaP9aQ.aQ#aQaaQb#o4#V2.WR.7AaQcaQdaQeaQfaQgaQhaK1.UU.WN#gy.2e.Yx.1X#T9.W8.W8.W8.5c.2FaQi.UU.2faQjaQkaQlaQmaQnaQoacBaHy.Y9.WM.WMaQpaQqaQr#Yr#T9.W8.WM.WM.Y9#dwaQsaQtaQuaQvaQwaQxaQyaQzaQAaQB", -"aQCaQDaQEaQFaQGaQHaQIaQJ.5c.VN#PD#.e.8E.WO.Vf.2G.W8aHyaQK.Y9aQLaQMaQNaOzaPfaQOaQP.WM#aj#gj.Yx#ax.W8.YOaQQaQQac6.YOabG#Sz.XpaQRaPTaLYaQSaQTaQUaQV.WM#.Y.Y9#o0.W8.W8#mf.UU.UU.9n.W8.WNaQW#bTaQXaQYaQZaQ0aQ1aQ2aQ3aQ4aQ5.WR#av.Zh.XaaQ6aQ7aQ8aQ9aR..WRaR#.WR.7AaRaaRbaRcaRdaReaRfaRg.UU.7z#gy.2e.Yx.WM.UU#T9aHb#T9.W8.UU.3P.5v.UUaRhaRiaRjaRkaRlaRm.Y9#jR.Yx#l4aOV.WMaRn.W8.W8#h8.7z#bT.Y9.YxaRoaRpaRqaRraRsaRtaRuaRvaRwaRxaRy", -"aRzaRAaRBaRCaRDaREaRFaRGaRHaRIaRJaRKaRL.WR.YXaRM.WM.Yx.Y9.Y9.W8aRNaKpaROaRPaORaLQ.WMaQW#jA.Yx#T8aRQ.UU.UU.UU.UU.UU.YO.YO.W7aRRaRSaRTaRUaRVaRW.YO#jz#6M.Y9.Y9.W8.W8aRX.UU.UUaRX.W8#kQaRYaRZaR0aR1aR2aR3aR4aR5aR6aR7aR8.WR.Yx#VpaR9aS.aS#aNdaSaaSb.WR.5Z.WRaScaSdaSeaSfaSgaShaSiaSj.W8.WM#gy#d#.Yx.WM#ai.WM.WM.W8aSk.W8.W8.UUaSl.7saSmaSnaSoaSpaSq.WRaSr.0x.Yx.Y9.Y9#2J.WM.WN.WM.WM#gjaSsaStaSuaSvaSwaSxaSyaSz#3MaSAaSBaSCaSD", -"aSEaSFaSGaSHaSIaSJaSKaSLaSMaSNaSOaSPaSQaSRaSS.YO.WM#dw#l4.WO.UU.W8aSTaSUaSVaNCaQP.WM#aj.Y9.Yx.5oaSWaSXaSYaSZaS0aS1aS1aS2aS3aS4aS5aS6aS7aS8aS9.YO.WM.Yx.Y9aKJaT.#k3aT#.3P.UU#SD.W8a.daTaaTbaTcaTdaTeaTfaTgaThaTiaTjaTk#bS.Y9aTl.18.18aTmaTnaTo.XA.32.WR.WRaTp.9eaTqaTraTsaTtaTuaTv.WM.Y9#jAaTw.YxaTxaTyaTzaTAaTBaTC#V0aTDaTEaTFaTGaTHaTIaTJaTK.Xz.YxaTL.X#.X.aTMaTNaTO#ai.WN.WM#P3aG6aTPaTQaTRaTSaTTaTUaTVaTWaTXaTYaTZaT0aT1", -"aT2aT3aT4aT5aT6aT7aT8aNmaT9aU.aU#aUa#7aaUbaUcaUdaKJ.Yx.5o.Y9aUe#nJaUfaKDaUgaQOaQP.7zaQW#gj.YxaUhaUiaUj#6NaUkaUlaIMaUmaUnaUoaUpaUqaUraUsaUtaUu.UU.Y9#dw.Y9#b4aUvaUwaKpaUx.UU.UU.W8.7z.WMaUyaUzaUAaUBaUCaUDaUEaUFaUGaUHaUIaUe#.W.1UaUJaUKaULaUM.XA.XA.WR.XEaUNaUOaUPaUQaURaUSaUTaUU.WM.Y9.Y9.2e.YxaUVaUWaUXaUYaUZaU0aU1aU2aU3aU4aU5aQcaU6aU7aU8aU9.YxaV.aV#.X.aIVaVaaVbaVc.WMaVd.Y9aG6aVeaVfaVgaVhaOFaViaVjaVkaVlaVmaVnaVoaVp", -"aVq#..aVraVsaVtaVuaVvaVwaVxaVyaVzaVAaVBaVCaVDaVE.7L#.r.Y9.Y9.UU.W8aVFaVGaVHaNCaVI.WM.WM#gy.YxaVJaVKaVLaVM.1YaVNaVOaVPaVQaP1aVRaVSaVTaVUaUtaUu.UUaQK.Yx.Y9#b4aTBaVVaVW#U..5v.UUaSk#kQ.WM.Y9aVXaVYaVZaUCaV0aV1aV2a#qaV3aV4.UUaPN.1V.ZgaV5aV6#6L.VM.WR.5ZaV7aV8aV9aW.aW#aWaaWbaWcaWd.7z#l5.Y9#d#.16aWeaWfaWg#1taWhaTOaQP#nJaVPaWiaWjaWkaWlaWmaWn.W8.YxaWo.X#.YxaWp#qGaWqaWraWs.WM.WM.Y9#e6.X#aWtaWuaWvaWwaWxaWy#2PaWzaWAaWBaWC", -"aWDaWEaWFaWGaWH.UUaWI.WRaWJaWKaWLaWMaWNaWOaWPaWQaWRaL6#hT.Y9.W8.W8aWSaWTaWUaWVaQP.WM.WM.Y9.YxaWWaVK#kIaWXaWYaWZ#qYaW0aW1#5MaW2aW3aUoaW4aW5aW6#blaQK.Yx#bT.Y9aW7.7naW8aW9aX..9f.W8.7zaQW.Y9.YxaX#aXaaH7aXbaXcaXdaXeaXfaXg.XpaXh.5w.ZhaXiaXj#3FaXk#e7.WRaXlaXmaXnaXoaXpaXqaXraWc#SK.WR.Y9.Y9.1VaXsaWeaXtaXuaXvaXwaWYaXx#5LaXyaKNaXzaXAaXBaXCaXDaXE.WRaXF.Yx.Y9aXGaXHaOQ.7naXI.7z#4b.Y9.Y9aL6.X#aXJaXKaXLaXM#8PaXNaXOaXPaXQaXR", -"aXSaXT.aUaXUaXVaXW.7A#bT#k6#fmaXXaXYaXZaX0aX1aX2aX3.Yx.Y9.Y9aX4aX5aS0aX6aX7aX8aQP#kQaQW#gy.YxaX9aY.aY#aYaaYbaYcaYdaYeaYfaYgaYhaYiaYjaYkaQ9aYlaYm.Y9.Yx#P3.Y9aW7aKGaYnaYoaWV.5v.W8aYp#df#axaL6aUyaYqaYraYsaYtaXeaYuaYvaYwaYxaQVaYy.5waYz.X#aYA#9XaYB.WRaYCaYDaYEaYFaYGaYHaYIaYJaYK.WR.Y9.Y9.2e.1VaYLaYMaYNaYOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZaR.#ax.Yx#gy#2JaY0aY1aMbaY2aY3aY4.W8aNF.WMaY5.YxaG1aY6aY7#X.#6HaY8aY9aZ.aZ#aZa", -"aZb.DcavXaZcaZdaZe.2GaZf#b7#.WaZgaZhaZiaZjaZkaZl#o0aPY.Y9#o0.UU.W8aZmaZnaZoaZpaVI.1Y#2K#ax#.YaZq.WR.WR.WR.WR.Y9#l6aZr#o4a.d.7zaZs.7raZt.5gaZu.WM.Y9#e6#gy.7AaZvaVVaPvaZwaZxaZy#8z#h8.WM#V1.Yx.5oaZzaZAaZBaZCa#8aZDaZEaZFaZG.2GaZH.UU.WMaZqaZI.XA.5SaV7aZJaUNaZKaZLaZMaZNaZOaZPaZQ.WR.Y9.Y9.2e.2e.YxaZR.Yx.Y9#gjacB#ai.WNacK#jyaZSaZTaZUaZVaZW.W8aKJ.Y9#bT#jIaZXaZYaZZaZ0aZ1aZ2.UUaZ3aFY.Y9.Y9.Y9aZ4aZ5aZ6#bWaZ7aZ8aZ9a0.a0#", -"a0aaFva0baoNa0ca0da0e.2GaUe.X..X#.X#.Yxa0fa0g.UU.Y9.Yxa0h.Y9.W8aLLa0iaNi#pfa0jaLQ.7z.WM.Y9#e6.Yx.WR.WPa0k.32.Y9.Y9.XE.7#.WN.WMaQra0la0ma0na0o#jH.Y9.Yx.Y9.3Ia0paK6aMKa0qa0ra0sa0t.WM.WM.Y9.Yx#gya0u#dua0va0w#0h#1za0xa0ya0zaVi.2G.YO.W8aKJ.XA.8E.Y9a0Aa0Ba0CaZKa0Da0EaZNa0Fa0Ga0H.WR.Y9.Y9.2e.2e.Yx#av#.v#1u#ax.Y9.WM#4b.WM.WM#bla0Ia0Ja0Ka0La0M.WM.Y9.WM.W8a0Na0Oa0Pa0Qa0RaL.a0S.UU.UU.WM.WM#df#kFa0Ta0Ua0Va0Wa0Xa0Ya0Za00", -"a01a02a03a04a05a06a07a08.W8a09a#ua1.#3F.3H.YXa1#a1a.Yx.5o#o0a0pa1ba1caOyaM#aWvaVI#kQ.WM.Y9#.r#e6#jS.WR.WR.WR.WR.YC.WR.WR.WMaYpa1da1eaZta1fa1g#dv#ax#.r.Y9.3Ia1haIha1ia1ja1ka1la1m.WMaFE.Y9a1n.Y9#goa1oa1pa1qa#H#0ia1ra1sa1ta1u#OtaQV#Yr#dv.WR#2c#l6a1va1wa1xa1ya1za1A#ura0Fa1Ba1C.XA.4q#jA#OC.1V#.Y.Yx.Yx.Yx.Y9.Y9.Y9.Y9aYp#jHa1Da0Ia1EaYVa1Fa1G.7zaFYa1H.W8a1Ia1Ja1Ka1La1Ma1Na1Oa1P.W8#h8a1Q#PTa1Ra1Sa1Ta1Ua1Va1Wa1Xa1Ya1Z", -"a10ajda11aGAa12a13a14a15a16a17.VN.VNa18#jz.YX.2G.UUaZXaI0a19#qZa2.a2#a2aa2baUta2c#mf#eG#mAa2da2ea0fa0faVda2fa2ga2h#nza2ia2jaLQa2ka2la2ma2na2oaT#a2pa2qa2ra2sa2ta2ua2va2wa2xa2ya2za2A#SCa2Ba2C#eGaLQa2Da2Ea2Fa2Ga2Ha2Ia2Ja2Ka2La2Ma2Na2Oa2#aP1a2Pa2Qa2Ra2Sa2Ta2Ua2Va2Wa2Xa2Ya2Za20a21a22a23.39a24a25#3wa26a27a28a29#mBa2ha#1a3.a0Qa3#a3aa3ba3ca3da3ea3fa3ga3ha3ia3jaeja3ka3la3ma3na3oa3pa3qa3ra3sa3ta3ua1Na3va3wa3xa3ya3za3A", -"a3B#7ya3Ca3Da3Ea3Fa3Ga3Ha3Ia3Ja3Ka3La3Ma3Na3Oa3Pa3Qa3Ra3Sa3Ta3Ua3Va3Wa3Xa3Ya3Za30a31a32a33a34a35a36a37a38a39a4.a4#a4aa4ba4ca4baORaO#a4da4ea4fa4ga4ha4ia4ja4ka4la4ma4na4oa4pa4qa4ra4sa4ta4ua4va4w#ZIa4xa4ya4za4Aa4Ba4Ca4Da4Ea4Fa4Ga4Ha4Ia4Ja4Ka4LaZ1a4Maeoa4Na1za4Oa4Pa4Qa4Ra4Sa4Ta4Ua4Va4Wa4Xa4Ya4Ya4Za40a41a42a43a44a45a46a47#2ea48a49a5.a5#aHva5aa5ba5ca5da5ea5fa5g#.na5ha5ia5ja5ka5la5ma5na5oa5pa5qa5ra5sa5ta5ua5va5wa5x", -"a5ya5za5Aa5Ba5Ca5Da5E#9ga5Fa5Ga5Ha5Ia5J#Y5a5Ka5La5Ma5Na5Oa5Pa5Qa5Ra5Sa5Ta5Ua5Va5Wa5Xa5Ya5Za50a51a52a53a54a55a56a57a58a59a6.aOGa6#a6aa6ba6ca6da6ea6fa6ga6ha6ia6ja6ka6la6m#2Ca6na6oa6pa6qa6ra6sa6ta6ua6va6wa#ya6xa6ya6za6A#3Za6Ba6Ca6Da6Ea6Fa6Ga6Ha6Ia6Ja6Ka6La6Ma6Na6Oa6Pa6Qa6Ra6Sa6Ta6Ua6Va6Wa6Xa6Ya6Za60a61a62a63a64a65a66a67a68a69a7.a7#a7aa7ba7ca7da7ea7fa7ga7ha7ia7ja7ka7la7ma7na7oa7pa7qa7ra7sa7ta7ua7va7wa7xa7ya7za7A", -"auK.S8a7Ba7Ca7Da7Ea7Fa7Ga7Ha7Ia7Ja7Ka7La7M#sXa7Na7Oa7Pa7Qa7Ra7Sa7Ta7Ua7Va7W#Xg#6Q#wPa7Xa7Ya7Za70a71a72a73a74a75a76a77a77a77a78a79aVia8.a8#a8aa8ba8ca8da8ea8f#YMa8ga8ha8ia8ja8k#68a8la8ma8na8oa8pa8qa8ra8s#uNa8ta8ua8va8wa8xa8ya8za8Aa8Ba8Ca8Da8Ea8FaSga8Ga8Ha8Ia8Ja8Ka8La8Ma8Na8Oa8Pa8Qa8Ra8Sa8Ta8Ua8Va8Wa8Xa8Ya8Za80a81a82a83a84a85a86a87a88a89a9.a9#a9aa9ba9ca9da9ea9fa9ga9ha9ia9ja9ka9l#v.a9ma9na9oa9pa9qa9ra9sa9ta9ua9v", -"a9wa9x#LSa9ya9za9Aa9Ba9Ca9Da9Ea9Fa9Ga9HajSa9Ia9Jah1a9Ka9La9Ma9Na9Oa9Pa9Qa9Ra9Sa9Ta9Ua9Va9Wa9Xa9Ya9Z#39a90a91a92#uQa73a93a94a95a93a96a97a98a99b..b.##Z3b.aa9nb.ba.ka#Wb.cb.db.eb.fb.gb.hb.ib.j#u0b.kb.lb.mb.n#2sb.ob.pb.qb.rb.sb.tb.ub.vb.wb.xb.yb.zb.Ab.Bb.Cb.DaY9b.Eb.Fb.Gb.Hb.Ib.Jb.Kb.Lb.Mb.Nb.Ob.Pb.Qb.Rb.SaFOb.Tb.Ub.Vb.Wb.XaWzb.Ya89b.Zb.0b.1b.2b.3b.4b.5b.6b.7b.8#uYb.9b#.b##b#ab#b#w9b#caRxb#db#eb#fb#gb#hb#ib#jb#k", -"b#lb#mb#nb#ob#pb#qb#rb#sb#tb#ub#vb#wb#xb#yb#zb#Ab#B#wTb#Cb#Db#Eb#Fb#Gb#Hb#Iakmb.9b#Jb#Kb#Lb#Mb#NaOhb#Ob#Pb#QaRvb#Rb#Sb#Tb#Ub#Vb#W#wOb#Xa9TaJob#Yb#Zb#0a9lapwb#1b#2b#3b#4b#5b#6b#7b#8b#9ba.ba#baababbacbadbaebafbagbahbaibajbakbalbambanbaobapbaqbarbasbatbaubavbawbaxbaybazbaAbaBbaCbaDbaEbaFbaGbaHbaIbaJbaKbaLbaMbaNbaO#0ibaPbaQbaRbaSbaTbaU#.8baVbaWbaXbaYbaZba0ba1ba2ba3ba4ba5ba6ba7ba8ba9bb.bb#bbaaohbbbbbcbbdbbebbfbbg", -"bbhawwbbiaymbbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwbbxbbybbzbbAal1bbBbbCbbDbbEb#7bbFbbGapibbHbbIanXbbJbbKbbLbbMbbNaTZbbObbPbbQbbRbbSbbTbbUbbVbbWbbXbbYbbZbb0bb1bb2bb3bb4bb5bb6bb7bb8bb9bc.bc#bcabcbbccamubcdbcebcfbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcxbcybczbcAbcB#kAbcCbcDbcEbcFbcGbcHbcIbcJbcK#uIbcLbcMbcNbcObcPbcQbcRbcSbcTbcUbcVbcWbcXbcYbcZbc0bc1bc2bc3bc4bc5bc6bc7bc8bc9bd.bd#bdabdbbdcbddbdebdf", -"bdgbdhbdibdjbdkbdl#pZbdmbdnbdobdpbdqbdrbdsbdtbdubdvbdwbdxb#1bdybdzbdAbdBbdCakobdDbdEbdFbdGbdHbdIbdJbdKbdLbbGbdMbdNbdObdPbdQbdRbdSbdTanAbdUbdValTbdWbdXbdYbdZbd0bd1bd2bd3anTarlbd4bd5bd6bd7bd8bd9be.be#beabebbecbedbeebefbegbehbeibejbekbelbembenbeobepbepbeqberbesbetbeubevbewbexbeybezbeAbeBbeCbeDbeEbeFbeGbeHbeIbeJbeKbeLbeMbeNbeObePbeQbeRbeSbeTbeUbeVbeWbeXbeYbeZbe0be1be2be3.gR.eObe4be5be6be7be8be9bf.bf#bfabfbbfcbfd", -"bfebffbfgbfhbfibfjbfkbflbfm.f5bfnbfobfpbfqbfrbfsbftbfuaiPbfvbfwbfxbfybfzas9bfAbfBbfCbfDbfEaBdbfFbfGbfHbfIbfJbedbfKbfLbfMbfNbfObfPbfQbfRbfSbfT#A6bfUbfVbfWbfXbfYbfZbf0bf1bf2akdbf3bf4bf5bf6bf7#Uubf8bf9bg.bfVbg#bgabgb.6NbgcapGbgdbge.w6bgfbggbghbgibgjbgkbglbgmbgnbgobgpbgqbgrbgsbgtbgubgvbgwbgxbgybgxbgzbgAbgBbgCbgDbgEbgFbgGbgHbgIbgJbgKbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgZbg0bg1bg2bg3bg4bg5bg6bg7#0pbg8bg9bh.", -"bh#.Rubhabhbbhcbhdbhebhf.GKbhgbhhbhibhjbhkbhlbhmbhnbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhy#4Mbhz.eM.kYbhAbhBbhCbhDbhEbhFbhGbhHbhHbhIbhJbhKbhLbhM.kAbhNbhObhPbhQbhRbhSbhTbhU.e0bhVbhWbhXbhYbhZbh0bh1bh2bh3bh4bh5bh6bh7.Hh.kPaz3bh8bh9.iGbi.bi#biabibbicbidbiebif.vgbigbihbiibijbikbilbim##lbinbiobipbiqbirbis#xwbitbiubivbiwbixbiybizbiAbiBbiCbiDbiEbiFbiGbiHayYbiIbiJbiKbiLbiMbiNbiObiPbiQbiR#JQbiSbiTbiUbiVbiWauWbiXbiY.NYaw8biZ", -"amXbi0.Qwbi1bi2bi3bi4bi5bi6bi7bhg#NEbi8bi9bj.bj#bjabjbbjcaDjbjdbjebjfbjgbjhbjibjjbjkbjlbjm.aLbjnanqbjobjpbjq.iFbjr.UsaCm.Bl.3j.k0bjs.gm.cnbjtbjuau.bjv.r8bjwbjx#NZ#3a.IXbjyawVbjzbjAbjBbjCbjDbh1#S0bd7bjEbjFbjGbjH.Bx.iWbjI.DvbjJaAY#J4bjKbjLbjM.d4bjNbjObjPbjQbjRbjSbjTbjUbjVbjWaw9bjXbjYbjZbj0bj1ahvbj2bj3bj4bj5bj6bj7bj8bj9bk.bk#bkabkbbkcbkdbke.j1bkfbkgbkh#GQbkibkjawEbkkbklbkmbknbkobkpbkqbkr#LM#NNbksbktbku.Eubkvbkw", -"bkxbky.Sr.3#bkzbkAbkBbkC#UDbkDbkEbkFbkGbkHbkIbkJbkKbkLbkMbkNbkO.tR#vVbkPbkQ#L0#6a#L0bkR.R..aLbjnbkSadI.c2.gn.eh.QR.Wn.QS.BjbkT.OYbkU.me.egbkVbkWbkXbkYbkZaywbk0bk1bk2as2bk3axEbk4bk5bk6bk7bk8bk9bl.bl#blablbblc.Hm.mXauc#6hbldbleblfaEDblgblhblibljblkbllblmblnblo#N6blpblqblrblsbltblu#r5blvblwblxblyblzblAblBblCblDbj6blEblFblGblHblIbicblJblKblLblMblNblOblPblQblRaxDblS.PmblTblUblVblWblXblY.cXblZbl0bl1ahk.CBbhabl2bl3", -"bl4bl5bl6bl7bl8bl9bm..Ubbm#.Kybmabmbbmcbmdbmebmf.4Nbmgbmhbmi.cHaBLbmj.JjbmkbmlbmmayD.vx#6i#7D.kY.Dw.QCbmn.WC.MN.Wn.Z2.Z3.of.Yi.Blbmobmpbmqbmrbjt#Tt.g9bms.vG.g7bmtawT#X3bmubmvbmw.GkbmxbmybmzbmAbmBbmCbmDbmEbmF.HnbmGavY.qGbmHbmIbmJbmKbmLbmMbmNbmObmPbmQbmRbmSbmTbmUbmVbmWbmX#4D#v9bmYbmZbmZbm0bm1ar9bm2bm3bm4bm5bm6bm7bm8bm9ammbn.bn#bnabnbbncbndbnebnfbngbnhbniaxDbnjbnkbnk.RyblUbnlbnmbnnbnobnpbnqbnr.NFbnsbnt.U7.Lubnu", -"bnvbnwbnxbnybnzbnA.VYbnBbnC#ZebnDbnEbnFbnGbnHbnIbnJ#IB.stbnK#6hbmGbnLbnM#z4bnN.AHbnOawK.qGaqzbnP.kZ.WC.ej.Yj#hr.OK.Dn#qj.FhbnQbnRbnSbnTbnU.Uw.Sz.1EbnVbkS.qG.g7.JsbnWbnXbnY.CBbnZbn0bn1bn2bn3bn4bn5bn6bn7.Ji.E4bn8bn9bo.aq#bo#boabobbocbodbn#boebofbogbohboibojbokbol.E8bombonboobopboqborbosbm0botboubova.3bowboxboybozboAboBboCboDboEboFboFboGboHboIboJboKboLboMak9a5zboNboOboPboQboRboSboT#9#boUboVboVboWboW.NmboXboYboZ", -"bo0bo1bo2bo3bo4bo5bo6bo7bo8bo9bp.bp#.Erbpabpbafmbpcbpdbpe#0Jbpf.xPbpgaBwbphbpibpj.qebpk.ud.vu.Sw.ce.Wo.Wo#i0.48.49bpl.cAbpmbpnbplbnQ.3p.ot.ot#fV.Dk.44.a.aBLbpo.v5.bvbppahkbpqbprbpsbptbpubpvbpwbpxbpybpz.E4bn8bn8bpAaxLawKbpBbpCbpD.HAbpEbpFbpGbpHbpIbpJbpKbpLawJ.xs.Ri#v7.zPbpMbpNbpObpPbpQbm0.hBbpRbpSbpTbpUbpVbpWbpXbpYbpZbp0bp1bp2bp3bp4bp5bp6bp7bp8bp9bq.bq#bqabqbbqcarEbqd#NNboRbqebqfbqgboUbqhboVbqibqjbqjasd.ACbqk", -"bqlbqmbqnbqobqpbqqbqr#WlbqsbqtbqubqvbqwbqxbqybqzbqAbqBbpebqC#7CaxJ.HobqD#x6bmlayD.cfbqE.i0aqA.44.SN#hr#eobqF.49bqGbqHQtebqIbqJbqKbqLbqM.oe#oJbqNbqObqP.tMQtDbqQ#HXbmu#7xahkbpqbprbn0bqRbqSbqTbqUbpybqVbqWbqXbqYbqZbq0bq1bq2bq3bq4bq5bq6bq7biabq8bq9br.br#.PbbrabqD#FYbrbbrc#lWbrdbrebrfbrgbmZadNbrhbribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbrtbrubrvbrwbrxbrybrzbrAbrBbrCbrDbrE.cXbrF#JG#NNawqbrGbrHbrIbrJboVbrKbrKbrL.P7.P7brMbrN", -"brObrPbrQbrRbrSbrTbrUbrVbrWbrXbrYbrZbr0br1br2bpvbr3br4br5bqCbhz.GYbnLbr6br7br8br9.cg.vG.i0.a..od.c3.Ur.Ur.QFbs.aoSbs#bqIaihbsabsbbscbsd#qmbse#fVbsf.r1bsgavYbshas3bsibsjafq.CAbskbsl#zObsm.Libsn.iMbsobspbsqbsr.iNaqwbssbstbsubsvbswbsxbiabsybszbsAbsB.tVawKbpAbqZ.HoaM4brb#HXbsCbsDaz#bsEbsFbsGbsHbsIbsJbsKbsLbsMbsMbsNbsObsPbsQbsRbp2bsSbsTbsUbsVbsWbsXbpB.g4bsYbsZbs0bs1bs2bs3#LMbs4bs5bs6aBtbs7ab2a3B#ULbs8bs9bt..Nubt#", -"#QLaDobtabtbbtcbtdbtebtfbtgbthbtibtjbtkbtlbtmbtnbtobtp.MKbtq.ohaoN.qiaoMbtrbtsawK#t9bttbtu.qG#0J#1Zbtv.zm.SE.Wvbtwbtxbty.qnbtzQtebtA.cy.vKbtB.w#btCbq0bq0bpobtD#HXbnWbtEbtFbtG.QybtHbtIbtJbtKbtLbtMaAXbtNbtNbtOaAAbtPbtQbtRbtSbtTbtUbtVbtWbtXbtYbtZbt0bt1.Du.aJ.vJ.I0bo.#3jbt2bt3bt4bt5bsGbt6bt7bt8bt9bu.bu#buabubbucbudbuebufbugbuhbuibujbukbul#QPbum.D#bunbuobs5bupbuqawwawxburaRzbusawCbutbuubuv#HIbuwaxCbprbuxbuybuzbuA", -".oDbuBbuC#3lbuDbuEbuFbuGbuH.EzbuIbuJbuKbuLbuMbuNbuO.mR.g8.MKbuP.bAbsqbsp.bE.qiaz5bpkbuQbuR#6i#Pl.xZ.xp#Ttaay#3ebuSQtN#6gbuTbuUbpnbuVbse.MY.Jf.cobr8.ah#v7.xs.RibuWbuXbuY.LMbuZbu0aoGbu1bu2#z5bu3.Xtbu4bu5bu6bu7bu8bu9bv.bv#bvabvbbvcbvdbvebvfbvgbvhbvi.eL.cG.kP.By.BxaBLbvjbvkbt3bvlafnbvmbvn.y4bvobvpbvqbvr#HbbvsbvtbsLbvubvvbvwbvxbvybvzbvAbvB.C6.BC#9lbvCbvDbvEbvFbvG.btbvHbvIbvJa01bvK.LMbvLbvMbvNbvObvPbvQ#7vbvRbvSbvT", -"bvUbvVbvWbvXbvYawgbvZbsjbsk.Kc.Grbo3bv0.CFbv1bv2bv3bv4bv5.g8bv6.mMbv7bv7bv7.bAbuPbqEbv8bv9.qG.gO.ssbw..Df.Bxbw##i5bwa##K#4J#hubwb.Bk#UY.c#.JgaaAbwcbwdbwe#v7#v7.JsbuXbwfbfgbwgbwhbwibwjbwk.pLbwl.w5bwmbwnbwobwpbwqbwrbwsbwtbwubwvbwwbwxbwybwzbwAbwB#IC.Df.cGaqA#0QbwC.zH#3j.v7#6#bwDbwEbsGbwFbwGbwHbwIbwJbwK#HbblCbwLbwMbncbwNbwObp0bwPbwQbwRbwSbwTbwU.FsbwVatqa11bwWawybwXbwY.NEaRzbwZblZbw0bw1bw2bw3#LLbw4bw5bvRbw6bw7.LQ", -"bssbw8bw9bx.bx#bxabxbbxcaambxdbxebxfbxgbxhbxi.iMbxjbxkbv5.g8bv6bv5bxkbxk.bAbxl.Dt.Dt.Dt.Dtam5#0JbjG.xjbxmbxnbxobxpbxqbxrbuS#3d.UA#r7.c2#QKbxsbuR#HXbxtbxubrdbxvbxwbnWbuYbxxbwg.Pxbxybn0bxzbxAbxBaAWbxCbxDbxEbxFbxGbxHbxIbxJbxKbxLbxMbxNbxObxPbxQbxRbxS.Fl.Dx.a..QBaudbxTbxUas3bxVbxWbxX.JubxYbwGbxZbx0bx1bx2bx3bvvbncbx4bx5blibx6bx7bx8bx9by.by#byabybbycbydayjbyebyfbygbyhbyibvJbyj#UNbykbyl#JG#JGbymbynajbbyobvRbypbyp.LQ", -"byqaqv.ui.FvbyrbysbytbyubyvbywbyxbyybyzayJbyA.dFaBkaBkaBk.vp.g8.g8byBbyCbxlbyD.OD.ODbkSbkS#t4byE.g8.qG#9e#vZbyFbyGbyHbyI.cQ.YmbyJ.Dw.cH.sxbyKaBw.i4apVbyL.AG.zPbyMbuFbyNbfgbuZbyObyPbyQbpubyRbySbyTbyUbyVbyWbyX#UWbyYbw.byZ.pObpcby0.9Rby1by2by3by4.bA.qF.kO#9h#t5by5.zG.HpawWayqby6by7by8.Gaby9bz.bz#bzabzbbzcbzdbzebzfbzgbzhbzibzjbzkbzlbzmbznbzobzpbzq.NebzrbzsauOauMbztawtbzubzv.w1bzw.e2#JGbzxblSbzybzz.L9bzAbzB.LAbzC", -"bzDbzE.zPbzFbzGafDbvLbzHahkbpq.fBbzIbzJbzKbzLbzMbzN.vpaBkaBk.g8bzO.qCbzP.qD.xlaz4bzQ.Dw.c2bzRanq.uc.IU#x3#BYbzSbzTbzUbzV.r4aqz.iR.guaBLbmGbzW#FY.w2bzXbzYbkxbyLbkxapVbyNbzHbzZbntbz0bz1bz2bz3bz4bz5bz6bz7.M6#kn.qb.oJ.Hibz8bz9bA.bA#.gP#vWaudbAa.mubAbbxm.cH.kO#6e#i8azsbAcbAdbAebAfbAgbAhbAibAjbAkbAlbAmbrpbAnbAobApbAqbsRbArbAsbAtbAubAvbAwaqUbAx.BE#HJbAyarEbAzauOauOawAbAAbAAbABbACbADbAEbAFbzxbAGbAHbAIbyobAJbAKbALbAM", -"bANbxVbAOamYbAPbAQ#RVbARbASbATbAUbAVbAWbstbAXbAYaDnbAZaBlaBl.ML.xj.qC.Fm.c1.Dv.eK.c2aoR.UD.oK.eKbuP.IU#x3.xybA0bA1bA2bA3bA4#6h.qFbv5.qiaz7bA5bA6bA7bAHaoIbk4bA8bA8bA9bB.bB#bBabBbbBcaw0bBdbuMbBebBfbBgbBh.cm#r8.ceaqA.Fl#vV.sy#NZ#7BbBi#zTbBjbBkbqW.KQalf.eM.vqbBl#B0.xtbBmbBnbBobBpbAVbBqbAibBrbBsbBtbBubBvbBwbBxbBybzibBzbBAbmYbn2bBBbk4bBCbBDasKbBEbBFbylbrF#TibBGbwZauNbBHaRz.PlbBIazHbBJbBnbBKbqdblSbB.bhabBLbBMbBNbBO", -"bBPbBQbvNbBRbBSbBT.v.a5zbfgbBUbBVbBWbBXbmCbBYbBZaDnbB0aqxbB1bB2.MLbB3bB4bB5.Hiacaaca.aa.ob.rTacabv6.vG#6d.vIbB6bB7bB8bB9bpf.udbv6bC.bC#bCabCbbCcbCdbCebB.bCfbCgbCgbChbynbCibCjak7bCkbClbCm#D2bBebCnbCobCpbCq.Dp.ob#0QbCr.is#NYaz9aA#bCsbCtbCu#BY.E3bpkbhz#vW.aLavX.vz#9bbCvbBKbCwbCxbAVbBq.GabCybCzbCAbCBbCCbCDbCEbCFbCGbCHbCIbCJaw1bCKbvObCLbCMbBEbCN#UPbCOawCa10bCPbCQauKauQ.cXbCRbCSbCTbBnaDsbCUbCVbCWbvZbi0bCXbCYbCZbC0", -"aw0bC1bC2bAPbC3bC4bC5bC6avcbCdbC7bpNbC8bC9.qA#R4.sDbD.aAr#QLbD#bDabDbbDcbDd.Hi.znaca.oJ.oJ.od.zn.qB.9Qbtu.E3bDebDfbDgbDh.oh.MLbAY.dFbA..cg.szbDibDjbDkbDlbDmbDnbDobCfbmv#7x.Qxak7bDpbk4.JmbDqbDrbDsbDtbDubDv.ei.oJ.iRaLwbn8.g7.IXbDwbDx#HTbDybDz.xSbttbo..is#4GbDAbCsbiRbDB#JGbDCbDDbDEbDFbDGbDHbDIbDJbDKbDLbDMbDNbiobDObvlbDPbDQbDRbDSbzx.Ryak9bDTbDU#TjawCajd#89bDVawC#89bDWbDXbDYbDZbD0bklbD1bD2bD3bD4.BEbD5bD6bD7bD8bD9", -"bE.bE#amYahsbEaaGAbEbbEcbEd.AFam8at7bEe.xX.Q8.ss.9RbD.aFsbEfbEgbEh.c0bB3.qB.c1.a0.Dv.qE.qE.gt.qEbw.bEiarbbtCbEjbEkbqV.KQ.Q9bElbEmaliaFtbEn.qebDibl1bEobEpbEq#X2bDobChbEr#QybEsbCeaxCbCgaqubDqbEtbEubvgbEvbEw.mf.r2adHaoNbExbwTbEy.g4bEzbwUbEAbEBbECbEDaz7bqX.tXbg2bEEbEFbEG#JGbDCbEHbEIbEJbEKbELbEMbENbEObEPbELbEQbERbES#ZrbC7buwbETbCNaykbEU#RVbEV.cX.Ls.LLbdibDVauQbDWbCO#UPbEWbEXbbjbEYbEZbE0bE1bE2bE3bE4bE5bE6bE7bE8bE9", -"bkxbF.bF#bFabFbbFcbFdbFebFf#X3bFgbFhbFibFjbFkbFlbFmbFna9CbFobFpbBYbB2.e4bjGbpebms#4K.aJ.aJ.aJbyDQtVbFqarc.ohaz6.Hnaz5bFr.sDbFsbEm.bF.iL.LgbFtbxu.LMbnrbFubCdbA9bDobFvbuGbFw#87.QxbAH.dy#oLayIbFxbFybFzbFAbFBbFCadI.OD.bAbFDbFE#nobxv.zh.RAbFFbFGaBwbq0bnLbFHbFIbFJam0bFKbFLbFMaoV#LKbFNbFObFPbFQbFRbFSbFTbFUbFVaySbFWbFXasJbmubFYbzrbFZbF0bF1bF2a11.Rx.bu.T#.LL#UObF3bs4bF4bFM.Pn.PobvObF5bF6bF7bFKbF8bF9awpbF#bG.buE#1UbG#", -"bGabwe.Jr#9lbGbbGcbGdaqWbGebGf#0FbGgaqwbB1bGh.gLbFmbGibFsbGjbBYbGkbGlbkZaBk.g8.uc.oh.v0.v0.v0.DtbFlbFqbGmbz8.cIbo.aq#atcaArbGnbGoalibGp.G0.Pb#ZtbGqbGrbGsbGtbGubCgbFvbGvbGw#87#WpbGxbGybGzbGAbGBbGCbGDbGEbGF.w#adI.OD.kSbGGbGHbGIbGJbGJbGK.szbk1#3abGL.zLbGMbGNapcbGObzqbBFbGPbGvbkvbGQbGRbGSbGTbGUbGVbGWbGXbGYbGZbG0bG1bG2bG3bG4ayjbs5bs5bG5aymbG6bG7bnp.RGauPbDVbs4#UP#6.bDCbmubG8bG9bH.bCgaxEbH#bFKbHabzpbF#bHbbxubHc.xV", -"bGg#L0.v4awlbHdbHebHfbHgbHhbHibHjbHkaqwbB1bw..gL.srbHlbHmbtZ#QPa9CaArbFrbHnbv9bo.#6iaxJaxJbHo.uebDc#tZ.r7bHp#z2#6d#4FbHqbHr#qnblbbHsbHtbHubHvas1bHwbHxbHybHzbHAbA9bHBbDDbHC.LObHDbHEbHFbHGbHHbHIbHJbHKbHLbHM.c#.c2.eKbHNbHObHPbHQbEebEebFibHRbHSbHTaA#bHUbHVbHWbHXbHYbHZbETbsjbH0bH1bH2bH3bH4bH5bH6bH7bH8bH9.t7btMbI.bGabI#bIabIbbIcbIdbIdbIebIfbIgbIhbIhbIia.NayoaykbIjbIkbvObnXbIlbHBbImbInbIobIpbvMbklbIqbIrbIsbrQbwdbwd", -".PbbIt#9cbIubIvbIwbIxbIybIz.zMbIA.PbbIBbIC.e5.gLbIDbIEbrAbIFbIGbIH.Lf#3i.iNbIIaxLbIJ.vybIKbILbpA.ubanpaoQ#ZvbIM#zS#9d#6cbA#QtUbIN.r9bIOazzbrbbIPbIQbyg.RGbIRbISbITbDQat5bIUaqFbywbIVbIWbIXbFXbIY.bxbu5bIZ.ef.mg.oc.gtbI0bI1bI2bI3#QNbyAbI4.iLbI5bI6bI7aoUbHWbI8bI9bJ.bJ#.PmbJabJbblxbJcbJdbJebJfbJgbJhbJibJjbJkbJlbDqbJmbJnbBSbJobJpbJqbJrbJsbF1bJtbJubJvbJwaPGauJboPbJxbJybGu#JFbJzbJAbJBbJCbJDbnX.AFamXbJEbE.bJFbJG#npbJH", -".cZbJIbJJbJKbJLbJMbJN#TlbJObJPbJQ.cq.rEbJR.e5.gLbJSbtObrA.qzbIHbIHbJTbI5.IV.kTbpoaBwbFGbFGapc.zLawLbJU.em#i8.vIbJV.vz#9c.mo.cg.G0bIObJWbJXbJYb#pbs0bJZbJ0bJ1bISbG8bJ2bJ3btH.AA.rva.JbJ4apWbJ5.bwbJ6#IObJ7.gm.3oQtz.BzbJ8bJ9.rF#QPat9bGoasibK..dFbK#bKaaoUapcaaB.kpbKb.g5bKcbDDbKdbKebKfbKgbvsbKhbKibKjbKkbKlbKmbKnayF.qfa.1bBSal.bKobKpbKpasLbIcbKqbKrbKsbKtbqeauRboPbKubKvbGubIlbHFbKwbKxbKybH0.U8bKzbKAbDDbKBbKCbJ2bz1bKD", -"bo.axJbKEbKFam2bKGbKHbKIbKJbDwbKKayvbpxbKL.e4bKMbKNbKObKP#QPbD.bKQ.Lg.cfbKRbnObKSbKTbrbbrbbKU#FYbBi#9d.zGbzW.zGbHobKVbKWbIJbKXbtDbKYbKZbK0bK1bK2arDbK3bK4.g6bK5bK6bK7bHFbslbK8bK9bl2bL.bAVbL#.HwbLabLbbHMbLcbLd.Yn.zAbLebLfbLgbLhbLibLhbK..u#.mL.IXbLj.zibLkbwUbLlahsbLmajcbATbLnbLobLpbLqbsNbLrbLsbLtbLubLvbLwby0.tsbLxbLybLzbLAbLBbLCbLDbBEbK3bLEbLFbKrbLGbLHaQCbLIbLJbLKbLLbBVbLMbLNbLObLPbLQ.ZTak6.LOaoVbGvat5bLRbJDbJD", -"#cSbLSbLT#BZapeauCbLUbLV#0Gas3bmmbLW.mWbHubLXbLYbLZbICbKLbL0bHSbL1br8bmkbxv#0FbL2bL3bL4bL5bL6Qt.bL7bL8bL9bM..va.LfbHnbpkbqZbM#bMabMbbMcbMdbMebMf#L0ayvaBobMgbMhbMibMjbMkbIXbMlaxVbmxbMmbMnbMobMpbMqbMrbJS.tGbMsau..l0bJSbMtbMubFm.r8.vp.bA.kS.S7.G2bycbMvbMw.aibF#bMxboPa02adybMybMzbMAbMBbvtbMCbMDbMEbMFbMGbMHbMIbMJbFG#FXbMK#0HbMLbMMbMNbMO#QybMPbMQazEbMRbMS#JLbMTbMUbMVbMWbMXbMY.Ay.AybMz.Ex.QybMZ#ULbM0bM1bM2bM3bFv.#n", -"byHbzV#zY#BZbM4bM5bDwbM6bL6bL2.zPayubpj#u..qebHubM7bspbpybtsbKXbM8.oi#lWawWbM9axFbN.bIsacdbxwbIrbG5bG5amYbmmaDq.iL.dF#3i.zLbN#bNabNb#NUbNcbCKbNdbNe.sD.LfbmEbq2.mUbNf#x7bNgahubnxbl6bNhbNibNjbNkbNlaA1bNmbNnbNobNpbNqbu8bNrbNsbNt.r8arbbNu.BBazYbNvbFKbNwbk2brbbNxbMxbEUbwZbvKbDkbNybNzbNAbNBbNCbNDbNEbNFbNGbNHbmEazybNI#Zu.Fq.HobNJbNKbNLbNMbNNbNObNPbNQbNRbNSbNTbNUbNVbNWbNXbo3bNYbNZ.LSbN0bN1bN2bN3bGrbN4bN5bDjbN6bAe.Pr", -"bN7##G.xzbN8bN9a0b.zM.e1bL5bF.bpMayubpjbO..xWbHubn7bpybO#.tV.IW.xs.RA.kWbL6bL6bxwbOabObbuE.zh.v#bOcbOdbOebvkbOfbOgbpBbHS.Hp#PjauAbOhbOibOjbA9bOk.Lg.sDbB0bpB.cfbOlbOmbOn.PGbo2bDPbOo.SrbOpbOqapXbOrbOsbOt.A2bOubOvbOw.PYbOxbOybwrbOzbOA.ucbOBbzWbGObOCbODbOEbOFbA6bOGbAEbOHbOIbFw#P#bOJbMBbOKbOLbOMbONbOObOPaAAbOg.D.bOQbg1azsbILbJQbORbKDbOSbOTbOUbNQbOVbNSbNSbOWbOXbOYbOZ.PvbO0bO1bO2bAJbO3bO4.WjbO5awwawBbO6aykbkrbCUapT", -"byF#zYbO7bM4bO8byb#0GbiPbO9bP.bP#.zg#JWbPabvk.qebPbbPcbts.C7.xsbwc.zh.kWbPdas3.zhbuEbmkbt2auZbJQbPebLjapbbL1avTbPfbok#GEbNwbPgaFubPhblUbPibDo.JmbHR.mL#3ibPjbL1ayDbJmbPkbPlaw0bKDbBVbvQbtfbBLbPm#J0bPnbPobPpbPqbPrbPsbPtbPubPvbPwbPxatAbPy.uebHobHXQt#bI9#kxbPzbPAbL9bPBbPCbGwaxn.K#bPDbPEbsLbPFbPGbPHbPIbPJbPKat8bIt#3a#ZubIubPL.xTbPMbPNbPObPPbPQbPRbPSbPTbPUbdgbPVbMy.CvbPWbPXbPXbO2#RQbN1bPYbPZbP0bP1bP2bP3bP4bP5bP6bP7", -"bP8.xzbP9bN9bQ.bQ#bHibQabnWbQbbJH.zg#JWbQcbQdbMgbQe.tsbQfbQgbKS.RA.Jl.kWbQh.oi.xrbnObQf.cqbJI#NZbQiazs.xSawK.cfavSapa#0FbQjbvDbQkaymbQlbmubDobzEbHR.KR.iNbHS.IWbwcbQmbIsboMbG8bQnbQobQpbQqbuxbQrbQs.P0#J3bQtbQubQvbQwbQxbQybQzbgfbQAbQBbQC.ue.KVbLkbODbI8bPz.tW#kxbQDbQEbQF#NM#52allbovbQGbQHbQIbQJbQKbEM.A5bQLbGB.cZ#3abQMbg1bQNbEzbQObQPbQQbQR.NCbQSbQTbQUbQVbQWbQXbQYbPWbQZbQ0bQ1bQ2bO3bQ3bQ4bQ5bQ6bNR#JKbQ7bQ8blWbQ9bR.", -"bR#am2bRabO8bRbbQ#aqVbklbuFbRcbRdbkx.kVbGabpjbRebRfbnObQg.i2.oibRg.kWbRgbmtbM.aoL.C7.JibpybspaoNbRhbRibqWbpz.ts.kU#ZsbRjbCN.cXbRkbRlbytbHAbRmbzEbHuaq.btsbq1btD.oibRnbRobRp.PnbRqbRrbRsbu0bRtbRubRvbtmbRwbRxbRybvdbRzbRAbRBbRCbRDbREbRF#Pmbn9bRGbLk.HpbRH.tW.om#z3brb#0FbRI.NZaj.bRJbRKbRLbRMbRNbRObRPbRQbRRbmKbRSbRTbRUbNIbRV#X7bRWbRXbRYbRZbHxbR0bR1bR2bR3bR4bCQarGbR5bR6bR7bR8aw4bR9bS.bS#bSabSbbQ6bScbSd#HLa.PbSebSfbSg", -"bShbKGbN9#JRbPebycbSibRjbSjapVbC1bkxbpMayubGJbSkbGKbwc.i2bSl.zh.kW#x6bRg.xsazz.kTaq#bqEbxkbSm.esbSnbSobSpbSq.JjbxvbIq#JG#WrbSr.RvbSsarFbStbSubt3.qe.C6bSv.RjbSwbSxbSybSzbSAbIjbSBbSCbSDaaobSEaanbSFbSGbuLbSHbSIbSJbSKbSLbSMbSNbSObSPbSQ.cg.zL#FXbKa.A9bRH.tWbGMbECbk1bSRbSSbSTbrhbSUbSVbSWbSXbSYbRObSZaxXbS0bS1bS2bS3#6kbNIbIubS4bS5bS6bS7bS8bS9bT.bT#bTabTb#Pf#QzbTcbTdbTebTf#zM.1v.P9aqFboVbTgbThbSbbTibTjbLGbTkatqbTlbS6", -"bTmay.bN9#JRbTnaygbSibvNbSjbA9bTobkxbpMayubMibTpbmkbwcbTqbSl.zhbuE#x6.JkazzbSvaoM#vUbTrbyD.Hi.eKbTs.BAbTtbmjbFGbTubTvbTwbSrbTxbSCbQX.RubSt.yOaysayD.rDbrPbTybTzbTAbTBbTCbAQbTD.LL.LJ.SuasvbTEbTF#59byNbTGbmYbTH.hCbTIbTJbTKbTLbTMbTN#6lbM8bI9bTObTPaxGbxUbTQbGMbTRbTSbTTbTUbTVbTWbTXbTYbTZbT0bT1bT2bJfbT3bT4bT5bT6bT7br9#NYbTRbFJ.kpbT8#PdbIQbT9bU.bU#bUa.NCaaqbUbbUcbUdbUebUfbUgbUhbUi.InbrKbUjbUkbUlbUmbUnbUobUp.cYbUqbUr", -"bUsbUtbUubUvbQ#bGfamYbC2bUwbRcbQbbkx.kVbUxbPa.uibml.v7bSlbmlbUy#HYbUz.xsbUAbFDbtC.oh.OD.DwbnVaoRbTsQtW.em.KU#JSbUB.TabUCbN5.UnbUDbUEbvPbUFbSu.PGbJmbmk.oibUGbUHQt#bUIahsbUJayjQtSbUKbULbUjbUMbUNbUObHwbDjbUPbUQahvbURbUSbUTbUUbzjbUVbonbiQbUWbUX.v5bwcbUYbUZbU0#3b.D.bmUbU1bU2bU3bU4bU5bU6bU7bU8bU9bV.bV#bVabVbbVcbVdbVebExbqZbHU#9lbVfbTkaftbVgbVhbVibVjbVkaqEaxCbVlbVmbVnbVobVpbVqbVr#86bSEbVsafsbVtbVubVvbuZahkbJabkubVw", -"bUsbUtbCsbUvbUHQt.bVxbVybVybVzbyL.zg#JW#6abvkbGK.kUbpjbml.AHbpibmk.Jk.szbSvbPcaz5.DtbkS.kZ.oa#1W.sv.i0.cI#9cbLjbCvblUbw1bVAbVBbQobVCbVDbCgbE.bVE.AGbxubVFbVG.cW.aWbFKbOdbVHbQkbVIbVJbVKbTgbVLbThbVMbS9bBG.LNbAUbVNblwbVObVPbVQbVRazabVSayhbVTbVU.i4#JW#x6bKYbI8bVVbItbpJbVWbVXbtUbVYbVZbV0bV1bV2bV3bV4bV5bV6bV7bV8bV9.mTaz7bqZazs#9lbW.a0abW#bWabWbbWcbWdbWebAAbWfbWgbWhbWibWjbWkbWlbWmbWnbWobWpbWqbWrbWsbWtbWu.Lu.fBbtIazm", -".DBbQibWv#HU.g4bL5bP.bK5bxtbWwbsCayubpjbWxbr9bQebGIbWybWzbReayD#L0awJbQfbvjbpkbuPbyD.svbnV.oa#1WbWAbjx.D#bWBbUXav#bWCbFYbWDbvPbWEbInbWFbCg.w2.PsbWGbBCbIqbWHayC.aWbvCbPgbWIbWJbWKbIhb#mbWLbWMbWMbWNbWObWPa.M#Wq.IgbMYbWQbWRbVNbmxbWSbLKbADbWTbWUbClbSGbWVbWWbWX.A9br9bWYbWZbW0bW1.d3bW2bW3bW4bW5bW6bW7bW8bW9bX.bX#bXabLXbXbbn9bXcbXdbPgbXebXfbXgbXhbTabXibXjaQCbDCbXkbpbbXlbXmbXnaw7bXobXpa.LavMbXqbXr.MabXsbuzbXtbtgbXu#P#", -"bDAbRG#3b.IXbIAas3acdbrQbP#bsCbG#bQd#u.bRT.tVbXvbXw.qL#D2.mU#u..PbbL1.cgbXxbXy.ohbyD.qEaoR.1H.QCaBmbjj.g4bJ.bT8bBSbAQbXzaoJbXAbXBbXCbXDbXEbXzbXFbXGbyN#HI.g5bPBbXHbH#bXIbWIbJobXJajebXKbXLbXMbXNbXObXPbXQawwbXRbtGaoG#7w.yHbrSbXS.PwbXTbXUbXVbXW.GjaxVaw0bXXbXYbWBbpLbXZbX0bX1bU6bX2bX3ayXbX4bX5bX6bX7.zTbX8bX9.uk.IVaq##6i.xPbY.bEEaM3a0abP2bY#bYabYbbYcbYdbYebDCbYfbYgbTfbUfbYhbYibYjbYkbYlbYmbYnbYo.LH.M#bYpbYqbYrbLnbLn", -"bIM#9d.KUaz9bYsbEybYtbYubYvbYwbQd.xW.cZbPjbYxbYybYz.sCbYAbYBbYCbYCbYDbjlbkP#X8.ud.Df.oI.oJ.cFanpbYEbYFbYGbYHbIbbYIbYJbQE.Jm#u#bYKbAWbYLbxtbLmak9bfgbfgak8bYMbK4bvMbXHbwVb#pbYNbYObYPbYQbYR.PjbYS.PB.RabYTbYUawvbqhbYVbYW.NG.InbYXbWubYYaambYZbuxbY0bY1bY2.w2bOG.g4atLbY3bY4bibbY5bY6bQHbY7bvpbY8bY9bZ.bZ#a9CbZabZb.kKbXy.mn.cIbHobEBbZcbF1bXKbWObVkbZdbNT#NRbYebZebZfbZgbZhbZibZjbZk.3#bZlbZm.NtbZnbYnbZo.ABbZpbGwbkt.WgbGv", -"#4GaxJ#kwbZqbI6bKK#nobYwbZrbZsbOlbFtbPj.#DbM7bZtbZubtn.r9arWbHQbZv.kT.KT#4L#Pl.ud.DfbZw.mQ.afbZxbrebGvbZybZzbZAatqbH#as3avSbZBbpIbZCbZD.i4ava#RUbN4bZEbOYbnkbFYbZFbkmbzqbZGbZHbZI#PhbZJbYQbZKbZLbZL.PjbZMbvHbZNbWpav6.LIbZObYWbZPbZQbZRbZS#WobZTbZUbZVbZWbZX.zOas2#6aawebpGbj4bZYbZZbZ0bW4bZ1bZ2bZ3bZ4bDc.MMbM7bsr.vG.mn#vWbpfavVbZ5bFKbG5bZ6bZ7bPQbZ8bXjbZ9b0.b0#b0ab0bb0cb0db0eb0fb0gb0h#7vb0ib0j.yJb0kb0lbtGbOIbVAbB#b0m", -".zHaz6b0naxL.D##3#.kUbZsb0obSk.mUbYBb0p.#DbHnb0qbJTbGpaFtbHtbXabXa.IV.E5aq#.uc.sx.DfbZw.mQ.ae.g8b0r.LOb0sbSraymatqbJ.bM8.Lgb0tb0ub0vb0w.i4#Peb0xb0yb0zb0AbzH.PmbAFaDsbD2b0Bb0Cb0Db0Ea.ObZJb0Fb0Gb0HbMT.Pzb0Ib0JbTEb0KbWq.RHaxz.Nvb0Lb0Mb0NbAKb0Ob0Pb0Qb0Rb0SbDZb0TbLWb0Ubodb0Vb0Wb0Xbvsb0Yb0Zb00b01.JgbyDaBMaz5.IUb02#vWbqC.aK#4G#3bbHab03b04b05b06bYdb07b08bMPb09b1.b1#bm1b1ab1bb1cb1db1ebQ2b1fb1gb1hb1ib1jb1kbs7b1lbEVb1m", -"bq1b1nb1obpoaxH#GE.Jlbtcb1pbZDb1q.v9.mLb1r.eK.Hh.tSbDb.mLb1saBobr8.qe.tVbum.suajn.a0.a0.qD.qFbMJbvPbZpb0AbN4b1t.PF.Rzbxub1ub1vb1wb1xbpMbC2bIfb1ya02b0A#Wqb1zbSjbQEbiQb1AauGb1BbknbOhbP4b1CbYQbZK.Reb1Db1EbUlb1FbTEb0Kb1gb1G.rv.yHbthatVb1Hb1Ib1JamUb1K.Gkb1Lb1Mb1NbE9b1O.21b1Pb1Qb1Rb1Sb1Tb1UbxIbDcadH.sxbNu.v1.eNawOb1VbBl#4H#9db1Wb1X#NPbyfb1YbbibAAbzvb1ZbUDb10b11b12b13b14b15b16.ECb17b18b19b2..P7b2#b2ab2bb2c#QAb2dbWK", -"bz2bOkbYubWWbA6bVFb2eaw0bDPbrf#D3bHsb2f#r8#qlb2gb2h.94bjn#NYbTub2ibL2.qe.9Qb2j.kibkLbKMQtUbSlb2kb2lbzZb2mb2mb2n.dxb2ob2pb2qb2qbsjb0mb2ra10auNaRzbTwbDCbJEbRdbJmb2s#3jb2t.B.#v6#9bbF8b2ub2vbZ9bWOb2wb2xb2yb2zb2AbZNa.Mbsjb2Bb2Cb2Db2Eb2Fb2Gb2H#RybWY.Lgb2Ib2Jb2Kbpub2Lb2Mb2NbS1b2ObNq.tFb2Pb2Q.Q9b2Rb2SbXxb2Tb2Uaubb2Vam4b2Waawb2Xb2YaRBb2Zaaqb20b21b22b23b24b25b26b27b28b29b3.b3#.Q.b3abBOb3bb3cb3db3eb3fb3gbQYb3hb3ib3jb3k", -"btJb3lb3mb3nbE5.zNbD0aoIb3ob3pb3qb3rajo#lOb3sb3tb3ub3vb3w#FXbLBblU.zNbwc.vpbFC.OX.kib3xbWxbG9bASb2nb3ybTx.UnbSCb3zb2mbOYbl0a02bN4b3A#UNb3BbIQbs2b3Cb3D.i3acdb3E.C7btt.iO#Pk#3b.IY#NVauyb3F.NDbWOb3Gb3Hb3Ib3Jb3Kb3Lbl0b3Mb3N.bwbxBb3Ob3Pb3Qb3Rb3S.xY.qB#3ibEebqS#0Dbn3bAtbRwbpDb3Tb3UbGhbpe.sx#6i.cqbnO.vxa9B.eOaubb3V.tPb3Wb3Xb3Yb3Zb0EbO6b04b30b31b32#7v#OUb33#UHb34b35b36b37b38b39b4.b4#b4ab4bb4cb4db4e.VXb4fb4gbDXb2db4h", -"b4ib4jb4kb4lb4m.i3bsibynat5bJAbAv.Lh.oG#7Gb4nb4ob4p#fZ#vZ.Frb4qb4rbDBb4sbuR.xm.a#.r2bqE.xsbXzbSrb4tbnrbnrb4ub4vb4vbzZbl1b4wbN5boNb4xb4ya11b4zb1mbylblSbSjawX.oi#lV#NYb4AbBi#LX#9bbZGaPHab4bXjb4BbWLb4Cb4Db1Fb4Eb4Fb4Gb3Mb4Hb1wb4Ib4Jb4KbESb4Lb4Mb4NbB2b4ObDqb4PbAvb4Qb4RbY3b4S.u.bh7.xnbyDbxs.zHbMJ.s.b1obqZ#z2aubb3Vb4T#BZam1b4UbFKbIe.LLb1kb4Vb4Wbwi#7wb4Xb4Yb4Zb40b41b42b43b44#Wm#Wnbxeb45b46b47b48b49b4Eb5.b5#b5ab5bb5c", -"b5dbST#v9b5eb5faxEb5gbM3bAIbBVbXAazI.Jh#3eb5hb5i#Yb#kraIEb5jb5kbTkal.bFa.xSbxm.gq.aJ.v3bKUbG4b5lbrJb5mb5maxUb1ZbSsbzHb2r#Wsbw1boPb5nb5oatqb5pbF1bEVbnkbQl#FKbNxbWB#v6b5qb1WbUvb5rb5sbYPb5tb5ubOWboUb5vb5wb5xbqi.NFbDjb2kb5ybOlb5z.PbbhXb5AbCgbPlbXa.iMbq2b0wbOk.Lmb5BbI.b5Cb5Dbh7b5E#i7.Dfb5Fb5GaxLbJWb5HbFH.xPavX.Bs.Bs#B0b5IbwUb5JblTbQXb2ab5KboXaqFb5Lb5Mb5Nb5Ob5Pb5Qb5Rb5Sb5Tb5Ub5VboZa3Bawxb5Wb5Xb5Yb5Zb50b0GbVJbs0b51", -"b52b53#0Db54b55bJEb56bWfbz0bVCb57b58b59aqzbwab6..mmaubb6#.F.b6ab6bb5kb6cb6db6eb6fbxn.vH.evb6g.#sb6hbyib6hb6i.PybPVarEb6jb6kbEGb6lbOcbW.bVf.mqbJob6mb6nb4yb6obK2bJ.b6pa0bb6qb6rb6sbZIb6tbYRbXPbYUbFubz0.U7b6u.NmbnsbZybPibxw#x6br7#JTb6vbD2auxb6wb6x.v9b6yb6zbOnb6AbGKb6B.vp.xmaca.UD.oJbZwbwC.BvbpAb6Cb6Db6EbyK#4Hb6Fb6F#3cbxUb6GbQaaxDb6HbYZb0iboYb6Ib6Jb6Kb6Lb6Mb6Nb6Ob6Pb6Qb6Rb6SbrNbYVbyjb6Tb6Ub6Vb6Wb6XbXQbs1a10#Wsb4G", -"b6Yb6Zb60#xVbTGbLLb56bMybyPb61aw1bCmb2Salf.aI.Wx#7DbKWb62#NUbWKb6bb5kb63#9kb64aT4b65.ajb66b67b68b69b7.bvHbHxbUKauPbzrbAFbAPb7#bHhauBb7abHgalab7bb5abdh.Pk#RU#PebT8aOlb7cbE2b7db7eb7fb#nb7g.PBb7hb2l.CCbBUadxab2bnsbnjbXzb7ib7jbWXbQ.b6rb7kb7laFv.AHb1qb7mb7nb7o.Tbb7p#4Fbxm.gt.Yk.1HaoO.aI.OC.cJbn9b7qb7r.GX.xP#i8.ITb7s#9cbtDbxvb7tbkubXSbxd#UK.Ns.AAbYpb7u.LQatXb7vb7wb7xb6Rb7yb7zbYVauMbbhb7Ab7Bb7Cb7Db7Ea.Nb7Fb7Gb7Hb7I", -"bjBb7Jb7Kb7LbBVb7Mb7Nbz0b7Obps#4CbFXbpJbFn.xo.aZb7PauZas3bvNb7QarDb7R#Pjb7SaIEb7Tb7UbEAb7Vb5kb7Wb7Xb7Yb7Zb70bs2b71b72bDBbJ.Qt#b73b74#HR#HRb75b76b77b78b79b8.b8#b6gal.bZHbkqblWb8ab8bb8cb8db3GbVMb8eb8fahkb0sbEobN4bARbLmb8gb8hb8ib8jb8kb8lb8mbFebF.at7#6#bxtahtb8nazrb7sb8o#3e#3d#fX.iZ.aI.OC.cJbyKb8pb8pb8qb8rb8qbHo.KU#3abwcbsCazob8s.Evb8tb8ub8v.Npbuzb8wb8xb8yb8zb8Ab8Bb8Cb8Db8Eb5mbdgbXjbQ6b8Fb8G#JJb8Hb8Ib8Jb8Kb8Lb8M", -"b8N#vR.EtbKxahj.L8b8ObXSb8PazmbmYb8Qb8Rb8Sb8TbNob8Ub8Vb8W.U6bJEbD0b5J.DDbCsbDA.chb8Xb8Yb8ZbJsafs.NDbThb7Zb80awsb81b82b83bPebRbb84b85b86b87b88b89bP1b9.bXMb1Db9#bIgbIcbZIb9ab9bb2vb9cazEb9db9ebZMajdbPCbCObBGb9fb9gbAzbK3bT8b9hb9ibN#b2Yb9jb9kb9lb9mbRIawEb9n.Rzb9ob9p#B0.OB.km.qO.qO.mZ.a.b9q.Bv.xO.DAb9ravWb8rbzW#kw.ufbI6#noaysb0razmb9sb9tb9ub9vb8Db9w.M.b9xb9yb9zb9A.Iob9Bb9Cb9DbMPb5tb9Eb9Fb9Gb9H.PFbBBbrZb9Ib9Jb9Kb9L", -"b9Mb9Nb9Ob9PbLQb9Qb9RbLnbOpb9Sb9Tb9Ub9Vb9Wb9Xb9Yb9ZbEJb90b91b92bNdbxvaxG#3b#zQ#7IbZ5bEz#X4.Nea.Nb69bUkawxbMPb93bWCbXHb94b95#HTb96b97b98b99c..c.#.Njc.ac.bbYTbXKbs0b6bbYOc.cc.dbqgc.ec.fb9dc.gb8dbupbIgbVJc.hbXMb79c.ic.jc.kbFabHXaoU#0Hc.lc.mc.n.dybC7c.oc.pbBEbH#c.qc.rc.s.mlc.t.ag.rU.a.bCr.v0bBlb6ec.u.xO.IT.KV#3bbI6bJQauYc.vbkyc.wc.xc.yb9R#86c.zb9Bbxdc.A.Grc.Bb4abNXc.Cc.Dc.Ec.Fc.Gc.Hc.Ic.Jc.K.Ndc.Lc.Mc.Nc.O.y0c.P", -"c.Qc.Rc.Sc.Tc.Uc.VbO0.Oxc.Wc.Xc.Yc.Zc.0c.1c.2c.3c.4c.5c.6c.7c.8#9mc.9c#.#6c#7Baz9bTPaBp.RzbBFa10awAawxb80QtSbWCahsc##bI9bEEb6#c#ac#b#FRc#cc#dc#ec#f.NCc#gc#hc#ibZ6c#jbYPb2v#Pgc#kc#lc#mc#nbOWc#oc#pc#pbZ8c#qbXOc#rc#sc#tal.bOCbWBc#uc#ubk2amZbVx#X2bynbKcbDjbw1bZFc#vc#wc.uc#x.km.Yk.kP.gqbxmc#y#0Kbxnb2Vb6ec#z#3c#9c.IX#1VawVaqUasJaw1bn1btebQYbpqbYZc#A.PwbQq#4BbIWc#Bc#Cc#Dc#Ec#Fc#Gc#Hc#Ia.Rc#Jayfawfc#Kc#Lc#Mc#Nc#Oc#P", -"c#Qc#R.Juc#Sc#TbQ0bQ0.tgc#U#Zcc#Vc#W.CUc#Xc#Yc#Zc#0c#1c#2c#3c#4c#5c#6c#7.C8.ufbNJbVGbSibwfbAGbARc#8.Rx.cXb7QbMxamZ.Hqc#9bM#b6##BOca.ca#adCcaacabcaccadcaecafbZLcagbupbKtb6bbXJ.Lrc#kadzbZ9cahcaicajcakcalcamcancaocapcagb4rbCvbUHbIAbEyawUbL2b2ecaqcarb0#.LMbN5bF4afDcasbqZ.Bwcat.eK.eKbkS.Dt.sxb3wcaubxncavc#z#3cbZ5bI7bjybiPcawbAObTo.yObCgbFvbkscaxb0Scayb4g.#nbK7cazcaAbObcaBbODb62.gwb97caCa.SaA#caDb3OcaEc.NcaFcaGcaH", -"caIcaJcaKcaLcaMcaNcaOcaPcaQbtSbwOcaRcaScaTcaUcaV#xQcaWbfkcaXcaYcaZ#Puca0.C8bYsau8.BEbBFboOb2nb2nca1bTDb6kayhaBpbODbOFbPzca2b6#ca3ca4ca5ca6ca7ca8ca9c#gcb.bThbWLcb#bupbIicbacbbcbcawscbdcbdbJwcbecbfcbgcalcbhcbicbjcbkcblcbm#HJas1cbn.xVcbocbpbG9bFMb8ebGqbnrb4Fcbqak8bK5bRebn7cbrbDcanp.ub.MK.ud.iU.gYcbsaubb6FbJV.xt.zi.zMbiQaygbAdb2icbtbEZcbucbvcbwcbxcbybUwcbzbYucbAcbBcbCbIJbKWb8rb8r#QI#z1cbDcbEcbFcbGcbHc.N.1hcbIcbJ", -"cbKcbLcbMcbNcbOcbPcbQcbRcbScbTcbUbzdcbV.KI.9IcbWcbX#aQcbYcbZcb0cb1cb2cb3#7A.zMbHZb72auPb4taxUcb4bDTbvM.zNbVFbUGcb5cb6bA5bHU.eucb7a.Rcb8cb9cc.cc#bYc.#rb3Kccab7hawuccbcccbIfbG5bF0ayobJqbBHccdbXJcceccfccgbXicchccic.abZMccjb03bJ#b2ibIqcckbsibETbCN.cXc#8cclbWqb1gaxBat5ccmccnaAfbBY.w.bzOarbcco.tI.mm.gYccpavWbJVawl#9lbiR.aWbvCbvCbE1ayBccqccrauIbBEbYHbC2ccs#HXbM8cct.R..ue.sx#6h.kY.kY.iSb8o.I0ccobLiccuccvccwccxccyccz", -"ccAccBccCccDccEccFccGccHccIccJccKccLccM#d2ccN.OoccOccPccQccRbDMbu9anoccSbK#bHabJsccTccUb6ibZNb4tccVbL5as2bEyaxH.g7.vy.HoccWccXccYccZbMScc0cc1cc2cc3b3Kcc4.w0awuahlccb#QA.PFb03cc5bF3bF3cc6bAyatqcc7cc8.LqbNRcc9cd.c.acd#b0Fcdab7Q.g5.g5.Pmbh#bARbF2cdbcdccddbVtbnrcdebtHcdfcdgb4IcdhbGjbzMbFr.oh.iS.Ym.gY.vBcdia.Tcdjb73cdkbUWcdlbUWcdmcdncdocdpc#GbDBbL7bOC.Jrcb5#6jcdqcdrbkS.qE.oc.1H.Z4aoT#nf.Hhbh7.P.cdscdtcducdvcdw#ok", -"cdxcdycdzcdAcdBcdCcdDcdEbj4cdFcdGcdHcdIcdJcdKcdLcdMcdN#HDcdObvo.4PcdPcdQcdRbZGbTkb08cdScdTcdUa9wasKcdVapbbTScdW.cp.cp#6jbQNcdX#JOcdYcdZcd0cd1cd2c.acd3cd4b4Ccd5cd6QtS#QA.PFbAybOicd7cd7cd8bEGc#Fcd9ce.ce#bP2ceaceb.#rceccedbMPaymceeca1.LLbUKbUKcefcegbvFcehb3LceiaxBcejcekcelcemcencdhceo.LfbuP.vu.vt.gYcep#z1.zja.SbIzceqcercescer#DMcetceucevcewcexceybNvbI7.HobyKaoQcatbnV.qb.Z1.DmcezceA.OLceBceCceDceEceFceGceHbkDceI", -"ceJceKceLceMceNceOcePceQbmLceRceSceTceUceV#hoceWceXceYceZce0ce1ce2ce3#t9a0bbSf.PEc.hcd3.wXce4bMPayCce5bGLb2tce6bjmce7#zQ.IYce8asMce9bSccf.cf#cfacfbcfccfdb70aaqauNb93cfebAQbZFb6laDsaDsbkmb6wbYJcffauybqecfgaarcfhb78cfib78bZMcfjbMTbVKb0IbZNcfdcblbMTb6ibWqb4FcfkbEocflcfmcfnbuLcfobX#bxibYBb2S.ue.v0#Zv#x3cfpcfqbKJcdkbZGbW.#NUb7Rb3Zc#JcfrcfscftcfubI9.DabKVcfv.Bb.zCbTs.xQ.SD#n#cfwcfxcfybpl.cycfzcfAcfBcfCcfDcfEcfFcfG", -"cfHcfIcfJcfKcfLcfMcfNcfOcfPcfQcfRcfS#ojcfTcfUcfVcfWcfXcfY#JkcfZcf0#3iaxJcf1bVfbHwasvb1hb0Kb9gcf2b8Zcf3bRVcf4#9e#4HbIMbRV#JQ#Picf5b5b.Pjcapcf6cf7bVLcf8b69awwbG7cefcf9cg.a.1c#vcg#bEFcgacgabFKcgbb4zbs1aRz#UOcgcafrab3.btcgdcgecgfcggcghcgib7YcgjcgkcglbVtcde.CzcgmawAb6hc.icccamXbXDbFXboocgnbP#cgocgpcgq#1VbEzcgrbUIb6wcgsbwfc.pcgtbF5cgub7tcgv.zQbPb.GZcgwalfcgx#QJaqA.afcgy#oF.1Ccgz.p4cgAcgBcgCcgDcgEcgFcgGcgHcgIcgJcgK", -"cgLcgMcgNalAcgOcgPcgQa.2cgRcgScaL.Q#cgTcgUcgVcgWcgXak1cfUcgYcgZcg0aq.b8qcg1bVfa.M.yLcg2cg3.cXcg4#PjbQ.cg5cg6b8r.vIbJVcg7bZGb#obs0cg8cg9ch.c.hb69bwYbvHawxb3BaymbIbbL8bUIch#chachbbHX#9bbPebNvbOdchcchdbN4a02chea02b3Lcfcchfchgchhchiaukchj.RHchkchlchm.yKchn.Kaahkawx.RaaxRazE#RVbA9choahuchpchqchrchs.U6chtchubTBbTCchvchwbB.#Pachxb9PchyahuchzchAchBbzO.r7#QKchCchD.af.un.un.um#ne.gFchE.gGcgzchFchGchHchIchJchK#tS.Iw.6l", -"chLchMchNchOchPchQchRchSchTchUc.5chVchWchXchYchZch0#4wch1ch2ch3amkch4ch5ch6bVfa.MbWp.wWcg3.cXcgbcdlb7accXcf3#HTch7ch8ch9bIcbIhcg8ci.ci#bUNb7hawxbUK.RxbqcbTDcg.bK2bFab6pbMK.BCca2bEBciacf3.eubycbF4bTx.RwcibbULcdSciccidciecifcig.NF.yI.LDcihciicij.btcikcil.Gqcim.NkcinciocipbK3#X2ciqbXBaw1cir.Gk#zO#npcisbSy.trc#vbzGcitciubCfcivbRmciwcixciybmE.MLbDbciz.a0#UX.ad.af.6N#ep.cE.SN.SN.3o.Dp#i0.49ciAciBciCciDciEciFciGciH", -"ciIciJciKciLciMciNbSIciOciPbH2ciQciRciSciTciUciVciWciXciYciZ.rsci0ch4b8Xch6ci1ci2ci3ci4b1gcdacgbbUWc#Jci5b7cci6ci7bVTbTkbIhbJZbWPci8ci8cd5b80bIQbK3ci9cj.bTCc#vchabwU.DabPLazsbg2bg2bUtbCsbO8bTnbymcbqcibbUmcj#cjacjbcjcbUj.P7buIcjdcjecjfcjgcjh.J1cjicjjcjkcjlbR6cjmbUKc#nbJu.e2bDo#Zralkcjncjobteazmcjpcjq.v#b94bXYcjrcjsboMcjtcju#JXbtcbLW.qJbzNbzO.stanpcjvcjwcjxcjy#ep#ep#fW#fW.cE.sw.Wu.Wu#i0cjzcjAcjBcjCcjDcjEbhfcjF", -"cjGcjHcjIcjJcjKcjL#G5cjMcjNcjOcjPcjQcjRbYhcjScjTbYh.4W#1NcjUcjVci0cjWazscjXb5kauMcjYcjZbnrcdacg4ch9bF8b6s.Pdcj0cefbMPcd5bWPcj1ch.cfhawtb3BbHwbzrbkmcj2Qt#.Hqcj3cj4bHWbXc#zQbDAcj5bg2apd#FXbO8bTncj6b4wbVKcj7cj8cj9ck.ck#bDkckackbckcckdckeckfckgckhckickjckkcklckmcknckobnjbARaxDckpckqbImbnXaoHckrb7LcksbP#ckt.zi#0HbKUcktbDibObckuckvbRf.D#ckw.gO.xlafB.eKckx.Dqcjxcjy#fX#fXcky#fX.cE.cE.cE.sw.Z4ckzckA.6yckBckCckDckEckF", -"ckGckHckIckJckKckLckMckNai5ckOckPckQckRckSckTckUckVckWckXckYckZck0bq2#FXck1bYO.NEck2ck3b5m#Pccg4b7cb5rc#Gck4bG6ccUb7.ck5ck5b7.bygb3BbAzbTDb5nbkmbiQ.G2.xT.Hpck6.tWbHWbHV#zQbRG.FqbEBb6#cia.FrbHYck7bOHbZMck8ck9cl.cl#claclbclccldcleclfclgclhclicljclk.jccllclmclncloclpbk5bErbChckpclqbCxboOclrbvQcfnclsbxwbWB.Da#FX.xt#HUapb.RibM.bpoaxLaxK#vW.Du#QK.eKaoP#f5cltbsf#3d#fX#7G#cV#cV#lQ#lQ.Dkclu.BybjoclvclwbH3clxclyclzclA", -"clBclCclDclEclFclGclHclIclJceQclKckQclLclMclNclOclPclQclRclSckZclTaBo.IYclUbsZclVclWck3ab3ayjbLA.DDbLjatpb4rbVJch.clXbYdclYburbyebEUbZFc.nclZaBp.Jr.xTbTPbKabFF.BCapccl0bUvbDx#9lb62cl1bNv#PjbwV#WsauO.PBcl2cl3.Phcl4cl5cl6cl7cl8cl9cm.cm#cmacmbcmccmdcmecmfcmgcmhcmicmjcmkasebvPbM3aoV.LNb5lcmlb4fbKycmmbrdcb5azs.vz#zS#7I#NY#6jbk0.v3.v1by5#t5.a..oJbnVQt0.occjxbsf.UB#fX#fX#cV#cV.6X.6Xcmncmo#Yg.Bx.MLcmpcmqcmrcmscmtcmu", -"cmvcmwcmxcmycmzcmAcmBckJcmCcmDcmEcmFcmGcmHcmIcmJcmKcmLclRcmMcmNcmObMh#9bcmP#LSclVcmQcmRcmScf2cmTcia.IYQtRb03b68ch.b7Xci8adz#PcbZFaqV.JrbPAbLxb6Gb4s.Jr#0GbQ#bNwQt#bEFbHYbE1bvCbPgbPg#Pi#PicmUb5pbyebXLcmVcmWcmWcapbQpcmXcmYcmZcm0cm1cm2cm3cm4cm5cm6cm7cm8cm9cn.cn#cnabnGcnbb1zb1zajcbM2bzHcnccndbXScfnb0rbxvbRHcneb7T.tOcdi#4GbyKb5Gcnfaudcngcnh.By.od.aH.6O.Ykbsfcni.UB#ep#epcky#cV.6X.6Xcmn.oScnjcau.Dtceocnkcnlcnmcnncno", -"cnpcnqcnrcnscntbAqcnucnvcnwcnxcnycnzcnAcnBcnCbSVcnDcnEckbcnFcnG#uabweci5cnHcnIbvHcnJcnKcfkbXIcnLbJVazscnMauxcnNcnOb#ladzbG5bIPcdRbshcnPcnQbCbbWBbJ.b6wb6wb6lbsY.Pdcf2bIb#PdcnRcnScnTcnU.Lr.Rfbupb7gcnVcnWcnXcnYbN4cnZcn0cn1cn2.sWcn3cn4cn5cn6cn7cn8cn9co.co#coacobcoccodb09bMTcdc.RvbfgbzZb1kcoecofb8scogawUbVVavW.MIcoh#0K.I0.mXQtD.DsQtX.tJ##Dcoi.1H.un.6N.WvQtzQtz.Wv#3d#3d#eq.qOcmocmo.oUcojcokcol.zo.Jhcom#Ptconbulcoo", -"copcoqcorcoscotcoucovcowcoxcoycozcoAcnzcoBcoCcoDcoEcoFcoG#S5.Mgc.Wbwdch9coHcoIb47cnJccl#Wrch8am1.vIbY.cnM.Pdccjcd5aaqbVIaOlbKabJJ.v1.Hn#DZcb6.JrbYJci9ayjcoJcbmccjb1y.#sb0HbMTc#icedbS9bS9bS9bOWcoKcoLcoMcoNb4BbDpcoOcoPcoQ.BXcoRcoScoTcoUcoVcoWcoXcoYcoZco0co1co2co3ajacncc#sbuqco4co5ab2.Nlco6bQqb8scogco7bKWaub.tQco8co9#9g#9g.kO.gs.tL#ktcp.#eq.un.un.Wv.1Dcp#.mk.ce#3d#3d.8o.qOcmocpacpb#bicpccpdcpe.I0aaA.LfcpfbDra9C", -"cpgcphcpicpjcpkcplcpmcpncpocppcpqcprcpsckP.1jcptcpu.RKcpvcpwcpxcpycbpb7Rcpzc#mcpAbVsbnrbFLawl#BZb7T.DB#PjaFuc#kb0F.RfbVH#0HbHo.I0bxmavY.xSbHXbCvbTD.RxbMPb9gawub69bXMcpBcpCb3Kciccd#asuc#fc#hcaccpDcpEcpF.NB.NEcpGcpHcpIcpJ.fbcpKcpLcpMcpNcpOcpPcpQcpRcpScpTcpUcpVcpWcpXcpYbVKbdhcpZbSDbqicp0b1icp1.Gkcp2co7b7sasm.gY.aMcnh.iXcp3cp3.iX#3e#bh.sGcp4.iDaoT.umcp5cp6cp#.xQ.Yk.aHcp7cjycp8.p6c.t#bhcp9cq.#kra.W.qGbqEaaAaBkam5", -"cq#cqacqbbrocqccqdcqecqfcqgcqh#aLcqicqjcqkcqlcqmcqn#LHcqocqpcqqaoWbG9al.cqrc.fcfibVscbqbSia.Tcqs#BZcqtb7kcqubYQcqvcf5ci7bIubBlb8o#9g#4G.DabLBb4rbUobHxbUOb6hcqwcgjcqx.wZcqyciecqzcqAcqBcqCcqDb6TbYbcqEcqFbNQa01cqGcqHcqIcqJcqKcqLcqMcqNcqOcqPcqQcqRcqScqTcqUcqVcqW.KJcqXcqYcfkcqZbSDbMZcq0b49cq1cq2cfnan7bkQ#4G#0LQtE.gZ#3e.8paoO.Bycq3cp8cq4cq5cq6cq7.Ypcq8cq9cr..Wz#1WaoRbnVQt0.aH.rU.p6.p6cr#cra#i5co9a.W.aKbhz.qG.v0.zo", -"crbcrccrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpb2Gcrq#otcrrcrscrtbVrcruck4crvcrwcrxcjYbh#bVFaaxcry#BQcrzcrAcrBbNTcrCcrDbFbcbDcrE.QAasnbQMbknadzcg9.PzbHx.PzbvHcj1bVLb48crFcrFciecrGc#gcrH#JL#LQcrIcrJcrKcrL#NRa01b56atTcrMcrNcrOcrPcrQcrRcrScrTcrUcrVcrWcrXcrYcrZcr0cr1cr2cr3cr4cr5adx.NmcnKb48cr6cr7axV.kVcr8.iQcau.a2cr9cs..6O.oc.Dqcs#cni.oScsacsbcsc#necsdcsecsfcsg.vwaca.c2bzRaoPaqAcq3.q..tM.tL.vsb8obxm.qG.vGbhz.iQ.en", -"cshcsicsjcskcslcsmcsncsocaTcspcsqcsrcsscstcsucsvcswcsxcsycszcsAcsBcarcsCcsDcrwcrxcsEblSapb.gXawo#TkcsFahmcsGcsHc#qcsIaqX.xy#ks.mmccpcsJcqucb.csKch.bUObygch.cqwcsLb48csMcsN.wZcifc#fcsObbhbZ9csPcaibMQcqvbIhbMP#WrbM2csQ.rscsRcsScsTcsUcsVcsWcsXcsYcsZcs0cs1cs2cs3cs4cs5cs6cs7cs8.KaaxBab3ciccs9bNWaxV.kVbTS.iQ.3k.rVct.#3dct#.cecp6cta.Bzcs.cmoctb.Z1.Z4.ejctcctdctectf.Jgctg#t3bzQaoPaqA.mYcth.a1.kN.gubuPbqE.GZ#6i.iQcti", -"ctjctkctlctmctnctoctpctqctrctscttctuctvctwctxctyctzctA.NPctBctCctDajccsCcsDcrwb4DbnqbvOaxH.aMctEcevctFctGctHctIctJce9cerctK.r4ctLctMcerb07ctNctOcqwb80awAawwbUkcgjctPctQctRb2Ab1Ecfjb08bIh.PEajebG6bG6ctSb5actTb0GcedaqE.CBbm1ctUctVctWctXctYctZct0ct1ct2ct3ct4ct5#yact6ct7#52ct8cilct9cu.cigbTEb23cu#.kVcua.iQ.3k.p8cubcjyct#.1Hcsecq9.1Hcucclu.sw.m0.Yj.qP.mgcudcuecuf.n0.OE#t3cugcuh.aI.iX.aI#t4.ub.elbFrbo#.E5.R..cI#hC", -"cuicujcukculcumcuncuocupcuqcurcuscut#cicuucuvcuwcuxcuycuzcuAcuBbAMb0sawBcuCcuDcuE.dxb2ebVVcuF#cOcuGcuHcuIcjacuJ.PicuKcuLcuM#UScuNcuOaGz.NjcuPctNbS9QtSbIQcuQawubYUcuRcpC.PAcuScuTbQ5cuDb7gcoIbYdbKrbKrcuUcrw.u9cuVccicuWburcuXcuYcuZcu0cu1cu2cu3cu4cu5cu6cu7ctXcu8cu9cv.cv#cvabLQbEscvbb2radybtGcvcbtean7auZcvd.vq.km.44cvecvfcvg.eq.eqcvhcvi.ce.umcq8.3o.eIbmn.vwcvj.e5.c1.xl#t3bkOcvkcuh.8q.8q.tR.Ba.gObzNbHrcvl#Pm.IUavW", -"cvmcvncvocvpcvqcvrcvscvtcvucvvcvwcvxbDKcvycvzcvAcvBcvCcvDcvEcvFcvGbEschjcdUb4CbfgbXEbIAcvHcvIa3EcvJcvKcvLcvMcvNcvOcvPcvQcvRa.Rb76cvScvT.NjcvUcqzc#lbIcbYOcqub6acvVcvWcvXcvYcvZcv0cv1cv2cv3cv4cv5cv6cv7cv8cv9cw.cf#cbic.bcw#bNyai7cwacwbcwccwdcwecu7cwfcwgcwdcwhcwicwjcwkcwlajsbVBcwmawwajdcpGcwncwocwp#zOb3Ncwqcwraz4.rT##I#kq#kq#kq#fW#fW#ep.6N.6OQt0bh8cwscwt.mQ.c..qE.Dxcat.r3.kY.kY.kY.iTasn.6T.6T.tQ.eMb1rbDbbr5.ohcwu", -"cwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFcwGcwHcwIcwJbx2cwKcwLcwMcwNcwOcwPcwQat2.wXcwRcwSbsC#6bcg6cwTcwUcwVcgdcwWb8dcwXcvJcwYboTboTab5cwZcw0cw1bSb.NzbWeb6bcmUauzcw2cvScw3cw4cw5cw6cw7cw8.Ph.tocw9cx.cx#cxacxbcxccxdcxecxfcbicxgbN2cxhcxicxjcxkcxlcxmcxncwhcxocxpcxqcxrcxscxtcxucxvcxwbKcbWebScadzbC7cxxcxybAJ.u3cxzc.9cxAanp.UD.Wu.cDbtxbtxcxB#fX#fX#3d.6PcuhcxCcxC#0QcxDcxEcxFcxGcxG.kN.kO.vq.vq.vqasncxHcxI.8q.sH.apcxJ.w7cxKcxL", -"cxMcxNbuicaIbvocxOcxPcxQcxRcxScjBcxTcxUayUcxVbAocxWcxX#Hz.KvcxY#BqcxZcx0cx1bSCbVDbzE#3#bWvcx2cx3b5ucx4cwWcuScrCcx5cx6cx7cx8#HMcwZb5ccw1.Racx9cy.cy#bSecyacyacybcyccydcyecyfcygcyhcyicyjctNcykctNcylcymcyncyocypcyqcyrb7Zbs8aoWcyscytcyucyvcywcyxcwdcyycyzcyAcyBcyCcyDcyEcyFcyGcyHcahcyIcyJbs0.dx#84.GrcyKbXBayIaFt.st.a#.SN#hu.Fg.Fg.Fg#7G.qO.Sw.iS.iR.zl.iRcyLcyMcyNcyL.zC.zC.Bx.kN.kO.kO.kO.kOaqA.1E.DgcyOcyPcyQcyRcyScyT", -"blycyUcyVcyWcyXcyYcyZcy0cy1cy1cy2cy3chRcy4cy5bU4cy6cy7cy8cy9cz.bfl#xSc.UbAIbCdavQcz#bKKbDxczaczbb8dczcb3Jc#rcy.czdcze#HMczfazFczgczhbZdcf7cziczjczkczlawiczmcznczoczpczqczrczscc#camcancancv3cbjcztczuczvczwczxcqFc#qbULczyczzczAczBczCcyzczDczEczFcyzczGczHczIczJczKczLczMczNczO#9.cyJczPbNRbyfczQ#Te#X0bCJczRczSbjGaca.cF#lQ#7G#7G#7Gcjy.UC.Wx#t5.I0#7D.em.BbczTczU.iR.kN.kN.kO.kO.kO.kO.kN.mQ.zzczVczWczXczYczZcz0cz1cz2", -"cz3.Gsb11cz4cz5.EubOocz6bwDbvlcz7bwEcz8cz9cA.cA#cAacy8cAbcAccAdcAecAfcAgcAhavQcAicAjb5ycAkcAlcuKcAmczccjcbWNcAncAocAp#HLbMScAqcApbMRcsGcArcAsbNSc.HcAtcAtcAucAucAvcAwcAxcAybPScAzbPRcamccib5ZcAAcABcwZczgcACcadca9b4BcADb32b0ccAEcAFcAGcAHcAIcAJcAKcALcAMcANcAOcAPcAQcARcAS.EU#NqbF3bNRczPb7Ab4B.dwbYpcATb2BcAUbtabC.ajn.kZcAV.8o.8o.8o.8p.Z7.iW#7D.cJ.iQ.iQcAWbSp.mXcAX.r6.r6.zl.kY.aI.a.#0QcAYcAZcA0cA1cA2cA3cA4cA5cA6cA7", -"cA8cA9bWtaxAcgmcB..YbcB#bCeaqscBa.th#QhcBbc#ScBccBdcBecBfcBgcBhcBicBjcBkcBlbjzcBmauXbQabUJcBncBocBpcBqcgdcArb6TbT9cBrcBscBtcakcBucBvctGcBwcc#bTbcBxcBycBzcBAcBBcBCcBDcBEcBFcAyaxTcBGbNRcBHcf7bNTcBIcBJcBKcBLcqDcrIbXj.LJcBMcBNcBOcBPcBQcAHcBRcBScBTcBUcBVcBWcBXcBYcBZcB0cB1cB2bsEcB3cB4cB5crJbXLcdecB6bGvbWFbMjbXw.mS.qC.DwQt0.8p.8p.8pcp3.Ym.iTcB7#9dbHo.xPbxT.BB.KWcB8.tR.tR.xv.zl.aI.a.#0QcAYcB9cC.cC#cCacCbcCccCdcCecCf", -"cCg.yJ.yLbVtcChcCicCjcCkcClbnrbBbbQqcyK.Ox.ZVcmXcCmcCncCocCpcCqcCrcCs#W.cCt.xVcCuasKb5ncCvcCwcCxcCycidcqzczicCzcrKcCAcCBcCCcCDcCEcBvctGcnYczibTbcCFcCGcCHcCIcCJcCJcCKcCLcCMcCNcBFcCOczgcCPcAobYdcCQcBJcBKcBLcqDcCRcsOchdcCSallcCTcCUcCVcCWcCXcCYcCZcCWcC0cdAcC1cC2cC3cC4cC5cC6cC7cC8cd6adzb2ZcC9.ADcD.aoVbHBcD#cDacDbbv6bkSaoP.iX.iX.iX.vt.vta.WcDcbTRcDdcDe.tXcfvavY.aL.OC.vq.iR.iR.aI.kPaqA.BybnV.mccDfcDgcDhcDicDjcDkcDl", -"b0KasvcnJb47ctPcDmcjccDncj1awucmSb6ub4fcDocDpcDqcDrcDscDtcDucDvcDwcDxcDybmTbVGatpbIcb5acDzcDAcDBb3HcDCcBpcB5bTbbNRcCCcCCcCCcCDcCDcCCcDDcB5cDEcBGafucDFcDGcDHcDIcDIcDJcDKcDLcCHcAwcDMcDNcDO#LRcDPcDQce#cDRcDScBr#LPcrIcDTbUbcDUcA#cDVcDWcDXcDYcDZcD0cD1cD2cD3cD4cD5cD6#51cD7cD8cD9cE.bDVajdbdjcE##Tf.CzcEabChcD#cEbcEc.KQ.i0.gq.a1.Wx.gs.gs#0MbxnbHocEdcEecEf.gvbyK.iQcB8.zKbwC.Bx.a..kP.kP.kP.WxcEg.r2cEhcEicEjcEkcElcEm.jo", -"cl4cEnch.bYTcuScEocEpcvLcapbWLbrJ.UnaoHbKxcEqcErcEscEtcEucEvcEwcExcEycEzcEAbvCcEBcvJ.u9cECcEDcEEb3Ic#rc#qcEF.NCbSccygcygcEGcEHcrKcEIcEIcadbTbcEJcEKcELcEMcDIcENcEOcEOcEPcEPcEQcER#HNc.IcdYcDRcEScDMazF.S9cETcEUcrKb5ub06cEVchrcEWcEXcEYcEZcE0cE1cE2cE3cE4cAgc.pbQW#89#WtcE5cE5cE6#LMcE7b8ecwSbKAbDkbDkaxCbIlcD#.uicjWbsp#ICcE8.a..aI.iW.3kco9#hB.GX#DYcE9.gvcwubyK.cJ#7D.vq.OC.kO.a.aqA.kP.Yk.ip.aN.QBcF.bgmcF#cFacFbcFc.rl", -"ccjb7WbYQck5c#obWeb8db8db50cb#bNObFubAHcFdchrcFecFfcFgcFhcFicFjcExcFkcFlbGgauzcFmcFncCxcDBcFocFpcFqbP0cy.bYccFrcFr.Nf.NfcFscFtcAzcrJcFtcFucBGcFvcCHcFwcFxcFycFzcFAcFBcFAcFAcFCcFDcFE#HNbqfczncFFcFGcFHcFvcFIcFucACbMRb7gbG7cFJcFKcFLcFMcFNcFOcFPcFQcFRbirbCwcFIcc0#NRawCcFScFTbnjcE7cFUa10boObB#b4wbtFbKcbCKb7nbRebPb.mS#IC.kRbZw.a1.iS#0Mcpe.en.xPbHob8ravV#4H.cJ.em.OC.vq.kO.a1.gtaqA.kP.Yk.iZ.tKcFV.gjcFWcFXcFYcFZcF0cF1", -"boS#QDcF2b6bc#jc.eb5bb0Gb77bNOcF3atscF4bmvcF5bKycBbcF6cF7cF8cF9cG.cG#boe#ZscGacGbcv9cGccGdcGecGfbP0c#ocwVbNQcACcACcGgcdZcGhcAzcGiczrcEJ#JK#JKcGjcGkcGlcGmcGncGocGpcGqcGrcGrcGscGtcGucEQab6cGvcGwcGxcGycFvcBsbSdcABcwXb8cbJvbs4cGzcGA#GYcGBcGCcGDcGEcGF#PbczrbQScGGcnNblScGHcGIbErbDWaftcGJcblbyfajdcGKc.pbuFaytbMhb1scGL#IC.kRQtW.a..gscnhQtX.Ds#vX.kXcGM#vW.aL.OCb9q.zC.iR.aI.a1.kP.Sw.Yk.aH#3d.qO#oFcGNcGOcGP#EacwjcGQcGR", -"cGScGTauzcGUbIcbWKchc.bubJ0cGVcGWcGXcGYbUbbUbcGZbLN#oAcG0cG1cG2cG3cG4cmAbSjcG5cG6cG7cGccG8cgdc#qb07b9ccG9cH.czgca8cBtcyfcGhcEJcH#cBFbMScGjcab#FLcHacHbcHccHdcGrcHecHfcHgcHhcHicHjcHkcGucEQcHlca6cHmcHn#HLcEScHobKsc.ecHpbupa01cHqcHr.ZtcHscHtcHucHv.RycHwcHxcHycHzcHAckpalkcHBamWauNcAncoKcHCbZLajd#WtcHDbxt.zPayv.KSbmHbzP.Hi.a..a1.Wx.gs.QAcHEa.W.aL.r6.r6.kY.kN.zCcxFbnP.aI.kP.kP.Yk.Yk.aH.6N.FgcHF.6JcHGcHHcHI.jJ.B5cHJ", -"aHH#RWcdmc.KcHKboQbw1cHLbBaa3BcHMco6cHNb30b30.StcHOc#ScHPcHQ.jNcHRcHScHTb1z.NzcHUcHVctHcuSawxauOaarcBJbQ7cx6czecHWcHXcHYcHZcb9bPUcH0cH1czn#FLcH2cH3cH4cH5cH5cH6cH7cH8cH9cI.cI#cIacHjcGocFCcIbcCGcHmcIccCQcIdbG5bF2bVIbVIcIeajebnm#JHcIfbzEcIgcIhcIicIjcIkcIlcImcInbymbkjcIoblR#UO#JLcIpcbicIqb7gcdabCWbRjbPM.JlbL1avU.MK.xlctgaoPaoO.Z7.Z7.gZ.a2#9h.aIbnPcuhbnP.a1#0QQtAbyJbyJaoO.kP.Yk.aHcp7.6NcIrcIs.zvcItcIucIvcIwcIxcIy", -"cIzcIAcIBbE3apTbkkcFJcICbFw#87avObrLcIDcIEcIFcp0b4uab0cIGcIHcIIcIJcIKcILbM0cIM.tocINbWNburbCOb2rbJqbQ8cIOaascIPcIQ.LpcHYcHZczqcIRcb8#HN#FN#FNcIS#WvcITcIUcIVcIWcIXcH8cH9cI.cI.cIYcIZcI0cFAcEPcDGczpcIP#NTcf2bFLbAFbqdbzrcegajebLHcI1cI2bVTbCvbD2b6l#NTcI3cI4cI5cI6bwfbBPcI7cI8bXfcI9cJ.cJ#cJactTbK3bPBcJbbL3cJc.cZaomarcaro.QC.kZQt0.8p.Z7#cL##D.iZcp7.6Ocuccucbh8.iZ.kPbyJbyJaoOaoO.aH.aHcp7#eqcJd#6f.oVcJecJfcJgcJhcJicJj", -"cJkcJlcdnbvCcJmbG8cFdbGvbIUbsjb4wbnr.bscJncJocJpcJqcJrcJscJtcJucJvcJwcJxcJycJzcJActNbXjafr#PacJBcHKawiczmczncJCcJDcHmcJEczqcJFcJGcERab6ax7c#IcJHcJIcJJcJKcJLcJMcJNcJOcJPcJQcI.cJRcJScJTcFBcJUcJVcAucJWbIbcJXbBDb9nawGbymb5ocJYcGa.LqcbfcJZcJ0cJ1cJ2cJ3bvDcJ4cJ5cf5.e2bBFauQcJ6cJ7cJ8cJ9cf.bJZboNb6k.RzcK.cK#brB.tV#Pmarcbmi.QC.kZQt0.iZ.iY#fZ#er.96.6N.6N.6N.Wv.1Hcjy.Yk.6Ocp7cp7.aHaoObyJbyJcKacKbcKcbwacKdcKebtXcKfcKgcKh", -"cKiaqWbH#cbzcKjcKkcKlcKmb5LbGPcKnawAcKocKpcKqcKrcKscjocKtcKucKvcKwcKxcKycKzcd3cCycBwcKAbDWawFcKB#LTcKCcKDcFFcJCcKEcKFcCFcKGcEKcCHcKHcEQca5cKIcKJcITcKKcKLcKMcJLcKNcKOcKPcKQcHhcJScI0cKRcENcEOafvcKS.PdbTlcIicKTcKUcKVbOjcKWbrDcKXcKYcKZcK0cK1csFcK2biOcK3bZIbYObXJayj#PccK4#LPbVhcK5cK6cc9aar#89bCNcK7b0TcK8ckvcK9aywbr5aro.QCbnV.oK.Swcs.cr9cs..8o.Wv.un.1DQtzQtzQtzQtz.95.6N.6N.1H.aHcp7cp7##DcL.cL#cLaQtP#t0cLbcLccLdcLe", -"bC3bvMcLfcEqcLgcLhcLicLj.T0bZpab3cdScLkcLlcLmcLncLo.cYbkybt5cA.bVPcLpbOpcCScLqbHwbJwcLrbP4bZIcLscLtcHncHYcyecLucIQcKFcH1cLvcCHcHlafvcLw#WucHacLxcJIcLycLzcJJc#cafwcLAcLBcLCcHkcLDcEMcCIcLEcERcLFcLGbiQcLHcLIbH#cLJcLKb5pb67cLLcLMcLNcLOcLP#DMcrzbkocLQcLRce.auz#LTb4rb1mcLScLTb6Tcd.cbjb5ZcyrbUkb3ybZyaxDbTobNfcLUbL0cLV.xl.r2.a#.xQ.Yk.Yk.Sw.SwcLWbnPbzRQt0.BzcLXcLYcLZ.xR.xR.Dk.Dk.Dk.umclu.44cL0aBhaBfcL1.qEcL2bIZcL3.sk", -"bPBcKB#xUcL4cL5cL6cL7cL8.EBcL9cM.b04cM#cMacMbccabqbb6obuvcMcbPN#oMbKwbtecMdbmwamXbBE#NQaSEcoHcMecMfcMgcMhcMicMj.LpcKFcH1cMkcFEcMlcMmcMmcaacMncHaca4ca.cLzcITcMoadCcMpcMqcFwcMrcCJcBCcMscMtc.HcMu.BDbuW.FucLHbLBcMvauycMwcoHcyacuGcMx#DMcb7cMycdocJHa.RcMzcMAcMBasLcMC#PcaPGcMDcMEcMFc.acMGcMHcMIbnqbM1bynbzYbMjcMJcMKbr5.OEalg.xQ.xQ.Yk.Yk.Sw.kPcvk.cH.r3aoP.odcMLQtdcMMcMNcMN.zI.zIcMOcMO#neQtz.Z7cMPcMQcMRcMSaoP.oIcMT.OE", -"bk3cMU.TucMVcMWcMXcMYcMZcM0cM1cM2bDpcM3b2aaanbM0bXGbWGbTocjpcM4#4Ccz6cM5cM6cM7bDobw3cd7blVcM8cM9cakcN.cN.cN#cNacHWcNbcNccH0cb8cNdcNecMlcHlcEQcHa#WvcIz#FP#FPcNfadCcMpcNgcFwcNhcNhcBAcBzcNicBycMubMvcNjcNkbJ.bP7#QEbKob8acNlczlcNm#JOcNncdocNocNpcNqcNrcNscNtc#HblVbvDbF2byebAAbnobP2cgib3JcNucifbnqaxCaoI#np.PIbw9cNv.qBcNw.mf.1E.qb.un.uncjy.SwbjI.aJ.gqaoP.oc.iEcNx.gEcMNcMNcMNcMNcMOcMO#neQtz.8pcL1cMQcMRcNybfFcNzcNA.Dv", -"cjsb7tbwDcNBcNCcND#UycNE#zMcNFcNG#LKckrcNHcwpaxmbImbRIcNIcNJcNK#1Tb9Sb9Sby7alkcNLawHcNMcNNb5scJWcak.Nf.NfcEGcNOcNPcNQbPUbPUcIRcIRadBadBcFEcBAcNRcNScetca4ca4ab7cNTcHacNUcFDcFDcFEcNVcNWblXblXc#HcgrcNXcNYbHaaDtcNZb0EbnmcN0awicN1cN2cN3cdocN4cN5cNqcN6cN7bQ9cNtblVbIecN8cN9bIQczkcO.bThcO#cMbbWMb5vaoHchqcD#.DGcOabxj.e5.mf.gI.qb.SN.SN.un.un.Yk.a1bZw.gtbnV.ce.BocMM.v2#lP#lP#lP#r9.v2.m0.SN.cFcObcMRcMQcL1cuhcuhbzQbzQ.eK", -"b8gbVScOccOdcOecOf.ZMcOgb0dcOhcOicOj#82cl5bWmcOkcOlcOmcOnbt5cOocOpcOqcOrbVRcOscOtcOubEZcOvbsYcqucCBbYbbPRbPRcHzcdZcAzaxTaxTbPUcBxcOwc.HcMkcLvcOxcNScJlaHHcNncOycISca5cGkcNRcOzcOAcOBcOCcODbkqcOEcOFcNXcasccqcOG#QEcJ1cLScybaGzcOHcOIcOJ#X6cOKcN4cOLcOMcONcOOb7darCayicOPcOQ.RGcORczkb7XcOScOTch.co5cOU.RtcOVcDaaAecOWcOX.gI.Yh.v2.v2.v2#lQ#lQ.cF.gtbZw.gtbnV.cF.eq.gEcOY#lP#lP#r9#r9.v2.SN.un.cFcOZcO0cuhbnP.aI.aIbnPbnPcNy", -"a.1b2ecO1cFecM0b15cO2bfjcO3a.HcO4#LKckrcO5cO6.1ucO7cO8#GTcO9chUcP.bVQcOqcP#c.RcOtcPacPbbCVbsYcPccrLb7AcDEcPdcPecHzcPdcAzcGiczrbPUcBxc.HcPfcPfcPgcPhcPiaHHcPhcPjcPkcGvab6cPlcOxcPmcPncPocPpcPq#NVcPrb7jcgratocPsaRBcPtcLScPucPvcPwcPxcOJca3#BO.Db#RXbkocdmb0Cc.KarCafCb5o#QBcPybs1cPzbbhb4C.rzcPAcPBcMdbK7cPCbXwcPD.Fn.c#.OJ#hr#lP#lP#lP#hu#hu.SN.kP.oI.oJcPE.qb.3i#n#cOY#oB#oB#n##n#aoTcsdcgy.rTbzRbzRbnPbnPcuhcxCcLWcNy.iS", -"cJbbVz#r6cPFcPGcPHcPIcPJbR5.PucwSbCd.LtcPKbZRcPLcPMcPNbdlcPOcPPchUadvafncPQcPRazobH.apUcc6bIdbqgcrLcPSb7Acc#cqFcPTcqFcHzcrJcEUcETcPUcPVcx8cPWcPXcNscPYcPZcP0cP1cP2#FL#FMcAtcP3cP4cP5cP6b5rbFabXYcPrbRWbQ#arBcP7bQ9#9acP8cLNcP9b76cQ.cb7ca3cQ#.gwcdpbF8b3ZbZGcffcHKcQab03#Pcb0xbUocORcK4b70bO5boUcQbbVwcQccQdcQebICcQf.gI#hrbs.cQgcQgcQg#lP#lP.m0.Sx.oJ.oKcPE.Z4.3i#n#cOY#na#na.Dl.Dl.um.3o.ce.cd.gt.cGaoPbzRcxCcLWcQhcQh.cK", -"avvcQiayMcQjcQkb15cQlcQmcQncQoavcb4xb1Zb46cQp.IncQqcQrbsEcQscQtcQucQvbmYcQwcQxcQycHDboQ#NPcQzcQAbNQcziczicqFcam.NicQBczxbPRcrKcBG.S9cQCbnocLTbnncGScQDcNscLFcP2cybcQEcQFa.PczlcMvcQGcQHb4scQIcQJcPrbAccQKbF9cONcPocP3czlcnHcP0cPZcOMcQLb74cQMcQNb6rbF8ch9ch9cffc.KcQO#NQcQPcdbcQQcd6cPzcDTbUncQRcQScQTcQUcQVaAebr4cQW.Uu#r9cQXcQYcQYcQgcQg#lP.v2.oa.UD.xQ#cT.Wu.47#n#cOY#lM#Yd#hs.QF.Z4.ej.oa.oa.mQ.gt.cGaoPbnPbnP.Ym.vt.mm", -"cQZcQ0cmtclycgT#LFcQ1cQ2bCZcQ3QtT.LsbrJbTFcQ4cQ5cQ6cQ7cQ7bu2bwkbPmcQ8cOcb57bA9bymaykcnS#NScCPbT9cQ9c#qcAAcBwcamcR.cR#cRacRbcRccBt#JLcQCbnocRdb9bcGTcP0cRecLFc.JcM9cBncRfcrD#LTbsYbXH.FubnvcRgcRhcRi.DD#LVbSgcLQcNtcRjcRkcuGcRlcRmcQ.cRnb74a.Sa.Sce8bUWch9bZGc#Gb0DbKobrGbWKcnSccbbUobG7bMPb5#b21cRocRpcRqcRrbL0.st#1W#hrbs.cQYcQYcRscQXcQg#lP.m0.iE##B#cT.Uu.m0#r9.6W#ndbqNbqF#r9.SC#cT.1E.rT.zAaoPaoPaoPbzRbnPcuhcRtQtP.mm", -"cRucRvcRw.EPcRxcRycRzcRAcNBcRBbDRbARbTxbqi.N5cQ5bQqcRCb0abZfcirbOoat6bKDcRD.PnbTDb4zb#ncREcCCcRFbWObThc#qcBwcArbXibYacRGcRHcRIcRJ.S9czkcRdbqeb2ucOCcOCcRkcRKcRL#JMb4hb6tbsZbPh#HJchubo1cEbcRM#kycRNbIzcROcdpcRPcRQcRjcRRcNmcMzcRScN3cRna.S#9kb96auBb3ZbZG#LUbOhcJ1auyb8acqubYP.PEcRTbG6bMP.PkcRUarGcRVb2K.oQbLYb1rbmn.QFcQgcQYcRWcRscQXbs.#r9#hr.gG.Uv.Wo#i0cHFbqNcRXcRX.48bqF#hr.Wn.ej.ei.aacAY.cG.cGaoPaoPbnPbnP.YmcRtQtE", -"cRYcRZcR0cR1cR2cR3.74cR4cR5cR6bnxcF5bBU.P8bZQbZRaoGcjmcR7cGZcF5bvPbi0cR8bIkavbcR9b8#b8ccS.bQ6cnV.Njb50b4BbNTcadcPScPecyI.NfcCBcBsbQ7cRdbqebP5cQOcOCcOCcP8cS#bnobQ7#Pfb3Fcbma03cK7.i4bUycSacSbaqwbKacdXcROcdncN7cSccSdcSec.#cP0bkpcb7bJOcqtcSfcnLcdkb6sb6saSFb7eawi#QDbQ8cy#bqg#NSbKs.PEcnNccTbSBb7ObtecSgcShbI5ciz.eJ.oV#lOcQYcRWcQYcQgbs.#hr.YhcSi#oD.Z1.47.Z8.clcSj.49cSkcSk#eo.qa.SEbLd.UDaca.gt.gt.a1.a1.a1.aI.aI.aI#9h", -"cSlcSmcSncSocSpcSqcSrcSscStcSubv0cMdb7ObtHbYpcSv.P8b6ucM3.LtbBccwSbHA.Pn.cYbADcSwcSxc.f.PCcuVcSy.PjbXLbS9bP1czjbNScSzbTbcrKcRJ#JL#9#cSAauy#JIcffcJ1#JNa.P#JMcSBcSCcSCcORbO6boPcSDbPkcSEcSFcSGcSHcSIb2YcdocOMcSJcSKcOAcPkcNmcPhcNncb7b3YcdjbUtb6##JPaSFaSFcSLczlcNlcIOcRLcBJ#JM#LSc#lbKtc.daQCbDWcSMcSNahucShbLXbr5bnV.oVcSOcSPcSQcQYbs.bwb.qa.qa.OJ.mA#i0.of.48.clcSRcSSbwb.of#eo#a8##B.UDaca.r2.gt.gt.a..a..a..a..a..a.cST", -"cSUcSVcSWcSXcSYcSZcS0#g8cS1cS2cS3cS4bUEbpqcS5.Kdb2.btGbntcS6cS7cS8cbybvOcS9bEdcT.cT#cTacGJcTbc#sb08bVJbXKbYd#LPcFvbOVcrJcdZcH.cx6a.PaSEbOhcTcc#GcM8cyacTdcCQab4#NR#NRadAbHwbZz.w2bOncTecTfcTgcThayAcTicdocTjcSJcTkcSecTl.gxcRm#DMcb7#BObO8cTmcdj#JPaSFcSLcLFcNlcTncDMcDMcTobQ7b4hcTpbYPcTqaPGbUCbATcTrapWcTsbsB.xjaoR.umbtxcSPcSPcQg#r9#eo#UY#UY.Wn#i0cHFcSkcRXcTtcTucTvcTw.of#eo#a8##B.UDaca.r2.gtcthcthcth.a.#0Q.oI.oI.c.", -"cTxcTycTzcTAcTBcTCcTDcTEcTFbXkcTGcTHbFub0Acde.Kgbs9btGbM0cTIcTJcTKcbyawGbSjcS9bIjb4yctSb0Gc#icfjb68bMPcuQbZ9#JKcFvbNScFucBt#HKcIPcTdcM8c#GbzqatpbSecTL#JMbP3cBL#NRcg8cd5.bubJ1bUw#x7cTMbvBcTNcTOcTPbiScTQcTRb89cPhcTlcTScLOcLP#DMcTT#BO#Ww.zjbO8#JPcGTcTUcTVcTWcH1cTXcTXcBFcPUczecvVcTYbYPcnSboNbMycTZcu#cT0bGHbv5.gt.umcT1cT2#7EcQg#r9.qa#a8#a8.qa.eG.clcT3cSRcT4cT4.os.Dn.Do#eo#UYbLdcQW#i7.qE.a1.Wxcthcth.a..mQ.oI.a0cT5", -"cT6cT7cT8cT9cU.cU#cUacUbbNybEpcUccUdbZLch.bvHasvcUe.Nmb6ucTIcUfcUgbIocQybWGbSjbuYbvLb4ycUhb04byfbzsccTcUiahlbP2#JKcRJcBtcHXctFcM9aGzb4qbOcbycQtRbOhaSEcBJbLHcBL.NDbS9b70b6n.NJbIobz2cUjcUkcUlcUmaA#cRncTQcTRcvRcUn.gycUocPjcRmcNScTT#BObN9bCtcdjcrzcGTcTUcvQc.IcCFcFHcFHbXgcCOczecUpb6tcPcbTkca1bFw.GqcircT0bZvbv5.gt.un#UVcT2cSO#lP.m0#UY.mg.zm.mAcUq.clcTwcUrcUscUtcUu.Fh.eE#hr.MN.ehalg.Jgcjv.iX.a2.Wx.Wx.gt.gt.qE.Jg.e5", -"cUvcUwcUxcUycUzcUAcUBcTZbqj.PzbZLcuTcapcgicMIcdTbrL.NocUCcUDb0SbIlbzYaqtcUEaxE.g5cUFbzwcUGb2nbh#b6wbH#afCa0acSCcrHcrLcRIcUHcUIcUJcUKbXIcAkbMvbQ##LUcJ1b8acI1bZJbs0b51b5##QAcbxbTobHH.HwcULcUMcUN.IXb8k#RXcTRcUOcUPcUQcUR#X5cNncet#Tkc#ab7S.DB.ajb8kcN2b76cNmcvQa.QcNdcCFczpczocJCcM9a.PcS#b9baykcEaavzcu#cT0bHQaBkafBcAVbtw#UVbtx#hu#r9.qa.1I.OY.Yh.BmcUScUTcTwcUUcfxcTtbqN#n##hr.Uu.WCalg.zn.c.cp3.a2.iX.Wx.a1.gt.qE.DvbDd", -"cUVcUWcUXcUYcUZcU0cU1cU2cifcqzb7ha9wcPAcj1cU3cqz.P7cU4a.Kb0sajcbLKawZbxtcU5bk3c.ncU6bDT#6.bErbkxcU7bpfbWvb8Zb3kc#ncBwcB5cU8cInb67b#pcnMbKa#x5bKab8Zb#pb#pbYNcU9cV.b67bVTcV#cVa#v8.LjcVbcVccVdcVebUGcdpcVfcQ.cVgcVhcVia3DcVjbHfcVkbDy#9k.vz#3cbg2cVlcVmbHgcOJcN3bkpcUOcPZa.RcNscVnb76cP0cMucNsarCcICbH0bDEcVocVpcVq.Fnalg.af.qOckycxB#lPcSScVrciAcVscVtcVu.mA.m0#r8cMMcsc.WE#bg.SN.qb.ce.rTcAY.kQcp3.a2.vt.gs.gs#9h#9h.kNcgx", -"cVvcVwcVxcVycVzb0PcVAcVBcFpcghcVC.NF.NFcClcIMcVDasd.bqcVEbZEcM.byt#FJbPMcU5bk3c.nbIacVFbnXbJDcVGcNw.Z4aoQcl0bVTb5bc#qcArbWOb#nbIcaM3bGObKa#x5.xTbKbbUJc.kbVTa3Cb67cVHb67cMCbZF#FKcVIcVJcVKcVLcVMcVN.v#cj2Qt#cVOcVPbMbcVQb73cl1b4U.IY#X7ccWbIK.BCawkcVRcrzcQ.#RW#RW#RW#JOcMxcMzcVScVTcVTcGTcLFcVUbCicqY#zOcVVcVWbX#.dEcVX.gu.kNcnhcVY.SN.OK.xF#0O.OW.zm#cH#UY.qb.SNctbcVZcV0cV1clu.un.cF.rTcAYckxcq3.rUcthcthcthcth.a.#9h.Bx", -"cV2cV3cV4cV5cV6.AAb78cV7cV8.#qcjY.AD#Wp#ULb1F.PL.yLcV9cW.boVbSrcW#bDZbnWcawaxFcJm.w2bSt#X1cM2.Hu.OXbwb.sv.xSb83cnRbYRcQ9b07#NSbIcbOdbOC.JrbUGcWa.Ry.LsbyebIQbXKcWbb5ub5u#LPbYdcWca11cWdb1zcWebJ2cWfcWgcWhcWicWjbCmbYtbL6awWcWkcWlcWmcWnbM6bHjbF#c#GcJ1czlblYblY#QDaSEcTdcWoczkcBJcWpcTpcQzcQCcMDcmSb0scWqcWr#xVcWscWtcWubTSbqQ.tXbmGam5.xxcWv#nm.cn.zm#a8#UY.OJ.m0ctb.iD.iDctb.um.SN.qb.SE.mh.cccWw.iE.Yn.rT.xQ.xQ.xQ.oJaoR", -"cWxcWycWzcWAcWBcWCcWDcWEcGecJzbWpcJybYXcWFcWGcWHcWIcWJcWKcWLbs7.NJcWMcckcWNaqUam8.yObJCcWObH0cWP.OWcWQ.UDbXbcgrcKWcWcb77bs0bVIcf2bMxb7#cWRbL5bRjbCObyjauMbUNasucWScWTcbjcbicbjcWUb3GcWVbZMcwmcWWcWXcWYcWZb2CbsmcW0.U6bF6bw3cW1.TabF3bF3bF3bkrbFZbXJbYPa.Oc.dczkbLHaarcbecW2cW3bP2c#mcW4ck5cJ6cMEawwci2b0Aak6bMWcWr.CDcW5cWNccsbHbbSwcdW#4McW6bFk#Tu#cH.Dp.Wo#r8.gEcMOcW7.WE.WE#ne.3o.qb.SE.SyctcbyX#hqcW8.1I.QR.qP.qP.qP.MN", -"cW9cX.cX#cXacXb.LIbVLcXccXdcJzcCiavMcXecXfcXgcXhcXicXhcXjb2#bBbamWbDSbF6awHcOucXkcQxcXlcpGaxncXm#hE#qi.mhbtCbuWbYHchcbUobyeb5ocJXcXnbIrbIrbuXbwfcXocXpcXqbYUcgicvUcFpcXrcXscXtcXucXvcXwcXxcXycXzcXAcXBbXCbxWbCgbvZcXCccdbJvcoIcXDbZdbZdcXEcyIcadbJuc#lbZJbLHcXF#PfcSCadAcBL#NRbOWcXGcXHc#sb4BbXjcsOcnObyjbZEcXI.NIcfm.Eycaxbyub3icXJ.AG.v7bDqcPDcXK.Wp.47#n##n#cMNcXLcXM.zIcMM.1CcXN.Wo#UY#UWcXOaDNcXP.macXQam6cXRcXRcXScXT", -"cXUcXVcXWcXXcXYaxAcnKcXZ.#qcX0.wXcX1cX2cX3cX4cX5cX5cX6cX7bnub4f#X1c.ocX8cckcPacX9#r6bk5cWOb7Nc.vb2fbmobDd.JiawTbAEca1b4xak9cY.cjs.HsbL4awgbDibvZchecmScY#cYabVLcVDcYbcYccYdcYecYfcYgbWccJ.cf#azE.#t.Jobt3bjzcbt#HJcMCbYPcYhcYicYjcYkcYlcYmcYncYocYpbG5cMCcYqc.FaPGc.F#9.b1Cccjb5acYrcYsbVJbJvbJvcSCbZJcYtb0##7xbuH.Ez.Kb.rvcYucYvcYwcYxcYy.oQcYzcYAbqN#nd#na#nc.cC.cC.cCcQgcXLcYBcYC.eH.QQ#UW.MZ.vK.xGcYDcYE.m1cYFcYGcYHaDM", -"cW.cYIcYJcYKcYLav7cYM.P7cYNcdUctPcYOcYPcYQcYRcYScYTcYUcYVcYW.u2cYXbDPbVDbA9bDncYYcYZbk5.U8b2nbXzbumbB3.IVbmmbPicHL#7ycTHcWMcjscY0#B2cY1bGK.kUcY2b8fbl1bN5cY3bMPb68b8ccY4cG5cY5cNa#HKcY6cGjcJZcY7cY8.G0cY9#LYbLVbiRcZ..kqcZ#cZacZbcZccZdcZecZfcZgcdlbUHbLjcZhb1AcZib1BcZj.aWb7#cZkcZla.1bHZbP7b6scNScZmcZnbuXcW5cZocZpcZqcZrcZscZtbK7#x7#N1cZucZv.Bm#qhcZwcZxcQYbuUcZycQYcZz.cCcZAcZB.Bm.OY#i6.QP.UzcYD.p2.p2cZCcZD.WmcZE.Dn", -"bY0.rucZFcZGcZHcZIcZJcZKcdecnKcnJchjcZLcZMcZNcZOcZPb14cZQcZRcZScZT#1TcjpbG8bCgbjAcZUcZVbZXcZW.v.#v7aBo.zPaxEbB#bN5.dxcZXbQbbnNbZvcZYb0qaqx#3iavTbPaaoKbL2#Ztcj2bycbHY#NVawkcfsch6cZZcZ0.ajcZ1cZ2.c1cZ3cZ4bfZcZ5cZ6cdiaIE#FUcZ7cZ8c#bcZ9#Tkc0.c0#.eOc0acdrc0ab02b02b02c0b.Hnc0cc0dc0ec0f.g3c0g#zSc0hc0ic0jaoMc0kc0l#GPc0mchTay8bpvbuMc0nbKPc0o.SK.cAc0pc0qc0rc0sc0tc0uc0vc0wc0xc0yc0z.eD.BlcVsc0Ac0B.Uz.Hfc0C.b6.3pcT3c0Dbs.", -"bNjblvc0Ec0Fc0Gc0Hc0Ic0JbuI.NGboW.P7cXYc0Kc0Lc0Mc0Nc0Oc0Pc0Qc0Rc0Sc0TcSgbWGbVzc0Uc0Vc0Wc0Xc0Yc0ZbYHbJE#Wtc00adyaancPBbA9#3..r9br4c01c02bmqc03b01bDc.xj.qC.qCc04.xkc05c06c07c08c09c1.c1#c1ac0z.cAc1bc1cc1da8yc1ec1fbqKcfyc1gc1hc1ic1j.b6bse.b6.M4c1k.3qc1lc1mc1nc1oc1oc1p.eGc1qcUq.Bj.Wp#en.mAc1rc1sc1tc1uc1vc1wc1xc1yc1zc1Ac1Bc1CbGFc1Dc1Ec1Fc1Gc1Hc1Ic1Jc1Kc1Lc1Mc1Nc1Oc1Pc1Qc1Rc1Sc1TbnTc1Uc1V.BkbkT.Bm.Wq.eGc1W.Dl#hs#ht", -"cPQb53c1X#r4c1Yc1Zc10b14cLjbYrb6Ic11c12c13c14c15c16c17c18c19c2.c2#c2ac2bbPMawXc2cc2dazIc2ec2fc2gaymbnjbl0c2hbZE.LtchqbzEbr3.Hk.OWc2ic2jc2kc2l#Yec2mc2nc2oc2pc2qc2rc2sc2tc2uc2v.UOc2wc2xc2yc2zc2Ac2Bc2Cc2Dc2Ec2Fc2Gc2Hc2Ic2Jc2Kc2Lc2Mc2Nc2Oc2Pc2Qc2Rc2Sc2Tc2Uc2Vc2Wc2Wc2Xc2Yc2Zc20c20c21c22c23c24c25c26c27c2Yc28c29c3.c3#c3ac3bc3cc3dc3ec3fc3gc3hc3ic3jc3kc3lc3mc3nc3oc3pc3qc3rc3s#oI.cA.3pc3t.3j.Yh.qacXNcSi.gF.Z1.v2#fWcxB", -"bSublR#xU#Zqc3uc3vc3wc3xc3yc3zc3Ac3Bc3Cc3Dc3Ec3Fc3Gc3Hc3Ic3Jc3Kc3Lc3Mc3N#lWbSxbHtat9blbbq0aJ7c3Oc3Pc3Qak8clrc3Rc3Sc3TbKQc3Uc3Vc3Wc3Xc3Yc3Zc30c31c32c33c34c35c36c37c38c39c4.c4#c4ac4bc4caR8c4dc4e.USc4fc4gc4hc4ic4jc4kc4lc4mc4nc4oc4pc4qc4rc4sc4tc4u#ZIc4vc4wc4xc4yc4yc4zc4Ac4Bc4Cc4Dc4Ec4Fc4Fc4Gc4Hc4Ic4Jc4Kc4Lc4Mc4Nc4Oc4Pc4Qc4Rc4Sc4Tc4Uc4Vc4Wc4Xc4Yc4Zc40c41c42c43c44c45c46c47c48c49c5.c5#cZB.Wu.m0aoT#ne#ne.um#fW#cI#ep", -"bxbcWM.PmbB..Puc5ac5bc5ccZPc5dc3Ac5ec5fc5g.DS.DZc5hc5ic5jc5kc5lc5mc5nbstc5obnMbyZ.mCc5p.g9c5qc5rc5s.HtbOab7nb0oc5tc5uc5vc5wc5xc5yc5zc5Ac5Bc5Cc5Dc5Ec5Fc5Gc5Hc5I.3Zc5Jc5Kc5Lc5Mc5Nc5Oc5Pc5Qc5Rc5Sc5Tc5Uc5Vc5Wc5Xc5Yc5Zc50c51c52c53c54c55c56c57c58c59c6.#eP#ePc6#c6ac6aaQMc6bc6ca19c6dc6e#TQc6fc6gc6hc6ic6jaU1#Vzc6k#byc6lc6mc6nc6oc4xc6pc6qc6rc6sc6tc6uc6vc6wc6xc6yc6zc6Ac6Bc6Cc6Dc6Ec6Fc6Gc1lc6H.v2#r8aoT#neaoT.um#fX#ep#ep", -"c6Ib93cYtaRzbASc6J.Ayc6Kb3dcejcS5b1H#Qrc6Lc6Mc6Nc6Oc6Pc6Qc6Rc6Sc6Tc6Uc6Vc6Wc6Xc6Yc6Zc60.sh.rU#Zwc61c62c63c64c65c66c67c68c69c7.c7#c7aaGfc7bc7cc7dc7ec7fc7gc7hc7ic7jc7kc7lc7mc7nc7oc7pc7qc7rc7sc7tc7uc7vc7vc7wc7xc7yc7zc7Ac7Bc7Cc7Dc7Ec7Fc7Gc7Hc7Ic7Jc7Kc7Lc7Mc7Nc7Oc7Pc7Qc7RaYbaYac7Sc7Tc7Uc7Vc7Wc7Xc7Yc7Zc70c71c72c73c74c75c7Xc76c77c78c79c8.c8#c8a#T5c7Tc8bc8cc8dc8ec8fc8gc8hc8ic8jc8kc8lcRsc8m.Dl#n#cMOcMOcMO.xR.SN.sw.UA", -"b5nbK3ajeaaqauOc8nchn.KdbrMb1gbVtbO3c8oc8pc8qc8rc8sc8tc8uc8vc8wc8xbFTc8yc8zbTt.b4c8Ac8Bc8Cc8Dc8Ec8Fbsbc8Gc8Hc8Ic8Jc8Kc8Lc8Mc8Nc8Oc8Pc8Qc8Rc8Sc8Tc8Uc8Vc8Wc8Oc8Oc8Xc8Yc8Z#gxc7nc80c81c82c83aQXc84c85c86c87c88c89c9.c9#c9ac9bc9cc9dc9ec9fc9gc9hc9ic9jc9kc9lc9mc9nc9oc9o#Soc9pc9qc55c9rc9sc9t#b2c9uc9vc9wc9xc9yc9zc9Ac9Bc9Cc9Dc9Ec9Fc9Gc9Hc9Ic9Jc9Kc9Lc9Lc9Mc9Nc9Oc9Pc9Qc9Rc9Sc9Tc9Uc9Vc9Wc9Xc9Yc9Z#ndbqF.48.48#n#.Dl#hr#hr.Wu", -"bToamXbF2bG7bNObQRaanbSEc90.tkc91c92c93c94c95c96c97c98c99d..d.#d.abGWd.b.KW.Dxd.cd.dd.ed.fd.gd.hd.id.jd.kd.ld.md.nd.oaW8d.pd.qd.rd.sd.td.ud.vd.wd.xd.yd.zd.zd.Ad.Bd.Cd.Dd.Ed.Fd.Gd.Hd.Id.Jd.Kd.Ld.Md.Nd.Od.Pd.Qd.Rd.Sd.Td.Ud.Vd.Wd.Xd.Yd.Zd.0d.1d.2d.3d.4d.5#Sod.6d.6d.7d.8d.9#dId#.d##d#ad#bd#cd#dd#ed#fd#gd#hd#id#jd#kd#ld#md#nd#od#pd#qd#rd#sd#td#ud#vd#wd#xd#yd#zd#Ad#Bd#Cd#Dd#Ed#Fd#Gd#Hd#IaoScSScSScSScTwcTw.Z2.Z2.3j", -"bC7bFvcbwauPb04cJqd#Jd#Kd#Ld#M.u5cBq.Ssd#Nd#Od#Pd#Qd#Rd#Sd#Td#Ud#Vd#Wd#X.Wud#Yd#Zd#0d#1d#2a6wd#3d#4d#5d#6d#7d#8a1Kd#9da.da#daadabdacdaddaedafdagdahc7ndaidajdakdakdaldamdandaodapdaqdardasdatdaudavdawdaxdaydazdaAdaBdaCdaDdaEdaFdaGdaGdaHdaIdaJaLGdaKdaLdaLdaMdaNdaO#irdaP#iraYcdaQdaRdaSdaTdaUdaV#3zdaWdaXdaYdaZda0da1da2da3da4da5c9Hda6da7da8da9db.d#vd#wdb#dbac7idbbdbcdbddbedbfdbgdbhdbidbjcRs#nl#nldbk#lT.Hadbldbm.Bk", -"#UL.YabuGbCi.NEb78b49dbndbodbpdbqdbrdbsbDidbtdbudbvdbwdbxdbydbzdbAdbBdbCdbDdbEdbFdbGdbHdbIdbJdbKdbLdbMd.LaMbd.L#MLdbNdbOdbPdbQdbRdbSdbTdbUdbVdbWdbXdbYdbZdb0db1db2db3db4aUVdb5db6db7db8db9dc.dc#dcadcbdccdcadcddcedcfdcgdchdcidcjdckdcldcmdcnaLGdcodcpdcqdcrdcrdcsdcodaO#gmaY#dctdcudcvdaOdcwdcw#ir#szdcudaNdcx#SodcydczdcAdcBd#ydcCdcDdcEdcFdcGdcHdcIdcJdcKdcLc7RdcMaSZdcNdcOdcPdcQdcRdcSdcTdcUdcVdcWdcXcQYdcY#ko#Yd.6L.Wn", -"asvbZObFwdcZadzc#fcfbcCi.KgbrMbThdc0dc1dc2dc3dc4dc5dc6dc7dc8dc9dd.dd#ddaddbddcddddcEddeddfc9DddgddgaYOddhdcodcrddiaYNdcrdcodcodcpdcqaTSddjddkaYNdcqddlaRZddmdbXdbXddnddoaRZaY.ddpddqddrddsddtdduddvdbOddwddwddtddxddyddzaY.dbXd.VddAd.VddBaTSdcqddjddCddCddjaTSdcrdcoddDddkaTSaTSddidcrdcqdcqdcsdcsdcsdcqdcqdcqdcpddDaYPddEddFddGddHdcEaWfddIddGddJda7ddKddLddMddNdcMddOddPddQddRddSddTddUddVddWddXddY.orddZ#lNbs..Dl.QF.OJ", -"dd0bqhdd1bCOcg8cEFcrGck2cikdd2dd3dd4dd5dd6dd7dd8dd9de.de#deadebdecded#qTdeedefdegdehdei#h5dejdekdeldemaVaaTbdendeh#VndehdeodepdeqaXvderdesdetdetdeuaOtdcEddHaWfddHddIdevdewdexdeyc7RdezaYPdcpdcrddBdeAddndb3deBdeCdeCdeCdb4deDddBddkddidcsaYPdeEdeEc7RaYOaYPaYPaYPdezdezdcpdcpdcpdcodcodeFdeFdeFdcqdcpdcsaYNddkaYNddhdeGaWfdeHdeIdeJdeHaWfddHddHdeKddJdeLdeMdeNc8adeOdePdeQdeRdeSdeTdeUdeVdeWdeXdeYdeZde0buUaoSde1#n#.QF.OJ", -"de2de3axUb3Ab50cf6ceccij.Nude4ck2bXjde5de6de7de8de9df.df#dfadeddfbdfcdfddfedffaVadfgdfhdeldfidfhdepdendepdepdfjdeo#gldemdendendfjdehdepden#VnaXvdepdeodfkdeodendendehdfl#VndfmdfnaXudfnaXudfodetdesdfoaXu#VndeodfpdfqdfrdfsdfkdepaXudftdfudfvaWfdfvddHdcFdfwddGdfxdfxdfxddFddFddFddFddFddFdfydfydfzddEddEdfzdfzdfAdfBdfwdeJdeudesdeuaOtdfudfudeHdfCdfDdfEdfFdfGdfH#TZdfIdfJaL3dfKdfLdfMdfNdfOdfPdfQdfRbs##qgcTv.Fh.ofdfS.Yj", -"cKodfTbULbVKb8dcAmdfUcX1dfVdfWcnNdfXdfYdfZdf0df1df2dfcdf3df4df5df6df7df8df9dg.dfgaVadfk#eOdg#dgadftdeIdeJdeJdftdfo#VndfkdfgdemdgbdgcdgddgddfsdfodeHaXuaTb#gldeodeodeodendfp#gldfpdfgdemdemdfgdfp#gldfsdepdfmdfodftdgedeHddHdcEdfudgedeJdgfdesdfodesdesdesdesderdfo#eO#eOdepdepdepdepdfjdfjdfjdfjdendepdepdfkaVadfrdggdggaXuaXvdfodesdeudftdeJaOtdghdgidgjdgkdfDdgldgmaYhdgndgodgpdgqdgrdgsdfOdgtdgudgv#oIdgw#qi.Fh.Z2aIA.6M", -"dgxcicdgycuScvNcinbTgbrKdgzdgAbdidgBb7SdgCdgDdgEdgFdgGdgHaZJdgIdgJdgKdgLdgMdgNdgbdggdgOdfqdgPdgQaTbdfsdendehdehdendfgdgc#glaVaaVaaVadgb#gldftdgRdfvdfldgcdfraVaaVadgbdgbaTb#gldfpdfgaVademdemdem#gldfpdemdgcdggdgdaUWdgSdgTdgUdgVdgSdggdfqaVadfgdfpdfpdfp#gl#gl#gl#gl#gldeqdeqdeqdfmdfmdfmdfmdfmdfjdehdfjdfsdgbdfrdfqdfg#gldfkdehdfl#eOdesdgfdeIdgWdgXdgkdgh#gBdgYdgZaYT#bsdgodgpdgqdgrdfNdfOdg0dg1c49c6Gdg2c2m.3p.eFdg3.6L", -"cglcVDcIMcWU.NA.PBcPAb0zbMydg4b09dg5dg6dg7dg8dg9dh.aVadggdgcdfrdh#dgUdfgdfrdemaTbdfkdfsdfpdemdemdemdemaVadfpaTbaTbdfgdemdfqdfrdfqdgbdgcdfpdhadfzdhadepdggdgcdfpaVademdfpaVaaVademdemdemdgbdfqdgcdfrdfrdgcdgcdgbdemaVadfg#gl#gldfpaVadgbdgcdgcdgcdgSaUWdgddgOdfrdfqdemaVadgOdgOdgOdgOdgddgddgddgddggdgOaUWdhbdhcdhcdgVdhddgcdfqaVadeoaXudetdgfdeudgidhedghdgidghdhfdhgdhh#bsdgodgpdgqdfMdfNdeWc9XdhidhjdhkcVrdhldhmdhnbkT.Wn", -"dhocBqcYcdhpdhq.Nja.McvbboY.Czdhrdhsdhtdhu.9kdhvdhwdhxdhyaVhdhzdeldhAdekdhB#gl#gldfpaVaaVadfpaTbaTbdfpdemdemaVadfgdfgaVadfgdemdfgdfpdfqdfpaOtdhCdfldemdgSdgcdfgdgbdemdfsaVaaVademaVadfgdfgdemdfqdfgdfgaVademdgbdfqdfqdgcdgcdfqdfqdfqdfrdggdfrdgcdfgaVademdfqdgcdgcdgcdgcdgcdgcdfrdfrdggdggdggdggdgbdfrdgddggdfqdemdfqdggdgbdggdgO#glaXvdeIdgfdfodhDdhEdhFdgXdhFdhGdhHdhI#bsdgodgpdfLdfMdeVdeWc9XdhJdhKdhLdhM.HfdhNdhNdhO.QQ", -"b48dhPdhQdhRdhScblab2.In.CxcPKbGtbSwdhTdhUdhVdhWdhXdhYdhZdh0dh1dh2dh3dh4dfhdfhaVaaVaaVaaVadgJdgJdfgdfgdfgdfgdfgdfgdfgdfgdfpdfpdfpaVademdemdfgaTbdggdfrdfqdemaVaaVademdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOaUWaUWdgddhbaUWdeodeIdeIdgbdgddendfnaXvdesdesdh5dhedgidgidh6dh7dh8a1odh9dgodfKdi.deUdeVdfOdgtdi#dia.Wm.kldibdic.SGdidbkU", -"bUMcgddiedifdhqbMTdig.AzdihcPKcZXdiidijdikdildimdindiodipdiqdirdisdh3ditdfhdfhaVaaVaaVaaVadgJdgJaTbaTbaTbaTbaTbaTbaTbaTbaVadfgdfpdfgdemdemdfg#gldggdgcdfqdemaVaaVademdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdfrdgbdggdgVdgbdetdiudfwdgfdfpdfrdenaXvdesdeudetdivdgXdhediwdgXdixdiydhhdgndizdiAdeTddTddUddVdiBdiCdiD.6KbCq.SBceB.xJdiE.kh", -"awtc#fdiFdiGcoKbNOdiHbtgaqF#WpbXGdiIdiJdiKdiLdiMdiNdh0dh0dh3diOdiPdhz#h5dfhaVaaVaaVaaVaaVadgJdgJdfgdfgdfgdfgdfgdfgdfgdfgdemdfgdfpdfpdfgdemaVadfgdfrdgcdfqdemdemdemdemdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggaUWaVadggdhcdfndezdeAdcqdesdendfgdepdfodgfdeudesdhedgXdiQdiRdiQdiSdhHdhhdfJaL3deSdiTddTdiUdiVdiWdiXcUT.3jcVs.OWdiYdiZdiZdi0", -"bwZclVcxfdi1cU8.Rvdi2di3di4axBcrubGHdi5di6di7di8di9dj.dj#dh4dhzdgSdhzdfpaVaaVaaVaaVaaVaaVadgJdgJdemdemdemdemdemdemdemdemdfqaVadfp#gldfgaVademaVadgcdfqdfqdgbdemdemdemdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdhbdgbdgddhddetdcqdb4aTSdfmdepdfpdepdgfaOtdgfdeudiQdhEdgWdgi#gBdhfdjaaYTdfJaL3diAdeTdjbddUddVdiWdjc.OJcXN#hE#X9djddjedjfdjg", -"bCjawtcJ#.NgdjhbUbbi1dji.KdcJyblSayFdjjdjkdjldjmdjndgbdggdgOdgOdjodgcdgJdgJdgJaVaaVaaVaaVaaVaaVa#gl#gl#gl#gl#gl#gl#gl#gldfqdemdfpdfpdfgdemdemdemdgbdgbdfqdgbdgbdgbdemdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgcdgSdgS#VndfwdfydevaVadfgdfqdendjpdjqaOtdjqdgWdhwdfCddJdeKdjrdjsdjtdgndizdfKdfLdfMdfNdeWdjudjv.Z4cq8bLdbkLcF.djwdjxdjy", -"aqsbzvdjzdjA.RecQSaw4djB.IncQpbnjbYCdjCdjD#5NdjEdgN#sydjFdjG#qEdjHdjIdjJdgJdgJaVaaVaaVaaVaaVaaVadfgdfgdfgdfgdfgdfgdfgdfgdgbdemdfgdfgdemdgbdemaVademdgbdgbdfqdfqdgbdemdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgddgSdgOdfsaXvdetderdhcdgSdhbdfjdcFddHdeHdgRdfGdhDdjKda7ddJdjLdjMaZtdgndizdgpdgqdgrdfNdeWdjudjN.6O.ob#1WcZ3djOdjPdjQbGD", -"ahjcM..Pecv9djRdjSdjT.EhdjUdjVcF4djWdjXdjYdjZdfqdj0dj1dj2dj3#kJdfe#sy#sydgJdgJaVaaVaaVaaVaaVaaVadgbdgbdgbdgbdgbdgbdgbdgbdemaVaaVademdgbdfqdemdfgaVademdgbdfqdfqdfqdgbdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdhbdgddgddgO#gldflaXvdeqdhcdhbdhddfldgRddHdhadj4deLdeKdj5dj6ddLdj7dj8dj9.1OaL3dfKdgqdgrdeVddVdk.dk#.rU.addkadkbdkcdkddke.#0", -"bKxbZybMRcw7dkfdkgdkh#4vdkidkjdkkdkldkm.8CaUOdkndkoaZJdkpdfedkqdj2df8aOudgJdgJaVaaVaaVaaVaaVaaVadfgdfgdfgdfgdfgdfgdfgdfgaVaaVaaVadgbdgcdfqdemdfpaVademdgbdgcdgcdfqdgbdemdemdemdemdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggaUWdgbdfrdhbdfq#Vn#VnaVadggdgOaUWdfodfydcEdeudfAddKdkrdksc8.dktaX3dkudkvaRUdkwa95dfLdfMdkxdkydkz#htcLXdkA.gndkBdkCdkDdkEay4", -"bUFbvZdkFdkGbKudkHdkIaqndkJdkKdkLdkMdkNdkOdkPdkQdkRdjJdjo#qE#qEdjodffdemdemdemdemdemdemdemdemdemaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdfgdfgdfgdfgdfgdfgdfgdfgdemdemdemdemdemdemdemdemdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendggdgSdgUdftdeydhCdkSdkTdkUdkVdkWc9NdkXdkYdkZdk0dk1aWxdk2dk3dfMdk4dk5dk6dk7dk8.eBcB9.kidk9bkYdl.bBe", -"dl#bN6bG5#PdbEWbCXdladlbaqpdlcdlddledlfdlgdlhdlidljdgbdggdgSdgSdgOdgcdemdfpdfpdfpdfpdfpdfpdfpdfpaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendfrdgddgVaOtc7ZdeydeGc7ZdkUdkV#Soc9qdkXdlkdlldlmdlndlodlpb#TdlqdfNdlrdlsdlt.Fi.6Kdludlv#tZ.elbHr.va", -"dlw#UOb9cc.edlxavdbl3dlydlzb0hdlAdlBdlCdlDdlEdlFdlGdemdggaUWdgSdgOdgcdemaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendfrdgOdhbdgedezdeEc7RdezdkVdlHdlIdlJdlKdlLdlMdlNdlOa5hdlPaeFdlQdlRdlSdlTdjcdlUdlVbjp.OD#PlbA#bpLdlW", -"dlXcg9bZddlYdlZ#Th.LubZV#7tavAbIlbuDdl0ae2dl1dl2dl3demdfraUWaUWdgOdgcdemdgbdgbdgbdgbdgbdgbdgbdgbaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendfrdgOdgSdeHddhdezaYPaYPdl4dl5dl6dl7dl8dl9dm.dm#aHXdmadmbdmcaLsdmddmedmf.8wcMQ.8q.eM.isaxLbM..AH#JX", -".NydmgdhpbVjdmhbZ7.yM.NG.M#bM2bJ1bRWdmidmjdmkdmldjnaVadgcdgdaUWdgOdgcdemdfpdfpdfpdfpdfpdfpdfpdfpaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdfqdfqdfqdfqdfqdfqdfqdfqdfrdfrdfrdfrdfrdfrdfrdfrdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendgOdgddgSdfuddDaYPddhddDdmmdcAdmndcudmodmpdmqdmrdlodmsdmtdmudmvapKdmwdmxQtEam4#v0#zTbIu#FYbWWbIs.dy", -"dmydmzck9dmAdmBdmCdmDbYV.rwadycT.dmEdmFdmGdmHdmlaTbdfgdgcdgdaUWdgOdgcdemaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdgbdgbdgbdgbdgbdgbdgbdgbdgcdgcdgcdgcdgcdgcdgcdgcdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendgddgdaUWdmIdcpdeFdcodcpdmJdczaTSdmKaYe#n4dmLdmMdmNdmOdmPdmQdmRdmSbegdmTccp.xudmUbUubDxbQDdmVboMapV", -"chicGedmWdmXdmYdmZb0JboVcW.b0ydm0dm1dm2dm3dm4dm5dfsdfpdfqdgOaUWdgOdgcdgbdgbdgbdgbdgbdgbdgbdgbdgbaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdemdemdemdemdemdemdemdemdgbdgbdgbdgbdgbdgbdgbdgbdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendgOdgOdgddfvdcrdcsdcqdcrdm6c8Vdm7dm8a0rdm9dn.dn##s0dna#1jdnbdncdndbfIdne.aVccXbRbbGOb94bL9awXcUEbK5", -"cWTcV7dnfdngdhQdmZb0JbrKdnhbBGdnidnjdnkdnlaP3#isdnmdfpdfqdgOaUWdgOdgcdgbdfgdfgdfgdfgdfgdfgdfgdfgaVaaVaaVaaVaaVaaVaaVaaVademdemdemdemdemdemdemdemdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfrdfqdfqdfqdfqdfqdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdggdgOdgSdgdaVadeh#VndendggdggdggddHddiaYNddiddidcBdnn#eYdnodnpdnqdnrdnsaVmdntb.ednudnvdnwdnxdnydnzbzpaBpbSy.HrbQmbDibrdbG#", -"cWDdnAdnBdnCdnDcFqcEnbYVdnEadydlxdmEdnFdnGdnHdljdnIdgdaTbdh#dggdfrdfgaUWdemdemdgbdgbdgbdfqdfqdfqaVaaVaaVademdemdgbdgbdgbaVaaVaaVademdemdgbdgbdgbdfgdfgdfgaVaaVaaVademdemdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#VndeodgSdhcdggddGaYNdcrddldm7dnJdnKdnLdnMdnNdnOdnPdnQdnRdnSdnTdnUdnVdnWdnXbhydnYbxtbJHbrQdnZ.v7bWxbFtbPj", -".btce4cGfcU3ctHcAmcsE.LIdn0cXoaylc.qbTsdn1dn2dn3dn4aTbdfjdgcdhddn5dgcaTb#gl#gl#gldfpdfpdfgdfgdfgaVaaVaaVademdemdemdgbdgbaVaaVaaVademdemdgbdgbdgbdfqdfqdgcdgcdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#VndeodgOdhcdgOddGaTSaYNddkdn6dn7dn8dn9do.do#doadobdocdoddoedofdogdohdoidojdokdolb0rdombBdb1ubr#bmE.mL.xj", -"cjZcjYcfbcaob2wdonaapb0Adoo#LMaymdop.c.doqdordosdiSdiudfqdggdgbdgddfraUWdfgdfgdfgaVaaVaaVademdemaVaaVaaVaaVademdemdemdgbaVaaVaaVademdemdgbdgbdgbdgbdgbdgbdfqdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#VndeodggdhcdgddevddCddkddldotdoudovdowdoxdoya6l#YTdozdoAdoBdoCdoDdoEdoFcgpdoGdoHazabsm#u#doIbJTbAY.FnbyY", -"at4av6csLcqzbSb.PjdoJdoKadydoLb0xbK1cE8doMdoNdoOdoP#jgdfjdoQdgUdgddfgaVademdemdemdemdgbdgbdfqdfqdfgdfgaVaaVaaVademdemdemaVaaVaaVademdemdgbdgbdgbaVaaVaaVademdemdgbdgbdgbdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#Vndeodggdh#aUWdfBddAddkddldoRdoSdoTdoUdoVdoWdoXdoYdoZdo0do1do2do3do4do5do6cQxdoHb3qdo7do8bmDbElbkY#3f#cH", -"bYocWCb78cf6do9b7gb3Bady#UObwZdp.bGeb5Fdp#dpadpbdpcdj4dgddgbdemdggdgbaVadfpdfpdfpdfpdfgdfgaVaaVadfgdfgdfgaVaaVaaVademdemaVaaVaaVademdemdgbdgbdgbdgbdgbdgbdfqdfqdgcdgcdgcdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#VndeodgOdgUdgOdfBddldcsddldpddpedpfdpgdphdpidpjdpkdpldpmdpndpodppcX9cqG.L8bAUdpqdprdpsbINaAr.ssbmg.cn.eH", -".KgbZOcj1bWNdo9c#nb80bBGab3cwRb0Hc#G.BBdptdpudpvdpwddIdfsdgbdgddhcdfp#VndfpdfpdfgdfgdfgaVaaVaaVadfpdfgdfgdfgaVaaVaaVaaVaaVaaVaaVademdemdgbdgbdgbaVaaVademdemdemdgbdgbdgbdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#VndeodfrdgVdgcdfBdcqdcpaUVdpxdpydpzdpAdpBdpCdpDdpEdpFdpGdpHdpI.ZSdpJ.KaaqFbzz.JmbFt.E6dpKbr5.g9.w#.SF.mA", -"axAdpLcj1.RadpMcw1bJZauMcehcrxcWbasM.FpdpNaJMdpOdj0dfgdfgdgcdfk#gldfsdgcdfpdfpdfgdfgdfgaVaaVaaVadfpdfpdfgdfgdfgaVaaVaaVaaVaaVaaVademdemdgbdgbdgbdfgdfgdfgdfgaVaaVademdemdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdgcdgcdgcdgcdgcdgcdgcdgcdfrdfrdfrdfrdfrdfrdfrdfrdggdggdggdggdggdggdggdggdgOdgOaUWdgddfgdeh#VndeodfrdgSdemdgRaYNd.V#jgdpPdpQdpRdpSdpTdpUdpVdpWdpXdpYdpZdp0bNL.Ka.CA.Kgbwi.AH.E4cU7dp1bZx.Jg.vw.zm#a8", -"cg3dp2bThcsHcoKdo9cedawwch.awxaftbEbdp3dp4dp5dp6dp7dp8dp9dq.dgKdgIaVKdg.deodeodeodq#dqadqadqadgPdqbdlGdl3dqcdqcdqddqedqedfhdfhdfhdeldeldhAdhAdhAdfqdfqdgcdgcdgcdfrdfrdfrdgcdgcdgcdgcdgcdgcdj#dj#dj.dj.dj.dj.dj.dj.dj.dfrdgcdgcdgcdgcdqfdqfdqfdqfdqgdqgdqgdqgdqgdqgdqgdfrdqhdggdggdggdggdggdggdjHdjodfedqidqjdqcdqkdqldqmdggdgSdqndqodqpdqqdqrabGdqsdqtdqudqvdqwdqxdqydqzdqAdqBdqCaxn.Ey.IndjUdqD.HtbEx.R.#Plbms.Hi.zA.8n.Wo", -"b7XbThdmgdqEb3Gc.bbXQawucuQcbcaFvb94ce6.ODdqFdqGdqHdqIdqJagcdqKdqLdqMdqNdqOdqPaR0dqQdqRdqRdqSdqTdqUdqVdqWdqWdqXdqYdqZdq0dq1dq2dq3dq4dq5dq6dq7dq8dq9dr.dr.di9dj#dh4dr#dr#dradrbdhzdj.dj.dj.drcdisdrddredrddrfdrddrddirdh4drgdiPdrhdri#jqdrj#jqdrkdrldrkdrjdrm#jqdrkdrndrodrpdrqdrodrrdrodrsdrsdrtdrudrvdrwdrxdrydrzdrAdm5drBdeJ#jNdrCdrDdrEa2NdrFdrGdrHdrIdrJdrKdrLdrMdrNbEZbktdrObNydrPbZV#7tbMzcSgbZsbYCbLX.Q9.DuaaydrQdrR", -"b5ZdrScIMcIMcaoc#qc#fbWPccjbPhbJ.bUY.E4drTdrUdrVdrWdrXdrYdrZdr0dr1dr2dr3dr4di7dr5dr6dr7dr8dr9ds.drBds#dsadsbdm5dscdi9dsddsedejdsfdsgdshdshdsidsjdgPdnmdskdfpdfhaVadsldsldsmdsndekdfhdhAdh4diNdiNdsodspdsqdrfdsrdssdh0drgdgPdfpdemdstdrjdrkdsudsvdswdsxdrmdrkdrldrldrsdq.drqdq.djodqjdqidqidqidj2dsydszdsAdsBdrydsCdsDdsEdsFdeyaPPdsGdsHdsIdgpa7WdoadsJdsKdsLdsMdsNdsOdsPbF4caxcfmbuIdsQdsRdsSbticRBccmdsTbDqbA..MK.oI.b7#oF", -"cV7dsUcYbdsVdrScWSasubS9.RfayibXYdsW.bEbpe.c2dsXdsYdsZds0ds1ds2ds3ds4ds5ds6ds7aNuds8ds9dt.dt#dtadtbdtcdtd#c5dtedtfdtgdtgdthdtidrpdtjdtkdtldtldtkdtmdqjdgOdrrdqhdrsdqgdqfdtmdrhaUWaUWdgOdfqdqedskdisdiOdh3dirdr.dq9dqedqcdtndtodtpdqjaOudjJdjJdjJdgcdfrdggdggdfrdgcdjEdtqdtrdtsdttdttdttdttdtqdtudtvdtvdj2dtwdtxdtydtzdtydtA#P7dtBdtCdtDdsIdtEdtFdtGa9idqwdtHdtIdtJdtKbTk.Lsb0A.P8.NHbXtdtLazedtMdtNdkHdtObHHarXbA..qCdtPcAY", -"dtQdtRcjbcYbcaocMIcxgdtSdtTbTlcfudtUbv7.a0bhCdtVdtWdtXdtYdtZdt0dt1dt2dt3abxa.gdt4dt5dt6d.jdt7dt8dt9du.du#duadubducdudduedufdugaKL#raduhduidujaOSdukdukaY3duldumdun#roaPQduodupdrpduqdurdrqdjJdjJdurdrqdusdq.djHdqjdqidtpdutduuduvduwduvduxduvduydtrduzdttduAdqdduAduBduCduDduCduBduBduEduCduEduFduGdrtdrrdfrdq2duHduIduIduJduKduLduMduNduOduPduQduRduSduTduUduVduWcnHbKsduXbEobYW.yI.N1duYb8uduZdu0du1du2bpO.HubqUdu3bSmdtP", -"du4du5du6cNucJzcVDcdSbuqcR9du7.Hqbn8byBbyYdu8du9dv.dv#dvadvbdvcdvd#w8dvedvfdvgdvhdvidvjdvkdvldvmdvndvodvpdvqdvrdvsdvtdvudvvdvwdvxdvydvzdvAdvBdvCdvDc4wdvEdvFdvGdvHdvIdvJaNndvKaNmaNmdvLdvMaZ5#rndvNaN8a1T#5kdvO#7advPdvPdvQdruagddvRdvSdvTdvUdvVdkRdvWduAdvXdvYdvXdvZdv0dv1dv1dvYduAdv2duEduCdtn#jqdv3dv4dv5dh1dv6dv7#Oxdv8dv9dw.dw#dwadwbdwcdwddwedwfdwgdwhdwidwjdwkb51cEnbrKdwldwmavBdwndwodwpb8Bdwqdwrdwsbsmdwtdwub0qbyB", -"dwvdwwdwxcXcdwydwzccabUnbIfahsbWB#4F#4K.zA.eH.QS.gIdwAdwBdwCdwDdwEdwFdwGdwHdwIdoZdwJdwKdwLdwMdwNdwOdwPdwQdwRdwSdwTdwUdwVdwWdwXdwYdwZdw0dw1dw2aerdw3dw4dw5dw6dw7dw8dw9dx.dx#dxadxbdxcaFddxddxec6odxfdxgdxhdxidxj#r.dxkdxldxmdxna3jdxodxodxpdsydsAduuduFdxqdxrdxsdxtdxudxu#qEdjFdxvdjFdqjdjHdjodxwdxxdxydxzdxAdxBdxCdsjdxDdxEdxFdxGdxHdxIdxJdxKdxLdxMdxNdxOdxPdxQ#HOcvVc.idmDbrL.Nu.KedxR.NHcSvdxSb8ydxTdxUdxVbCIdxWcSFbI2drT", -"cvUcJzdwwdxXczcb3Kb4DdxYarDb7#.A9dxZanq.ob#kn.qadx0.stdx1dx2dx3dx4dx5dwCdx6dx7dx8dx9dy.dy#dyadybdycdyddyedyfdygdyhdyidyjdykdyldymdyndyodyo#wNdypdyqdyrdysdytdyudyvdywdyxdgqdyydyzdyAdyBdyBdyBdyCdyDdyE#wPdyFdyGdyHaI8dyIdyJdyKdyLdyMdyNdyOdyPdyQdyRduhduja0idujdujdySaQNdyT#rb#UldyUdyVaNodyWdyXdyYdyZdy0dy1dy2dy3dy4dy5dy6dy7dy8dy9dz.dz#dzadzbdzcdzddzedzfdzgblYbs0b20cg3.ACdjUdzhbvT.LQ.LEdzidzjdzkdzldzmbVR.TXbqA.zS.st", -"cc3cqzdzndzo.wZcd3.Nk.Pkayjdzp#kx#xWdzq.a##r8.eI#t2bmHbfDarldzrdzsdkBdztdzudzvdzwdzxdzydzzdzAdzBdqydqydzCdzDdzEdzFdzGdzHdzIdzJdzKdzLdzMdzNdzOdzPdzQdzRdzSdzTdzUdzVdzWdzXdzXdzYdzZdz0dz0dz1dz1dz0dz2dz3dz4dvkdz5dz6dvka9idz7dz8#Xpdz9a9LdA.dA#dAadAbdAcdAddAedAfdAgdAhdAidAjdAkdAldAmdAndAodApdAqdArdAsdAtdAudAvdAwdAxdAydAzdAAdABdACdADdAEdAFdAGdAHdAIdAJdAKdALcQPa01a02.KgdxRdAMdANdAOdAPdAQdAOdARdASdATdAUdAVbsudAWdAXajo", -"b78bUlcCjdAYck#cCkdAZb6mdA0dzpbPA.et.i5.QCcsddA1#4KbtqbTrdA2bfZdx0dA3bjq.kjcZ3dA4dzsdA5aoodA6bfBbfBbfBdA7dA8dA9dB.dB#al9dBadBbdBbbe6dBcdBddBedBfdBgdBhdBidBjdBkdBldBmdBndBndBodBpdBqdBrdBsdBtdBudyhdBvdyhdBwdBxdBydBzdBAdBBdBCdBDdBEdBFdBGdBHb.bdBIdBJdBKdBLdBMdBNdBOdBOdBPdBQdBRdBSdBTdBUdBVdBWdBXdBYdBZ#3PdB0dB1dB2dB3dB4adedB5dB6dB7dB8dB9dC.dC#dCadCbdCcdCd#PbbAS.CA.Ki.LA#LpdCecUbdCfdCg.4UdChdCidCjcuvdCkdCldkDdCm.Lc", -"cUcbvFbOXdCndCobwWbUob1tci9bOGbrbb2t#vVanqaoR.c..qF.ud#0JdCpdzqbjp.c2alg.xw.xwdCqdCr.gMdCsdCtdCudCvdCwdCvdCxdCydCzdCAdCBdCCdCDdCEdCFarAdCGdCHdCIdCJdCKdCLdCMdCNdCOdCP#AEdCQdCRdCSdCTdCUdCVdCWdCVdCTdCXdCYdCZdCZdsMdC0dC0dC1dC2dC3dC4dC5dC6dC7dC8dC9dD.dD#dD#dDadDbdDbdDbdDcdDddDedDfdDgdDgdDhdDidDj#Yxdz9aiaa.gdDkdDldDmdDndDodDpdDq#Z0dDrdDsanBdDtdDudDvaFxdDwbksaqrdDxdDydDzdDAdDBdDCdDDdDEdDFdDGdDHcoBb9ZbxMdDIdDJasl.ot", -"b5ncOPdDKdDL#QAbEVcYtdDMb72ayhcktc#u#4F#vVbJU.i0dDNbxs.i0bkS.r3.oJcAY.cc.eJ.sH.G7.gLaAhbyZbFodDOdDPdDQdDRdDSdDTdDUcIhcgoawI#Ztas1bzqbknb0CaSFcdmdDVdDWdDXdDYapRdDZdD0dD1aryarydD2dD3dD4dD5dD6dD7dD8dD9dE.dE#dEadEbdEcdEddEedEfdEgdEhdEidEjdEkdEldEmdEndEodEpdEpdEqdEqdEqdErdEsdEtdEudEudEvdEwdExdEydEzdEAdEBdECdEDdEEdEFdEEdEG#8WdEHdEIdEJdEKdELdEMdENdEOdEPdEQdERdqDdESdETdEUdEVdEWdEX#UydEYdEZckZbt6c.YdE0dE1dE2#II.aodE3", -"aBpcWRc.ndE4bEddA0bzrbs4boQbkmaqV.Jrc#u#6jcvd#7CcAWQtDbxm.aJ.Dx.kQchD.BpbnV.c2.OE.8#bGk#QPdE5.P0dE6dE7afnahfdE8c.RbxW.yO.dyamXccVbAFa03a03ck4arDbAybOjbw2cIfdE9bORdF.dF#dFadFbdFcdFddFedFfdFgdFhdFidFjdFkdFldFmdFndFodFpdFqdFrdFsdFtdFudFvdFwdFxdFydFzdFAdFBdFCdFDdFEdFFdFGdFHdFIdFJdFKdFLdFMdFNdFOdFPdFQdFRdFSdFTdFUdFVdFWdFXdFYdFZdF0dF1dF2dF3dF4dF5dF6dF7dF8dER.EAdF9dG.cfWdG#dGa#zLdGbdGcdGddGedGfcgQdGgdGhdGidGjcYFdE3", -"bI6bK#.aibRndGkdE4bLmblUblUbBJayh#X4b4s.aiaM4#9cbxTavYbBla.W#9gasocFVdGl.cG#QKbDcb2QaFsboadGmb4KcQrdGnab0adwdGoaj#dGpdGq.CCbzydGrbDjcbwb8edGscHLbRrbxybz0ajbbBVbtecM7ckqdGtaqUbQabD2dGudGvdGwdGx#HPcOLdGydGzdGAdGBdGCdGDdGEdGFdGGdGHdGIdGJdGKdGLdGMdGNdGOdGPdGQdGRdD8dGSdGTdGUdGUdGVdGVdGWdGXdGYdGZdG0dG1dG2dG3a9EdG4dG5dG6dG7dG8dG9dH.dH#dHab5DbhVdHbdHccLJbdjbDCb7u.MfdHddHedHfdHgdHhdHidHjdHkdHlbAsdHmdHnbnJdHodjddHpdHq", -"azwazw#6cbtDcNjdHrdE4bK4b7QbAybBJb6wbOGbL9b94bLkbpg.ITavX.MJb3w#9gaso.QB.kO.gu.g8.mLdHsdHtdHudHvdu2dHwdHwdtMbNMcwodHxdHxbzzbzzb8Oc6JcSMcSMcSMc6JbZQdHy.N1#Te#7udwrdHzc.y.Eu#X1bDRbqdcQPcLSdHAcRLcMAcP0#HOcPlcBBdHBdHCdHDdHEdHFdHGc.HdHHbnmb2ubuodHIdHJdHKdHLau5dHMdHNdHOdHPdHQdHRdHSdFmdHTdHUdHIdHV#G0dHWdHXbfrdHYdHZdHZdH0dH1#GzdH2dH3dH4dH5dH6aoUcdobQ9bnlaykbCibYqdH7dH8dH9dI.#LFdI##WbdIadIbbGQdIcdIddIe.pOdIfdIg.QP.gD", -"#0Jarn.gPbvjbTycNkbq#dIhci9cXCb72blUcj.bAPbXHQt#bM#.DBbJKa.VaaxbA4b6fbCr#6h.sxbumbLXdIibBXbzJbqRdIjdIkdIlb4ebZm.L9dImdIm.EA.EAb3g#QxbMXbMXbMY.T0dIndIodIpdIqdIrbALdIs#Nrbth#Qx.IgbB#dItbqe#PfcbebKocGTblXboTcH0dHFdIudIudIvdIwdIxcETcBKbZJaje.PFdIyan5dIzayf.DDbNwaGBdIAcVfdIBdICdIDdGzdIEcNr#X4#B3dIFdIGdIHdIIdIJdIKdILdIMdINdIOdIPdIQdIR#4Pboib73dIScLFcWob2ZdlwbMybZVdITdIUdIV#LH.NXdIWd#NdIXceldIYdIZdI0dI1bElb2j.mebyX", -".Dv.ODbHpaxLdI2dI3dI4avbbF4bDUb71aykbEU.PFayjbydbLlbEE.xtbWv#zRbIM.iQ.I0.I0aBLbv9bYDbFhcmmcWOdI5dI6b8DdI7dI8dI9cWBbZQ.NHb0R.L9brSdJ.bBLbLP.AydJ#dJadJbdJcdJddJedJfdJgdJhatV.LSbZW.LNauQdJiadAb#ncTncNWcOCdJjcBxdJkdJldJmdJncGicGicEJcBGbYdbAz#6.b7#cktbNwb94c.maqW#QFdJocKScP3cRkdJpdJqdJqcEB.PsdJrdJs#qbctUdJtdJudJvdJwdJx#rNdJydJzdJAdJBb3OdJCb6ra7CcTVcIOdJpdJDdJEbAJdJFdJGdJHdJIdJJdJKdIXdJLasIan8dJMdJNdJO.FncQW.Uv.gG", -"cMSbkSbXbbr7bVxbQlbSsb9DcfkblZa10awCbAzb3BbJZbIQc#FbUIaqVas0.zMc#u.xScAW#t5bCr.v0.g7bWwdJPbXr.MbdJQbNWdJRdJSdJT.LHdJU.yIb0ibskb6Hcayb4fahjcTrdJVdJWdJXdJYdJZdJ0dJ1b44dJ2dJ3dJ4cWrbynb71cbdb4hdJ5dJ6dJ7cONdJ8dJ9dJkdK.dK#dKac#edKbdKcdKdbMRb3zdKebOeb4UcsJca3dKfdKgax7cFDdKhcKGdKidKj.S9cXFadAcCScOgdKkdKldKmdKndKodKpdKqdKrdKsdKtcrodKudKvdKwb1qau6dIScP9aSEaQCdlwbATcxydKxdKydKzdKAaoCb2HbYg#uadKBdKCdKDdKE.rS.SD.6W.8AdKF", -".iX.OC.v3.G1bBDbh#dKGclab4ubOY.LMcY3c#8brJcVCbyfbG4bBRcK7bBncNM.cWdKHb8rdKI.OBdKJbKXbXE.ADdKKdKLdKM.SsaamdKNdKObZQdKP.NuboY.QxdKQdKRcUgbps.fBbUidKSdKTdKUdKVdKWdKXdKYdKZdK0dK1dK2bnXcXCa0acDPcHZdK3dK4b0CapTcSAcAzdK5dK6dKhcMldK7dK8dK9cam#WqbKBbVGccXdL.dL#ca#cHacDIdLadLbdLcbXgcEJcAo#NRcd5dLddLedLfdLgdLhdLidLjdLkdLldLmdLndLodLpdLqdLr.TXbmmcVfcIScP2cy#b2v#UO.QxdLsdLtdLudCgdLvdLwdLxdLyby7#F3dDOdLzdLA.YpdLBc8E.aFdLC", -"cHE.embJJbjycPbbB#bntdLDbyOb3zak8b1zb2o#7ybSrb1lcJXbK2bPBbBJcd8bzqdLE#Zub9rb6e.xPbKXbxtbz0dLF.LTcq2dLGbuxb4cb0LdLH.InbWub7OcF5bKDdLIdLJdLKdLLaoWdLMdLNdLOdLPdLQdLRdLS.pGdK0dLT.PudLUbvLbVIb3FaxTdLVdLWb9aaBrcW2dLXdLYdLZdLccJFdL0bT#dL1cJ#duXbDlbUBcQKdL2dL3b89dL4cDHdL5dL6dL7cHZcBtcRE.NDbdgb4W#55dL8.X1dL9dM.dM#dMadMbdMcdMddMedMfdMgdMhbzJ#X4cSddMicZgcAqcFIcnOaxUb1GcwQdMjdMkdMlbVrbNycL9bKBdMmdMn.sDbDd.adcp4#Yc.8x.gE", -"asmavW#v6bVGb3DbVB#RRdModMpbxcbyN#HI#HI#HI.PmbDSbOGbKbbYJbWCcf2cmUch9bIzb6dcj5#kw#lVbDibmw.wV.Nr.PwcBM.IidMq.Az.Gq.Exbu1bJ2.U9dMrdMsdMtdMudMvdMwdMxdMydMzdMAdMBdMCdMDdMEdMFdMGcWrcFSdMH.buahldMIdMJdMKbnmauRcW2dMLdMMdMNdMOdMPdMQdMRdMSdMTcWVbSrbCVb1XcP7cP5#HO#FNdMUdMVdMWdMXcHYcH.cCPcJ6cJ6bnqdMYdMZdM0dM1dM2dM3dM4dM5.X1dM6.R6dM7dM8dM9dN.b6lcAudN#cHZdNabT9bWPdNbb0kdNcdNd.LD.fAcZKak5b6ubUEdNe#F2czSbxkdNfdGlcjycvh##B", -"dNgdNhbRbbSibtEbRrdNidMobUbdNjcSDbnWbVxbVzb9mcbpcj2bFac.kb6gdNkdNkdNldNmdNnbEEaM4bM8.zhdNobKC#4BdNpdNqdNr.Gr.T0bLndNsbBBcWjdNtdNudNvdNwdNxdNydNzdNAdNBdNCdNDdNEdNFdNGdNH.3#bPWckrbCkatscGVb9gbP2dNIcIpc.FdItci.bYbdNJdNKdNLdNMdNNdNOdNPdNQdNRbO5ccddNSboRcQPaSEdNTdNUccfcJDcyedNVdNW#JKdNXbXfbHxdNYdNZdN0#csdN1dN2dN3dN4dN5#0t.KAdN6dN7dN8dN9aBrcTdcIccFmdO.bP1ch.dO#dOadObb9xbzAbuIdIm#86dOcdOdbqRdxWdOecZYbxS.kM.gq.eK.n0", -"ahpdOfcMxdOgb2obRsbwh.Pxbyu.Pn#FK.xU.v#.v5bYtdOh.zMb7cbYNdOidOjdOkdOl.tqdOmbUXbEzbmt#noayubNddOndu2dOodOp.wU.TGam9cxz.JocEAdOqdOrdOsdOtdOudOvdOwdOxdOydOzdOAdOBdOCdODdjBb1edOEbw5.ZTbUD.YbaxUawxca9b6Tc.FdOFahlca9bVhcd1dOGdOHdOIdOJdOKdOLcXvcvMaqEb8H#89#9.a0acIdcWpdOM#HMcLtbMScBFcFIcETcqDdONdOOdOPdOQ#XUdORdOSdOTdOUdOVdOWdOXdOYdOZdO0azadO1dOgbvDa0aawsauKa02bt.dO2bZUdO3dO4cLjciiavA.dvbw5cPNcfOdO5dI1aqx.g8bpe.e4chB", -"dO6dO7cGwb8bbzvdO8bMZ.Yb#7ybG4bL7bFabKUbKT.xsbHvbLVci5dO9dP.cG5dlYcvYdP#b3kafCb5JawU.i2bMgb6ydPaaw2dPbdPcbNYdPdcmkdMmbZCamzbEmbtNdPedPfdPgdPhdPidPjdPkdPldPmdPndPodPpas#ckabXu.EAbsk.U7#UL.yMbTFb7.awubvKbASb0ych.cMIdPqdPrdPsdPtdPudPvdPwdPxdPycVCcfkbCPa01a.NcnUa.O#9#cTo#HLcCOcCOcMfcRJdPzdPAdPBdPCdPDdPEdPFdPGdPHdPIdPJdPKdPLdPMdPNdPObAsdPPdPQdPRasfchydPSdPTdPUdPVdPWcjedPXdPYdPZdP0dP1dP2dP3dP4dP5dP6bKn#QP.dEdP7dHt", -"dP8dP9dMOcBGcg8cPAbqh.RwccTbYOdO9cOJ.gw.xtaxI#3adQ.cdpcnHcIcdQ#cyhcR#cnV.PD#PcasKbL6co7.cqb1nb6ydQa.rudQbdQcbk6cPQdQdbmCbIHbMrdQedQfdQgdQhdQidQjdQkdQldQmdQndQodQpdQqdQr.yGdJ.bK9aoG.CA.ADbs9bS#dQsdQtcVEdQudQvdQwdQxdQybXhdQzdQAdQBdQCdQDdQEdQFdQGbqib4FbBGa01#9.bYecLS#9#dQHczecFmdQIdQJdQKdQLdQMdQNdAOdQOdQP#BqdQQdQRdQSdQTdQUcoPdQVdQWdQXdQYdQZdQ0dQ1clKdQ2dQ3dQ4.Q#dQ5dQ6dQ7.PQdQ8dQ9dR.dR#crndRabzedPfdRb.oC.N#dRcbtm", -"dRddRedRfdRgdRh.btdRibygab4ab5cEQadCdRjbKH.vzbQibJOcrz#FNcZgdRkbTadRlbQTbXjbIQ.Ry.i3#v7cr8.kobL1cNIdRmafpbC0#JEdRndRodRpbFsbsXdRqdRrcvmdRscmxdRtdRudRvdRwdRxdRydEVdRz.H7cek#QxbyoaoG.P8.P8cJy.CydIkdRAdRBdRCdRDdREdRFdRGbTbdRHdRIdRJdRKdRLdRMcd0cCidRNb5xbCP#89#UOdDMc.FdROcsIcIQdRPdJnbR2dRQdRRdRSdRTdRUdRVdRWdRXdRYdRZdR0dR1dR2dR3dR4dR5dR6dR7dR8dR9dS.dS#dSadSbbma#z9dScdSddSedSedSfdSgbkFdSh.MmdSidSjbU7cxOblldSkdSldSm", -"dSndSodSpdSqcGicfidSrbS9cBsdSsdStdSudSvdSw#USbM4cRndISdSxdLcdSydSqdSzdSAc#hcDTbh#bIp.ah.A9bXcbshayr.Etcz5aw2dSBapXdSCdSDbGoc1CdSEdSFdSGbm7dSHdSIdSJdSKdSLbhedSMdSNdSOdSP.TGdSQ.Lubsk.AA.AA.AA.NHb3fdSRb9AdSSdSTdSUdSVdSWcFIdSXdSYdSZdS0bU.dS1cd0bvHbrLb5x.NFbN4dS2dS3dS4brDcJ4dS5dS6dS7dS8dS9dT.chd#85dT#dTadTbdTcbN2dnEb6ubOqdTddTedTfdTgdThdTicmwdTjdTk#wcdTldTmdTncBedTodTpdTqdTqdTrdTsdTtdTudTvdTwdTxdTybj5dTzdTAdTBacf", -"dTCdTDdTEdTFcAzcd4dTGbWPcEUdTHdTIdTJdTKdTLafzdmUcetax7cDLdTMdTNdTOdTPdTQc#hbur.LMbwfQt.bMwapdcl0.NdbNLdTRdNsaw2brga.2dTS.HzdTTdTUdTVdTWbV3bBtdTX.IwdTYdTZdT0dT1cjkb16dT2dRmb7uak5ab1bWubS..NHcZKdT3dT4dT5dT6dT7dT8dT9dU.cW3dU#dUadUbdUccoLdUddUedUfdUgb2#bZEbl1boObIjcOP#NTcM9cHmdUhdUidUjdUkdUlbnoahkdUmcvcdUnawxdIvdUobMSbPCdUpdUqdUr.EqdUsdUtdUudUv.dp.dpdUwdUxdUydUzdUAdUBdUCdUDdUEdUFdUGdUHdUIdUJ.9EdUKdULdUMchRahgdUN", -"dUOdUPdUQdRHcB5dURdUSbYRcAzdUTdUUdUVdUWdUX#DTdUYaHHcFEdUZdU0dU1dS9dU2dU3c#hbur.LMbuw.RzbAc.ajbEAcU5clqbNLcnb.QwdU4#x8#N5bX.dU5dU6dU7#IUdU8dU9dV.dV#dVadVbdVcdVd.1qb0fdVedVfbYqak5bYYbZm#84#TedVgdVhb1JdMjdVidVjdVkdVldVmdVndU#dVodVpcztctGdUddQFdVqdVrdVsaxBbVAbdjcB3auRb9bcLTdSsdVtdRHdVudVvdVwdVxdVycICdVzc.FbPSdVAdVBdS7#UOdVCdVDdVEdVFdVGdVHdVIdVJdVKcG2cG2dVLdVMdVNdVOdVPdVQdVQdVRdVSdVTdVUdVVcEvdVWdVXdVYdVZaCzdV0dV1"}; - - -/* - * Constructs a PluginGuiBase as a child of 'parent', with the - * name 'name' and widget flags set to 'f'. - * - * The dialog will by default be modeless, unless you set 'modal' to - * TRUE to construct a modal dialog. - */ -PluginGuiBase::PluginGuiBase( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, fl ), - image0( (const char **) image0_data ), - image1( (const char **) image1_data ) -{ - if ( !name ) - setName( "PluginGuiBase" ); - setPaletteBackgroundColor( QColor( 255, 255, 255 ) ); - setIcon( image0 ); - PluginGuiBaseLayout = new QGridLayout( this, 1, 1, 11, 6, "PluginGuiBaseLayout"); - - pixmapLabel2 = new QLabel( this, "pixmapLabel2" ); - pixmapLabel2->setMaximumSize( QSize( 200, 32767 ) ); - pixmapLabel2->setPixmap( image1 ); - pixmapLabel2->setScaledContents( TRUE ); - - PluginGuiBaseLayout->addMultiCellWidget( pixmapLabel2, 0, 1, 0, 0 ); - - line1 = new QFrame( this, "line1" ); - line1->setMaximumSize( QSize( 2, 32767 ) ); - line1->setFrameShape( QFrame::VLine ); - line1->setFrameShadow( QFrame::Sunken ); - line1->setFrameShape( QFrame::VLine ); - - PluginGuiBaseLayout->addMultiCellWidget( line1, 0, 1, 1, 1 ); - - layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); - - pbnCancel = new QPushButton( this, "pbnCancel" ); - layout1->addWidget( pbnCancel ); - spacer2 = new QSpacerItem( 441, 21, QSizePolicy::Expanding, QSizePolicy::Minimum ); - layout1->addItem( spacer2 ); - - pbnOK = new QPushButton( this, "pbnOK" ); - layout1->addWidget( pbnOK ); - - PluginGuiBaseLayout->addMultiCellLayout( layout1, 2, 2, 0, 2 ); - - teInstructions_2 = new QTextEdit( this, "teInstructions_2" ); - teInstructions_2->setWordWrap( QTextEdit::WidgetWidth ); - - PluginGuiBaseLayout->addWidget( teInstructions_2, 0, 2 ); - - tabMain = new QTabWidget( this, "tabMain" ); - - tabOptions = new QWidget( tabMain, "tabOptions" ); - tabOptionsLayout = new QGridLayout( tabOptions, 1, 1, 11, 6, "tabOptionsLayout"); - - groupBox1 = new QGroupBox( tabOptions, "groupBox1" ); - groupBox1->setColumnLayout(0, Qt::Vertical ); - groupBox1->layout()->setSpacing( 6 ); - groupBox1->layout()->setMargin( 11 ); - groupBox1Layout = new QGridLayout( groupBox1->layout() ); - groupBox1Layout->setAlignment( Qt::AlignTop ); - - textLabel1 = new QLabel( groupBox1, "textLabel1" ); - - groupBox1Layout->addWidget( textLabel1, 0, 0 ); - - spinBox1 = new QSpinBox( groupBox1, "spinBox1" ); - spinBox1->setMaxValue( 65535 ); - - groupBox1Layout->addWidget( spinBox1, 0, 1 ); - - cboEnableServer = new QCheckBox( groupBox1, "cboEnableServer" ); - cboEnableServer->setChecked( FALSE ); - - groupBox1Layout->addWidget( cboEnableServer, 1, 0 ); - - tabOptionsLayout->addWidget( groupBox1, 0, 0 ); - - groupBox1_2 = new QGroupBox( tabOptions, "groupBox1_2" ); - - tabOptionsLayout->addWidget( groupBox1_2, 1, 0 ); - tabMain->insertTab( tabOptions, QString("") ); - - tabLogs = new QWidget( tabMain, "tabLogs" ); - tabLogsLayout = new QGridLayout( tabLogs, 1, 1, 11, 6, "tabLogsLayout"); - - teLogs = new QTextEdit( tabLogs, "teLogs" ); - - tabLogsLayout->addWidget( teLogs, 0, 0 ); - tabMain->insertTab( tabLogs, QString("") ); - - tabDebug = new QWidget( tabMain, "tabDebug" ); - tabDebugLayout = new QGridLayout( tabDebug, 1, 1, 11, 6, "tabDebugLayout"); - - teDebug = new QTextEdit( tabDebug, "teDebug" ); - - tabDebugLayout->addWidget( teDebug, 0, 0 ); - tabMain->insertTab( tabDebug, QString("") ); - - PluginGuiBaseLayout->addWidget( tabMain, 1, 2 ); - languageChange(); - resize( QSize(533, 399).expandedTo(minimumSizeHint()) ); - clearWState( WState_Polished ); - - // signals and slots connections - connect( pbnOK, SIGNAL( clicked() ), this, SLOT( pbnOK_clicked() ) ); - connect( pbnCancel, SIGNAL( clicked() ), this, SLOT( pbnCancel_clicked() ) ); -} - -/* - * Destroys the object and frees any allocated resources - */ -PluginGuiBase::~PluginGuiBase() -{ - // no need to delete child widgets, Qt does it all for us -} - -/* - * Sets the strings of the subwidgets using the current - * language. - */ -void PluginGuiBase::languageChange() -{ - setCaption( tr( "QGIS Plugin Template" ) ); - pbnCancel->setText( tr( "Cancel" ) ); - pbnOK->setText( tr( "OK" ) ); - teInstructions_2->setText( tr( "\n" -"

    Description

    \n" -"

    This plugin runs a simple web server on port 8081 that listens for requests for maps.

    \n" -"

    Tim Sutton

    \n" -"

    2004

    \n" -"\n" -"" ) ); - groupBox1->setTitle( tr( "Server Options" ) ); - textLabel1->setText( tr( "Port:" ) ); - cboEnableServer->setText( tr( "Enable Server" ) ); - groupBox1_2->setTitle( tr( "Additional Options" ) ); - tabMain->changeTab( tabOptions, tr( "Options" ) ); - tabMain->changeTab( tabLogs, tr( "Logs" ) ); - tabMain->changeTab( tabDebug, tr( "Debug" ) ); -} - diff --git a/plugins/http_server/pluginguibase.h b/plugins/http_server/pluginguibase.h deleted file mode 100644 index 4e3c1e6876a4..000000000000 --- a/plugins/http_server/pluginguibase.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** Form interface generated from reading ui file 'pluginguibase.ui' -** -** Created: Mon May 10 14:07:09 2004 -** by: The User Interface Compiler ($Id$) -** -** WARNING! All changes made in this file will be lost! -****************************************************************************/ - -#ifndef PLUGINGUIBASE_H -#define PLUGINGUIBASE_H - -#include -#include -#include - -class QVBoxLayout; -class QHBoxLayout; -class QGridLayout; -class QSpacerItem; -class QLabel; -class QFrame; -class QPushButton; -class QTextEdit; -class QTabWidget; -class QWidget; -class QGroupBox; -class QSpinBox; -class QCheckBox; - -class PluginGuiBase : public QDialog -{ - Q_OBJECT - -public: - PluginGuiBase( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~PluginGuiBase(); - - QLabel* pixmapLabel2; - QFrame* line1; - QPushButton* pbnCancel; - QPushButton* pbnOK; - QTextEdit* teInstructions_2; - QTabWidget* tabMain; - QWidget* tabOptions; - QGroupBox* groupBox1; - QLabel* textLabel1; - QSpinBox* spinBox1; - QCheckBox* cboEnableServer; - QGroupBox* groupBox1_2; - QWidget* tabLogs; - QTextEdit* teLogs; - QWidget* tabDebug; - QTextEdit* teDebug; - -public slots: - virtual void pbnOK_clicked(); - virtual void pbnCancel_clicked(); - -protected: - QGridLayout* PluginGuiBaseLayout; - QHBoxLayout* layout1; - QSpacerItem* spacer2; - QGridLayout* tabOptionsLayout; - QGridLayout* groupBox1Layout; - QGridLayout* tabLogsLayout; - QGridLayout* tabDebugLayout; - -protected slots: - virtual void languageChange(); - -private: - QPixmap image0; - QPixmap image1; - -}; - -#endif // PLUGINGUIBASE_H diff --git a/plugins/http_server/pluginguibase.ui b/plugins/http_server/pluginguibase.ui deleted file mode 100644 index d662135418f4..000000000000 --- a/plugins/http_server/pluginguibase.ui +++ /dev/null @@ -1,260 +0,0 @@ - -PluginGuiBase - - - PluginGuiBase - - - - 0 - 0 - 533 - 399 - - - - - 255 - 255 - 255 - - - - QGIS Plugin Template - - - image0 - - - - unnamed - - - - pixmapLabel2 - - - - 200 - 32767 - - - - image1 - - - true - - - - - line1 - - - - 2 - 32767 - - - - VLine - - - Sunken - - - Vertical - - - - - layout1 - - - - unnamed - - - - pbnCancel - - - Cancel - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 441 - 21 - - - - - - pbnOK - - - OK - - - - - - - teInstructions_2 - - - <html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial"> -<p style="margin-top:16px"><span style="font-size:17pt;font-weight:600">Description</span></p> -<p>This plugin runs a simple web server on port 8081 that listens for requests for maps. </p> -<p>Tim Sutton</p> -<p>2004</p> -</body></html> - - - - WidgetWidth - - - - - tabMain - - - - tabOptions - - - Options - - - - unnamed - - - - groupBox1 - - - Server Options - - - - unnamed - - - - textLabel1 - - - Port: - - - - - cboxEnableServer - - - Enable server - - - - - spinBox1 - - - 65535 - - - - - - - groupBox1_2 - - - Additional Options - - - - - - - tabLogs - - - Logs - - - - unnamed - - - - teLogs - - - - - - - tabDebug - - - Debug - - - - unnamed - - - - teDebug - - - - - - - - - - 789cedd4494fdb501846e17d7e858577a8fa70463baaba600c508610860055171e0943122061acfadf7bdf6312a42e2a7655a5e6303db99f9d78084b8bde6977d75b5caa4ca6f1f432f5d2417cef2d660fc3e1cbb7ef5f7e54166a35cf7d8575afb6f0a9b27030f5526f6f3cca056b38f8d548e11e6e2b1ce058e1659c287c8e53853770a67007e70aafe042e1b65c0b143ec45585fb98073ec27585577143e135dc5238c2a1c2c73852780fb715dec589c2273855781d670a5765de4ef9fe9ab8adf03e8e153ec589c29b3855780b170a9fc98d40e16d5c577807470a1fe0b6927d1f278af5179c2bfc15170a3fcbcd40e12e4e14bec299c2373857f812170ad7e456a0f035ae2a3cc45c303cc24d859f70a8389e18478af5479c297c8f738507b8503893c340e109ae2b7c871b0a873853f8568e028573cc0788f767b8ae587fc55c20fc804385a738563895db81627f05e603c97a1d478a755e3fae29d62f70a8582fcd8375f617678a75ce07b77bb97d8233855b721a28e6797fdcaee5f18de5aca158677b6eaff278b95e5c8ef2f3c8fd98c7aafc67f4f1fecf2bf33f366fb125965a66b915766103bbb42bbb76df3736b491e5b3791bdbadddd9bd9b18ba99914d6c6a0ff6e8fe1ad9936b64cff66293f9fcab2ddb8aadda9afbb96e1bd6717f6fda966ddb57dbb15df7cc9eed5b773e7f603d37b3429db70eedc86d756c27d6b753377f664ff3f9e7f97c39bbe13a77afb96c81abe7b6ac5acdeaf3f9ae7b7636ff3e3b9b6fb8f9a63bb6d67c3eb4c8bd7efb6dfe9c794dcee6fbee688af7f369be6fee6cdcb85f4db765e7b7fdf7acefc77fba5e7e62633ff5333ff70b77a6076e4f17ffd2fdf617e77f7eaefc02b16a4fba - - - 789c4cbdc776f348b3a63bdf57f1af8dd95e67a1094700831ec89b4fde4bbdce200190b2a4284b51e7e60fc878de50578dea291148a4898c0c97ffeb7ffe737372f89ffff95ffff5f1193e1fdbffb40fe1fd3fffd37d4d268bfff3fffeefffefbffe3bc9caff6483c17fd26c58a6ffc9fefbfff9afff8e6febffb4ff8906ab7f0cfc384857201d39c857e0eec14161e0de41b90249e5a05e8270f6f796b0fa8bc1b983c6c0af83d6da71e560647f712090ac5a1a9d9c384856e074e8c09a7e5b3ab0afbd3e03247ced4dec60f593683474603fb9891cf0f98f0e569f1f15db0e86d6d28503faa37450d95f7c39587550743e11a0a5376b80d45a1a8d4a07897ddcdf5f58d3affffe62f58c28db76604d1ffc3858353d6c9f3aa0e92307aba6879d2b07b5bdf6d2818d5caee990d2eb578780cc9a1eeef61c58d38bce8135fde4c6416eafbd74609d7c3b73602dbd3d73404b730736e9763207d6d274ee606c4dd7c4cd6c4ac5e98f039bdad516206718ea1b07aba687dd5b073672f9d8c1ea5ba2e1818355d3a3a73307d6f48bbfbfb0f9510c1c74d6a74780823e8d3e1dd86bef260e6c6c770b07f696abd8810de5e0db8175509108248ccb3560c87ac97e1cd8e7df3c3bb0760cee1cd8e4bf3d77d0daa4fbfb0b1b86fa1d50ea2d7307f696e33707362ec5c8814d879b7507a50983c8812db1583fa9d4855f0eaca58381031b869b0d07d641774f0e56e312f63f0035f3e364d3c16aae8741ed8035a75519f8dabb17072b49171d6b5c1a26cc8916e198afbd53af8f6d9e86b37f0612046c3861112619e2f3da40e2823edb7560831d5f3b3071915c39b045783c7560edc8ce1c5817967f0f6511ee3b58352c6afc19acb9720d804c8eee170e4cae87e0c0045b943ab0995c460049cbf8d6812dc2eeef2face9c51d4052ea5feac0fa23cc01acfd78307660af4d670e56d3217a514b0b49dcce41650d1b005851d1590b60f24757fb0e58402780da6661b8558f05c9e45340433b3a6b69badc506cd29d39b02e3cde7260637b7fe1c03a288f1dd8c845270e4c2895bf00462edcfe019bb82f0540e3127e1cd866317874c0a4ab1d982270a3963250d1f0d081098364e880857cef00797a0ec8b503cd1cacfa23ec3d030a8dcb14801c0bbbfafc924ebef80790b818cc01b509b6a85217b6888b9d14304e4c4a1d9b0c4a9304c5e8da54a7cc9769317760d3f279e8c07a8c6d3ef3a19c2c1c587f64170e6cc2dcbc3a686c5a8e1dd8c7b57702ecea9757002dd36ee4c01af6f8e280c97fe9c004fdf51180e9106e3e1c5827ff8b1cd87ab97a7360b3f0a106301de2fccd81898ba7350736d79fd61d30d71f01acecb0933818da8e3c7760637bbb0128d892eede1c98cab2ab8f2b4c1d0dfbd7006d6be9960374985f07956dd1910313e389a64345273f9d0258ea71ba096891b8db030174984c1fd7b10127362db3243365339ced0386c8e44b1bb95cb3303ab970609ddc540eac614de9c07abd3b7260d3a15838b086957b0e4c5c5c7d38b0e5f1f0cf816de2a7d70e6ce2de07014e05cd0b402a7eb5edc066507802484f1e340ed8e7361cb0aded38b095fd7c0a90507afa75601d749b3ab0997c7feec09a3ee9009a85fff61d589fde3f39b05d6c74e0c07aec3507486c757307d6858f2307d685573307d61f4ffa7c6d4957a9039396d7270e6cc2ec0c1d588f5de92d25523b1b0050aea26602a8e9f5f3e0c09e51df02c674d0b94ded42b330ec7d38b04e9e7c3b605bdb7160abf27adf0173ecdd81bde5a20648b085078036adb399035b62ccc242c795f86eecc0def23c7060f2a3d633386a440f67009d2cc2a3031bfde35f073650e7db000d76933bb0cf7ff903d6a7e7170e6c18466b0e90c9fa7c063b30944b80c6b6eec0b4e02c05944ccb66cd01ca953eae6206a5af029cd5a36340604a354f0eeca1e79f80868685ca01bb18f3a3df3c4d16deda43873e61765e1c589f8e270e6ce4aa1d07a649efec39e05b2e1c5817c6f70e3847fd7380a674ea80d5700290a67477efc01e3a7e7180a2a86f7103c0a903ebc2e75b8034d8a30307a64c2437809ce9d0bd3a60559e035c7e7c3b4073bc7560732cf9fb0ba6e5df336c7edc5e0bd8fe128d12808e91d7c70e9841170e6c01852f07b6355eee0bb0470d3e00a5f4f56f07589d2240c51c6bf71d70461e02d0a4c3f9bb03d3d8b635722d6fb9da73807e6a2bbbfc9b74ef0e90daeb0e6c5c6ea6022857370d4036a5c98f038ee6df004d87d3c6814d98eed001a79331407b5477ef80d76e035c06e9a105c370bce9c09a7e5b0924ec1e0b80e4c7edcc012acb9e03eb8fe389033bd0ec1e3aa04f83033b129fbf0824264fab3380db0cf61cd8d89efe738032513ab09db02900b208ec7d3a3025efbc718071471f57cb9673eec0e6699a001a0d54ecc0d42feff5c63e2eecab0b5b463f6d1dd85b4ed51fad4d98b063eba54cd0d743fb0b905a7c750c9095e5d68441e5278b9b89037be8f53f07d68e8b2b07d6630f7b0e4c0f6a5e0598c918212b97747bef009dc4ef2f1dd8c75d0e019aa779eac0466e327760b3f06e0ad0c49d9e39b0597839728092d739c084d4026452db3900480f4aff39e01c75eac07487a75d8064d0fdab037bcbe0c1416b72fdc6816d5ac9a50376e47300d3327a193ab01ebba81cb01aae1d5807d56f0209c370e4c0062a5707c97275d638b0fde5e1dc818d5cfceec0d6edbefa14f119bdeae31ab6d7f41ba013f0d5d8c1d8f67ddb806b3f6a34b50353e1923307b6b20fd61c98e86b0702090be817209dae4c1c988419ac03244f4fb604129a3e05708c8ceb3140936ef2eb0033c38f030eab070e983013808e91c9ae03fbda93230736d8cd21806919767307a65c65e7023a79de00241c936b07d6b093c401d3b20354fac9ad0386e1d4017bc39a0313d2a7a540627f31dd0330c742bbeec056f649e6002bedb703ebb1c8ff828fdbf9e7c05676a361089a1f430726710f2b076c271a974696ab750736a55ef5f9c8e4d8ff42a7e8fd6701fbdad03c0246528c4cffa813b906529bebc15585fd13077cdcc481b5038524fcd9d8160e6c5cda214033f9fc1220797ada0298a701fb6990e88bab1b07261dea5707362e13354cb3f0fcd981295727770e50aefe7e62c69dc37380a4e5b11a56b2ad6d6f012af4b12438b0e970722ac0527fa8003a46a6fb0e6c8edd470e6cd3caf5da402737430736b6bbea64ac2ce1e65180e3dbb95adacae27ce7009bb49adef1717b7b0ed8f7478091ccc78d03138e374f803173fdd476e490149a961702890dd4b1e9308dcbd36a0190d12d1b0324c786eb0eecf34f1f01da092753073672932f07d6b0ea17c099309c9d3a3061701600ee7f491cd8334e72408d507ada77603d86946a9693ca86b2716053fbe24580819ae9270d6f79de71600355bc3ab06ded3c16608e3d3e03d0c7c2ddbb039bda27b70eaca52795001b702ad0d1d2c1b30313172f2d608ccbe6562337e65b2e1986649070463e0424728216800ca1b467bb69eb22e7df3d40c7c8f35f80c4c5c9a5035b1eb76f005926ea1d07b6a2ced7003a464e13073694cfdb00ce7351fd074c65291780526e9f67073672b7ef0eb07cef38b065badb002ad9a52e1d9840f917036a69c10b07b64caf4e1d705c591790e9661710b4adfd03c861f77ce6c0c6e568db019ad200d032fa578903ebb1e4cb814d29fcc8bd26c56b43edc0a6d4dd9903e487fe020913aef70063f92c6cd2f5b314c3cc39af4d50cf43b40128e4dfb719d4b98439fe708053f8c60147af7d40824d3a9d002494106c9d1b43e316e09689a9036b47397660f363b60d90d8ba9f014a2d8f070748cb5d07b6bf3c970209962b3db4d2d63875c0fcf8fb0b74cb778054ebc99a030e89330736fad30c2073d8ae3e9f5363745238301de65edf221994e60eec2d277307f696e70340c75bfe5d3b40d2750e4c165e1c3ab0a59ee9a123ba1031de03241dcea5fe072ce4fad88135bdb2fda54b126c39c989038ea2af0ed0c63b07e619d96316267856634e16239774dbe7804ca6ac0aa08defecc101637bef0023f5374087c4d35380d49ef403c0592cf02d2377f863bb182d75361bec7d073672f81a477f66a83740236fd3b903b4be3507267226230027ade84ccf6859d92cf5912b24d11960c4be7ff2e3c044ceae0344dfab6939fd7f2a6eeb139025f85e1340c90e146e013a59dcda0c1afb523f18037cf718004a3964de01d21d2e2240d08e3c76607dda3c00a4e21f970e9052850356e5c8018eb24d008780703b71605f7b7500904cde7d7140d8da9a00bd9eaa613a260c3207689fc702f8e7ce5bc0988f3bbe72803fea4e8053526a2a7eaf39b03cae4f017e02be00a4a99d4e8a3740ce423ee3e3128e5eddc76af758859060557803c8049d44001d896f5a80c6d6265de251485177ecc026eef41c80bd30dced3ab0e9d026027ceda91eaa208af30d80148133354c47d1b309a06521df650e6c11a6ef0e6cf34c76009de2728e1d985273f60ad0c8a57ae8182d27ab1dd88673f6684003155d75020986dd1920913afae5c026fffe1320e327690308686c17eb801133e8de7a2cf91bca4b80f475b37d2e01d3217b07480b3ebb71600b68d7ff82b96ed261e99fc19f7d70efc0e67a0a487095440fa70e4c069dd352e9b8d174e1c06650b52640afff1b03520c11cd8603f6ca1290c9223005e489cdc2410a400d0c978780c0492bfb0648a01cda4353efd3ec1aa0ede4ec1e804a1ba20140cae6f316a0e3e3463b0eac0bd327c0882d3a7b00101d16d5bb0209519d570e4ce424362ea96b7dd35f40223b5de700097302201023dc1602e885d93ea060e4067c4b2203407ae900ebc60720e8689e005a7a3de26bfb896b1f375c7360936ecf16a147cc74b3538074cbae0348068da70034b6e87c1d2013521a01b43758d0730f3a7aec360320c6c3cd83031b170b17eb81ce7337d6c9592273fafdd801d68d5480ddf4f21aa0209bf0294088e6d30b2065e4d2c2810d43aab7a46ce213be36d1f10d019b259ca2bb99cd538fff08bba700b738ef02a4e59c6500b49c1015006dc0e93a401692dba100abf2e61aa0ddd48e6f2bc0c6b700788c802d8f3c9171f8f4d5010fcd1d3093cf05d83d2e6b40a22576e2c0e6c7f12120c50e33d46b75689e8d1cd8d1ebaa0414d2714f1db0f11d00e44df8d806c86c7b6363eb0110316baef0fd76bb04e8a871b1e10027d7012028b47ae0c0a6f6cd21a0438e651f0eac3f76a600adb95bfd052a7ec862038a3f8d266307b8c03380e6e9f50320d76621507048cc1f1dd8c8c50940fb7e7e049019bbfb0528ece4f615204bded806fbcf173dd807c8ddf23604c8831716804e5bd239602c7161bdde378bbfb078ed1e103014ce624026f3f118808b331c3d0bb0ab27534099a090d0f4a46216be740e4c3330bf7a0fb01944b589e0618a30e85eed5b4ab727a747004235bacf4d0744666c035026c2d92140fbfec508a053e3cebd83d5d77616b5d7034e8d2133cdb174b567b60348b4903f009914e747c010d137080e6cf37cb8009408949d7380828e9a5b077835e80fed40215903f8c17b03309625cf3edffd84616717a078dcc10640a2af6b1dd85e7937028cd4a7b90322223e00688ee1c296479510161dce9e1cd8d7662307d6c9e6e5594e1744df630c28e48bde72c0c43d11d069fe0d8040e9ee6d5ad6dab442fc09d07ebb3b07e0390bd7cf00bdf6e05440e7fd00502464b8134065b9bb0660c58fcd49be040931ac1f02299108db00adfd6b3da3e1a1c7a6e3f63fb04eeea6f6f9410789907d02647619bf02b0d3856c06182be4fd438059786ab330684beac6fb00ed2f67ef02f447f60c200231a2e9c105cad12120c32072780620fe34aa8e000ab3383d11407e4c5340c9c79919bb07554258c106a026d1e0e2d80102761b1068fa690168788b05b7ac8049a92f3aa8572e6da01e6c4b728f44376f0008a5b07f0c686587b1a9fd67f9b6e49e15300d25e127da70ba67fd04ef6c7c79e1c086f2ea0f587f8cce006c49e1f807800c0a474f80d264503043d50ad84c46536a121d45e32b073694d711407e8fa47360c3704b072d4766052e1f008d4dfe90aae92db2d042685600776de780aca31381d4f6b9e74d808eb38ffa38d92e323a39f580327b462beb46cc796e6971b65978f6e1c076f5eb21602cd5c944709bf89674ecc03effec12c0e6d9592cdc0ae018fa0228fe230d02ccb1c37d00516addcb14800322ecbf08708aaed48e4af3634f80e9303804d474d0bf0920a0b2e41da041eb7bcd002debf6e0cc013279069015ffee1f405685fd5fc098965eda9a6b53a23b4269e2a2931ceb7ef6000aaf7c5f0348d7cebe00634d4b1b972e7113c18503139f6f0540993acd0c90f271d110a01370740520a02cfc7b11a0e9fba70eec6bcd33d203d9832eb71c98a674f2e6000b5a10e0c8737ae3c08ef7d514502a23c481ada818f1d9250a80b81b08d0d2ab3307d6a7d521004f51385e73405ec1072020932ff50ca91bc9c881c9a0e18680b98da34e40f6c2dc166197b289776bd6416ee8ee5eaf00dad62c032219e9dcd04d3f008de2c7f417788abaaf230736fa9509e9912b2417170e0804e527d20ca2f70780ce2f971b0034830e813292fed1bd1c03862857f59303ced9f70232ff0401b36c06348351a250c0f61650c9335209a4c4e5e82d6c7c51f502500c892506af80ad97d39980b64686a11f4a7b4b3a73c071e54d0095b62c00ad8c5d9b0e38deeb272d12a6b906744a8938038c520e123f00292477364f47e9403379df813db41c00824ddceec764d0d867507b049049fefc07200b6b790e9051a5bc70607ad0cf3e405e8ded4d80ac5f1fb780110f2d2e1d10756383bdb46bdb222c1a07261c87c7000263a3d904403e50a84a8032fdf27701e4c7f40aa0dcd92a716073bd9e3bb0b1bdf79f201dea14a0e8e3c1a900c360c1e83d40d70e166ddb03ce0d513904c8487dfd28c03c7de36b53d94faf630109d8350758f27601297be55521901286f30bc8d0724e575f9b0efe34b61640f460f7be03d009e7eac94042ae4618dd03d8f73b0b9e5c016b98c9a065c3756abc12e05b9a7d0021cd61d838b06ddee6690f9496b57b03507e43fc2040175ee92f508b437228a0a0925f80cec8f19b03f6971380ec3037ad00eaf96c0b10d8f7077a46c332ddfd706033f9f902804b2f64f70ed82b8f1d90aaf20ee8d01c8f05462cf5b703800e9ae9d0403f1bac617725808090303c14d09198714973ba70ceb7a44a3e3f5e89bef4cfdfb07b0640d275bf3100ef4aa88700d67ef775ecc01e1ad92c4cb4bf748fbf0eb08ddf00d452cb06eb81dc4f77fa0b4500dcee3830896b61af6922f53c8414801c8baa89031ba8bb2b07f8f846024cdcb3330718ba5f018dec1f2f0eb07e4d015afb270301c6b6dd03485f3f7d7340ee9bde82913a7ac91cd8d75e9e02c6aa01a01e1ba726c7de6cf4979d6ea6bde4422025bef00380c72aec5f3920266f5fc0ceead1d71a40aa42b62580c676cfb8a47272cd3f01417504f4da8e7ddff2e7524f50ee666b00dfc58e01d28366670e5203bf008d8b05c52f0d6aacfdfc153096d5fad940a2ac23cb4d580173c8942f009d5e0f32804e38d377803275aa00900d65efc501fafa0f40079ae35b0007cdfe8000a85525e05c80c13e1a03c87f8986370039424afa3451424c76ee8028826f40c791c78aacf460a488dd230754f7d804284264ce40f97478de15e0b0faf2009091a9ba03e48a97626c531ddf8a2f0319799eddabf569a633503434a9bd74b7584bcd77b20226a5deb70172839525209799610e9022503e00142b599f3bb0a379790f403fed5e5e1dd8528fbe1d607413505852e680a19c1d00309885482d55c8c8e85280cde2f20380cd20641d80f8d370f2eec0fa74f8cf80967af45a01e46dfa58736063fb740350fc47520ac89fbdeec09a8e4cced2c2e447f769c390cb1ed42d36011aca4a409a63692bdb1d43dddb0740eac6c5258094aa6e1e1cd894aaf4139d5f4c1f5b015337a6c700d66d37d26b75389b46001d46cc04dd0339206e3a0738c97f0001dda17b764034650650a4cae5a603138e57ff0032300faf05d82c2ef5963106d5b989be3cd59e7d391440aeb3792e01e2621740645754270e7092d700c24ea2327540b60f639bca37ffaa9f601188cd48bd0298b2660eac1da57e32c43e767704a8f8c9f5a7406a7f913372a94e7c5f1b002244ba992de4c2e33e872f00d9f9cb4b80ce2f9664942e1d65246eed38b06118589f2e93586d55de09f8e9240660b70c96dcd30305a515342c510c9a39fd7aa05c9efacc816df31763402343e61e0055322af8382913313b720f52b41cbe36215c2cb23a136921cd205403807c7cd52d40c13eb356804937890058e182c5082c01afed82034201af01251aca171d94ca2ff6f50ea879e8998dfe5043d9fd06402393c9354016e7c696c7d0cd94c52940c7264b0e4c873a8c44d799038b62b4dcea15e0485c38c0fea187eaa8f1be00f8263e06a05b866807d02841f91940ec7964657a56c086e1a4706072fde608e0aaf5cc81ed0d17f702cc8fcbd20176cb16305620177f912aef755809c8a5c7d72e777e7b4b2c805ef8c8e76bb3888ee7808275bb7705607ec4c939a04c39586d022ac58ede08a4363f5e1e0172a3b3adf52065a9d34169233bbf9e3162f34cd40e14e7eecde658a908b3eedd846329bd308c6e00a81bdd620b2057da7d01d0866399f54b8055c1a22a7aa09210b77a8b52fe6fcf1c584b2da37d09d84eac3c4ebacc15b5a64f8e000a9cee1e00ee242f013ae154a700051b57af00c20aa2d92140d92de77ac608997cb8031813f55bdbc1aa5c1eceada50272719e15024ccbc50f40f9a6d12d2057367aea8034c60dc030258b730f50a69481db04907316466a478d8d2dbd06c8b5f8c8e8a76dc6c9d3baf0cf297c71039084a9ee01d2612ca26a056c5cbe6ce3730f6fc491b84af8da50e7006a5485f20f9880cd0a80120ccdbdb002360c1c352a3f48303f2a77b47fea2f146f7977ebc07aeceac1c1d8a6947ea24c8c2a7260c3500d01b502fc9f04e4d5a801e841a1d433142ed66e3b30e53bd24f3a4e9ee77380ce1e439a9e2abe70f226c0fc305b5f0f64753abf7760fd31ad0092eb87ff04b0b23c67801ce7f4e981039b96f12b408e909296a6245c869b1d01ced9750750aadbd74c801555b700d960eff45a599dcc48bd02b62a475301846311031ab6d70fb54391e55f9f801187b3b9edd95546f87e37b7967ac265647ec2b4f6a0238ec4b55b7b16b62a6b3f233f24002f04563a609b3f71603df6780b703365e2c0cc94f314a024a39b91038b7730f7e412b0f6a31f801240ac9cc312e0b3c0aab004d6411fd700e57bb40d20a83f4e1da07e9d015a96c7e39e039bda95fe82e0b8687604509856c81d9091da0a20e92ce6aa07aa2c787d21c0d79e0e1c98b898f1b5a9c2e7d23507b6b20f78e8d2aa64e2f31040f0429c140298e5a26d076806ad03fbdad90720678e3d7e030afb96b818032acc3ffff61c58d33fb6003a12ef313f7cae7fad0314cc31b816b0fee8d64da004b718bd7d01a44a7eec0346128e2560aca9bdee0083aa6d2741ba65543e0364d9fc8d1c70361d0094dd525e3930f5cbea6df500cda09b670eece3da4b00295591f9f8964e1fb6a43a7360e75b4ba95a013b4894a700992ac66aa94a967d0c1c9830987c00dc36fee8c0a4e5f51d40e9d885dea224a33d356c8c91e99d67a40a043db9124016260700a5101dbe0214156e05fc7aa0224df1c48175b28589af00f6f5149073b248d48e0241bf7d0c186ae3bb71800ff85c00dda16606a595d48dc881fde4ec56000f4df4ecc046bfd15b14b96365799700a5268d0121e370f60fa07ce4b91d9b42a66063ace78deb30cd02a034e8410918cb826662bc511441f775ea80c8e10f076632796d0032fe5946590f54ebf77ce1c03ebffe07d091d88a34f5809c916eacbf905367f40ea8f4da4b0164d0c32d805a045dd30a30e93e6380c4f8e7bb031bcaf211808b33aa2f0058f1a35b7a2c512046a3962a90fc2015907d6ccf812d8f6f93b88d2c35d1ecd8818ddc5927c0be1fed0212653f7d0352e658c800b2c3c42f809c33d0c59e032c687c6d4abc54145d3bb091dba7c7a46bc7e5be83d5339a980e4a355017ef02d2d7370550be477a6850d6f39d80fee21cd0a0e5584a440f88ba89169f00b9c10afa234771eeacb849eaf9b7dda7e9416da24a25e59d037ba815534f3db4a95bac3930313e3d0548a9b94e01ca91f83a7580469f39b0fea80b00cec7ee71cd8129dfcf7aa866f2e6334089f49f1f00252857ad033e3f1240a9099b001d57f22707c43bbc01c6d8836213b06daa6a7c1c57da5485af2c00b307b9621536002a26367b7730b609730920d827ec6f09d8e837f139407bd4950384f44e099045e0f805a0508da76b0756b767e08003de8d1ad6a1f3cf697aa6e2bf87ad00ebc54a1da7dddf11f019a039365b07602fecd68f1d98d6770770013b3b07c8a2980d015226e639403e8bb54d804c048f01a098abe10f40016523bda556a0ce0c40118dee553f098cdc470290a1ea7b02d0e7778f00a94e376a189f1f46a69e77e940aee71d802c0251054855cd620c2045351c4c1d5830c7f58100d3617fc7017eb17b000eee703d778050da16b019142cecb507059a8195d5ec81e2942eb71d5060e90ca088ff8b4f077678679feb5242ce42f22c9052f0f20520cbd5dec0017e7575a1c2d52f6f04d8d61e27021901dcfa1662d042b507e814177c2480fe71bf0b5014d2e8c281f5c7883996cab17cc80cca74b2a8f61de06a3d0594b4e3de3e7fa428a46ef309206d7cfd14e06105b6578e7cbdac1f395835ac893601f20272681ec9cad25814630f14d668371aac804ded9b314011665f87009d1b26c70e4c3ddf7c059067d17d6e09c8dc710220a02c1c5e3b207af01ea01ccd521f275bf0f71420a9fdbeeec0265dd338b049f739736063fba9bf18cb5273e98004d41307d6d2eadd01e739930e2357adb3178094892a05140962fc0ea0cb07506a7ac07a39993ac0389c00507ac3f60ea0c553f45a023a3da3113003737468eb6594253820161f007978bf9830196948ddba7dfe58912addab49feb11ff0b27f0eb0c21d0164fab5124c2b80e4af0052152c913e1dbb3163f1eb00cd6006a0ba58f75b3bc05abc07509fe28e1bbba7b9d64fe45caa0f1cd8403d0d0124d5742f270eac0bbfce002a70709f03a8cad375fa0b4542860d0051aed1a7ba90a4aba83a776073bdbd72801bccd6dcd8d5e2f70d07b66ebfe9e4947af44d7ce5c014c5e3238184d27a0b80ea387fd3c9a9aa34fb4f0a746d4b33e901d1c7c16ebce8812eb8381a0af013abe8d7031515a90e0490b887170eccca82396c9c921013ae9f004102f60330c6e638b1d530ced0c7c2e84580c9ff720f48e414fe02e4b8f3177c4be68a911d9bc67996af5edbae335035deea6eb66a7ae6b18191d544c83c3630baab00529cd7b601b2f559947c0f54b2bd3e75c0993005a850edd71540d68dab09a09435f0ce81b5637e025044e6c5b503eb8f9b7b806a875dbd001431639af4126041fbd65fb4986eee87001d01cb630784aea81d3263177461e271b0ad0302759e1dd8e77f3f025497e5fbc981f569feecc066d07dec00c9ff65205576edc1af804c267c4b4a6e53135f3bb03dfb7903a02a89f9a3001d74d53aa018b2dea2f0fdfb5b800ae5efa50204709b1db707b2a19c3f3820d2ed1d50db6a6862358cda61f1cd8f0352a937010ddbc9957e420e4d38d3e7abc8dbe154400a1a13a6df61ec98103e00633c9aa77ac638239a92b99e51f72b5c3bb0b347f4f4e9c056d46107c0851532bab05004e2e34af4657ef148b77e066006457675cd32d59c653aa81c9840b1bb7db2bf00ccf5438084e39d8084e3dd1d60a842f95f00a5fe59c8c80a5852debc0054d20bc700d90b87a700995dae0700dd8862d9f92b60e352eb5b645fcfd701f2577e3f3b20bda303c83ed6d9225c062dda407d7e3ac03a5a092849916f49332935bf00252ad905062b60837d347780e98671490bd561dd050c11f49659df03e5451f35808a13ce0ddfb27485acfe62a6a6eb98702ba09cb3737add6d286747808e408c5a6f5174697423c09a1b3d0b10ecf3f8e6c0ce1e4f2d60cc4c5e2c0c6454a208a6b2f4204db932e64c2033f9f1c5d4ce32c4c59cb1cddc6afd03509d6f8bfc5b02066a41c33215be5ad34315ca53d2b05ce983095f9b8fac4fdb0fe67a1812b6f66be3e2a1a291e5342fa3e7d0f97f2b802ea740e4a4d2fa1aabc7962de33ed9a38e012abd68c56e5780b97e22c0a179380528bfd20ad665a91b32e7a700ec41dda471601d749d38302342b40ee898a7d736b597319c3683f23507a8f8b980a2904e1c982ab9f90248b490b700aa5ff87123a0b2567b005daf5665001516a87f004ab5b7d2be3d505db8297dbaf424db5c1f3918d9baa5c7526aba35e112a0126eb774f2f2e8bd7a683307e07d0b5698750510d24c87e5d667ab610790b2c42e17022c8fe13600db4574f80628d8928a4f80b2e2919669a61444d3d8b23427dda55ddb375077b61ada77dbc4d340324b785ca9a359e60198bf0540fedbd9134073ddb25bb2cc0fdebf25c0e73a3f51bc54941d38c094a59fc8a1bbbe0740c96ba22d0766b75c3f70603328990108bfedd6f71d984a6bb7cb651e7e1b99692ff3f0db6e1a00aa5d7afbedc0963a622b73a3ece61b4031465f970e6c286f0f1dd831b23d0160410bb5fe829c80aee90430dd7c9d035a2d317d0b31bddd670e9060fb520729657778e6c08423fb7ea67cd36ed3a6763fe5ac3f1aab6abe02d6c9d7b900c63fb5c3e382f3170045ddc3682cc04f3ee953cf36ce2e1dd85bc68c8b87789fde036adba362f369f500db566c51154b60eb25b690c41eb4b216af03b06d45936701fb4913ebe3144bbbd04355272fb4006c5b21e5193a58c5965cdc03b26ca2433e7f290e4cb0ed027426b4cb17b32cc7dcd1bd5907e57fd6e24b8016213a4ceeb909b54998dc17e1fb9e03db81165f00d5e7b7a8bd2cd79a8b6ef701aaa7747be9809b470f01be80de00328799b3be074a843d59776093ee948ff3a0c5fb5f0076a96e2d06c8296cb775ae007ed31d0066a86ea6d752092bd8b5aa59eea13cecd9cbe8635b1eefbf0218882c7ba107ea0f4b975b012aa64c0085023122805200deef1d10a3a887ea1070c4b72c4f0e36c718974ca1d565e9c0264c980a1022f114001987112b2cb004ccb1f92b001b5b640eaa1e706d4474f82e80d9b6640665aaccf1b1e7806fd906e09c8e2e981f599dadbea5ddb03597d74464b66ce27920d0af7d17a8eda19df90ab2e26f6abf001455c171b6709bc16c03203ff25d0d509500ab5bbc02d8717f01851c76df0e087a1e00746c62ed7b0da26efd9f03ebc2db03802ae7dfa50055a1a9070e6c6a5b1463f617af8d9e5c28e72c94b70e08b0fb0428dbf8ab04c837ff75e18093d69180e2a48700254d3cee0364c73d1e095013f2fbdb817d0ba7a46299b768929fd7a632757e46004c37f1d5025070f6b09b6a7ac02c0c8ffa894a9758f9f91e94b21633b6a9c2a26f8e1dd85c3f0a0284037deb2d443334f1c08175f2ed8f009b45c9d7f69b05dec83707d685df024a0198e82d23b6826793744536d0153a5f8084863d4d05ec781f5b3dc715c04cb90550b0cf0b1dd42f3253269a0c50c8877302908b73be09c0c8142d6680918d6dfbc11c0bc4e2b713c636943ae1d063a13509d3991b3d1b6af7e8ccf8970d3d2c29790528e8c84ad867435904ba9f030726719fae00984b3bbbee251b7a383292bfdf18f1bf58d9e615a8adc70280e9d0ddbf39b00534bf05c87067758b9780bd217900e8a21eab19ba02364f2d60b9072a5857a93f5015baf910a02b400b3ece0f34567774056c06fdf0d0d42fc8f90366b90af487a7dbb6d70e6c115a798b1e0c6596e36bdd821662802e3b2e370558c81f570e6c28533ac8d32a4ef40c19cc2afd048535d8fd734bc0de30fb02f88a7a0660418ba6b6b287993cbc976301b6c6781f40be7a839565982963f956cfa09858f4d80870b0fac7b72c1799ad970f079675942d00c38c9ac3fa49a5c3d93f409d2371e9f5acc1fea181aa95bb127500a521d945923d08f617ed3b5d180a2dc211002f7137b3812a7d27b4cb4bb2d277c2df1c203b1db6e0f24fa7fb07505deba7d2810550990f6705083c48005a95b3470704b77c025412e2e912a0da83160d9595ca7aee2c4e7a056c558e0f0450f2ecbe821e7400bb8b73e912d6a6f50e2044a2896de44ad9a4a38a76a43a792e8e1cd83c8d7f00d82d43f704508499953f5902f4c2bda1035b2f3f53804753c60eb85596814a956b6e77952c01d261409fa65c811125bf0e4cbbf87905c8e3fdbe25601b4e6377e9f5407139b313c048296695031e3a03e02be8f4937e891175c3a4cb306446f774e17219ae1e3af872605d78cc8459b6c4fe62035061c6ee9885594dea4e64e7a8b26665b71301f6a8800db60cc4d177c88fca8f3c23d3e82b3ff298ff36ab545cad7bfd05640a90b972807d8c874a636bac8c750f308735d1b9037c7c97005cf1dde4c4814dcbe8c2816d49569e6f0914587f0d50947c7de6c066f25c402e9b6b13b055aaa0b4e1c281b5636b07a044b6c73b079c6f63013ad9eae2f740b7300ff51345c96f4e00b2d1dff0b5a902cae2d20127be482065577f03a02945115db8f49c5ac3f8b80cdd32b60c881ea4a84ef7342c536468b22780bbe587b764320f5eea2f727c9e53bda552eace01405535accef71264f6d09727802e52584c05508bf1685619319bf1c04e38552f602839c460e70ab20926d8aa7ac066f144c3ea3ae52f987475abcd821e0b1c56db57e65820bda3fbb02556ff1d9b6ca92f93263812df0264635bbc027428facd007e53de1640a56dac945cb62cbd48bc430d509500abba92d52a361746db0eaca51630b404ecd95f37000c558d4597ae0055576cddd65e36e0e705a0fcb9fb3507d8f98f0114430e0f9900339959587b0259458fa53220ae45025858ab02a09bd0064f00256fd8356ffd81181745b0fb3c9700cf888559f44019438fbb8022e5d2901f0075aea2c34f40c98409a503ee9f636c3369b06b364feb5c7783d55f00b5d4e21db2ba667984f61d403bda5f46bf562668772960abb2fdbc03a0f4b6f81a7b60a68af6d566721d30dcb5af3c23a04a76739b0e7f591473fb8be072dd8239b2a0da0c9d852664c193f1399c054f869b1f01384834cd37a01638012883ea65e0802b526e0192749602d00395c828d6019df686a9039beb8f7c9c5baeca8103ceb73380caafd9ed50d932e1013b6e0550d8da5701d09de43fcf00555e78b97360837df32190a0494f00aad737da05e04aebbee7028a1b0f00dda29a4f056c7e34813e751d86bdd29315bab5464026d75380ac1b9f9d80ec0e7a069b6713670042249ac0d866f2ceee96808ce5f1f50b50bdcf682ac022bc9b0b704cb8a3c796aa914d871f40ffafcd313d43367a4b10ea41cb3e77bf0d5048c0a1edb7bd4e639a525cd0eb7996991af8c5b8e42a91517f02e4142ef9962257de1a7d5a8dd83d5a9a5e3798f6c6ac86ba63ddaed9d61896970bae8085f0f6a0b655d94e987481d35ab769e3f29722c249cbb3393ab6c646bb47b7b6e380508d75077668c619dbb8cb065345a324a3103f3ab0e960f1dacb3e97f27de3809b8c2a80ca38592c6dd6b88216370e4ca0a07d365e7ad18a432f0151d0dd39007358176d38b09fd4fc45aafac9935d8027096c031401f048d355e0311e7602d882bffe01389c759f9980b2f4f6003253ce4b01d48d822e549a7c63f91e3dc06412a28500dbdae79b039beb4711809080286c01146374a4b78c09dfb71b0db226930f98809046f6b130623ac81c16ea00a0f242138e1c6044781160dd1efa5fd8526fc221c00bf60f0430426e278082309cc71f806c8e56dba50718bae38ab1cd9a9cf82046ae5714ad0bbb1a40f9b550a91d9a1fa96d274d3e4831cbbd02b8cd24a0393679c933127e32944511077753e36d6a3f580d353168211a09589fb656b03f6b42828efbb00928387acde8c2a009333e14403ad47c5ce8cc64d26dda5bfca6bc6e7e0e90c76af10c7075d4a4c35f86cce205e0351104745afb4d01044034cd9a03f6fd770726a5d62f04581e6d055039cbfb1f07a433740005705bd2d50ad8d77ef3b51e4451a81db2289e7d3bc05bbd2d808e6b75477ba06b89469f0e48e9be73c00c7a04744a0dbd7140de9a1a46b26478a60b158811695cdc42727722808449f493544578e80fcff5faa1e9a96e82b734c625e0386b894a3dd0ed0c56cd73054c265bf9931ed4289b78355a37209631809276dd5a2bc01170c0944a55baa43c14a0e9a5ff05a6f0779aee51ae478c6d4602485cff0208916888736c337979e23d0126ffdbbb03dbe6d71600d5f9ee3e0514c6370634198766e6c7f25f13066a0765472235ac2e6d576f35b56be58a7603406d278bf6ddc445db2f6473c7cde8a0507148c4aad0fd95d73275a3fb3b020e1c9801e037718041a403c880f87be7802bda7e0154290ad50f40ba8355b2c93a2f79787cef805849fda4d3b8bc02145b8c2d67994264e3d29e0a307117f6f99d4aa6469c2cfe728a8ec702e852d5174026a4f5d2816d6b919ea192a9e58d035347233d94f08660d1d8d9b28eb319dd36670e6ca0d01d7a408afbc11b4035cb7f1e01aaccb138116021df6c0374e59495d9580132631702f89133ba30f50bb59f05d8b49030cb042114f8e0c074ed7f0c76da2a226217d0b1677fd31f1996aba86d1dd8a6759c0ba0b0de6d02d8b49a700c903b1fc9df699bef260c76469e5674afbfc0ce1fe1f2ed32f4a0a861c264985d22bc6f3dc8ac1dcf6b001555ed1cb089bf1d01c62846b5031c765f8c4bae64a74dded2ebef348c45982b918d735457a9c64ccb74a8c678464a6661adf8b1970f40e0270fbca53fab9baa30b14dbc0b4a936f3f013ca39dd1c941f90d0f1b80a1f5693b613534030914ebc291effb9b2d40e5815b7bedc84f05bf37002ea4eb7e6f1dd83eb7be0dc0ead4adef006add503777603d669929d95f8e955d36988d2472baf55d076483d17465b576f36b0784267c08485fff0770fbfa93036efcfc12c08dbec56b3d55e58bafd5693e4c0f04981f44878d949f1da6ff0458ea152d4d897788b0a18c3c80eaf64a802985ab649412d8d67da6026ce20bfac33d123f0f00d49ef86a2e8094aade002a543b1a0a10a3d81c03dcd01d39e098a0d7763ade2700cf6f180194fe736493ff2f71ebad02a42a19c26b976158abbf38e56b33851362b55e024cae0500a35b13f8da0c1f4e1433a532caf444f191030a2ad3c94b5b9e69176b006c4a51180b6011b092213d5079beb56f0736c7f698634bb1b402767b580fc6324498fc18e5acdb686d0650944961bbe968a8b0d7cef6ec512d0b49c984a90b9330ed1a93aee627ed2713b75619ebf1850007ab2030e2ecf12ea0a8ac8eb1ed57a99d3dde98eb8118f8f69576043242da690e081c4626ccb1d01041b4697d3af66a5a9bb6478d155ddafd5e0394f5fcfc0450bd60bb8d6079569374d801302dbbc9178018f88e2893bf34b55a6fd1b5ee0814cf4a0b76435d36763376120b70469eec01141260d71067cb243402416b80cfe4488020cecf043094ea340578ea5f095046d9d30540417ac49f8e973564ec191500052d6a83002e1b2265c71e31f36e9bf832098d4d9ccfcfc8188a9974e38cd8d1261c0032c5f3f350cf4a533b328a24c4452a9011de40af672a0a6097ca2c0142e970db0101ed3920e0d1bc3e774061e77f8011faba5524efc158e140bb0e6c7e201dc6f9d8d2e53a04cab8c872eef532e9302e071cbc1f68585d61c9ebe8a05ec537d1f7f20e683815105036ae473ca37d1150cc15dfd26fe216fd332d00aca80eb7600f32627b56fb7e3ef80b26dd07c894b5be09d0597d7605f000ee2d40a10c882b0744cc8c0032fe6dc60eec6bef27005dabfa543930e1689786e40359f19b580fd5bebff901c068df58819415c06a7d0fe8e47eda73c0e6f9e480993c068c95bc3130900e34e9be1cd8127b390224b2af7f025254fcc539a05485901ca0f8c2c599039b855743808ca1d1be03ac0a7c4b4a7a58b7c5b8f842feee009d22885280f2c5525eab724161d80208b2894cbbe841c1b636a6d733a5aa1c1e0b70248e2a07b6670ff9968c8899e8ea1650b389bf323f32c53b8c0a01d6ede50960c44fdef8fce563ad3f68589e2a94b811c8a8b54707e5aacdf0f562a09fc8f693626e60a822804306bb62278c86df00b29fdacd3b0375211b1b835d0f29f434a6836a828eda0dfd4405fc9ee8e49a04f676e306805fbdfdca0c04dce8ed2fcb3410391cc697800c8dfe8dd706046c3bd53390969da5cae689abf8ebeb0045ecbe597ffc650b6e36006dc09b11a0d0a543e7001911366a0726b6ecc2e43c713bff4b0250aef9e314d0c8f87709d0d568f3434027a7df8503122f9e1d70a7dfc241673ff975c030dc0054b9c50e9a4b6053aa311becf252591520bf73604b2c5a039060d85831d3dc130c23b3e2f7403ebe94962a99b6fbfe02c83ff7cc40a51cacc2e18d80bcd5b103cb792fae012a3b12f3b5a92ed6fc8e1c50a6f84dc014b46e6b1310540d78e4c076c2cf4200fdd45f2b7b50681c9884d93d10c0fdb4b50d50e6f4931eda4943d1e71334d044f70055d449e8757913620b79ef41ce7e6b15ec7a40a8573c3803a884ec29af5d86c8acc06c0650ecc6e5ba00e184113dd6ebfcdc5eaad736199772f371599b61ed614a658a85dbff1440d2dde60e880adf01600c6d623d94e49e78980a20b51f981fbd70b47189771cd8b7ecb78024c3fa45d3f35457c33f0b64d4dd606cf33ca3423b2b3b2703b30b3f065c0f2a199721c9b42d9a4152e37e0a4ff469dd72b09ada06bcbc6bd2c20ade4e0119279c9686851c9fe78c291548956d2d53780932ce0d3661fc0690ce3230734febecec6e9f3cf572742fa700958e374f629e2a94b8b1ac923c55205767de95dc5321c3e307802a7891d9f9f365a2a3a92c9660b80236728b0b800ceedfb1039352d37d018ef7e9dc815936b73600b5ee5b1b0188cc882e76004afb2d5e1dd8605f6c03c81a0823ebd365a2a3f5e95a0748987417342ce39e80f88e87f6ca0421ab7a46ae5b112e017281337197a990d6c9812eccd8b31be6589ae9929d23b5a3216cfef80e201bdb215da87376f45c0be4260b9faf01230c77971307d61f6b5f0015557dfe67a047f6f927b5809d0aa2339e916719a13c170eb8daf90490e7dcc7478fe5c39c609f178002dae70244ee743133b93f8c98e21c00bdcac22d2201d0d241ed0cd0611d3563469ed68a936e69ba4e27eda769c1bde0c71ef4b00ee0b29f6051bf3da0bc563ce75b022922ed740818a2f674a980cda078c1500655f1fed54f6af4a08a6108230e34bf3683fcaa96c62ac8e4999fe627a7001588b518b43cd39d074d74e2808def17408dbb6ef3dd81bd767429802d67ca6be56c0b76fb60eec99251fa09f0d0a6b103ae471a020a6906df0e38bc4f018d34a501401943c373804ada7db70085dfa25a7ba26337af1c908c6f0bb93faa2372c601c009a709ff002a5b7473eac05a7ab725803261b9913d18724c98e927a463c7c58900faba0570af8075d011df92a9cad9f13a60c4123b1a01c678f05e620102fcd718865c6ed2e11e20954bef11a075bb60287319556ac6a5e874eb8ee9964b5d820b1c4d062dc3d371a49a90ce2ace2fa1bb058c65a7bb70605df8c030d425dac50b4daf9174ed0fd3a1a624663ce5f33d486f469f2a46209ef39340cc443cbd07109614cf22010231da2f01e4e9f80a4095e6eec726bf679376f37d807cf3279b005548bd3f078c7579daaf03fbfca9f5692e8f77f7db08a87ee19b031c871540a94c4ffa0981185d3376604ed08886a54ab8ac5f009ac9d537a0505ed25c0015aebe72c06d8c5380d2d3b3230115a8df009011d25a5ac51210196a35877bc02929367be10ad83386bf0eace92fb7005d3a54dc3bb06fc9f55ad596b35a8c4bc031f22105c85bfdc33332c59edf970e6c4a0de864c5e485110d5b26ccadc03ed3619922b47ae82f9d9c2988335c083094bf130055789bf60c40e87df4b52b408d088bd8ed4147f4cfbd1ad6b135dead034678f0467ac698a5fe40172e2d0ff68c3540820c9a6f0388648a5e9e0132cc9c9f0a10263ea6e9758a6bd10c99cb3fb096b69c0a7299e443341660476665e7758311e18b81f2820f0ba6a5af7db316e7cb0c5d3231320009ecf1cbd88199e4270540a5d366312043a7fb5a38b05e7f617ec8ccd0ad5b8ffd25f52e9e004a3e5f1c0054c1eef911a00cddd73b804c04f797008e91ddd6c281899cd711c02d027acb58e674537b0a5d1b11ac26e40a98aa80ce5f288ba269ce00aa4c6a01dc2bc0b1a905b0cd7796ddb2048a2c9f00e48f7a3914407e4cf60172a46ead39b053d2742ec0c9e2596f51d0c0173d9652f3afdb5a7760cf88f5d05ac6d01b01d5a8d24f081a88d60e1d500ce8438064a7521fa7ac815f86d215925f463f5572cf532e4007dd9bd4ee8585aa9c350232001c03702f34ad402693eb8f0087f78f14c0e5034dcb74c8fc4a32fd64a8c89d0d4045c254fb0f504b75d25f604e6fc22dc0c3c5f45a8503856dc048d7435f0b6055d8b55dacc80739b9c4346c699bb086ed3ab09fdcc50076b1688df9d10b651beccd4d0174a9353d5455efd1608ba5ac5b7561cb4cce1b3bbc7731a3df9f2cb8ce8376d48934941d00c509c2c31e4099070f74611d64953c0734ca47a6c7e4e668df587335a16ff10b2b3b0c946840172adea1dde127010b5afbea00b7f12c0028b1d3ad9bfc18fe59361f1cd8e7cfff0124831e5b07a638bfae013c1b9dbf50d25568d61de091c800ca6e31e763fe775b56fa074cc5df7f0594b2d1f35af7157ce9a1ec404d1839b0674cf7002a2577af8629f72da8e9aae3fc1d0438790e07002968a989ad61a659f8fb0cf0ace72920573cff3b003365136e0032777ced09708edaf1bf6057ffb804e03c08d9ad03539dde724060bfb5ebd47be029cc6700ea394657170218eecee80f5904c2fe990353157ef9b81c5b70b4f601e07ad7e86d1730c42230e1e372dda8f4fc0b4081efec969925c86d996e6e033a1922e8e41ce35fc8cf0432bc914ced62989332c34f0afc0dad25d4e5c39ab234ed62dd01ee055eeb0ac9d396005e0dec74ff57d6f3390085249e768091e90ead8567e7c3c0a1b99da4008c08f1c78500a79337a676c021d3addb50faf56adde211e0718e1780a12cf0054061c0f303804c7b8f8700054fcef70072844c1b808e2b5657212fdd1370f6e3c0f4a0ed13402ae9d0392012e1d8819db30f3e04f09a37e700e5becd6b80927bea5b014e1633b5437537aa5d00996dc16eebcc4bf704ac1d01548b714e8fa528dfc16e535b02ac0abf0f00d581ffa796b668068b4b0031ce511e0328651b1e4c652997a5156d4bca1dd86b1bba3023e9bbb1e8d225c0ecd209485a0ef87cd51b6f5afa34c37eda5832dc12b0ab5b10450f30eb37ed3e405914a30701b206ae9e0474110b932e6be5acdf11c03ada30a5fad3890d9415a9eec128639eea2dba52b9557f8c6dedc7970c76ae0a43c70702b6454776e5430f547eed7e00d07176ff470081f2700518da71a57b99004a5a7a437fe4556edfd2ad036aac2cf32d0009539d256ee56591e62c8f3d07d82d19db5e4323fc85a12ce46acd6d9b2f2bbca261cc4f6a9c3aed1bbddeeb0e2672de4ca094fd3667a713368b3260936eed86cb1ee04d68df98fc014531c6b9544a77683ff550ae9e68b108947f511526c6abbf208a39c06326be0152f12d8d31af54cfb1db7c04e8a6abe70740d0816603d04a81cf1d707bfa0540518c531aa6e2bf4ddb01749ab7c48b7c99274e5db83180421c8d5d4bd403ea2a749cc42bd5faedb6f600ca063bbc055074a6fbd433e4b3583b01042287d78e01b26c1ebc0bc8f09f02b839b0b314d5254043593b00c8b7d6eab52a8b976f0a7037d8c29669a5caa4e1be0648417b3a0714ba4991b1cd86b2a1e82f94a7b53612c0a28881a8ca54a935ba13407e1cf2b5bd40b1b245376a1835eec280b7b865022b4bd59f0a4c8e4d7846ae6bbb63be25cf742d910373fac5f53a4059360dafed5fccd5dfb43457668a45872d81addb263259581532a85a82500f6847bb608ed5dc13d0aeed028648cba74d01e20be7cc534f8978f902a0e4052bded983ce16613b6135282431fea0c7c20065e28361086c38f1d304902a12327360716cafb500cff8d55fa886482740704bf761b3b0fecb9e7c00c8b5f854032823d911cd50fff91a1b80b6d7175b73b56e876aeccaa915e0629aa9039b851b3120917b8186a96c51434851ada346d3fd38b0873ece046410b9061448184b4fcf6b37555473800a19af9d02543433d33364c9fbbd0748dbc2dbb4bcc28f4aada6b0d6ba6724aa04123930370430000c5e002a92d0350258add1a596c9f824e5bd03c8686f2c5ebb07bacee39e6f596625ae403601c8b7b6fb0b60cf8e90b8753e50558d4d014c046bfc24274c3cb62b409740dbeb0290129f7cce74e80fe7d80c980ecb63c0aa1d7711406569267a684d018cfb04a0ca3eb77a4663168190d0a7fd6104a9cdd7162ce408d35e5d506d2d0c4c5cd443b2b042443b2ab49c60899f79ed25323aa643ff75dc483f1730db45cbbaad6b5d491698c9f28cb40b5a5ad712280ecc6c1bcf697a8d3c8d9f981f61c0d9e38dfe08cca0f889151528f810cf1a07263ee73301dab1cb8a0ab96c17acfd4074586c998f3da838be8df9fc400c49b7658bf0af6ac2af8d5cf0aa4d763f611e242ebae905c00b2d98800daa0f138e1f002ce46efd0ac09d5ce17902a0dc58f41303147830f907e01cd55a0d80252084c6eab1f5805d3dbcdc00f03704abd4da834e1a3d5f9b5264a5b52b959780f931da038cb5f61da85a928d4b904722b29b6997366abe65580ba40814fa34a386483c1c0374f5c4ad7e3254c6323d96117adfb4f47ac68d6ce1e81b800322b6dac72b60ea97255df5801c9a26d87a0939aee7b8fc02e06f6838cd2fbd71d6a7fbf4faf2e460c28071593ec57aecd5818dcb6be2c034b686f9d12f75135b0301967aa88e008a732c3f054cc244a3814061532ae22dc54062cba4431872df6b34e419558b466f29dd79a8d95e5b02fd42ad222b2ff4695da0f3ff304f6bf9b49eb6057093e2d15c023b157c31c76aee80881711801b845ae27183db2e5e3ac0587eb10307263f36cd6a1d82aeccb584ed15b0293565cd293c3b8efe804987356661e00a8cb879744000047d1a38bc77739ba75e68a169024067f5c72380db2e6c4af95593617a0790df63f20df068fd070035991ac6d6cb1734e8968dae44edac8af712e0f0df3e05a8e2e34f04501a122eac26ed9480aa8629f2cfae48e98172ce5ef97c771e6c6f085099e397bfc8060ae05e172079341b38e064d10112e547e919ca8b1e37804a6bff5020c1e47a0d90c97537119037610f10e4c4f804a876d8f98303db2bcb0340a75b433f001865bba909e96619d8b8fac98d00a7f9e8f2c181597b36980eb9729aa75b0216c9d4b59100e7fdb5770037b0b776bd7cdef46722ae5a78036488f1929616796127adc61661336c8897ca4d9e36151ecda8e4a115b508224e274d3dc88843614a2d95bad55b38f135752eb3cb5480486a2b8bd703898bd74c008b00bab6175a68e70f0e6c652f5862353135f1939d709a407a476c55687a80e52ac604dd288a315e676af722d9fe62317280402901857ec23c558e66dc3c39300d658da6bbfcf8a4a58163536c37902d01479ef5da01855a4c5ab66e99587f0394cad19c012a253b6d035a2db12160acd389e941ad3b42a6b70ecc11829bb4f582dbf7570015103edf1020ecd52e1ccb5b2fbd68f7bc2f81c4c529a0568183009025efea5540bbba80d7601e003ac56edc09f093e817a07bceec72ce1e108e1c1028ad3c9a71de009284fac9df0ea8d94517663aab3f6500e9da58045add61d7043ad9af48e95e0095dc2d09400edd77462e6b54d57ccb01f5d8c6021c6751035b8557362df323536ae8952dd356618db1e5cdf740f995e34f01d4c0876b016c17fb9100fa8755e0ee419be3f3646c7bfd83bb49e780b12935d186adcab6a8b17ce31a6887e4de476a583546a0b48c7e4d8dcc404851ab2cac8013a3ad5159da77a6433dc25ef86a4bac0d0356e598877a6864fb24c0a521edb700f11f433e2e60506d2b7a2c3419b55c6dbd748a99e8d65f01f246fe9e00742af83d77605bd24b0ad0c59a930090aab05139b0758b66d0c95e182d0a07a64a4ece004cdc069fe712d85e49906fa7e2e15d730fc086d2dd7f00548daf8b01a5d48d0740a5b75c39209ba301d4942dc27fdbc92bda910ee535111abb0a7d09782dc6ae4ea54b1a36ad65c5034e276ac71833c3af89f12e53ad9bc70420032242a9cb94a27ab2062049312e3601b8389bd10140d79a254702542ac135d06518bb9a96c1ce29971cdb850e4bc039eae81a80e13fec3c034afc84a7343de7c69ce886cf5fda15563fb9642897e793553bc87deb7a95c416d0359d9c2bb47ae31330224d2d6216e663d93f6c79748534c7981e2b4ad32eda823956548529791b2f00f9b3c97fe901d1e9e157a0a026247fe1f196f98d00211244752e810df6af696c5dadfbd5710df480af7d6028754f62bb792b906277a0936bd5a3ffe05b7a81c266f1cf811d467e580d75c7ae3e6d1d987498ab1d8a9998b26e3d6662d3b6f92e70797cfc71e300a5a61520f81a57dab26804b1a334ac3f35a3b2d0eb0a156d2ddb78094c7c7611b330941671d76d99901ea9b65cb7b0fde5af68c4a20128f6ebed07a00b827f8f017a86950acbff2a2f2c868054f10e47809c4d7c9103546edd2ac6ae00279cd4818deda9ff052693673d634890cdcb0140d7de8df5da92adf1f1138089a0e9e80f2f8e347380ceff7a0fe05410f613018ea2cf9700dd079cdd38b06d9e888891749886d89e91978f9eee02c86c0b389796c0f6ec2f5e9b516227c4f47a9623fa7e460012fba2641da06cf4b377409522a43b80927adb230144f03e4defd50d7cc05b80968b14ac1850af061045107d8e040837fd77e780a4de0140c9f8e34a80102b4bc7ee41a109437fe4545c8aaff605508c9a6d40653956ad5df0b904f83c0f23404dfce9c537a0c1d51aa9619d2da05ebb018c90b827c70e2c1063f20660e4a20d1317a302db7887c5795464d882cb0740c1d76ebc0238bc471b4f0029ce1b53003b50b43101344a857c76c04d243c639861a49e3f025a6cc11df3b4ced1fa5e595135f779c664b72c0b4f9841d50aa2f6a0539ac93f00f1c9f11b5d58b323c70b13f423a5aab49344008ded6bcd8109d807be5671b0312eac91c2c562929d9680f8531bcaf15feeac3d63ec75f167d7002957af038022219f6da98fbdf0f794bf5015aba6119033363a04a8d0e4f406502837f248409929b454b1a34df40f20a7df96806e421b5d09a8a6ac5aaa40d0991edac831740cc0151f15766a1cfb25907aad9f705e3f008a837d7d079408a5e1b300f6c247fa3493c579b109d0adf6c5b10073ece60ca03abd56b27d59bb41bed74f07b6f637f8b85c7526c88c1de78a411b7f0154197db82f602bbbad860e4c263fd1a74b5967600b30ce2df8daae565c020caa848c8c8b8109948e1208fdffc764826b713cd4a565838103aedfa34f2b9d2c70c58f6b4245db5f9a5e93a9d36e5c0ba82e4b04d07d169fb4b41ee237b51a772b80cb9771a92b82283669582d17f86b0ae0ce83d62e0de901e7ca9604a125203dac017472e8de02a8c4198f598472eab476a3d212b0901f268044696a6f0258599e5e01f201db3d893dc830db129c3ff6e8522b9db60226c7ba89037be8fb0b80423ef1af1aa60b94c6370eec6b7fe9b140905efc1939b0a6e3e15dd6ff2038ff12c0bd5e71a7d72a53676b35d78b8167f86f7d18f0d095f77f00af253f02285265fddd81898b8d1230d2ed0ceb06a4a0354d02487491420448555633030ca5b2f05add57d05831e4625922c3c4d6f38f00c19376d0ec41cda1a8b905a82048fc26802270317040718263c058b7215d0b50a8a59a1ac848ab0816475f2c6b66d88e7cb30b906deb956fc98820eab6796846707e7c5d00a8b5d7588d991e8c74c0d35b64643233542f1b9214fd83cfcf736247ffd1ebcbf8b0d55b2ecf1d50e67c0b50a16ea474f2323565f517bfaf0015ed3e190b10157efe0468f125dde50e106c7c9c5c47615f6f19a3293dee185836dec676e0c0e4d8f859a0b0a63f0c014981ca320310bcd096ccd3a22e4c21597b048c24d882819abbf45abb02b407aab369f6f56220f3716b7783f58040bff6e7558087be310c5259e2971640318ff8891eab29a81c7fad0b2050dee83195fb88673c43912af10bdfe2cee94dfa2314b2f4960eb80f2717c07a6eb786f6a0248eedc7265de26b7f6b06a87449c63f000a7c67b6f122f1d0d98d21a05311513d5422e7f7cc01bbfa08a0ba1b76e0ed77395265a345e9002d2706600c0d2fe7005519b14b658a65cd0c9b74c78f02e8c92f670e104a0700d5cc301767b1ac88614d7fbc0450f1a069be00aaa863998fc5b234859de62bbd766c5b41b7cd6bfb831586aa3b07544d9808e09bb7cc9422510e5e137f0b7014bdd65f482f7cfd04e80eddc595033bcf356a0727f1c662cf57c00c33859e512a8766178093abdbbe7260f3d4ee03ee01c68c6674021853cd73cde447a2f097a6a50b73caae76df0b0122bb72fd24436c9511a0443a5c5c0b14765c39d74f7449d7311d2453569407071478bc0704a9704cba5ed25917cef45005e7dfa9e9a39cf2f33b0079894bfab4480b7bede31a40d79acd19ca2247e2aed18e21132698ab75990b470ecd06eda859d9ed8ca1ecd52fa2b26847af6d91f6cbb8b84feb8bfe709fd6d726009b5217470284d0d895643da061f16be9c08e5ecdb30353e1e6b4b457bf70813f3ab009b3590048948ee73f804c0adadc8189e0b74301da31d54373d9b69e0438add9bd4d3d28c86ddab2914bbd0edae72e4069045b6f00b9c1ac384191ea0283ce2c683d505ec1d6ab0374870f80eae56c4d018d8a104f000a6a350777917a21c1450d18ca9c7e0ac0cd11f6530065135b0b37ed414b54d68caf55606c64252057805968ead7b20ea9cdd3b533804c6a9653d4835c5148e7002c68a1797540a5a33dc0502911370019cc3e8702a6c374db97007792dbcaeecfbba881233e3f9759ce6c7d4bc055b5059f9f0f715fcf68694e71f966f407b8618a81ca71e747e99e8072df180639c9a37bfd84989a70f204504ccdc923a063d2b531003da8899974121761ff424012e6c580c7d10fd600197eb1d31b01d383423a000cc909d8a01d45a76cc10703c392980964725a124f17654cfeaaa166e82f2d555c4efbbb0350318f97b980ecda0c434d9c527863a06adc0bed3b73ec2f94e747803390a5ddf4a0d50967ee00c1c6d4aeb9cd247ebb1320a4686f01182350de5973219584f9766056b82fa6a5eb529fb4230c75d09c0108d4e9b64cd9ccfc0294f51700e9b6dd46eec07c381b0580c89dcec2a28b4c35cc3a8b532a3279df9a4620930b6bd701f9c80120e38e252af540d581cc5354642a11dad98d062b80aa90017431efec498042e876774b0fc65a40d64159e6e54f5e01e459c4f91720570a110dcb54ede447a05401e13d807c7ca363806a30dbd5df4b40ece805fdb1ace66af2c3044a2fb5b0a08d0e0538f1e56f02f8806b9ee1b7779ccf01798695f61e50e4c4e4d5802106a21bbeb6971f5c44fbe1c01e5a310c39516a21ef04a8fd33e5e37a7583a3975e3bc21e14f496b19ce48c7ea10bc63f3605285fb0c1d716ca288bbf04901f7bfb805e80acc0f302e0757b2a00b9915d5813302da72d4e1d584b1b9e5172755eb4e05b4a4c26d1069f5fea86878c1eab4afc95164f572c6d7f26615004b2da6f20bb01505d2c1edb52cfdc0d66eea722f320dff76780e6e9031357e54fe2f19b033bbe7d5d0164cbb1fb1b7aa03a6848cbfcaf44f91780d29c9db9167ba06a05610818a9a8aa7561ae32a3ddf412a0abc0f67340211b2c0f55084db4a8008abb787d00b81b7d13a04b97bb23800264acc86c91cb64d274270e6cf4b76cc2e4f21445e73700e20b1bbbe67e09241d7e1dd82cbc7c07286f6d9800e4c1ab6e01858e2bc10116c52f079c4e2e0044ba35233e2ee3aaa7e8dd76b1650919aa8c5c013c0ce70ca0f4b0e13d40613816ccd10394efe85c7fa120cedb4d010ccc73bd9620f0e8e80940e9a3300c022813e7cc8f5ebba058c331408e768ba3ef01f9d99d65722d81ee28d3b78cf1251d9ad4ee3fc54e389d15cf5a013b15d8dd2d3d48881c7efe76c0055bfa8b1c6debfa44c08441f752030acc3f374c074f507e7901c8dbf43400a800687c266011006df906e80ab3af6f987e9a972aa093d2b02aa10662423b2ab9c16a264cad12b231eb4512a65df0b5b58a98fffe0370bb5cbb4d4bdd4084b299d7e4adb53b2c64598c4260bdf41a0a31024c7e254ac7ddd481cda02dbea5665b8b7ff896c0fd5171c70cf2522eafb10382161f0574d25a0014def0702880faf5c50292a4eba23301dbc5daea0340225bbc8e940a2aefb961cac45f6d97f5678014a3ad09409eb3f54f07362d5136bdb64bb4b6ef803d8abfd0b12998cf62054c4a991bac073999075d00c8fe610edd15b0e9607106c5ff5586e51a209bd2e1408038a56e01c09fdd74fa091fd7844701c9d36307b6d4f77e1cd8c677b20550c4dd2c07707d45d37d019400c2b42cfc2296c901c04d489f029c0a1609403706cf53806472f1e680f3dc1d4025ec8b0f010c11d59a0047d16a1d80df23fa690138fd9a307340709c7e529a1c8b07f45856ab3445015041658b1158026c281d732cc34ed7b4b69d149e966529334b403b5ada9113a2d98cfe0172dd07bc29803beef606509a908eada65b0f2a244cf62a40d595b53507e69138a03f722a513416c9d403ddd7d830944b4fa12dc24ac01c8711be93a218487cf293650d269396ef00a25d5ab4cfa228d91b365951854ec00356d4502397d385d51883d9364d7723d3eb104004403c67d2f5a2cf4cd0962db804b6f1c5ebfa894ce10f2c42176c9b0e108e5f2c0f77d8e1b22914c914af33b503a12bedf00450486c5d01b8a0afdbb0c93f747b90c55cf5c0a3a06380220066263f865ef0a1c900992ec6e327badd253c8e1d980dc54ad916cb622ff696d92fa0c6636551592b4004c03a40bef9970b8052a99fa70ed0faee00843487b3850384019f9f914d1a2e12012cdff13b2091a4fb06a4686c830940177bdf6f00a4d3157a065969edd0ff22c5eba567a8de8555c4e8810a5f1537005d49f6a4a66333883ef9385de8d02d6ca90ffb9d8070a016904a4fee00a431469f3f00eceb4d3b07283a7db4efc076312b3bd2032da0135abad4266c65af0110f48ddd4e592ccbc1a006c602987f0eae001dfa58ac968e524cd07b00998f4f4ce71f2e0dd92b60657957800a87a700454127130134b6ea0440e24548ee05ece4191df2f9cbb6aec0f911a0c46187eb79583093a3311fd72f4b1c987acb583a1d4d1f62758ab69e015c7e14610a1f960971063fbca5ae156bcd40d5dcc7177f314f7b196422e7a5018c14a2497fd494d38ed74dd20d3dc47b3307f0daf88bb5effeb9e6c18109a5a71940c9a34fad00af7da04f75634efcc4d8ba3b7f9dc91f54a1dd62378a3225d1a0fb3d04a0f684c91c904b28a500ce2f1daa6499522f273c760029356d0250258aa87440805ded0023b5dad1e039a33f4a957d0fbb1b801637fae3098040e170bee98078cb7f80b1ce733672a55c69adddda55fc5590b99a013204db7c00e0feecf0fa06602107bb01a407dc4d1a5ebf1dd8c66709b93d5064f9ce101094d6b92b804019d3a739e9fa6dcae7e70527bee3ce017eb11fc090fec0aebdaccb62472fabff512cebb298c8b158c9625997c52cac568ebf070daa82a597f660545041d7f697655d16b48b7d07766a7c62062d6d572bf03813201afb350048a68dc28e00fbcbe055c0444e9cea274541d98063007771b65506a8f80b2b66da839a1801b49cb268f1ef13cb52160483458feb00ec8511fe9772a83a026b3ca36c70a5ad310b2b629da22dc6a51a12d6985f0202d5b3cb3300915ded8f6928658d6addaeb11a6a967a34646c6b6cf42da7e8b266a987b70307e4adb108eb805dfb456f69958dcee7f7828d63249d5c932c198ff9898715341100ebd7e967e5c01efac0ba0da466741bd68ebfd236d8712bc56b3796bcd1039dd61636a52a5da1d3cd2600158a6347ae940d16ada50015f1b292432b409dab4307b647bd3e02b44cd768695ac9b8732f806dab1d0358a6cdf81b806d2b4cb6007c4b38553b88b46facac445129dfb41d6e02c8f6699a4b0032a81905001575a2392df532f8d31d01c4d6cd1e80b36974170ba88c750ea0e64e7455022836d7b47a688df76dfbd6816dafeb0c65a66a9e8b6b01d6cbfa08a0b1cd5f01ba2d2b35edb3caa9d21cd96d483d181264936e0a90e23ee2e3721d01477a862a1c9e3f0a70f6b83a03e0ce6fcb6f014e38337a3dd7c89d5d0be08e7bbf018cb0d1afeb2d2ac0d5a8e9b8e3e2d454c9aa480bee171b023274a9fd730718dd0e009e085b3b607e300bfbd39929136904e825d9ea19f82caaa22ecc6036614515ba16001b4a35249229da60ae0fb90a2cda62e44a45866ed82e56559ca3a2a402101f145b659f1e2050a2e18700796b733d63acfc17fa54b10ae1e507a0024b7824aa9ad0eaf69559582361e227569482c003e140956a1fc70b06aac6c11dafdf38c84c8e31f9eb0e793ad65b3a3eae6101d523953a66b03d2a8b3dbb522079fc301690d6c78af260d25fba30c880583c39b00d787804e084d359a5c55e291ec91360e78665451d62150e0064b685f7078082af430ed01dcbb37d010e679699d2031cfe9d5d4af5ff33751e5bad334b187d18cdb5b0958726d870c83f99594bb2b13119139ffe4aaefd15779dd1d9cb2875aaaeaefaaa07aa047f0598e1a939b44d62afb9639f70c935e40faaad20dd1ad8619b5553eb800a8c5b619a0e28aa93115579093ffc30bde68e7dd38d098098deb0b814e0907ccf96e8ca8bdb6cce00f26db5ad039bc6f7ff031052146df20953aa4206139de9815d341c1f0a606ee050ed815de3c516ad2a437c2f0cf61d58330cce04b0b6ac125a07063a05e4c1fa83d2f55d4cc4ab0766d3c5265db20664c80440cad66b93af9e69ec173301f662d72340812d75ce07ea6610dc832f00a48ea343bd4bb0ed5bbbfc7060bd304f002d1e233576c6f164c4f142955374283ae6abe754778936e863dd0a6db7dda03b94036ca911fdb4e4b43a4a785237bf2aba54d781cc82bd3c05b0796f2c95a903aa84f6c017d33961b3bd043404f9b60c42a98bc5b808aa6eba300bd6b25bd6c046f61f6093d80a28f08018d6ca4f23efe70e88caa24b79b986d91480e065f3b07460cf11fdfd827da500c91bedd8c66df8b3d876004a4479b0a60c52068b7ef600ec925aaccf307495d57d0784791e38200033032858f0f10c10949f3d01d4cae175c0bee16d01f0c3c791034eab7f1cd89ed03422b2e0b96f96da9505154069a7570258e35bbc8b4b8658a2d21a90765339b059dbaaaa74806d425872174553460c8f90106e1a999a56074a957ada00480fe5e7162051e67bfda29620997e31d5e1e3338013cd30e65d529236ebbb3180f49f68f30e809c54331c09106f39dc049409caf98700f61e7192036ae6b167be47a652e87904e09c30dc3c00321946e70278ad89c90b99eade13e41bba490931d33b01769eefbc6d26a5a37bfd2264a4000828bf123b3964080b4444ee840c4d95a6b019a69be072fb4023ba54a982c9234654c9d80fcff4f58a38c76687f15229fbfa7e17402a641b5d08d844df3cf3c514481eb7022dfe8ff9910089e3045184bf7342fd09b245f1976def83d78dc4500c2e8a38bb0728f7edf54680102b62e083fbb6e62f02b28318511e8cfe75e0c026367649c185d1e68cec80a910abb103226f4d7e2cc0b1cf924118280576ba1228759af02690108c6ee3a5f65c62d6ca5a0787351fb956cda53a140e88964b0012ed7e3a76804446097077d81f6052fa02d00bdb6506c0fc0a4f5b8029c14fedaf004125cc63bdd291f5f52d33f27aa52302411301a68b100354f1021bb74e10138b7e630766d359665b07529dbeed08a0d2fca2bba8e0e9740020bba50e0150ca2ed4452bd4f7277ca044f2af56db670dac07a59f02ec808b2780f6a69b0d4095267e6e04f0394e68ca6eb6440fc5d6973a4d14f1ff0390946d44874955409a90d55a39348140ae5e2dc9d6282b20dd016a60b644ec76c022339a740e684c32355c1d08985d182f79fd5e8bc29e231750a8172da733be704ceb2b393064a503b3fa5ece019228cf2a01dcfaffe9174333589b52bf1862e4cdf984eefc3bbc14c870ecee3be02ce90490e3f8b79ce60e14366b8773fa476f4cda358e00c13c792de7d975ff6f0dac664af7df86f88f72e800bf2543ac28ed499b4d9bb5ebce72b459dbb4a0b3ba2266a2bde4492bba76430c49af0d6536dde30640ea0d1f3c58459e56fc2220bb70f606984935c166dc5ae52b627c8e1dc04ff77ee2c02647c21a6b2fd4c3faf2a72f656512b25e5fcaf6a6afb9039b71670b80e6e49a3ed64db0b6e1bd9f0170ccc46fb44b200b3c5e9602e4adbd5b33fc894559c661d67872e0d60d40a16fbf36b1358a616dad72f11af02711205161cd0ca078ed3a754000c402502900427791d60d2ec646679ead09f9ac812dc05ffa136d019f2e01ad22007417a9ad451307764a6c45db7bc0d48707be97822297d8867ae3b6e5b47160cfc1feb603d61d5a2b93d081a18ccd1ac0062f3c5c0124226a85ce3ba043504e239b6efab40996a5b149083b897eae017275deebb6a4a9452673de013c02d1ca96a426a5b67198c7005530bc7815c0eb44784337f1b15864398003cca6f812c850f3dc046863553a606375b914402c2a6f1d90055e006636e3b61f74dc3e81d09ab2047008dac6fb02b8e5623e612613ee782280e5f8780f4899d70f79528f743ba207f58725364be917a54577b4c42975005dfc5a0f5666f6e8a616dd0119bd57a78060eec1704677e867d4f52f48626d345bb6ed97035b1b389c6e7cfa5cde025a7bfdb8627864280c453bbc6d8e151c7df07205ba1b9109e77580aca368670620c73bdaa1f39724f437c45d34b2a49b1f06902ce9f0f1eac0a6befa0130507e54e10007e21980c4bef0be258079ced2d8782ac233afef617cd9428027cd75d180b8eb8896f3e0969fb9037b52ecc2c633415fde1dd852800fb67127e46626c0daf0ccd4e727cd4fdcd61d00333e72c0a8895f5a07769756205558f4dc81ad2fcb4280477f606407f6b7312e93c615314c77b4039522666cad6c7d6db022f61df0d4d033404b8cf3ab995fae2e563725209513e10840fc47fbc245bd569ae9e564ad6446eb3a07208c161ea700b2b0ea962775cdbf9100b5e2ebf616e0c5286dd16a25405ee33eee01c6f70b804af0add5c4580386d88f00d28bbbba46a663e307016cfe4905e0082bc47a0e6930a719a04e38a1a901f2279b24660f388b5e2400050bae6e0470b8e7e65568955a5e5b9dc40e70165d37bc4b5ae95087b74d034e59e2c65b77a8de9f02480e8c089e6c158e1ce3b8eb662076f3bf7c53cf3cd83811b0693c4cef016898859b25a034eb33dcde3ab039e89047cf2a4ebc71ee74006728b1e76dc6ea11dd99b1d9e6347674f82c40bec78e000a438de9907420c9ccdd31a119726ca96887c6ce15295bdb7adb1694798b0e7997428a3a642fb40542c6d12ddda168f9930d864731438ffe81b72d25773a9a0070984593a980fca7e6936e2bd57cc4926ea51012dfeb1725fed3a7a100b354a45f040992dd0a70d139b7ad2890133fd32d25acd87004de03b34fdb39400ed5777a5090ac26ee9f1e60165f0b708d4d9e54621e4db61448b0c6697d15938b4d84780deca2edd4813dfa233dc8a55bdf759702d9e62d5b70a6dd5c6853dfd67f00cff730cb60eae91d4f03004725edf31640ce0cc280a7430e74c3db2920e01178c91d98df8134f9e9908fdc7e590ffa93f97ad913c07ddc9c0bb0222f3e0012f3b052c61d182a3bbf74606bc367248017eee1029010f9572e01a4dcd5f13bc08b318c01aa5750ebc16abcd69b01208f80e9d3ad815d63aae7a0285533680178d0c2f4d38175dcab6b07d6b6976605f7da61e82a3c0108e26cd132994a25319026dfeb7e11a8c357ef26471bb76fbb001e2c54130185029602e65568bf23071ce87e01144035c805ec39e2251f28e3a8245cd2947db2ecfa03dd1d02121c558166d0697538ab0019396717ba066a8d919510ee40495c4e2ce0136c066838ac7fe2f5fb27b10f74ec004d59fa582685438e7da679665670cbbe619a973927de0b000132d1b1cd0ed3828a39d12d23aa2850cffe66cc15ad342179fd9260c1e695a6d4f1757c4f2ff45a7ad91c50628ecef58b8af96349bb482432b0d1ec65cff02ad00bab46ea1e1b00a5dab7bc8b9f257dd172ae473f6744758622718e9103fb84edcc81cda7f37b00ad1fcf7417e250e2375d83d384b86d00a56c5cde25902bda8eedc166ae30f47d0c50defcdb0140cab55ba78019b91a8d8da8d95fd9cc18504832e41210a414ff0250fdb951ea0009ea03018c9ad9b7037b742cc759c2f95cb4c5bb7816c5ec4080613ae11a3ed39d8c1da076c2eb77531fe3760f80da493b1e3a30a3f74bd74879d2b0049098135dbc0374fcf4a33f21edb7490b0102859b1d40c55c98e602587dcd06403e148ef466294703d16813801baa2510632691d9fa6e1720919529ed92b2d38a87bc4b2f316dbfb800b48425bdd0b6a96a9312e4db014e46323d18421ce1d80cc55e3a8d51792dc03c862373960d48a83b3a07e8a03da75d74d0dee21198f531cc367dd2d8fde1d11a2c051a9693b9eed21245501702f62711e92e339d9a87cb2f01628cfe2b01337bf4b65d3940e0d186e92c4f89649a3c02d88a364430cf724a2d443b364bcd8a0dc507718d4262d9b7f48f8278a9668b772973598e33015298bf6a0067f3e195be5e4e15056d2bd0acb32d910de0f5ab14873b49df334d9fcdbf7b0087a0f1cf2b40ba70af570272a81e3b407eed09a042814f0c0fe9c2b5d1a9408a04130de5b13d0f3cba7b589f78f490ea082b726096e393fe0419b8a6ca058842dafc0f90a354b2b5eefcdd46a35132dc1d804d7334da7360868003092c8d37013e7da606dc076b7b8f0e241c0c3d7e0348ab08cff78052d7281cd82cf53b0250d7ab6e070e70b97e011a1d3fe94f54a0ef8d97fb73971e19f89b60f705d0f89f1d0234e5dcad0438171bdd0254927d370290fa1776e700c24d5b4bc8ed017709fa935cfa529700cd638d7ea1adf9f20aa07ad1d6c77a8007ed3700b0e96233bffaf018ea9cd96a9a6f289a32b4cf06d221cbdaee0c9051c968ca6dd3da9eb429b70028d6476ff48f6e3e35dfc5dd0e807d54fbbd6ba057325a3fd882e7f08c9053ba653739221a5138300fc9b1ae91e9806a1b9073ec73ccf7f08c909666f028a49325a02224e0906ea91491283e74c01ed981cd96ade9e376a0e11a977cc27e7ab4e5a436d0219b932df8690d387efa143053321cbf0306b94d8e33ba76aed2bd0bbe69ce4159588c1dd893de258074c069f54020b7a11e9f01b2dc1efd9d619a13291bddf0818aca4e23a31b7e5104956a69012d6e86010d5532e346e93920372bb8d9e6392af9a52ee841159a4cede5b1037322ec6c00328b668847f4e48afcb9d8628b3b1038397b183bb009d672467217ce8bdf987214b319cf6a0136ef56f023df70bdcfface813dc75b6cc02dd8fb5701dd858baa005b3bb67edacbd171feb2e5c0bec7780450f167aba8940f24ba1b4cc9a6036cefeb66e8c03affdb8903f6ea3380767cbcfe401100ed770698a992e21f20b4695f8003aa6f6bec5e4a8e4df31c80505c6bf9406b60b3c37f9f0055a5b6e88e1e70512b21dc01fc41edecc40181f53c7aa2b4acb31b8082c1acc65007386b0c564ab00774a9c131a030dbb29de8b6e86d85e5a103ecd3a500c7608ffa85bca3433d989c085689a403aae8f8f00f5063c09b086007f01984f20740fc69ddd06154b3ad19348081fc74bc6dca26b1aedf01b91c11d780429536870e70b9be016a6cdcbd52c07c06f5f415c02631641b02298eee2980721e4d3912909fbf72c03552019bc7ea3bfa584614746bfa743dc0b42ebe05d8ef1f0e008a11f8fc05641c94ddd0e932aa5435552c404840e0f5fb04209b1cf7002531f03bba0621abe190be9ed598c5c7170025086dd2613252a9a3433d18878fe1a475605f3de79b66aa3233e3b6391133ade5e1f4803f89e81f79aaf3393a5d37af136ccc7491931ada5875a80e30b29b19ddb2a831cf277cf572c8f0b8e02e15720ecdef81031ba6976700d56f300f7c0752b6a2ef9b0e50e4d22f30479b675edfe7f548bf60cc35ef8900f1412d2fa75a9c714bdb563533ff0b1da6c2051d8ff40b15e7dc090056b1787ced00a5787a7267d1931b990aa8745ee5806a590b035ef1739b470ff8d7e3177a502087377e64cc054445e22726142f9f35b66e39f453aff12e405edaf10e802addd1680ca05a56bb6dfda397f8b38bbe4c003225df3e0094baae6d1bd901429bc2f2d9810db1375d742ad1882703be364c5b8054790ef8938440bfd61c551d60e66faa6b00e784edf40f98e13ce739542ebbb51cbc1ec83cbf01486674a46b94786a2e4b0055331a7311f480a301d3a7eb404371bdf008a0664ab0a4ab0ea872a005fa7580fa2f2106a46c785bcb5ee800323df1fb3f00817ea11060e759df09501fa836e5fc0eb088c7cb4600c1cb055fbdd79cb619f75a80a210f19303320fce1d10693f136082b53a671d20dab6491700a6e070300064d8ebf7278002f18af65180a0b47c0e90d2c0e50fa0b6c0d870c2cb6553c2b496b46d37f599b179c3372dd01f8b239ab29013f281e72851b18a127a50a9b2ccef0ca0920925cadf000d5a8c13be69d926cc74baa882272fe8859a2da3bda900aedfd77d800ae2ce8f05c8799fff0272650c7d01d0fd8ab72f1d608ef22e6ed27ed0d86eb046ad03b44b7f0430585f190dddb465f39815d9e9812625464367d3507db07260f3d8cbd401cf41c7f5f8b1ba7540f5f40490c94eb6f52571458cf11850eb4ceb12d0a07f6a9504d6c0ae61f9fb7d716829a42e00aad2fd720c50f613d356e273e17206a865497f0a9042747608686427dbdb262a011adede1dd8c81e3f0338acafe7af020a8ce55d24885acfce0548a97ad045991cc3f13d20235dbfd5359050a9b1a49384c383b0bbedc026b6bb18a0b9302d05c8e3cb6e005a5f7e230162be0753402be59617008b45b4a93f91c7c85c8c6b6027cdc30b07e4235be74f94d11e5e860025a2a4fa05eeb0c6ea14f580f0ec490690406c4c77e8a6605b81acf048bfa9a6fae0f40310e40aa717a66c23ebbb09803117ad68db6c88c4cefea6038c3c3e90d2d3eb98be9ef9d8cf0430034d95a703458668770da01c5038b811c0dd7175060836c136af7c75d5d409f35240de8d6b01ac603b69ee00915dd1230dd51fb7d96d8f1d908575e6c0fafa6902981194d630a23afb949eccebe7b98217f884b97ad0eda603b31c3779d2a224446283be5e547c42d381ef01917f534665c18adc46cc1fe5068a8f1f6f0034cca24a0069bde69bee50622836a645d001d5a1294e05d0ff58d294e58c47ffe0ab57920bda62ec2b00a219150228e73f3c025225806c0090e48e71dc2555816db94d77f010896d4654859847c35eac031204a1e52a849d63d3dbea81d23be600958aab69cabf34b52307b6bebc31f63d886293eee0d1c7119fd0832834177af4311ea3c42ba26c33f6bd78c90b53df5f129a8dca5442d7d148602ab0eb00cff70ca038258b405cabf4a0b13b07a8ccec3202245aa37e1d986762b403c894c45a01f05ad7264bd3014e238385567740696aedd0814d5bbfba8b0a6b2e7917d5adae673f0218f056ee254f3dc56c3a13c094640bd86b64da35a65307f6e8535e3fe184b79eef0310976fef3f04385eb002e379afa46f0bb05554ea80ac6013cc5d032c7a3d87364567270ed0638b05385a0c34543770c97a1e0354fd67b40410191af6be0094790bf50b604634c3ab2d05a984054e577f0089d05b0091e5a1e51af29e47a333014cda57be7a4addeaf0ca474eb5477e6d1d20d244c755a9b8da42463a804f297ee47bf47543ad9fde08b0df1ff23d3c82b90264b250b244c05c26f5dd3680d4d030e16d5db9851539cd325b70ea98eed06b51d83a5708e04ebfba04549283d973608dbda801c19203c33c1720fee3784780156877059007fef0c20122e6ff015a164fabd1de81291b9a785780608e539b60d37ecfb70616a9d2035cf238aa7a609663fb0d481132bea029f3cc6e1bb5b44b4e5863f4fe08a0da5e3431e74e5a28a1df84f33aa080769340e840e017774700ce5ea32d3e6139d0612c63ae94ac661c002581297b74cbb2c652bae0237b58f43d8d5d0d55b68a8f2ca9d2f0f122a0c2787ce4aa6029d8e1c15c4166c5bbf87665cc93ba5365aebb68bb52335e5c88f4e9194078431cf12781e085766c13ca9f0028ab58f6b791b0ef91e9bc32fcb703c8750a3802f8245d38c09d3e05e05faf67bf00b6e6c18aecf440f962b700e545bf9d3920669347ffcbe6b803484573670fe042a4db808497fbda14e010d47404d6c07c9f26e0d76babe152dbe5f53de56eef5780bc93d97f805c896cba68ce56c36a1ce6bd16b6bdfe9d1e4cbba45905d0023c1938b061bab0e191a5da3417bc6d2aa1a7050f96ea392629a0e4d46b7702a8f8629f1f00d2c2c3ee8580296185194d99b2de369363018579f2fa2a8a59dfed3960d6b6cd5996291176f82b402ddf6c2880f7fcee0440447760079c652a345af0e8126b88def984599a5002f45e00b7cb4417cd122a07ea1aec2c1af673bdd0a659b05774876e236173e1e1a6039bb6b0e8b38c9cc4664b6fab430c0ecab28c9a5c6d78153013bfd9a5c364da36b1f3ccb256720e5702ec2c4caba203530981d9fc91e5528dbc98085042e7b906102f15b5ef029c0173e4db036bec171e3d27a22adae1d173055099706f0f720356b6aad72224fbe966012097b8f5db6676f61ad58cfd9cd3ea36c402e6b48f269f00ce92e247bab6d75abca27f1468208607fa58a9c2ef735abf2cd450bc4b59697de1d115af1d9e78f4520a659650d70195448d730071d2cd08500d09699e333c2a1c11f1680528d9366ddf0b90d58af5d9cb6ad878317dfe1e90fff240db4a902cfee16d15a873bad2732821e663e5c0aef1c3a4243dd8d8efa2409d0fa660cf9efcd807c881f8c8ccef5e7c93c8e8652539be5ed964907b7ca18924ac8119bd56c5bd038d4df4f1954d8eb9c706b65ca35b2c6c05ba0b8019abc7af99f8b93422224b3ecf7355828f6fde04b0c64d42365f7b22d6e03b076090b4ab4b0039ef75a33f21ec241a6c3b40eae74c8021b6f10450fe8b254df4006373fbd881994e969d9ff71aaab86ede1c58d7aef560041d752684006d3bfc07205fbdb122f63d205f6c937749397a6e922b0152ee76ef002a3b33d815600a7ea05d52d57e9a4700556738d5457362156e0680928f1c3702b44bbc04045b1bdaf81130351752bda0b1339cb2b569dbe6bdcd629ff08707f3b5e13003a436c3c4d72d20b34d4053e8a28434c70f252027d4fc48bf509db3935f00feb170b0019045cf8c9b6738ccc2c905a02612f2e0ca81198aeca2f33e9fd4fa875eaeb105277ee78b652d3b8b7b7a50a673e45b7a904268221397efc0c0ccf3b04f0fca298dd6b034f66aafb6024d5301f60d27434066367f6cea731d28889829e9da796d7789ae18eac5d00e539a99005a04d1c71c10ec5d9a192d5728ef841881bc20f6bcd936e33b2fa507fbc0454b72f09af21b50e031daa25d4a77ee9c0238df8f1f181ea5a28f2fccc6cd95f9d85e9e03c87c6c2f8f1c90aaa25f508737dcef09f0726f3c4755283d9d27ad2a55d9d56df940b18911ae815d83e8c1bc22cc33fe65a693625bbc4d97f2dcc88f1b805221b72201a68b887e5acd74bac2d80f14ea895f660e6ca27f1e0a70dbf1a5034e9bf81e4123db7202f24225b75b1334ec804223b74e00b98e2862801fc67e0124b86dd94f1d90e0f6f312a0e89f9702e009866300b13dedaf3543a19a29d168db81f93ee94185ef2c5e9e05d84858859835302b781601c8298ab6761d9857617e00e0b83610bb5128b23cbcbd39208df117206f8f652ce7856bba15ba0b4a47f57c4f801d8e8934f58028c6991e5d82b9962abb06e640c40dd5011c55771f0e6c4259ea5dd82644a32d010e2006b4ad56b1f6330048870aa30707b6885f56000eebc3ab4d7d45ba21354f9ab25bc568b92b07f8a5de053058af760418c82bff133a6e1639c003cf574f11498846970ecc801fd4007cb0cd80af9ee6480cef9f034aa575de0010008df71301fceb897e11286050e85d66b6acd553b3e9ba0589b63505ff1ed8317afb76258084ca2e777115bc8c4e970d891de5e8b99718a60a000dd5cb54afc18cc6ce103868e36701fe6441cb65b539a943fe29c05e2c636467a8abc7ab5bc094fded2183b08f62b56bf08b7c406ae8f25280d5f49aa1de9f8a1bd80468153b8a057252bae9da3921bcd184ae9d13ed127e8f05cc2089b33d81dcace0420f3653703e9fb09891e8c89c5c9424083556cfa207f475fc4145893665cc3950516aafbe3f13d026e010d0284f9c272da7ac842b337b0a9dbcb797170ef029b580948b12c55854396bd417e3d6438a464c4a1e5dfac56d2ba4f49b3de65329fac511e3d60386beb61d10cfcfacad14f776629dbff404f6571b84a5a2e4db510508aa6573e8c0bac3e30ca023f0510950f8bed5e4eac054ae2c6b865e51d8ecf5f91b60a8509e1700d99335264b0f6c34fc7e0190e40e071f029ad78f012a5bc5aeb14ca87edc323b9409720e75cddb2a03b3195c0a3049df0d0035fb86f2c181fdc97001681491a9e740cbb519ea4f949219f840095eb86643df638645ffce455357588e01aa056ed29c3d40cf71af0070ccd1ecad003a8a5f2c05f038bf72db94c8ae78510a700a58ed00a817dd103d58a63559ad0d3d28436d2de42b819403ee6700c1d7d1db3f8072dff28500d1fa770d00232f3ae6f5339555fda64b75bb02b383080829959219fdbe02548b33b9104054e4fd1c5067c408d0b53382d2421100538a961de81a339bfa6293c3ed0181f58fbc6d8e4d17723a5d3e547db10301a6e0cb4f40a2f0ca4b07b6126e7f03c8cf0e078f02e6526b52be58efff5adfa5a6f3f75b89356869ecfedffaf5b309a0228de08a76c97153460b3337ca82f8c2689f862ac88f8ad2330085139b292f572016d570aad1031b957b660597ddfbdbac6d85793b204da68b31807d7678aa1dd84577cc3eed3598099be73914c9d47cd12e5589ed903d08105165c2ce1da85489f516a058a7d1bb0073f288fee1719fab16a0acd6f9a503ebc9e30d01f61e637a9017eba8af001ca4c644967780c5e2c9dc1da58736ddd39441f1eb26739e776fc2ac3dfe01280373eb18a0e2cf965ade0105a3bf9c00a8f55cb70940a709562c2caf549ca2bd3f12d014bc044821e43b05645c83d5a3030a6e8900052756931140f227d385001ef88fca81b56d750320fdb8a5e35609b3548cb7a74af0d335835300518c8d15e75c03f3275bea70ee2acdcd864d2855baa13209cf8081e2602b0736904dddb403ac6261121c60c01f08d834de4e868054b1f8ff00aaabf14b43a53926fe5eedc09682d34b00a244b19554ee4099701042db6a5eaf9b2d0748429400d42cc2e21cc050afeff840e94c877e0f028425bdd8e25965c4e3c66d25c03a7747c7cd8678158613004ea6fa8e8edb3bd8d71f79e7cb01479c05a0d2c132dd3293f3afe6e532e40ae3673a4c86a5140d9e00b30c6bdca6ad2ae7f83a4e3704104879da070c39254eb86d1f42b5fec526df23277c2eaa69b95c35424ea60239096434545e30d19fbf0a704471df0ae4f68b8211d5adc9fcc98f801d1eb45625a203357f729903a60522b33454a148b76a5b404957fc4951b37dfbe2a2a5f6733fbc4b29af351eb4aaa4865dc39eb02a65d28ee941256105e19db15f62d23656f3600da895f621c0f1c2f6a7035b4e1ecdb8eac5b291b5e21356789c6302643aa0a2dcdcb622063e9e0501b25a5f983f2a3f2ac9055881de69fd8a027df136e3c5439b225abfa23e50fc7a2920b71c134aa574ca9f3707b69c587271de6b74536973d3813d870992e5aec0dd5a5e741e1496141e6c4efe53be3681a5bcd7b566398900b55c042580bcd7164755f02a22afba68ab2abb0233d53bb1911d149c1f59dd950ea85cf6ce3e40f52bada054de2b4edbdb5e1c0860192c3e0114f66e17d7022c8ded1f30a3d7aa63e7bd26353ea54b0766c0cf770508d21bea1712561cdd0be0855bf0c514901af6f4e8531d40e8e5a48376fa0f305335465b3c434a8c73935c0ae84c9c864a39798f771b01828ed801875419dc261bd003120d068702b69cb47bc7804c1a33a50005834617805c9e89b90031f0a71980a49a10f3d5537268a2a7778072ab678d03ba255f3dd539e1b69e2358f0647c4a974a192ff5dd2940f984044f06051dd59cde078f312a568021d960f51b80621d21bb15a0c2d49e2eaaa265e940403ace8c860c63335889831ed89c5c872d4045aec63c1520e72ca54b2930362cbf008a50ddb619376867119dfd0870ccf1980094b667c55c7aa044b61bc090385822aa42b768a1f838726036bf95d1e800d58fc3f01990919576a8e720cb379c540eec6d8f69a8fea0c33e211f39a7f257c0940c39c1b5d1b12e5ae5f6a4c9130045e1684253e6d8c9ad3e72b19123d0c6745120511e7ee9fc45c010a81f018ab625c4aa07b69ce4368df7fe76a26d538184304f7a72c982d3ec708d32c5fc7ae0f54bc5905cf21ca50edaf76c550fd5c03c8a0d99b1a133e9c92ad90148d0907ca0501170188f79d20a2db578c698ebd617aec12794fe7a4c7c72086865c54f0f00b4185be40bea21959d5a16e0dae50a4db5ba03aa2ef7f60d5031b9e76d80e41c883eee75be394dd8748084fd2e40f1528446d60a4b0acb17c0900388bb5a4095147f010a9d7dfa7660f141b8196ac5290582067aad70f6403c7a4255d9b0bd00e088884c1e38af7dbbc2b1609d2024185f4d008166d8c800b54edea7008a42b4b59ea391e7fb0b205b9b638e0eb025deb0c6aebbdd09de73de362530a5dd1d02382a893fff13607b3f3a072009112f07022c5a7bb903f6511307eb6b9cae6600cd85e415d429aad551f921a0aa6e85031b517bfa138589efebd1e9da61f120806cc036ad9fcab3b97bebc0265822ffea948ab0316904bd44b975986dba835479e26929c0103bd31753e8fd4d0220b7295ad9f45967a452d77774ed4ca94c78f26a972c2be8c91981a0f198eed0d7c7b6e584d1d05738b5358a4ed7973d5cff8969ca7680648558a321ab14d8f6262045e12b0736491fd02d7bb55f5bc469caac45797242d7ce5496f996b7cd37e8a7552440e0527e011810187bd838b07e4a8a6a9d336ec3e18e004bd23eb7ed83676d153b0510ebd4904c5be7048246dbba68c11ef9a010e0c1268ca89c80a1e8ee5780a5d144663b50d972129d6c3830d3da6aa377a0cea962b60568ec2ee160d7017296970055bc58d283f219859bd957d60521674d762460cfd1e077a8bb516a8f7eb20748a8c15dd32e05b15fd16409904cf1946f5ae0ec8a264c6cddc287749a9e435e6b3285eb8248d946335d4969b466c6db762ba175a97bae51921f15ed338d972a8af9c3645022201cbe02604645b607fea49293e9e3598088ffcb4b07d661eeff09102e460c5aad7295b1ff42074381a12e05bb86cc945e289f64163e9067a67cd1d89e99f246d7aea4e847227dadb2ddf5d4a6cf6658729842864c2fd94ef2460668b512fe026652bfd535662af168334cd3ad9576d1f7d2817d0f82387bfd755b3d38196912ea7887d516803adef5fc5d800308dad625dbdbfb4f015eaedd0150c0b11d27002265c3ee18a050f39757009e9a66f0e9c00621d678a32219f57c22808512ed09b0e08c9e008d3242b60132f236be1c589e5673e90009fb00986a79fd74408e84de76461ae38d3e90a2c3d2ca01ba4e9f0eacd34d6d526a52fcebad291cf6800800fc304d3a90624a29406d9fc10f80a4cdf8f5d5816dcef6e852a9ecd38d1781042d82162055e256d728f06c962b01a9897f09f02e570f0002204e57ef0ee8c9df00f6ead1d1b300cbfc9e5e2e6845a61952b5fef45140c55c6e05f0b2a443079cefeb2e2d6588ef740df950f65301fe64712660267e3dd5db527736102ada018ec1ee68b90cb74b433c7f07d87867df02e4781ff0c5b29cbca4857e81f2641d39206defe7c4015efc5b0165a6ec39b011f5730ee023d70b1e5df5a3e2573d3aa16fd1e15000e992af0830258c4fc3239b61b294fa13fca7d1d585036bca1b5bb39b5ecd640d5ee8da7d18e31a842900c594f89d6e9917e4140d1f052c5a2e5c1f0058b3c3d9b580590661437fa243ae09dd32d70c83cba4e996605bb3cf470eec180c6757d3ff91adfbaf0eecf59f8e002db12c7b9f02b6024564507520a30cf13f8012fae3730136cd033e613ec3ecb9d3179be1d8252eb807b6bd7f071403ce0a9e04980ca2e30520a36ee4fb3d00f1ac6822a03a01735eced37f2a5ebfa0f337632e5ad2932392049a92a210cd0efdb46c5426e10ed072d182ae5da2f31ddf3327570306108eff0e10f9f744b7948857bce223bb9e014eeac663036bfa4785af2f7e67ec7b78b6d52ac9bd5e4153be3a20809b4ee719434ff431092b36f9a100eb8b4951e67f7502be4f00da12bfd99f74b685f6c8ff1c902c5902dc833600d44ab81c0294a339ad1c9833f4c5f60dad17d85acd055476260324fce2f9d981c56e7000d14a1aab6e771d10abc083759b66dbdeb3276c1582d722ced82a042fbed803e021096faf009cf6d14477913a2192321d2054e3f713a0123af33100358bb0377260d3c53fbd2d4efb7a484325a4a9d5c9ca012145fa8492e4e664b507765babf6db03ba142778ad9cc3f5741b20ad9bb7cc81599fd76702ec2baff4273a46c787d2a6c46b37371301ac9c056f9b4a052fba7140b4cb2f00cdbf383c0b30e66ec60e6ccc6dac046cbaa8a75b8004afc2705f80d130d783695710ef0052dcd86831b669c610fbe4f53b83c4169cdd5600c32862bca43a1a789f0b301904bd3ecebf1827642b27421c7e1cac9be17445a7934720de3e00602a345b0cb10cbf544cf07507ccc68d9faf05d86aa4f4f58c84dce884db66b8071b22875b8502468314c05623ba62786433e5127f09503dec8797cbd90335bfd70e28997b2f90a183c6cbe5549989f03bb4392d174e52016998bd008a9cba6f4c4a7d248aad621307b659dde16d9564140de8ebf97488bca76dabdb6e3b6b23fb9eb62d38148e1027680b1da456b702b9ed5e3f18b7e506ab187a5bad22ff9a6726a5123b28bc322acb9a7e3a66b62cd99ab7e47ab5e554d1e9fc49c5376dacda4d0712b3839a077aa1641462abf7da814c3abd9b804a11eeff01a4b933a68f5553094dd22d3d909c54950eb015259eae07b61919d7021c60ea132aeba89d58ff980e14f937b900a8ced9c725a0955ac1cc81ad62642d762b25eb0b89c15ef2a12503a20766c299607f3e7559dea71580d28a2dc9a353cf595dd917eb6c71f6c8b30980c29a2dcef269429dd5b0dc0320ac18316ea70915c75bd4d6fa620ce8056f01d89d847fb900677c9c464e13affd740bd0ee84688669d22877f607d02ac8e64d006b1c4da6a96ad934952e4abc7673fd1f80a265cdedb703b32e667fbfb06de42e1f3945182d5e14024a21da73605e38d3c6ee81a25d3e041884b711007f72fcfce1c0f6b79fb1009be67ce2c08ec188ff98760b8e6d9beef5a404f8c7ef7b0e6c83f76fea803df2a100dbd9cb3707d61dee860ed01c7e0728e090613a4d89a7ab990c3aa0e3fc99037289750d1452e3d75301bc3dbbb500abc7fb9d039e434f5ac840bb7560bbc62d7d42bc92f16ae8c03addb67e41f246bc4a04748efc00a05ec1e96a25c076f6ee054055ea864cf2a92f8d677ab99a80a1dd1b404bfce9cfb10073d063e480128fb103f3f690e63a4d59c5eaa9796aa68ab48f97ad00d7e064a407c869d3f933f5c2c7a1808afb56025828d8417d0510fb40770f0eccfac45b3ced56641b2fa4424e95a616dde8178aa8dad815b023f03a308032d51a58e8170493c69f0702084f144c28190550a26d3a5d3625717c4f1f682af9241abb17e4b707e3e57addea35c0cd30d5a170f3cabbe4ec4e42fa2b40ca5d923a305beaff802d8d78e1a6f9903df2fe3d40a7c4d78f0e6c99df1460258c5e13019d45eba23800e2d73300c73e11876dd39c4ce170bb12c859e7e874398118cd567040ed9613013315e25c176dd95970c637ed76d1663b2c68ec62c376e271f6cf815de38939a8a0106df4b82f20599a0f81047f3223aaa06a46b3b90140d83922e6bb03c44c9ce8b689eda2a39b4d014e24260ce4426eec7bc65c5192e8f840ffe836efd61d7e870e6c6bbecb8c5bb4ec0a38d598968cb966c1739432147fe8b8a5c24e9e69ca5272c9a320c0fe656feec0169c094f5a4a6089c4be69994b65243830b3f86b26c092f4c374e1c51789e89e96a54e346b010e31be37044851fd4743498bb1d97a06a8aed723d645d9225d72c9402ea9a8d420dcdb03c41919623adf6fd493cb19d1fa4ffcc22bf5eef3812a54451be41b7b8068d515809a8ff10f4f5ab19d8d9f585f2a1d713ed1b55570ac9dd83566aee56af5d53b204704716c33d7a89a0086b98cbc4307d671b726004598a1d6381b4af4bf983840926ac30173b259285e87262ca70e882d6e011cc5b724f5ce2419d20c3e00287047136e9b109a10ed1c0078fd68b2e7c0e6a09b5701a290ac7e650794f0c08432ebf6fbe6a52572b80344433d6e025a1574480454e8fc1a806326a0e4db01d5e5b904c80a5eee0bb066dffe0ab024e5fca233e198831e1cd80a845d387323eff6cb816d79304866b2fac25b0a18281cf9424001ed0b0744db2e1d9863e661e5c066cb0d3e614a7469209ab20736e6ae1e1d581f7bde738040fd10803258fc3d1660bab8993a309fd2a406288588b2113389bd441bc70212bdd383b17d3bc561d6035ce14f0e2c7a904cf20e6008cc4a00f9b7d1f53f011e7da25fc877717cec8009f61b50d20c88107780e758eaabab4857787260fde356afafbce85a6d4b1a747cbaef004391d190e22e8dae6200a2ff0db19233c5e435d830b39403dd0667575fdac826e9d18680b5ede9eacd81bddc16e3259328d1dd9300f9eaff660e6cb786466607f42e370296b41966fa13928b9bdf2b01a2e5b69961b2d426b6f8b21140518798cd99c46f6244bc6659a60a97db02761052dfd3b6991c99bfbc6d56b2ee4f7e003a041d0d0468b98881ece237cd19a0a5421d6eec990cc5a6f815c062d3e4d8598e3607658c5b8f0dc44b3beb4c389b3ef59173f640d1331f28cf98b6a85532eb4510d64ffa4e0fca55c0e088e933af3014b1e8677d38fa1a2c9883fa78caf5748198faac8f0e5cffe29231d787c89821a03fa949bafa2f38b07df655e1c0fac70dd3457f78b4be46a39743a8a519e917528050ebf7b6a37518ba54ce1145f4a0bbcc72e4707f1d10434287e92c47fbc8c4e2cf0aa5cb5d27024488106e3aebac3e0e75e8fc4585f0c4078f5e606e846766a9026da8e67743204162872e556e106582cac8aca48a488833077ce4a9031beaf80bfbe258667de6af02b27199b64ad2b1e3d1278074a806b9e40e90ef41bacbac6c5505800945da3fedc59e039bd8640894e828c62f7cf5aad492c4f070219f2fbae55fc5ad170149426c01b093e3179e5402d3d18abe2e01d068c5f70814da68cde7586c7876edced4010eb373c04cd9b5b1816e4e4239bf0228de72fc0dc8f05c995469b1e1e5a16743808a523dde016680d5420051b397d280a49fc3db03404ba3f5a01e28b58b474f58c5c28a974b485569bf798e44316817fb022cf39650d701e9f69864c81ad8243dfa02782cfe8e009bf7e4438041b8a327552ac2dbc001da72ad0081292628d4032ca5e6c681f5e40bbd2da780d1ce35007b2cbe7d132054f4fedd81f5f5fb5f07f64db71e0508393335f1ce38659d8be7b1007e29cb6e5903eb850fe702b83bbe795b77cb5dad0430266e1307c47f6c3bb005e7bf77072c6bba8b96c66ae1c04cb8a70707b6e5d94d0189ecf523011b2fa7ab8103ea23ebf59972e2df4f07667ea58903fbc8affb0e6c4e1efce7c01afb4d7f92e243896f045479e3de811d60be1e3ab0034cabd3bc06587d7a309226c2a35e8edc95f85a9f309339ba2bc0cbe5ff1cb0af1c38c0c7a647a7445bfd5e0b204bd330197476a135f6e78903eb0efe911575b31d01989462aba5d7034ece8e194012778d8f070e6cb634a9b00e4c258aa8c69e6d10c9a4bb20411d1fd32e19fdb47da719b20152d8ffb8ad3231da5501c8523c683c69e6519d4c3919d345bdf8121800e8da992a083d382087c6aa987560aa78981d0784685e00660a9be7c1724cc9e8f63f0174cfdf68a89c4d51f48f29384f14e6190b50b9783070406af9ad00413673be7a4ec45db4ab8bd28342c1f7c8730be18d2c79a3030586d1e116a03203ad49f5a40db91a160cb6061c832d0152b07b3a064834f38007ebffadc13e1db7b361483e3f11286cfabc62c1298639eb0b43ac4828f0797b26404ccd9c272d1873cd780ee0d8278a220106507050e098a1d31514f86c3699c724761b3fdf0ab07ff915a8b9ed0e0b4ea114c4096f5b52f320dae1b6253901f19cd757467bb0c4be3540f86ad781f5d32080abb3b5c4cf0eb4521961ea2b39186a2ff71c50dd25335091fdd43cde0aa8da8d7e2179ad11ad5fa948c63dab4795abae06135b675c51915e4007bafbf4c22a98f84dbc45cb7922caf699039bb6be1873ca8a0f339e3420a0d39a724b6f2563295969a362f067070d019e77f203208d313ce94f5479749c025035afef72c054f18589039c902380c26f67f6e80355820f1674d40115fc783a0764b602b58f7fc0ecf5ed478026faf94a00a974d3b7ec9dc7aac7f72280b5f5fb0ef068976d00e7c89129b77480e3c960d6f81a508f2f1160e7694a586b80ebe64280e97338074870eaf70380b32b7a7d102084c6d40a3a30c5f8bed0a3eb803b3f70605facd60722bb255a7e3ab03167d5a1d68080219ab2b3a5ac172e3704d8e0fd77e5c03c134bdab6339d6c72b434f91ee04f3627c21a5833b0e00ca484d55c9f0b306edfaf1dd88472ee7f821ff7f549007ff22e6d2b3b287abd7760f3d8d5a903b3b6eebe1cd8c476ad5fa4f2a0bd3b4012f3d0018a7edb0ecc91f9bae7c01aca34667a604769edfd0ca0d4d081de56c5e32d49710dec8ccf8238d780dac6cf0eecd1efd50ce8d4c4a7b903fbc5ad9e540207df7a525ce1f57b1020fe638bc9409298f1e7b1009374d814504ccd2b4012088d3eb2d686c11820c7cc35a321a5724f8cc5d6012cd8d58d037bf4c010736babce009ac6c33700fb23ccf8a6d9062156ef534062a73c6dcdfc91b15b8b0fcf05d8ab1f55804c1a11b7029633126fd02d3342ace289fea4c067703a70b07ed2d3155370865c50747a06a848ef18d20c59400b7a93ae9d310735a65fd80352ba73bd2d42f975a0f5fb9af4ebbb1ca60244fd8ecc1a1f280d298c4e1dd8f7d8180a20c71f3119e4285f37eab8395104d11bcda0e0a7e6873939e7383faa191ebd26e8faa29ff4e45e916dfd1cc9b100a2ccdb4b40c952c03e6a902b5bd0ffa4e284f74ab7ad9019cd19737d0ad9fa17e5dc015e27da36477833dabe17603e5d04011c66875f0e6c8357306ef3290eb313bd2d31df614863eb9834cab84bff1b9b1db84b67f5997faca65d3a038d8a39b45cc1c2d76cf32e9df945303a1fa898266841b368951b09ea841180227fcd8e7ea1a0450c9241c9786976f9a6a50edbfeb1be94f2d26ec502ccc9dbb4ad2bc76de9b6085d47934680a0e76d466549c050f34deb97352e828f0d01d6a8cdb903db145d30804a42121b2bbbdb81298f3e4a0528f2b7c37252ce98c6ef79d20ab9c2c654788bbeb026dec06d07f6a4cfa70eecab9fd10c55a2223b3c87cadcc70f2cf315e679f36f21c03eea9e1e540555cb5a1f727573b822ccb66d2e1c7a3d9cc91940b506b6530728d99c02e497b27cc2bebc05c9b43b47804a469eee32a50aa249a6f6e186d4f27d3a012883eaf901a00aeccf0b402a15896d07b69adeeba22a3787a76698b024d5b31b071c2d6e0190280f563a6f0dec235f6d00824e462e1cd84ab83c12e0a8e4732680d769f20f5073cc71f32c4088d57213808b204c7e1cd8ec301f094883c8ff842eb5d42f08b368ad28d51a58e73f1f0a20266689286b606bc3b13e10bee068317060f6876581af011177fa859f9bea6de52dbe7813e049cfb61cd8e4f870e4c066feb31307d8ebf4a01441c378237740c4dd5280d77ff87060bfb81d0a70c479d33ab009c5a428d7c05eee8a66f0b357d6dba17c7d6d7b23c09abdb807b0c18b06370e6cb63cd335863a4df803985f3f0ec8e4ba024807fefdc5018ae40b016d019f1d105afde4c09c6eef910373fd96e700cacb87f707015e7ff1ecc0e6424b105a037bdbd78503240fe70eec49b12e3a40a8d744ed42f642b43712e0007363530023efeacd812de2cf5307b69f5bfd0a10ba326120a704513493230186e9eba3039b3e9b5f07e63d7f797240968d5e4e597a373b0234c3eb8b039ba4a774fece4ec6a6d3a3237d54cff51c1573a17f42ca54c79f4cc14adb8b8f2b804e571e170ecc765838408ab2d29fa8724fbe27c006ef6e0c20b8a5be53bb103a1b7f550ecc1acff591a71ca59dfe0798690ff44f00c9c307339d8619f1a7a72bbe589649284ebfc8d0b7b4e8d20ea03b1a4607029cde3f8c1da055c1eb67a4a7d7f73cba52ffe2e44e00b5b5cb18a080e5175e2e4360ba5e6c39b061fac230cde400b89d0ae02fdca40765cd80028e7cf54cbebe47fd628ad973a8bb900b18254c8e9d354ec225f358be4165c99b23019203ad126b070648ec8c99e97282396af662c35c45cba273014401c60e88dac36419e6247f85339602290a47f527608ad17bfb07ec5d86bc6d6f07dba3df38b027dde74f0ad5486d5f04d052c393372c12095eae04cca3183fd13f0a0edb9a9903ccc0675d9419a6d9fb74c036612a80d3ed8996734b7ae75e004f4dcc372daac2dc3f2100ead2168b7b3dba62375aa69c42e3e5879e5c6a157b3f1020082b7b74803f9975bf5458e31e9dbf4c6d8d6a2fe9a7a586d803cd50323c228e497b60237b7ee0c00ca32da6e052715b7316ad92f1d2f89f54b68ab5f5af0029995f584a257bf5f69c662815e3dce85df06dc53f8c8612df56b3a96b90a715bfb0685564d835677ca06ef6b477d96215ab388a8fdf0f1d982362c48cab7a05f1567060ad3f6644c9a1da244c6c814cd026a17f04094d9a505c917836c77601a0646eb4654b63e2d91c5bff1cf08b1d805750fe72601e23930ce90099e4ede43f07365bbe9c023047c3ea1e303563a2b5b20045e2b1812f5b0054459bc14a0007c0cb185062d19b52eb1a98356e61381d90ff34d55d504c693ee700c22b5b769e4942818be6f34e400561de1cd8fee5e112203d582ba3d1038cbc62ecc04c85d34d40cb11f84123c0c2b73c7460d6e7855ebf9543d57f813730bf7440807f069056789338b0cd7bb12380e9f4bc2bc0f6ed57b79d6957f02e8021d06c3bb0cdc8d9b103ebfcacc889b216e3ab2707e8e48d1d58bb9cde39303b68f5e3c0cc9eb3530736b22f6997941e549bbae91a60273f0870d07e5d39e044735f80b3e8afda81b5dc7becc05eee8e2e9552d9a9d9d44525ab79133bb0e748ee1d580f6aae04a863550b907455ef7c09b0d5b86f1dd8f738ff1490157ce7c036ab1f170eacd34d37002969596c6713a5ccc4d34d01e6a0e98e035b81ce1307365e36be0564050f0019e6c668574027cddf0e983ff48114f5bb317260dfc32a90ad81cdb859ecc0def6e5d101c93d0190db7eae5ddc0a608f35a900abfac691031bc8cfff1c1045b0ebc07ae1318350519df5c71f30afc24ee2c096b566e4c06cba891e4cd5b24ed5d74bd9fcdb020af2dd7260fd74a14fa82219ad9e948ca1c8ea0474402e82e708405a457cbd00b41c61cd34c4a67285eb2e04a5c5c7b900d7785533607c879886ca36e4a43e7080a0214f9a0de8c91605dd01dcb6f15de4807af30cc28cb09386509e2493e87fb92f9012c3cabb7486b3f5c29f1b01429b9e75518afb36d98f00993adb4c2819ab58fda65fe0aa08cf74ba6cc6610abbd744221acd16c32327a6a6debf1720bb8523dfa4aff4bebee8038d9d6b6fca715cd257185bff0987e47d2974ebfcfb34658e845b9ccc04c83bd96525cc91d88973ddb6a6a4e133632e9f4a6cff5000dde209df34c7300ad77ad299728afe80f91df699d80a9c2ad19e00493551caea51d0d881f88fa4405b3fba1802129ce55a3cbbfba0eea16b608e46f72780a240ad910e539083d78c19fb050a764dcb302d74f6fac3da502238d53c7e3ae018ec1ca09ce67d3e72affa6f3d8809b6aca469af8bb2c10b5624a3033aaebdf827a04414a6cf52e93fe3130102fcbf220766b19dd3506ef4de1f39b00d5ea3279544c6031da644052f7ed875600b9f5aae2459a1396399afc88a8f3f68175769fef8cf01099717029cbecd58095db07fac3fc11171baca1cd82f22ec0fc97db411dfa39a710cf6cc980b4a3e7fe3b681e3c976c796d7beacbb2d49636bdb5449ced1d6164066b149d9165ea33dda1a032afdc92640e57f7f8203ebdacb1aa0ddbce99e77dd7680e7db34760b2fa71ede6200da1de16a2c80a7f7790790495eebd30195ae3e04a4cfcf9376c3d23accd3b503f4b5cf05380326ba23552196e673e1c08c2babccd2032ad5589e56072a5582df7460d3e726df23a15e526c52833de0c8a68e1dd8e46895e13a2001f25524c0469373e454d55deaf44900f7e07f5f80462a9adb0298e7f3ca814d06ef7a0e62d0e22a75c09cec7fc2e4b8d2455b5be6e3855a4e4ae0d33d0736392e5f05647e0d1cf0a46a6cd42cda51eac01afbfed581d91f176afda99ce5db0eec7b447b0eacd33daaa1665817267ad70386e9577080217022803b6cce9f7403cabe98ba438af671935c38b069fcad12c054783871602b9015725a03ca21332ab52b08af3f02bcada5fdae81bdad092dac810de4a7da817959387bed8119026cce7aa735e972270e30591e04f8408f8d032cc76b017ad0f3cc81cdeb674b07f63d9e82037bdbf20cc064101f5f09b07bbd7c776056cee6d2811db64dd50c09c70b61c781f5d381de059f416c92213da04b2def1cd8ce6271232009b7ca013596b71c7000710960da3ac567d003f3c324faea4ac69f6e39b0d1309e3bb025a91c0b90383e677874bb021b1ea723012a8f36b5039bd8466a7d15fafafd72600a434fa70ecca67b797060f6d8ebc4017512351a88748b2dbdb407d8c9cb070736b2e77f80ea1d7a5b8239a2bd7f00290ddcdc39e07b4c1c98257da5f152d9eb37dfff1c9819f8ab76915fea65e800d966f564ad738dba54c010b88b05ec139eae3e044c82a9dd55c75575ca1db52d9276c1aa10ad010187a50336236aa85a4e8491031b73df7a74a6f1e66e5b80ce7fecbf301f7dbba7918d48423cd30752d16536cd3de07089493a9588e8e17f024c5b272c5aa9ce2b23db24a612496892178194aad402a4fcc737330185d0ec0864142ba5af6bdbd4dce9175229da6672cc28ac19ad78972c2746f1e74a801389cbd401c7b5230176c0336ca9ac60bf9fbf0a2053bc60a2cfaa84bdba7ee18611264ba60cdd7b0ca34c5947c35d00e97221bf1740ea78a107a34e623ce74ff20da555ec03066c68dee952ddabb0154d059051c8b60450381cf3b6394a69cd0f7372ae33becf4301a2c29b4280e3962726b65cb9a25366cbbcd401261d262781bd796189ce6b6b97687721c05ab9c1d8cf9b8c92dbcf8096621d637e51e870fa7243c08e4ac2f9a6038aa5d34f0b2d9eec1b5249208407fd09a19181338bfe74d252aa627a729119081c50a5456e633f9abc0ad04f173454a1aa2a095fbd9852c45e4ba3aa1f8777e6d352953738084955cb26c271979664f946935ac0ba65a377712d822f164fc57cc7f70c8fd22bc49c3a20d8879e5c360a24c71028a9a81407ba8314a8e2592490902bca5d2a2a29469b23076639bef1c52ac56cde33c1567276cdae1dd89f10b795562aed3c63a2af38ae8d56b6494c83b4e4573443904f8904b234340302b86d59ebbe2875897f6d96ca2479d86eed03387a6e4987caba4d11bf387060ebdc3b17f5da93cbc681add93f36b1653a4da867094092875651ba03d45a6cad92402f9989cb757ee6c0f6514f53015e8ef8d34cd203cde05d8015197b3d4b4a552e1e09487279ecc0ba148b560facf5a7d702f8c6bf74978a1d0e714a1d6099bfc8005a6fcf72074c6c9100c74f95fe8409366af61c98493bd0376d7486337260abe9f49f0087d3d1ae0021bcab2f0736e62e2e1dd8f7f84fdf83c4be764b9f907a16113bcf4c897df1c5c881cd41f80c32693146a690ba065cf40d30d5ccbfe5c0fafa5b21c0ae91f0fd4c5148f5eadb010e333a6eb7e5315381dd7c0f88b4fffb850de4ef2f07c4d4dc0b28c4fbc3015eda4b0794c0a06ba768c9c7a67ddc0346f6e19100cdf071eec07e91731745c9c7f79903fbc82627b506f6b68b4707765b9ca1992421e2fcca8175edbd77078dad1e745c0981c538ba33d7883061a335b05e688546d7c05effa971609352a1274db0a4579500061a997e3db0d77fac05d4d83b0eecf5a76307e63378fd03244bb60ecce65f5e0014ad4fa45be6c2139b0f0e28e2762d803eeeaf5e2ee30361e26792a608ef4b0766d311fa96e9dca3291f1d60f432a252d5d1cc5e1c7022a13fc9991d5e1207b64b7afacf81d9a7737d0faab9c6af0c8fce56b0ef812999799cd2afff82d75f960ed823abf5d1bba8098aef81f5b1e4c581f961f698b6a477516fbd38b0af1ef47254210a23fd895c8cd8eb99c73a7d4f1cd8f7085b0254ee795697c24bdb94bb027c8f4f3dba8a84ee0f1cd857dffdfb05898e1a1eec2c9a524fda62066ea96b4ff1d3ed5e3bb019e6409f70aa481516be54cac6fbb9008bd68c3ee6a908af6f02f48fef1d01eba76171eac0dad6e4c53b407c617d4787e996643358777e1d58bbec670264f98e98a5542225fa2f776093f498552c232eb8be74c078f98e1d58dbae78fdac20b27c9309252beda428be990a581045fda0b7c5475f3fd24f25e65173829765d8daf1937e2145e1844e97e10dac177498ac45079e54840e2891fecc818d5b62473b40a73b4d1c10d5a9db4e29f54468420758704ed52ed304892e466536a37ae9480d45966f7d411fcb2960502f798e9ca520dafb11603959440238dc67ac407942605bf12a902216c530edb64db68f3a580a90ff42804c07c89d4d75db8c25693014b0fcdb3a6279cd71ccb4df8d00856952dd2537b5f99864b82ca7105c7b79e3c08c9a724b80e48d31c334f752b58cb9be4ad9fa17b19e639ad33fcc8990a9fe4b38df1140cb64ce73f4e93db6acf1e8dd64691d37c2502c1264794932cafa63ae35c01d96f5ffd6b7fd602017f2077dd1d78b8a0f14eb174d492a1363aea0225bb3f504a04a553cb15d63560e55e1921e5452bb3642ef2293c85bf8e01a25a95dcd926628317a1b3c579904da9af18d030bd4b9e09b9635c9e7e70ce45232818b3d014a607c314b551244d56251b1e18de74c9f9574159e371c98adfdc28355caf46b69a84abecf11dfc30b8d72969449b12dfa646d089c9db4bbb607cafb90bbf5077ac800f2a0bdfd026ac9ad2f01a889473b238034ddb6371c5032c69eb41b83d2922f00439c3b8cec3c41e7bbbebf0320881ab0c772af95f63114c02dc7714b9ec8a14a3e6107106b787b0494189b975b00256fccfe807df5a35f0186187a06b992269ae3da015587fd175af7cf1d583f3581a535a07ef6372050eee56824408ec4cfaf03927b1a0156f5f2cb81d91fe98b03fb62cf4f0009b3e253ca95905b279f025839b7ef0014b9e295de4545ecc939eb81bddceacc8175edfc48805dd2f4c501891743076cced4613847ae1ff5e88a1d3dd91190c0d2a503dcc79b0ed815dc38b0a6dc7b736033eeaeaec1d96b6dd57e7bc000bafa7660cbdafbae036b7dffa6aac4fafee5c0e6c266c7018707ba8b0eb8a7f70ecccbc23169aec0b6283a7060cf6175578a5cda2ecdd5a70336674f0e0839fb27403f7ddc70604df939746053ce720118707474b727c0bc7eb7eb00cb71c701953619d9ca19a9e7470e6c455e1e38c02b1909f0facf9b0e30f27e008932eb5307b6ac7de81a0a0918e8d12507f3387240b7dc7040caee9603b350f09ee79283899e1e1dd8987b2c0468ca45eec0d6978b3307d64fd3d281451158c58b35e0c48a59db65024f4f04f07c3f3e3bb083a1e5b903dbbdee30c4522a6d46d193033e61e6c04e459162e863e2ed7b2c160eac4b2de7028c4a2b69b80676ca73a4072b14ebb412c0bbf174e68093c40307f6fa278ca8b4648639bc16a0e39e6d3aa0f2d7a3039b3e3949cc9588d22e0b07e49db024b97ee1e7be037bfddd99039b1c1137e901c528d58302cbdaddaf0373ed9dab1982ca76df0b307f343f0eacb137f51c35cd707825c083fd8b1d509d529f10a9b0f8a016e08bfdea3924ee1aa9f595493ed43594ffb257015c95477fa26283579a0c087f89be99943262aeeacb4c4089f433071c4e97020c0f13a95e03dcd8db00e492e36828c004fbc4bc9ea968d97121c091efe118905048b2603464190a322862e43a8f8a6f7417acad30890438041d63b26438986b647a3ac0b8fdde12204108ed8e3c93b5c51630cf546577ac0f34b50d5efdc2849233e386d1a103b350668c865caeac43fd4992333b30b2734cc9e8df5c8030cff24000e549ff85b6c44177c92c3dbd3e6064e738661a14caf2bc40d7fa6d264009d0293dd9ab64ee321a72c5c2217d94e7b2720ede0570aa1c3019f4d538d7e099c6ce49430a13e6a0bca5f4d558ef2257853e728eab339c2502c4f53db1bef479f1eb5f70ba92f7d93ceb5fcc581b0a9d5910e39cf7e74deb77f9600e2a389b0f97f4e44209fdef1f0eccec59f1090b4ecda347daa5db47d98cbb7a72805a125370110a3369ffd12e85d26d8b630126030e30f342224d73ba5481404a5c30b1953ab0db63ea2b07a4dced718d724829b02fe6d39294ccb8da71605e5ae2b5f392a531429d30d7e62c9a0481843d32664f894bad3da73b944a9a584e1cd82c454a555eaafaf1bd7e41e641336272acc809885be60f2f1676460faaa82a1bff625b568479c604eae49552eec85ee80036ff972d9ec57083d3a6f10720914bed1fc0d3b15380c408df2f016831c66926c0e123c9f8858a61b7af230039efd1a27260dff4e51640904d4038aff013abe704902baeefdc01f163ba864c85e6c20156df17a020cc8275bf8fbf65779239b043aea31f07b86ef81ed2d76e9f7e1c98f9b5d90af03d1ef58b6a8328b5a100dec0bb81004e8468cb012ef92b07f660561fa80304e83687670e280b70e2c0a69ce69f80ca45f99fb0075ae9c16ac528960e48623d1650e45feec066baf11ba02166e2fed9017be417078445b70e6c52fad573e01c8eef0e012d12c3ab81036bec2b7518f281228e7c7b8014d48f03e2a4270ecccbb2a56b4c398a1fe8ab732e1613e15eb8d0d360d781994ee33b0736d3e57fc0da65520054f97c191cd8dbbed602aad27de4c026b6875307d672e76f0e38e5d1dbce949962265cd18d30fb93642ec084f2fdecc066cbe942406fbbe3c056c2e35fc080756efceac0ba255a9d3de09863e6c0bad4956e8b9a67f4563ae0c1fe736046cde13b60485cf0f84580863a1b3bb029e7e2c601d5d4fc172ce2af9b0eccfc3aa13ba4041ec4efaf0e88cbf9fb85cd747b770ecce6dfd55db4e0703c592851a93dd87280503ed39617939b1702f8f9979b0e68a85d01be58ea7fc2c2f7fc2640f6f5dd378000eef8f75c4093d2bd8072de5b078457ae1c101270e5802a44470e6ca8ff77ed80c3e94780f673876a28dcd8f153e2c09e74f3de01e509f4090bbec7527d4c85259ed5610ad6dbe9c801a5160488e8ae9ff43d4a765a913abf928c56eaa715413653b50b3eb618ad9bc2b76fc9ab0333ae0667026c011bbf0616fd44afaffddc7f7a8ec07676a14e871e4abc7fedc0be479d3bb0fdede3bd03331407ba0baac4b1cf0eb5baa5ba14a2ccf19703b24923dd967d43e3d345a3f2d0c181dde54b0fa6c4cf4f7d7585673feb8bb1f78826ba0ba538e23b1a3b233732bcb158a88261983a50ed965b07368f5df12e19fea0f6fcd281b95ddee9da19a1c4cd17633fe30c270e580699027417530172ab3f8f1c58532ef4e8f82ee2dbe0c0cc8d29c3548ab1f1f199000368979530c33351fb6d75eef1a0474784276eb072b2c026201f0bb029c2a7546433a69cf9d881dd8528a422c7d757dfe70eac4ba14a5ce4aaf48d43a4dfe09a61f4ef005050d9e94d1725faa766ebd5033b8eb36a041da889fbfc8f419837160bd7ae980cf2d692aec233134a8eb46f33490530f12f060229420b4301ca12d51307366bffc7350a85efb313ef007dec83b15fa83cf4d7b740ce290f9daec0a26fd52e4582f0c4c18100bab483b9039b1d2a16be8249ba45a2bc7b54d26def4b013b286b5a6698fec9d68003ddfe41ece5a6fe0b8b516cb6993e0b0909b27f290a49307d7c08d856b40dd830e5468958f61380e5b561375f94caaefd659896c44cb4241af4c056d3271aaae460b9259ba307083bd3d75d4cecf50f90ea1604083ba9e91f25914cf1fd8100161b298845259f34c782dd7e9723bd84af5e65a4ba6df2092bc46f9a3356f50a71f9b83d77607361c4ec50298e0dcde11ee0eb3b15c00c7c63960aa455b44894975e8c9264fc72d8b0d3228aa0f462944c6c3da0440a20196a2ff6019010fa472240d6c01b174d3264f0a33740aeb0c6910373ee9cce0590e3b7eae91d404c2c7c0c1c583f3db87260c60491e53de0b0fe18a0e0052b09d2030e75aef41c5a3cab42809edcec3bc0fdd33ab0bb647307e651fc3d05b078365f2b076c681207d4687f1590fceb8783d2c6cbb103362334a5ea34b7bbb9034235f4b6a89c45abc441b08b6e08e05578291cd82a563e3bb0f132d117c301504f1e0514a6953b20ee62cb01a57c6e1dd8eba7ff0488644af71cd8ea91cf1cd89f207a57268a83dd0c02c4e3facb910d167f7f3b305381a3f8d2e5d7ac8cd71a50cde4d20191b25f80199bf7ad7701ece4a0cecfc959fc7dea009195b103fe64e2c0be58f9e3c0169c217dbddbad9931316e04d8581d7d394018fece81cd85c9b30096f4c7a30324cb960ecc2061fb56aa026a6c2552d6c0fad8412ba0fcb91d075401f8756053cec1a603eb0e252da71aa90da1a23db039e836724001e95b07666e8cb71c700e742f20e1de1707b66fb81d38e0e5761cd804fb49ff48131df8c702ec911bff058dfdfbe880ccc7d28135f6904198e2ca8abff560f27c138653ea042fbed5355289211f3830ab6f7fecc0fee4b706a0addf5c7e08f0fa572f0ec85d7972c009afde85548478f39f0043fd4e1d8665ad7e7c71400a805f43d225f70eec493ff58b021d81b1fa07366e338e1dd89f1caaf5951eb6e9d7608733d0835143268485033b3c58ee0bd09427b1038eb0a602d80ee7fa84a56a70a70004d9ebbbca01e29dbaadc2d58900e8812dd10b3554c5d89f6e3bb03fc9220744ff30c1fa81ddb7da2548c759639f1389e6e2c381bdcba63e50cd8432d7456be22daf4f04246eb2e5805885570736e6327dc21a87fb4e0668f027fbec40f98af857f38722dcf7d42e52f659aa19a68a2fd45ca840f25a23cacbce305eb28164f0df04a8654328710fccb45e30e366aad837ba7060dd926d75a92abbd10e8d9d2913f45abf48e9412ded92651212bc736017bd13c899d8d4d7fb6038bbed9e00b18117b70264a4468cfd4c1ee7d1be0091c38f7a52ecf5fa417f42adf828676dc848308c0e770554ac83967325bd21ab69364db1b6e8c99982e31064ef00c374ce3a976b9784a24e0770cbfd87fd910f08d144f1a094705e7ccfac2de1bcf8818e9b734cda9ed361729258a3fcc5812de217070e6c86d96778e40585031023ec00d90b9b1b0268a9d5cc9639df34e228be0304401cbc39209c90d190e3766976cf0053e2c77ef7055058fe609816ac9551fd21c0d12229886541e5e266f5004042a53de7c1740ad8dc614a4a6b2f9c6f0b10b359d3b6fda9e7fa1724b09705db958663f41ed8e123e20465ef5758ff624b400931819e5c30909b4d5d9434f9367e17b04d6243da6f59e2820e08d596dda44d7a180dd56d23ed03edb11494498a9f9f9eece27bfb8c39afc33b66ecaba8eee98a6f5a524238dea24b9564b536b22e248b176d62e594336dcef61dd83546fc492557f8a81150a52b7a72458a6afcc204ebc2793f1879552a4190630166cb967e5a29bfe10c0bb65255b75fc67ea593e64fda251472b8d32d438b238209a51aaaac3bf185d5b05211b70c407447e070baf292b956cab80394130b56cab8e87662caae6d0494dec145930191a1a496573a058ceffe80fd09e56f3a80b5353d01e44c17d353079449b80020c312acc8700708698e9bff0410469b7f03a4188bfd51296633e093ee00e617611695e7ad1d9e3ab0e131ff15c07543f246951069dffebe3a40f97ae9c0b64d37414026ed11a02656f265c7814d4aa5eec269758c5a412589bf68fae6c0fee49aeed06d340d6c7f09b0acfdfee7c0b6c43fff04e8c9179b0e50b23972604eb7953e904e9a976f0ea8e977e180cc587d424e01c3dbb303fb93dfd48175873335a594055137ada42c18915d5bb9b220e75155b78de4d46be4c03adde7d881f575ea8b552e3bd20c1d983f99f8a0ca53ee9eee1d58ff58dd0238578f8833a8a44ed8a0c05d7976dc4de480f8d36b07d661ced5a5283d518fe9c9ddae911a87db02dabdb60e880e9b3a40e7bb718022c68f03eb0e435e4ef97375b6e3c056e4d32b013c13efad03fba6cfe70e6c01aeef1c70b0ac8b0e490eccbf04a4645338e02044d7e058308a361da077b1e7c0fafa4cd79056f86f24806fdc2f9a481fe6ef1736d1370e700f5e1f3930f33c5938b0b17f78ec80820efa1e3a27fc9e3bb06f5a0f053808797a76606eb965e5c0be9855c8ed81ce4daf1c90f3beeb80cc36e620ed3cc3fbbd03f47274519d249e4e1cd8e4787de8008590330091a1f1a19e54a255bbcf0e6c3240cca372fdc2e9930302fcf5c5c8d26b773301f640834d0704b5be0ad01d0e1a0788444e1c30d41f1c58334c7f05388a677356757b531b51877a74cace846c2cc0173b2c1c581f7bba704000c4ab03d64af52012a59bf395000143d7028189ede8c581bdeded86806258f54d15fa3663494a11f18a673b0ed0ffd03514193af03f410074fce4c06efbaeb665ef511f7f38305ff040b314fa52f5e6dc819de0cd1f1d705ccbacdded3c3125d5a51472761039a0ca6e0d20baa3defe7040b71c3840c24dd3854ecedacc8119ac473476c6d417ea37019602d44d7b4068138f9e217d146fde099093a8f52593d7e9f0d281798c8888a83289123d7e3a6027ce50cf10228df6ae1d583f2d37056cb71613705865b85da23dddb654ea1fd378a6fa8438ee3ac0449feb7b5416b15baff41cca38249bb407140ed0a307d4f7e7b49ce42cdbcb5b07d63feee60e88f8fffb133bf53a9b38b04188b45e07124e5669fd0c777ac8d5721c3e865cd7686d53d4aef472537448a82153e54a23d85f3a203294192627dca346a6b803ac51178ca85c95ae10dbafb4258e76755185ade13daf72ca24d4e3330766291dbc08b09f2be87479699bc4f6bf0420b5a4af2d0136ab28d974806bec30c3e40483c54d0e68a9a795e95d5a3b386c9e31e0738cab30b41d5f25c5fa784e5f2f14fe4209e1aa60d10a671b023cfa2b0fd61f9baf41787660f6fa937ec1d173abc5b3ff671d97b62d08b08bd82377c0d2189b391da6e0f0a0a17073a532e6d1c7548065fe81662855d072c4302da5d2fcc69f9409d2e0bba702b829a91b59950a9c7ec7e82d3355dad4450b96d76d96a492b3c666537791d420e7d955d950dd76aedbb62987a04cb0ae9149a9961ed8fa4239a0aa52a817b19255a5222a045055dd54c79c4c87a948b58f91f7ac2a25d2b77cb14a1584b6d97b5435bd9093b3aa6a753acb00aad0428a3e69cac0e141084c39a124bd74d7ba541870dad4ae6c43132489195e1340305f5f7d770ba87590aa5fb4c8b09ced3aa0d2e6038058da769b6bb80226e54c43229336cd019892cdf20bc0d96b401a3c741b5eee1200c4c087b73f80c9b22fc096f8eb0880da7c33ba76c0f1e48903fb84d4090812bc0c2f15a0d261ca86005b8dbba1031c229f0e6c9dcb4f1d58db46db028c97fde0c05c6a6f4f006c98fafccd817dd3af4307e631fa983b302be760e0c03ef297ae81b3bc4673a707b6f364fe082ea5ff7c2fc0f96db4efc00cb4db154085ac9161099ec6b8507720dea14178334856336288056dabe3a9ee82ac6678564361e584e76307b6037efd03e62d3ed3579fa26631d0eb73901a9e5e1c20a3b0e9c0bad4b39e43815c374b07e652bbff7160aef05477a15c43bba50f446446b3ba736036dddbd001f9a6ff0930f56dd99a1dba616bd605c6660fac29f70f1d58537e0407d650c73b0eac5b627d06252936582841d29ccda3df45c539e91fdd86d7bae5fe9103bcc5baad0e52d1970ad2ea6cc8380cda12c714c8092ecdb9f10ca0966ffcbd106096ba1f3b30036d38736063ffdeaf215fce8d00f3e96be900599aa9035bf757b503b33f5aa62dafa7f57d2bc0c1f2f8c10152506f0298b4e59303338c8ee81f1e18cb716d0f28abbaef80a210fac8dadf3e6f3bc0833676604d7978e8c01eec93b9b0dbdfdab4f574eb8018677d0f19cebfbf0eec4949dd093a9d8d8e18fb29b95ef5f7ae80f4717551ce5e634a4f04e96c8656df834a24d1ced081f5d3813a4cc12106b26741b29acd8dff4269aeea85146e6eae755b253a5ebc3ab0491ad1ff90569c694df44db50938d5dbb209883f9e1de096f36bfc8fa9b3d86e5d09a2e8c768ae6510791876987126b06f181dfcfa67a7f639792bb3bd1c494dd5d5d50508a56b0192dc37371a6cb9475d6b5ad6724dd836e03c9703541ebaff2c8005fee14b2074feeea60570ae6cfbea0f25ca9f7e1bc432edfd01b49c0c40f5d28e28dfda779ebbfe85b2e1202db309ebf6a23488e3caed9701f7eaa700d4af9a08ff3a5711c8b66f8033e9506088cbd90680d458c9e65840d69e77010c88372846397915527230cf01bbd8be01c54a3790a7f3e30bd93cf5169d70362f0de2b5df344e67d31a6fb9058845786a108926db15bd9658e2fa6964105e15123979c9972eef1884e823d8690e989694d0a97332d8a5bbfa3022305bbc7fea9c634277722ea0bc70c80f1d45d36fbd05937c4285ed3a6fc3e9b92690adce65c65ebd1118729c45b0e5cc8f0647f239e08c9ca9d7271957cf08e97ccad648e0785dc828fbcc5b0a1932bf56053296295f5a1084d63ceb1978fca7b7ccf54249892805562b23683ae6c30ac2b29ab19e81537c4359d5f9398be571c8ca2e5895cdc1d82046aed15be4728677c71cc45c6f0e98eb05d53b9213d66dd90f2fe87682a42b8772f25d1160dd66c8f592fda5a5a2e31c9000748f61587870c72f58d9250e32f5552140ded1e34b8132ce0d7b3f06b1f14dd9094b89f1b211e0c04b62b4bac40ed3a5eb02719c6d7106ab4bd5ae6dfa0265dc9a37a706e134f0c040958daa1f9f089424a9660195ad72877d080cb95d412895538ed5b7ac860a2d2725416c3dfff2589564c0ac174e68bfcfa0f840ed4a13ab8c8b8a1d7758d0ea4a7bd43b6bbf6a1455c284a9f4a53a9d8c14ec440ec40588c1a690643dc2c32cf9a13f469cb4d2860933c28ba01dd2eb233c00920fa4652df7b9299d5c2b50fa4bbf600675ebf11dcd5f12d14d005e48dd58400974b85d69061c57baf10ea0e55fd6f601133d34bab01992d4bd260f4933cc388a5201640eb8c29a64002a19d5e4c96b8608d8667062104289444f0b40b0a4de22fbfa87be4302f6df8941e81f3b3d01528476af00551c9f1d19c4301ccd0c629eee1e08c8eb77c720e6e96563401a9625038aa6d60019cb7fee0d42f4552f06b1df0e1f0594bcf3ca8043c09141c80fbc189b61836bf54f2580e74e6fd38053636e1092eef1c0209a4f86c3465522d2abd2800bff330057becdeda7008bf0e3c4808c8fab06d163b3cc203efd76d320241df11ecd10c5a879dc362097ab5e4bbad3f474c500f797d4207a8c8be56648c5cff4ed4340b76f1b022cf5bb0303a28e4e0d62dd9eff18c4d8be694ac9ffe3ebde20fee570db808d4fad55bad37a6a104229cb0cc2d9e74da33fa5845f8fb7288a339ddc0970ae44c02e40f4e96a63109bc54d6910e7060e4573a030d72d8350253ff416aacbd524ae5980e8d32a11e050545f1990fef5d18084a83f029c1acffa06643a5a33c0f59e39a61caacdda8d410cb6c496ef6f9f1a038e5e5b06f12f773f06d42bd83788c6d548984c36d8eec020d6cbc68d01f7841383389a73fbd628ed6afaf169408cf78b410cd4d3ba41ccb1f33583d0e93e341da85f79383b1360d21d7f0bb0bf3cad1984c8e9580dbabfed36a706b1908706484b1c631b9d6fdbe31b03fc71570cb89d2d0d62edb7ac06559a48b37d03c219d4ebcaaddfe919f21cfeda144041eb0d05b08d5f2e1b304f35715536e258f3146fcaf4453d5629b3f18a41f4e9a9464e895993c280ca0a3f06a4e81a09b090a938de64a4814b7ba5418ced587dcab6d69d9c18709ad78419e9d488c8f119f9f6d880f828359f1acbe9476b10bf38f62f483578fd684042d47f006e789b4f0d9492a97f9c1b70f7aa1e6bd0c7067aa8ae7c8b2b8358d924fe6eb2561e55db06dc453f09709ffdadd6724aaa57f704f8f4fd5d0182bf763472b2f3df68794c94c6e9d680905d499809a1c3ff560c42a078554e51bf8e3450ba2ab1e8e3acdedc223ef35e6cf309418a0b40a645a6f6fc681e6ff93e11e05c49d9ddc63988082f5d8058c8dfec9539a15dc9c78700d381bcc58de25e53dc4ee68004b1fbfa170e45dd692920ef0e24ddfc781fbbd894999ce7aa22b22e80c636dd30887f6918fd1cdf8d8e1c994dae9a5c5757022a42cd9eadccb5ed50fd318a22191daee64dae4c58a7bb02b815604f6ef206b5e7435d88a6d48dd13e732935f71b06714ada55272bb5cda61e4a2adb9a3a9a4d4e0c5e73a6b1657ed47830cf4144a4b6a495680a124eb5df1b06e4c57f15e0d6fc9ebdb250cda515be637e9ae7e8f50770adce05c829fbc0f228a4f3efbc0b10d3dc7b3088fe18a39fca00d092cda229e412907c18600a674515c4cdd739ebb6a8a3344977c8b656e0d6d850ee650eb89b2763dbfc648a5ea8edb5e032b639640695e481afa97fdb280d6d32e0b5653f7221b56f34aeb47718fda180dc14ab64535244b6c624df2c123747275f020a74a9fc4d80a2ed29f3b42c8bf8b0133da3246477a65fb0e124e54420eec49b6bbab0e41090e0f3dd2c5af3db85cdd020cec80dd2b26cab98daad9ed1c579bfabd91baa414588ea05800418e9fad8802208b500b6e04d047d9545eee394bc928dceeaed7729c0958d3425971559419e562cc2f69b395611a45877870029f0dd85413c639dd1f76d35252f9b9122b91284c128e7ec41f5c1c611ba1d87b3917c7a8fd9e74638a6242346ae6e0a7c48e8d3ba8d9c5ddd7a3cb41df49582e91ea070dbb76340136e7cf5d73ea0e586f7f908a064b7d8a5dab97a1ad29242e7ad4ff3ef9941c8c27f05407116e42c6f87780fd63f5700a5e39f1c19e086b363400d197d0761bff5e7be004adee18f4174e17623809f12b57dda2121ccc9ac14504ce2a9017e9fd7800abfe09e1eaaa4bb372f020c3629ca172084d2d7ab41e8c9e7cb06a43bd56be57850ef1a449f72e5db0e51bfea4f75502d03736d106d792d0c626bbcd48729c7eebf2b8318a8d74b03ca89ed1a840c7ad2331a9dd54f0da2b5e3670362785f0da2b5779706a1c2dd9c1b841e447dc25635539af7638390c9456a1007bc56bf68638e35338d0b4a5ed2db32080d76ebd48073a5e6873ccb6f2e0c18ec6783389d7c2d013af5c7b141a85f872b06314f71f46b5588a5b9fbfb9718fdd7a141684a95a636ca665bf700144c6e9ba14174e1ce9900fac7d985414c98f7c68033b2c64582ede1ca0053a7ff05cfaed54780121cbcac09688ecd0c62ddbe2c19441792dcb55536e0f6b93188e3cacb8a41487e3cbbdaac171e33cd6a2b208bc08301ae3c1f06d1a74f9d8022a7270618ccfe1950f98bd1cffa21fa9aead42084347e6c73a06be37b8398b8df7d8398745bff0c08b77d14e03eaafe360855010b6b9b61b66d4f0c9477f4c9808c4b23833823ffe83be41bf846af3ba3f0cf9200d3e1f2d1807240530372a79f00946b6fb66f4005b21d83d8706ed5a758e0dbd3078310283b3706ecb74f0631d7a9f8d92a2b71bad319509cd3ffc2b1fad2af95085e35202d2fcb5455321b89ad0c87b26473d9007fba63016650f56040648a8692b299f58cf5a2b299e9dbab00c3f07c2680abc6b5ff853c02af4706211d76ae0c42165e5400d214375bc706dcf15d1850834ad352ce71c73b06213fc67fbf882fcdf6007876357b0f062171c7bb024887f1bd418c7e6f6080468f52938d38469ef70d42c0be5d18c452ff512793c838b97e31885f0cf4164e6be9d3b241347f496fe1f8966e6b0151cba6bdf2bf7078bfd27aa939bc8ff5e994de6c88389c030a383e3e1ac43c7dd41c5304d55667400ccd9741687d5bfa0ed2b034d2e9548b33d93f3288f9914b16ea18b9931ae082f7291015fbba5b01393ef67e0430777408e90c37ad7ae9dc007be18600c3708ce6e894cb7db565aa1b6f268c4be87c9c09201c373e05e2b456afad03b005d75354a77c403df1e4c980ebda1701d90cc60621d80a064a5577ea971b039c17de043032fd6389e5380cd52f0c834c152d579c7380d426d0710eb05c0df550dd67afb0b273e51ba70ce01c70bca712eb02c42f0ed5854a03c7bd58eb2ccde709a0d6ee7163105adff7c020a4f635ca66ce41225de909d05a1c64e6206ebc935d463f6f897afed15072ff523fe93b48b2d292ce610ea48fa50243bc070f0104b235fd238390eb2b2c64d5266d09c96c0ba5c6a22e4f5b0c55123507c8b36bca1c2b7226ccf24c00fbd80673bd505d2f9212b505978fcd1bc3501087939c7c09447071d3438e153a02e62cb1a22ec29673c0d42e74d37ccb7428d04f93bd54a0200b1ef2a3e00a2b2911d285ca87efb1f195bd9874dd015f5a4a8769df05c88247cc6a5b6acfde9e0ad01fd7cca0526913d72e0d0867a0c7ca2a9202b40ffa175522e14aaf551ee7aee909c888f0601003b5467f38d3737528800304ae3c7340299f6b6461a99c3b54cd682bc556ff2c1bc497e2b8d4562400ad3f5383d891eb558112af5f74cb0ad5a9e5eaa8ad9497650d195415caccc1daaf58b7356e8d7340e5e26bfa542551d35b46ae5292fb7b3d632ab31c3379a4c4ac54626d477d39c5b3cd8ff0626c87acdb11d57fba7128bd5d5f057288f39cf7b9b2471d01860287004a90d744f9764e26f6fc0f30eae35c3b06b87ae906a0c1e59d640d9dd347cff41dd43b49d696014e48164bac1b92a4ba7e5f13a04ef39a800a9efed3bf508aa3a5fc6fa7523eed6c4780a4bb2bbc76887758ca8d77a7f4d1f5e7a301d92bf700c8f516cf9d052031eba341bcb67b01608868972b83b0d3cd0a0382146f00648b6eff7d0aa04ba17e754e1f3dd1a7932dfa90d0e14ed9a23b6e12bb61cdb8e0a0bb00a138e34e3807a870372706dce16c1ae02bf920c0427ebd300869f9591b107ffb0d903703a7c64ebe0a29b93a3bd707ba7d342045e84c40aea203839852e77e68a85ff5ac05b45cc83cf70d288f343688257673644099b763015afb5c1984b8784e0d0850be3108652229011d2a2d56da39e0dee3213788c37b3736885958ebd3e5be7ffe65109bf8706210a3ffbc0d5000fbc1b74118bbb2bf5f843cad67067ce98b416c8df7ea0f14c524ad0d62f2f7ee00536568bf17e0ecf19a1bc49e7df56510ad25e4bf53e6ebd6bd4ee6ebf4e9d8203af92454a72eebe13abb9a1a5031e7d1001f814d01faf4e1d080b3e9b7414898e7da20a6e5cbae41dc8a121ed6a9ee6c73830ccafa2c4232a57576a278d743a5166bf23b7b3636a54e8688649a0ba06e2cfba11c019fff7e412d5f7d07aa753a3a12605c068706a4d27f32884e3e9c0ae890786d105bd2d2a54148ed936701ae6bafde01ec40ed642880e2fcf66610e2e2333588fe78ec19c4267e66c030ece8c33296d8d21fc08cdd0a70d26a4a83d03eb9e1ed6499483634d839e7b9ec5800f59c7be44ec9d5dabd2f83980e957a5d25b789b19a03760f892d45b4d71c783bf93b34830383e8a09e7f8192773b33884d8b641e9d6d06ff360c62268fd416a5c2de7f33a0e861cf20a4e5ecdd8084fd5b022a8ff4634072c665839896fbfad21156b8dd570384813e5d41025bad01a67075f28882a72bea64b267a7df06ecd9c59741e874143bee9c2c7bf9d12026dd736610ba3667a02ee3da38fdd60ce2a4d59de606588cce050821e2fcd2c923a2a9d45a85877d1702c4df9eee1a841c7bd5ca56e1d5add220b60242543b67e0def54339debb0ba99b50a7ea8f09d6aff52501a603f52c16005d6a55807474fd1b033efdd420e4e9abda32c55a5ced18e022a191e310d05250aa735eb8fb2b83684bc6f2c8a54963da9b03aca39b3b06a18f7148ec5cd9e9e55380d5b0f621a0ea0c5b06d1a7dba5412c756edfba7ca0ca2c2301dcd5af116cf910c5e8f650003d8890ff3950940d23976761e89e1f63058678ec224f736ac6369f6abe244cab4f2fb97f3955e32aeaae1cbd0a0cf03063577736f163bd0553452dbd3057214972dbce0167314dbabc2667d70daa75de2adf786e10e3b2aed7726e4849d8dfe5d308506e9e00850b370f0558628430770549005b7298cd0186996f045ba1811a332ec530c3f30fb9aed2bd4df22ea0f4af8941cc75d25a75058791e67e5b40d1f9bb025ca51d6c1ac485ee011d5490a92425a9c81cb0cf9138af2b244fa9d1de152e19736b1087f7b76b83d83ca7fa8e5a759a1f0c6226af6e09a0e39215700ea24070fdc61c2b1a82d09e260621d7f1d79e03f6a8fb1d83105b876a7e2bb9fe243024c41d8152901eb82119f21c60d8ad3914155cb6357b2b02dc467e7c1984d28b37545760ea6c5fe9c252619de40eeb4a694a3894cd41c8b17a782040caf694b55f12d7586f6f0b10118251b62bb93b6949a03307ec2f983abb12ed22999c0844884872c16e5a9691c0afd56651b245d727eb02a440a07c7857ca6dfe56bfe01859f7f4a54aeadeed1bb04c118e65434855abef50d9085c9bba85234ebc960554522522a9995225f9b6ea1d83f054a92f5303e24eae0c4271ce58fba524bfec1f95fcd8d67a02a8a3dc252d40cce425de520d95e28fa346a5b445ab0706e4eb63795454fbed08dc9a03e618a9e31780683094894a010f533aa85290c01b7b4325d1b7a10f6b43a969ef5951954e7ccbbce5af5818baf668a014194b02ec1e5496ec468a595d67262b637df2ca4e3852ac39deb6dd48af2d58ea751dde2e1df92d2703ae163b82e126ca9ad021c627835cb12b0700320bd63f1700ea1277eb05001352f2730e98d0ebab970052d8772beb06b113724d3a5747e420b306e887504abe7a021c12f7f80e9587ee281c30575848fe7b7d06d02160702a8082b65c1aa0b2a4021c9ab908990c95e76ad23308194499fb893c6692695f00e3705fdfa130c6e2c82046bf7a33883dbbde1360b0a73d0372333094ca009156af0654a96a0de26e6ddb80dc503f9f00ae053baca31399b2925965109ae34b6710ead7cd990135859930cae09f7c9c1990dde3dc20fae39f3e5df54d67db06f12f94539fc872d5ae32e986a4b56ac87d3c914f4dfdf2634070cf9d408ccbe16ccd203483d7730342987701a8f8c9da8641a84ef75301ec414f8706f85abf18d0411a6ca5f47f3d33a022fd44808464070f808e3e3db837a046c89341f429527bf297e37fdf8078e47701b6f9522387192adddd3688d15f9d1930fa3d0326ae1690ea7bccae0d481ffd60109ffea1b6e0fed2fcec1984c8796d0c6257ff5e352017c18e410cf6ea978042664e0ca23f460c94caab353ffb06a1a03dbc19845c27a5cc44f9f9db7466802193959dc9f2fd7463101d343b1540e49c1706d11fe4dc993883ffdda141c8a0f36f031492da20c41655882619d7b56d5218448f514d6d225f9694e0f38913f68ff5e90aa77cfc674049b22d83d0d71ffffe250e34f7cf001d9b36ee0498a7588c16006b4fcf808a6c2702dc9adf7d1944f3b98f9a286d623afe36881984dfe744892712ea034d9458b1d9b836c0189a1b604ed7a72be9ffb39fc1319250d949967324de56e3e4b24ac5f105c04d4b6f9119ea0c219d15041aec1506a1f36f3c0a1063b5fe661033f94a1f86aad0bd1e1a449f927e6de21adc38604eb292e4480f4706e16efaadef2895a964cb2054c923b5856bf4f672c9801c88eb02f83b7cb0b233d5e25cea198484f9490da2d77b9aa7540148ff6d1bc4f2d8f243956f4b7dcac6d7e09139c994e968b661c0b952832d53d6e1aa4174f297fec59bd6874128df030d8332f89fec19841cbb52e314e7e9a94dc2fef614e198a16c367b8f06e455180ba0d2160674f221823eeb50f23635b6b857d61bad4188e0f391019e3b9580ec52b941cc20ea464eb20922e744cd27eca623dbc9446501bad52d038a53dc0a90996395b1cdb119b45ce84e9411a321707ca2c20129e5b3162066d0dd8780aafeed0a845f4ef3c130e4e4dc49b09e4f9ccff14b80c2230df5e6e740699c103939ded8c9cec820a61409eb1680d3495f80d612c539c9b9e26c6e0f0c427cdeb0e1e4ca7faab1958128bdbf14604aed9f0a30f931874d72ee3c9bd71f01cce99b9b8011feda63bd964a8a29a1c3935cb7e6cf08d81c37adb6d16b15f5fc716bc035fad000f3e085800ae3e92d4d9890ba4d16508e41b5fdd430b85a855e8b7534fdd1a777386161519ce49c4eea56df41f6b9366789b96ec2672bc0911843f7a4e831d7af3705d8f8a87039297080a85f10c1050efeed364bbd18728f3cf814c809fa66288b2cc3d38ddda3c8f1857bd233c89dde1dbd19c4d45e3f1150b18e52201c205a6aa64c0a4e27ed406da1ea5fd3432d2e10c10dde940b8069efdb807c6ceb02c4f248e414f254f944f92ea8fcd5dea3c116b5dc2bd5858a49ec10c10542a93bb93088ef38da13c04e7732308815b5cb3c2db88d6c8e0e0ca271fb7ac69480babd3583d0f9df685c39505244244c8952d391a9640e30ed71273e07a4d9d8fc32089f9af1954038d9b45b4c8732935be3a141d8610e2702111f550fbe0d427738d36b33eabcaf3272251eaa092e239345b5c1dfb76c72c02b71374d365f0528f079dd1728e31794cc5d80f8c585be94edb5defd11c02e8573cba4d41110478c890b166ebe090ca967a14fafc3f5add679bfac0b72bba0f49684b9768dfea50d335442b1f449494abbfa54bf98e0fc541910745523b6ca69459c16abb2ea9594f3a00b2bd29cd7c589400490b5af9c2c2a12b4a56b746185065b9fe919c30a13015b41a53c68c4024e2a55875a677e542a5848e5f3890c551d51e073c065ca07a2af92089e1e09a04bbd339495f23b9000630e98c947fa74b226b447686c2325276878866c5b09a9282723a2d11372104d468ad558e7d347247c489e51366bee803bb2024eed1e45f5d2b944c60c8553fcd4152f5e97001db59f565a805d9b5601726d7a8f953d1de29a90e05eb900310c5f7d00310109cd5f809852f7256018df917c0c011c46928f8101815bc70661ecc208b90064c4d077e4cad3bb6b4006aa27033c873b808b85250268395f9706b8dfde1950a6290790b0aeb93e372084f9408048aec9a941ac4af7a944ce8dfa03db56fd7a05a8e2a89190c06faa64a6ede4d980dce97fbf2043eaa100b6713c21a7432a7fa577fa175583ded835c00c75694081be7b012c79776aad9cb0b84c598098305fe706e410d931a0d2f73f83d0e9869f0614b71901f00b4e883c98aa6848faf0681003f53c3588754b3adca98a86b4e4949dcab655532c7d0162a03a7561dba308a43a482965b21d03aadbfe33887fe9f95f746c5a32887fb99b19847428d4c9541149df3571a5d315d706a128eeaf18840c7af42f7416db3188d13fff34a0068456d40477e41ff5ba8a863c5d1b449f7e6c1950d2704f000bc9c8ff823c7d2e0d7039fbfb0535fdfc500e5664d09dca1cd6916674aa3a23cdac6f400aa6778330fff43494848725f74706cca04b83d060298f34cd7a32a8be0a70d458ff03d1a787238358402fab06319357a706716cbafa14c0e698339419b5c0db66dd206c28d4269dbae4e5d7ad41a870cf1303ac81cf023a9d140604086d1850cf13e9900db83c783831885fbc3c0aa0d42cbd1a8470dcb837c0693115509ad16583df7f39a4e6c15426b5e46860105df8b66e1042e9546fc12bab793836082d78b513401b3fc905b0a05daf1a9020f6c620e6d8dbd400cb26a22fcb62bd241b7b06310c6bfa30aaed35abb541fc62796810a7f90f0da5b41c2d64b97a353dc445a61c66b39141f43a8ee40b40e6fc3b036ece1e0da20bc77a2d1787c9863a99b467cdb7265d21ef8e3f101143b87a4d55bca47d4e0ce2d07ca8b7e09eddbc0f0da23f369e045499e5c680897b2a8018dfdd31204993069be37dfda54957b1f17d66025847db46804f7f9b18c4878d3594aad3bcfb6ec0a6756a40b1c133018cb2fdd42084f49b162159f05a14e73960bd3c69a0144a7db8664038f6d8009fefc60003b3060aa35bbdf40742316ab4d429cb9cac1c1ae0ffa1ef507993832703ec1feb06f12fdf7e28adfda7958dc77f7ba681eab86cdbb83608d3ef3f49870e9f2bfc4fa7d904a3ca44d2417bd496261d3ebdf5ce9700d3e1436d21857dfa4fafc598d14ef52f9c6fd36b6472ae1c6652047265289b5602f8c2bd0bc80f96bbb505a0ac6a274068c6f59e00994ac68901798b6706983a3303ac3dfa302e209a9f5280380beed61620c4c51dfb6d3ec4816af350803e7dbc1060af7cfe03384ffe13e0d3dd1faae8f8c53e97173d02a6de00b29e1f7d1b90d1efef17f1615bfa05899dbb931f01241d65671620d42f371f579e1a87c30588797af02ac0c43d507f343a780f0ce2d3293e3055559566a20fc3fb27dd3f1120e46efbd220364f776147de9efbb100a1d4f8f3cf414672578d8b322c6fdd0a28e590465fd7825ca5cd01d2f266c5207eb14c2717aac17d5b09903017e7a769a128f0afce005751fd0b7b765de8a1833c5e7b4f9fba42ccd94000b578cc065c709eebc8d1bd0044951c1884605b42261705cac4f7b90146a647835026a865332de46c4cccfb545566921182ade060d5b871aab13cd177e08554bfbf19c40c22d1d3b450cd7a3c10e740e981d92ce40cd66e70682ea5d3ad5d189013e14ca088fec8687e3988a0bc966451d352c57db14b4d4b76f57699912bb9174b5ef9b0b28c2a22e9e80fe03a8b5c2f318527a77450390a935aab035e893b724d7ebae922b96ffc0bbdbe484b14fd811c2b3925a57dfdcb2472ec7684314e4b6472d7640218996a355f6628ea674fab5e859f1273acc2c7282d770428cd8a57d6b4522ec6f1b94108d86bff829b80ba13a8c2a2a8adb122fb6d8ba17b5a61826ebf18ca8a147fe9572e30a4bc2b2a5ca55c7b54ab985623aca3dcdf4e55ed26c52d7a5ae9fa698d71a9c8aa91ae6f02b4f68f68cb884bf26413f3cf6898936d9e653a9295658a1cab55c1f0876342cd7d7642968069cda44b487a37add1c7ba382555f3f30d412487eb00c5f1ad4f01052e566ffb00520d26cba700aa32d5b34700bed6c9da4a80614f96ab1c805b7412d981e680d8ea76cc870d9556e2e758004de97dd500b9fe6310623ce2a2e74029874695414c87d8f77f41581522a9c81c142a2a736e10fa479cb37f41ccb19bcc2036bef0559803053abe9f1ac4e679f4073802ee0b60748b69f90ba832f36040f5b03d00b5d2d2a80fb4007ddc70ee0cf0dcc90c4818530b902263770b40aae366293308811299f47ec16f6b0f67eb02f2e8be34086bf147cf2096e9f3334009a6e382fb1784502a3561d0b593ab0f8318b9fa5d8043d1ddab41889c277d7a43af5f7c09288dd3be4188be8fce2086a15c3508bb657a6e807ff2a3013966f4d0561e113d030c6695411cdf2ebe05d880af7f0c708fda36a062f03f0179986945393276db2094cdc8f7f90be2191f9a859d02404a833848544f02ec51e33503d206bc197017ad0f2313781359ac7e4148dccf17033c54352e7865355f0f0671c9b5f26a10cb74cd6f41a77bbd32206db366b2929a45edeb05a0935fd60c488ed41a50a2edde2024eeb2be149780faedc920c44554a9fa05212e5e3283584051b5abeaa982d0e1ecd4801e4b0c48e45319600f7a37c03d6add8054722702749096989cc19a03e47ad62779d6d29500e7db8f67036223370c98eb6a4b5f3e8ae70631a55e7203d2e1ee09e02cf846afabc650b3a95fa8c6d0f6a101e54d760c08eadd30207a72c520bc5c4b7da94a0a4531a83918e26d7bdf08e084b5fe6610fdf1b66a106bee5a6fe1e8d59cf85f70395b9e1a44afe76c49ce96f4716b10cbf4be16c068bffe60101db4ac3ea5f46617c6ae5f10abb2ee0c425ade7e19c47ebb8194ca7437bf742920c3ffba4174e186dec221b1bebf1140481ffa174c98c3ca20264c7d2f8077c7ad5ecbd6d8dda702ccf5f31f01ada891411822ce3f0d62df2fd46395dc5f1e0550049a7583189735ff0bdbfc8e064a152f76960c4243d9b934a046881a4759f7e6fe490027dfa97e51e3b676766e108b7053734c1132b75aeab52ad27706610a7fff03a42c43c06684cc3437cf06c4f26c09d0da9ebe54be2c5bb54118106f3561748a8eac91bf80bbb56501ac2c377a68a74493a9012abec696fda5bb6b0d6226379ab82a15b7746140f4821a4799b7e61fd321479e76e178b000dc8b6907cac947df168501a93959c8396a71b3b12280c8f93e11e0cae60aa1a464c8e9772e80f74f5444f90538c7bd18e0f38d0cca652c3fd387e9aaf593bd21cf496cb4a1b7e8aa75561a1081b92ac049eb528dcb336256d13f72a54a97b2992b55fa8fbe83759bfea84f4b25d0617ee4ce6a3e1488e2bec91ac220afd9916f728350476fd585dc46d6d7ea0fec416dbb2980db5a8465cd414bc0c3973e8c4bbf74293708df9e9b5b011c97066c8daa86d424338368cb85fe052da7db6255e613da72fd6910633bd387917ab1fd3a30889df09fa6d48454a52f1b02312e8dd4d15cf90c9e960d62d31a8f04b808d9be378899fca8e64fc3a12c6dd8099d1ce9eb48405588d86f0bee92ba231a57b06935cfa702a8c53f5b02b2b0223f0a6661326e0458842b3f065474a4f94511f9b59b5506bb20b4bcfdb76e10bf78d233387b346fe80e858a633d6d1a843c7d652b2814d37cbf6b10a79325c6a59814241640e4cccf66a15b5e5c0a4442e5e688c95f124c5bffe390586661baa9b391416806635a5b12ed93aea02a946cafe9ed9a00a6ce7ffa8e52cf60284b4caee9f8508094329f1c024afc82ebe34ca0a44030035562614d1ee88f9294a9edfb9b00c3f0fe2840f4b5e67a2907990d355ff68f258ea225d6d1fa84912ba7b87add23b62a54dafab816085fa7ae7b12085fa764726510823e9d198466708730a890da5d7d2750c571e55b6f216b645b3e0a54d1da671a579170bb3b7930080b6bb26f40ee30a44355e9de54ff32c24ffa85f552294068e9d880bb827b01125d77ec1e9502735ee9e40ab1d5dea18f554ab2724f2757ca6572c4c41dc9b778ca6b47958aa6d2a7f58818bcf5784b7f40985af77e0ec0f5be7e3b02b83ad43e00d7ea3adc3de6809356bd1ebbfafc08808bf7da01804094245917c08c1d65cce76080f68960eb0f877cd8e68f41ec0d911d680170378d0a7573400daaeef1c7000b5a4f4077e27b06b1f67f5e00391b0e3bd01c9093e9f5db200c00e1e9f60b628945feb15f104269ff1050c8a5a82fc0d93422747f41f8a14cde0cb803de1440f48df52fdcdf261feab112e7057f18973ac9c71fa07cd6b24168e3b3430366e1df43497b960820712398760e5411655b838df25dd75f06b1cf7da9935940f548df8126dd4e4a8358c877ea0f9c9f927039fb05fd58843b06b1d439ab2f40342e32fbcc01da78b2772580496d3435883e8d98e65f802fcb8e413ce3461d84bededcde021aee2b5b8d9c2b6e1d1a6073d4974a3defaf1bc41eb5adc146ed696e1f0c62570f57f35f801bdfdf2f423d7f6f0de2aaa4981ac4e541e40a9f0314f8a65836e0b8722fa082301b06b1a25efe007e4a3d037296fb199c701e6f0db87f2900ba6c5b4a0cc8d5f907c29237d330e0b3d9265f06d82d2f0c8829528f4d09865b2b0d489f74698081e8530005edebcd20fa74f462106af195c485a24a1eee0d42e76ffd1d2879ef8c9c6a72d5f59201612607064495ec0a60c9fbda30c07961d90017bcc420dab2370150cdb5795e36085d6a293540832d0c30eddd1b908577c72036cfa41440dd583f336006f92dd8faba2d0035631b8cb27ddb94967b02f4d8f29d0126a4b1411c4638aef455a63a7d383088d6eeff0350f3a08ed28abf2066d0f2c080f4afaf06d1a73f070644a5f50508db3b63d352f6ecf4463d267fdc6edd80d0d05d83e8a04dff22fab4dbb837208bf731806c8dcd34372078e3da20fa3462681680e9307e33880e5ace0438debf9e1a9007edd98004073383686d7b67409e1af51845219acba141c8a0e54b018eb36bd706d1ebaf99414cba7bf57aa1ba911f0621b537b55e08826f76fe19c4da9f6906a9b8efbeff0533c3ce8541acfdbe7e5191a5685a18e008aab6a8f4c4cb92013248f3036fa8744fcb4389382210e517c42c7c9f0ab0d4677f205abb33318843c08b56e5886c6b533d944c58cdc99e00d93ceff4a514fa6aaeb51a1a5afbb86910ad7df91140bb58f62fe4b7752e807438d4fc50ccfb71cf20fae349f394034d72f76310bfb855afb72a8cb76c109ffec08eac88c3f4bb328869b923a0da0b7d89cfc9909220ea209211367b6f06f8c05f1a905cfe4880aa08d76111e8e728ceedcbd82044cefd83005e26e32d038cb2fe1786728b4d2b47f9ae6ffe09502ffa018d7ebe8e037c5d1b44071d6f1ac4223c7816c03f68ad6f402afd3d01394f3272397e9fcd3a5b639eb17bac33a57292edb70d622b2f904137894148a9ad3b014ed11f6a6d891cdbb814c0b7e789659a57b2c2d5026caf9fcca09c2bce64831924535673a72e5429302c8a0b10bf98e9b50a21922c54b1b044ea468ea2d8eda03be4aa77b27f20809ebcc6c4cdc9069cacb213e65cc7251877faaa0dd67e1d1b843cbd67280bee929a0dfaa3e8cb83685580cad64346ae188449adb967d2b914d8c3a7405803dbf71b00e1e9c9982da9603be9662381223a68cc30140c65fa48af1765861d86c6151c679bfd7d8378edec56800b882b86c129a930a7f70b829c93adc22004fd35bb47819e9c2eef0a70c737665c0a94de56e7a8827c17cdf3b900f983c61383186cee09fb8552537cea190894f673d5209e31ec0b44cc591b2541e6809ae469ff4720a33c01cd2f496ad61c5f19445b5e99c925e91cda3b244c8919bb95b6554a531aa36e94aa6ffa3a154081cf1b813065d56b9ca3140b581f7c1bc4567044279752157a0c7629579eeb03018c2a9132640186b8abeb3b0a7c9d5abab0545280b76301a2f41e9974a5f6db6be67ac95e594bbb284778543d22d81605e67fff6543af55edc97645000df6fa4480b4673b7a461b518bf53e0b68912d2b3a595f3a517acf7783187d298a25deb6dd441d2447ae5a2337257cf08455599175b6ab270215f195c8a08546f6fb8bee51205cbdd28c795a21e8db4fbea352454759262a4ad576ad5e3b0c4b5efa86e8ab8826edea35405ee195c54cae10f4ddc99d0009d94f58ea1529edd22923578d9410e44200b39ca476456c537bc7d856047dd7b7e88555a77a9e48a911ceb5ed310f1d35b23ac54307834c25da26006e01eb97810016b48d6d402317ab13c04436b606807b43b7de1950b72966d0c019a89ace209a3f1a01741fb5bb0b182a35d6a900079ae40590f5105b6706f8291d18c48ae266640e94706a60101732ef346ea8b34744b6fd8258ea270706b19d543301eec52215d42fc093696c40a5bc14c0b9a1fdd02f8a3e69ce0f0d508b770da80eb56f401cdf8141888b486af60bb008e8b55237966f04f0964bcf0ca22d184406ae50b7bb69c0edfd2aa0c25f6ae7d20037ad350145fa650684530e0dc8c9f46c1076cbd313835840fb4b06dcbf3c00886a4d220ef817440771d45880980ee5b20026b59f81413c6334310891f37169800780fa5422f8ef2d58cf77341d6a6c9fd9ba00a6cea23388993cd13c953ed62406a118959a304ae2757d6180eff9cc200e78452b807eba7c6f8041e4d12044ceeb9a41cca0ab5c8023cfb31f8a3de852ffd27216bbbd33c066f026a00cdc5b0664f651af13f9d87c260671e4b9e90374063a4a0da20b8b1b034ad5f60cf0cc9818c409675fd3010f80e6499f4e95bb664b935fb63ef6b9c15f51bb8941cc8fe4db209a3f7912c0a436d3c8a964eec3b901be4e0706315007b7025c2cafe5066133d8b83208ebd7db3f016c6cabaf06246566ed6764e6689eb70da8fab76a10d2f2e34400f981f63990ef57b7ba67102aede78a802a2bf40d0854ea19c4d9f49bd15722b066fc2840afe39535f82b6a776d40d5f22f01f4c29f15032a2bac1b84c8c998a7aa7297626519a8ca5db3991ba0f4de185063f9ef177136fd5e360821ddcb0c62991e6e09a019ccf60cd0d7f58ba18e5e53010cdd3b7f203ae861c70031be6b4034985a2bc5e8eec8209acfc17b200fb3f4923527ffb16ef5c420be74a36740ecdbab000b68e3d9200e1212e3b6284e3203e2c5560ce8317d984a6e776b068474cf0ce2c6eaf4428049f7ad1954f459fbb5416cc0c5404027bebe0185355f0c428ebdb2ad298c31fdba14605aee9f1b8480dddf142045f9278a515691eb26aa982d00734c0bd955ee366e0d88f2ed04c805fda1fe2033697260a0422cef0614b2de378899fc716d40d6b75680d35a840eff02dc1ab5906b89cf2b034ac34b06b5c8a0b1a643abf0b01d03ec52ea0f9d5f5e8e01f22d7e2d0d98859aa78a8abf190ba8cadd9a41d86196b46eb9c369b60a030c66df063194af5aa6aa5eeaf921417ff36880a14a1217279b7a69c9208c5d4bb45605e9eaafc4809ad33d013a9973c320c7b9b6adaf0498419b06982aae860694d1a0c7e43f969e9d0a107efc85caa2345fe9ebae80340316b20ad23537f7063171fb7a68a67c28df06312e5774508e7a9eec3c0aa05b6e650621d88a990113664f4045106e048694dfd36b0bd6edf1b3018e7eeb06f807bd0970ab71fbcf204430369439a00ede165b52ae2067ed952eae375b11a09337370c4287f951e32ab6e8bb7d03bc5cf5614a02b8a3b1558abf09823e57718a7f3383582fcfec622ad0d7dcff3308ede2f3cb20def2800ccac99e5d7f3506310b879a1f8d32b6a9f918bb9a7f53030a8f2c09e0ec73a7672858e1912d29a7c6507284ca924fb0274f370c429eaebd1984d4be5d1640fb8c7cf4bf20b6824ea3af443e1aec82cae7e9fe9b00dbc94d6b10b2f0f0c320068a0bccc17c7ac4baed210b0be5d95c3f1540337864551644e7371faf025c2cefb406a1e5742c8f421154fb57025c947d7c1810d2cd2c2c949b724b8de3f8d6bcde1bc4bf3ce40631d89f1b02d83f8e114ac5881efbd2972ada67775d0013e32382add02cfcd07728d46d8bbdb25009aeb1be435989df9985f2b8ab77f5e96d8ea71b13a65075ecc78900fe63275b06d1b81f266ea1ba910d524a86cce48dcda29c8feeef2f5af69752fefcc9a501b527f90ed7387c9d0810264f48c41c440775cb7d01022e3f18b99298b36effd220b6a4de814128ce3fe70254fddb980990e6ab447e94982aea7d35ae20de740775a34487e9b0380fca0afbe958af5551dd2bbd7694459f66b540d41a68ef508c4abcd46a0d43d944fab5e402395692e3ae96b6b52816f70bce4f05c2e698f611f48b8496bfbf20ea68b04826f70bd6d95ecb29350faeee0cc244b01e976d838a8a28c9cbbb404eda3394cdc55fec2f0c94aa31a6b5fe85e2adc9db87006501d21f81c872d6a5b4a5caf01efc640155a4c34dc77a2d1110ddc9bd0017a95c840c54f33129d604c27cdc1d33e92add23af0d0c42c0268d41684ac5b1404152446472a5eac71bac6c593693b11aa77cb01bfa0e05b26d2e0b7011b2fb20107eb069c356501195d67e230caaa9eae1e84ba77974d027df31e2c8933c339423edb743267f5dc9033154b8e1a04f3afea805be301e933a2dd29e2d4656bfb801d4f8f5ad1e03e47f3a5c370853f8780f3025d1c27a4ccba162569388d0fd05d141f4fa7028efd2d50bc0000fc448f3b50098f69a1680c849a2acea2fa0ecee1240ee1eedbe00ae2babfa979c13dfd19941b869a1a10ce592984cfe4028bd837300f3b47d7933088359d3188476b1f10340754ac6e70631d83f470298187f4e0ca23fa200fd2fc0b569cf80aa2adb804ab1b36706317291f8ea17445bf6360564513c34a022ca8d0167d37d036a0c6506b18b5daa3f4624bfd92c0ca8ca742aa0ec629d411c5722e1c32f205fce8341a892c99a00ead7481fa6a433ff5e0c888c5d3220695562100265ef524079d0360c428c7f5c1844f3df1b03ac816a4bad90dd1ea051713df50765ccebaf6d8318eca91610aa64f3f3082056a3bd1c19846d2baab82f80f2063e1bc4bdc7f6964174e1f5b241acca2f75900a6b5e1506a17c9fbf033ab4cf243588b1fdd03c55d9cc8f4b83d8e623b9fc02a0e445aab05f408dd43b001121c94cadd571763633084dfa2935f8fd97434277862e9bf9f3641027be55cd53dc1a9b23ad3955c96c25b6a6ead37f06e8742383d0d83e2a83104acb3b0671b2f88c63c222383fd64bb62fc0396afbd8201af77c674078e9ab004e14977e28dad61a4399f5b105af3d0af4f1e95d31086190af1b50717c5b00b3fee53f835048b6115baa4ed9cc7a06b1f6971a03b2582d0ba0052f2f19c4e8af221db22125fc5e470228f00f6b06d141dce10cff0c88bb06d1fc8f1b83b8e1fd526b092f4d975f0c2880921850e280c99fa984ce516b108bf0f54c80bd923b8ba12a5c360f6303bc3bf6043803157d83900ecffa8e1c0fa25925c02c7c5835c0da73628053da9501cbf4d22046ffbe1390d14dad2d88d3ba7d3120c59f86122364fb3c3588ed9588c3a192abb5d77fffc2e9f55300056d4d53aa8c4e4e360e0d628e5da82d4a44ba9718c4fcd8cc0ce2d39735500a877af3bfc835526fa9708d3ced1bb06e270208839f6303fcf935a52a25641f1bc43048fd7272b517f5c74889f20f000d3bf24e69101fb6756f10f3f466db20faf44dcbb4214df1925edb70d1fed618c476f224e920977774dc05884578ae654adab3e6448debb8c19bf60c8846577f7063552fbd1b90175fad55611ab26a0c65a66cded55a2e86d223892d0273d203a6434e3197f48c79aaba91ed775f8023e0f7b10165337b06a1b1f56b01dc1bbe9952b9dca20f770414787120804079a2c772a4543da34f73c44577d408c8a53917a071f743010a4992f061288b627a7a67103658a26be78045787f6f804fefbb00a7a49b1f833097364c989c43734330fe1c601b3f5517963298d5062150561e05742f762a40202c8e8f0b10f6b17b64615ee1bc70a74eae746f7a264012c0af1583d8e67b08c77c8492773e1060d3e2fe650ea89ab189ee90a33926f5a901270b033c320fd51f849637ab338310065be863b96ebc1fd41615a2dd6401e5ca6572bb2dc04cee69d2b5913a3edd3d308805b4a95e574536025116203efda630c0d4a90fd3d5f3a1060a9b63b7fb4f006be0b566d0541a0a3d56e8aa75696ac0f6ba2f802c246fcf1c906c9f8c18f34312079a72d700dde14e00e9d03f368873c3566e10c3704b8f15ca6641e0f8506544936b247fa152d7c347813cec0e5b0c6541bad3449a52a15bc0473ab9c8e5a6f525c0fe327c10c843e9d5165da8e0c7d3a741b416a7923950a8fdb641b476acd75644a46af48b2a272215c5a8d0bd9836f18244d735c9918605a793666f5d201661f3c63c754dd0ab9e412824df5706a17eadea4bc9f49c4a932eda2c3e8c9be639c87115555b946dfe419d2c7d7d85fe287bca10c25096689fdd120f2d073220322d4bb4ad769008a0c16e7502aca8cc00832ace3ec3b2c0c5bb7c1008b7c6fa9e09a37a9eedeccd201ad7bd08e0644304e650e6c1ee91b9eef29d636461c97d433d58170833655db35e4a126ed784640ecb8eeaa54b6828253701c9314a8d7c14db6fa6764508517dc6602f4c883193f93095deecba078130dcd5e713038aa8e85f324a806eb04c2b85a7afb090ed70784caf57cce4f47acf208e5e1bcca00a37f1b464f42bd5021fad1bc4506e6054a9b09ea79b6cc0153dd61e332e95f2b01e0d0cb0f5ad1a84b8d0121bf5b0c22d23d84638f8b74bb4c5f53c5f5962231d243a86c1d53a7f90fc23f25b26dc120f957daedb8c859cb97ce7c626a014d80260ede97efe19842a89b8c854adb35b8d0e5ab85dc4a971f9580043c4b3c0403541770d4216e2b5b7c82f8dbb981e4a719bbadb1090e79ffe2553fcedbb0151be43839896f52780f34b4d486626a7c586d3fc5c2d2251cbbfbe8022749f0df051dc36608f1a0b70e4c1293e1b72f668f217839863b81564aee7393b3068e22d1b06d196b70c2087c31f757245b6246ce3990a7c26879b0661ea6cfffe258cf64d2da0d35adf2024dd50bf1861db22414aa638e0a4dc3408b5f8e3dc2006eae3ca20f6a89d63835003b7d5a70a65faae0d4241db4e0c704adb12e0b456be19c4506eaf1970347f358825d63b3288a15cba05347888148d41c8e42b0da50e5685ff45cd3f33885ecfc606d49cfe3088893b54e35aac5f779a9694adaabfb60ce220f1742fc099f0586dc1ffa3d99c1944e33a8d4b2717899e417421f972329549e8b6370d42264f1e051406bd6140a0f49d0179e077001386d29f8e7f61faa30e5291d0ed738330314eb5a214187c7d09a04070fda91924cfbff72383e8a0f7438390a70f1706784177022a1ecf8765a8a3693b1550c0e5b141883e8e5e996b82eebd1b44f3f1b7cce42c989c6f08e041948e007d0e451fc70631f97bcf02586a064706212defb60d9074883e15f8ec9edf0ca2f978542d2c48a16be3c796c9f32f1dfb19dc159ccc04b84bca911fae35c0a12873ad81fb5640aaf59241d81cbf7704d00baf911f192eefcd58af55811cb28b65aad6d9ecf40c3856df1984e8db5c112032f671dd202cce33f53a67e41a4fa64c06b3f466d720fee5e5cb2024dd4a6a10a1087b9a41c4cfa5e702858e4d6a0bae09f5dbb541dc671f940631b66e8b9c1766cf063150c71a39a7a6606567f8c03784b9663287d54bff0ca8a9f364407586be414cedad4a80b3fab58641717cd596012964df0db8c13b360861d0fd185078550b88a4aa49b66710a6dfb5dc80f2bf03012e20faacfd6c4476b1efd420ba705d5da8acd59f7aad0a7c3e0e0c62a95fab3f6a694afb02ccc2ef9e411cab57ef05d071f7d70d62aeef4c0d62f477d41f5c0ab7afa9412ce4999e218bc0b6a6147926da421da4dca5387067aa095a771a170c00ddeaa14188ad4c8dc30090deab3f48da9d3c4aa0c8e9e845bd3ee526f16d6c40887b2380eeb0854ee760dabdb141ecc8dc2466b95dab370df00d447ee4724b92b6a512a075cd269e93bea0dbf82780cb083998b37cc88643f2ac394051bc3e328863c2fda701f1ea342e9727d3e98600a1902b8c9cfcfaeabb99010709b536c7218400c34c4e7a75d4285b00d48df6dd2096e97b2980803d635cec82b7bf273064e4109f2a2dd0deebd35513f4f90f844a8bf57c0ea21e5fba89969393b5ba7d1e1bc4976ecf0cd82bbf0506e8411a17d5d3dad7bfe071d73c4d047009d856f35502f4ebd480929767063894e92dad92772282651f6b8868cf5446345db9340815aebf2310be3d094e7a59aeda1c4f6f02e8a7779a30133c77f00ecb72929b347d4d5c5576da53af4f955594b12d94caf6ed5b803be09d0f83f8b0b411c8a870c94cb6c1ec46bfc01cd69162780e48e4f3b969c05de30980e35bf3c9942a14493e62d215588b9bf3dc200cdd13fd4b1efdd1fea02a14e49948076a2da7b534b93208a9fd9e08202d3fc706d1639d5ecb692dedb60550cfc77a8692760fef052256b43b63cd153ad09cf505081de6bc9fa95869baff6a4007ed0820c730a86685a2d1db0783d8f797df0588587e4f05f042c275362b383734876abecaab8d3b83104a877a0b1732e9913e4c953788389c831c570dd473054aa758f117208c3b9ff458a9db954da676893a9ae286b3a84a1483fdf82980d9856c6b0b403dad030122dac9059d9599ac4e28246599c7e689737ea6047e35419b99ca99b62f4ced52f52cde50044a6c9fdd1113a654d9eeaa2710cfa80f99306583b7dcb91e4aac579d0c0578ed1bba658971a7e99e0dc8f987a42b955ffb540f9d96b12a6b039ce30e18b9458ed45fb0ca3cadb08db74f030114f8d5d22024ee35fad8c231faf72dcdb940bca57b60bd2cec81bfcfb8ec1bc4b49ce8b559840e77e99a011187c88faaa0aa2ce992b38a0c6509a1a159c58a4aa5f4565a2f170814450aa7db08d88adc0c2911430b40dc9a1e2a31ce1567e6047e1ba702c447fda82d64d26bfbccb11196dee489678ce46285237956ab5e41c966d164115adea16cce2521dac5fe1d40f9f9f35500ce3e2da96df23fb3dc1940c54a578f0414a6f60150f5d297be806a93c6872d92df9290ac0060eb6b7b8941088377be63c8424e48ce98abe069c79d78ae98e66ef3db2094efe2c380485003360bf28de7c30c2f8256df219fbce992018e6d47062150ce1f01e40d6ca358e902c86dedc20033e5be41c8f59b7300a7b596cbc705882fedfffd2276a0c33d8330227ce84b757cdb5527e3c6d7bc3f1ac4a7b77a28a7b5e4eadd20e4c73f3f035b0e1e9973c03d10c68cdc5554dff5501dce6ef60d4206ed6d19447fe010b20084ff2406a14bedf8171c12b33f10b69c666a10fff2f52c802280c5395725d664ebd4804281ea424ab3365bdb06d1a7dbeb06a1297d3d09a0d4949ab85a625f1a4aa71a6c0d281ae27fa1938b7503ccfa6f06045d9d19844039d043a5b06e6b1854ab75fbcc20a643f56a10cd1ffcfd82048f1adb1633f6c9b101c95e6a01f4f5c1cc2014121c0f7215b8486e2a83680ba1c3b93cff9a1bad978e7086b5ca00f9716510cd9fe8b5b8aba751ecf817c4c88db45e2672c07c36c0b8d317e03c77776440d0e693412cf554e3a2e89606012b0362f3bc63107dfaa0c156d154894f25124c1bb596bc81cd2633480e764d3e3288c65d3406441eac0a90d28e0c76b9ea9b3697ab06f1e9836303bc18570c42bb78da332097c9a7012e89b702f2aa780128811f99d272152b4d6ff60ca22d6faf06a1906063cbe571d79e1f1890eb6668403a4bbd45e13fe323037276a9b5b8abb7fbec2fb206b69bff0c421bdf5a3188a1dc2d05104a6f2f0618dc8f0de25f8e1f05b0afdf6b5c7276427cf21620367192efe57f8546970d4255d8dd3688d1e76624cf7299e5f60c62b073f558c175dc53254021b877ff82658a169cdb1a480e8039e06035d33cc5eb26d11e959175b6c1073e57a1d1e667c72064d0d691415cf916fa0ec2089a4d940925ceeb361e0ce217ebb706e476d194c22290ac0f0db07c7f08303f4864bc00d1eb6b33032af7b40238b5ce6a033c66340c351206c3dd02c45dc181bab096ef977a8c4c7a9db4ad0cb99e3eeb1952478f35e93ad49e4fcda04e6567fe19107e7c6040b89ce669c7e9753503e87665edc820c6e5542337e1eae86d2a40f36f34716585e3da780e54a0af3308adef2b7c2616ee63f8e47d09706e204c6d5114019fde3d01eca7cf870621b638e12cfcc962475e5a31884e3e5932206efec9204e2777ab022a0ac18451418724b917a093cfaf0c30cbad0ba0d11fb3e1e424a94ecf9e05f01dad1a83d81a670c43ae4c9cd2827345a5ddad09e0b0bcc6aeaef8db66bc2380198aac4d794e3ee97ae55b002de77066c0bde98300c7c8817aaca428c4442357667898b1cde764c04c468f02dc46e225bf00b1e606fb06a16e3c68a0e44144a0c11ce09ab086da236fb96e4bff2283c8d54080a1bc2d05c267a279655bcbc9edd2aea305e7649eec4e3a8330ec6efd00d03fda49df00bf603d831bcde6111d372750a9795e37084540e2339f4421dad46f51ccfbc9a60093eefeda205a8bab79ae4a132931abf95f9ac0138398743b9c5fe6f3258661774380da823bccd3421787d4f7c8e52dd71029bcf0d08c4e26666491ac31e447a787e269dfde33710bd9b56f770d3030ff33206b020355a87062c6be5fe424251a33a58a42f9fabe05b8f7d8456c152a887bbc6d105ffa7c2b80f3c293fe45574727430176f507f68642bbc7e7ae4108c7773d4359cd3fd93d0aa9e7fbfa0e15c47d53f33be5609e0910e94758782e835973a4d74ee53acb8653a2d3a55a2fa572bb7c2e0950f0036fdb45d83c67756450a99bd51153aa440f6a31972e0037cd2c5397449d213e4bb48bf6f5564066b91b8390c95c3e2e40a81b4bfb02881c42ddf252a5bfa72b06a44d64af2c6b2e20b49d94acfd1497a2bc54a83da6f03928f1fa65ed9794f0abd75048ca8ea8d6b52b8310f46788e0721286bbfaf4c52094bc7a2a80dbdabddec2a9a05ebb1088e8c99abc3db90aafd63b4c98454ebfdfb60cd81b546735a9f48b01a6bdf45d40655519ec8aacd5ddc9b580aabab1d4ab8cefd8bb102020979c9079c59694ec2c0b606125e0325ffcfdceb16ba6768539bd4b9704c2d6974ed596127b72ff4b2027f3244a5e5591aef00a8152e11f942caf1a84eab4abd6920c39ddd6335493ebb035084d698d5dac221158baaf4fa74c75facdd476390fca57cc0126464a4ee595d4af43753279f1d3dd67038a86e84bbb9c94544ca98a04c2c92b1d34c242927cb09d8c28ad98e06e9ad718433b023f8b817c04967600788577d44a2b06e896edc11b40ded8783116aa085b976b02f233880f5b6462e06ebe04e0c657cf9e0c62264f7f047046dfef03545ceffa558083d5cd19405e15df13833020ee9d1b4407112450c86bef903cdf858bc86ed1fc21a7a476fb0fd0b84b83104aef2b02a8703fb70608e97783f89787a1414ccbe2c42004db96be54072b4ed10b10637ba13e95256ff9d220f48fe1b9416cafab9f00ac70cdf987003be1e1ae418c5c7a62107bc3f41ac0dd6bb37568c0edec8541dc345338a090e75fb3ac0ed2aa5c9e1844f3676a0b3a5d937f1bc4d8f6cf0cc2c8346c05705aa44e40a132b34d9119c4a6b5fc00c049afd9d811a03fcece0c42f9defe036133487e0cb06de506b19d9c6406317244e717cae8577f8d0da2f9771a28e565193f1984c8d93c31883d6a7663101bdf4f02a0ee7dfb5a0970c5f9af34a000ecb70187f76d83d82b89a2289404b04ddf0dc89dae5ea7446c73776810ebf6794900b5e77164100385296bbec9531fe8b936884e7ed5bf4c59731f5f068430ef1850e97b6a1062bcf133d8a3d02d1795d1e2f2205b3388b69c7f1960836d0c626ae71b0274d0d2b9418cfe959f81e658ed0148d9de5e3c18c41eb57523c0e8af650654322a0c6265dfe95f90b80d15400a57621dbf1b902de9cc800cfe7e06cb94e8a7429558db8375802e649e5f0d08ebac0c0810d25b3823d724002d945aaf79f043115bc74f02ec953bc8209555ad5fcf0d98c9b501a504f5e994556d4987bb0031d8abc8e48cbcb4ed70cf205a3be80c62b0b9d02d5456b5f9280d08e9fe16403fdd50e30a56e5f59200c715bcb10b175e7d5d3388b1fdd0e8a33aa50f4706d1b8af5583f8970279aa4c7a4dde1944303ec5f5e640ee1e6f06210cb23d032c023b0614c8b935207eff4e406578d82b55bcb5d91c1a7085b569c0758b1a872379b382b4cc94a8b67c318819f4ac67c866f03633e0c27f6ac07a411864353756ebe70621b6b6fc0b6c28075aea0aa8bbed195049e0c820da72a4b1d57642edeb058809f3a4c16e147d9d195095fac42036be99beb44563ebb43c74bbf2b06910e7db17898b96d8b71bad5b17183f3308c95f6999aa7c784ffdd161db1a6b28c9cbd259f439abf9448060c9670da56c17cfab0621f9efde0cc293e916909365b54e370ce24b9307014aa127b941d8c74e59b7795f39ff2e0d62184e5e04b868bf4d05b0e5601158640a0ba14412f34206c4f46653800b99475a2bcfbfe6742080d5e9f1de20fab4dc31083936c80d627ff9d633c8f7d9e0de50b8cc6c7660c08a5a17502501f518d7d7cd2913372f38123fe8c39052dd5acf20260c1743855c015bd2d115395696eed92042ddba63016e89bbcd7583d85e97b604d82ba53a2dceb3bf1f76a00eaa320a27b23c72a443fb9118204ff70530117ce93be45135280ca2c7febd1bc4a7dfaa936b8215a67a46a3fc309a96643b69b50873caaba5ff960568cb466740343aab418e7ecded5080494714f802c430dcd4021cab3704b89e6c5f9f0470379d1c1b84adef606a10a2af77258018dfff34208fc08f41583770392b8a9e8cb21f06b1f671379d03747e6202161e78d1855f53016928b9804af9d06385220fa818bca82a12e74ad217cc4194cc6d462cf542ce60f7ac4ad5bf6d464cba42c92bd60f05f074a35e525170486c88d12ce42c58172b02e12f95923cab282a85749f1b702fa6b61041d5ac1d18c4c43d461f2b46bc764bad55c9dcaf81410803a216172072ff1ce9179c92dacf6f018a831f31610a828c9acb5280c15e7a30889d7078275090fa887343c171a5b9d4c811f9d8ec2d1b5076e65620ea9d342bfa050691f410c95fe8dc70aa0f9be08b4f299f3920adc423ba7681cedf68f21794df4bf7116c251a7dbdf62990e33183502a151033457e94e4716e09de5880e8e43de487b202b635c350aa92c00102b6542d4eb2cd176545de408ab8cd4104e476c99201b57cd9b34b14928e345f735086cde05340cac4eb9d411cefc9653207d1ebb51492b289d7d6e4415b006c9f48dcb22d89e561bdb81e3006e63920b320e150454915c45ac2a09cc64353694a955cef074cfeaa2fc3ddbd00e9e82e3e0422c55fb2ccde20db674ad9bb39c09c2edd410e873589058a45dc73c8f5994108944b86616163fd7de81b079a4a3be1f154005b1f6137856b0a4f9604c247b1abaf0d62e45216e17c68a3b5574898aa5260f0d020f6b9ea59805b0d1c31e620321ca663245da5da0be32f01f939ea17f81875f5ba40456a0a444ed5601ddd47e4542aaf46b19fa2226955ba3d3388efd87d3120b818893b52e58d8ec11ea904d733f274a434b4577cd868ca6ad8881e2b0784dd745b4f00dd0292a7b71c3468f45505e006afddcb0128bd3539334ab935b67b99412ce49dd8d517c590426cd52b0671bc27877ba9ca2c499a1ae0a2c9770c07f2963b05a017b687db06b15e464b0664253e145032c289417ce9c7a6418c2dc6bfd206d5cf4303f6ecd42056c3833e8c6375777a69109af4de3f03aa778c0038b7a458e04b19659b9d53831886e98b01f9e8c7025836d3c48010e65783105bdf530005d79b9d33032a4c5d0bb080ce1f00d4be6e4f0c3835ee6606a14c3c4f0cc89278694012c00d03121a96025cfa8dd57c74dc66373760e37b13e054d0ac1ac4602f5f1990f66ccf20f6ec5d0159696fbf0da23fba23036a62ec08a83ac3bb41a85f1f3f0658be2f00143f6a27b901e69fcc202e97b635b60abb49346170beaedfd5a78a4dd85c324021d13c558d65cf7522759af2c480109103402bfbc79201f53d343f54747973db20d4c08bd620fe65f46a10ea2885684b155d4eaf8e01b856b74fa541fccbf8c32026cc5d5f800efaf233d03f7e360c42e7af5e0ce29aa3af39a673c3c98b0136fa7301ac81db1706a42cdb3288d67e9d18c491f87ac520ac0aa43f2987d4b16ac67706b16e3fb70c62ae3f4a1672de4f372e0d629e5e02321d249e720392cca606d1fca236a0b2d38b8056f696418cedc7ad4148a9a36b01f6ca2f7a2c43d0d75cfa9576af5cbd36a094e0b2411c3409c62f33247fbb796d100345e696d29e904fbb06b1d4b9032e6d945d6e041463a51e633b495fd45aac0a0d35ca4ad5364e39349732caa63b0c659621a5069b02b4b6ff6610cbf4b13488b6ec2706a1c39cb1a2e4e7987e1f18907dee5440a5bf3f0d4233b85e1540edd18aca64aab8bf358881c289a27456c0bd0f03d2e1ee18c4f6faf02e80509aa983548904f7863950f30b8318a8bb2d83681c67f5523585dbaf3503aa99b01a5431b8b95a11c0aebd571bc4327d191af02f7fbf0809d37b31c073475da8bd21db360821bdaf7f51d5619234953297a6071a5b79a7af4d0d421b3fdc31a0d691a694dcd5df9604706a2dce0cc2d677cd7eab6a26f567651067a0de8301d95f340cad320d7c19c41e956b6c9553f668d92056c3d1aa017936256110d2ed993a886c16ed95a614315669872a99c9f7fc67641087c4a53383e8c27bb55655ed679adaba682795cb1c60537abc338813f0c3b34128249e0e2a43fca4c6e10cd649a0a8a6704b02bf05c0398e81cac972d63c30b555feb7b965dde6a8a30df5d54b472c53c26f0ec8b1bbce6ac8d12ddb66c380fe981a44277f33d77325e121cb4899cbc79900b2d201cadfe702540dfd623ae424d0692e7a021c3536f5e9b89d74b77f203c430f10b0aa29dc92ff6301a20befd4a752aefe7d08c8b14d9f8e6126ed23e972eeb3bb9d57010e9a52e172b268361aca9c4270cd58cd272aad5955af2b7be586fe85d0bf74f75020ec63e9b6fa638213e70a522a57a9eb3eb2b020d76f735919200b997405479e961c22a533e9614458d44088b7903363e10b16d3e19bfda518461726c9b3411c13cef51625ddbdea0b708cbc66dd161c79daf76f03020d3a01e42941bd73c094a24c4259507bb2e686770ec2a1ac7e4706159c3d3ae9fc45a16a8c63038ee62b06b13c30cc94853262fc4c0c42e4aca8d725e8c94d39070c039e6e0b10c784a9de322221ea0392cef591cf330195edbe34e02a1e415f30e9d2c9b70101ca1c460a391ed46aad54dab39e0056a7c9502027fa5a6d619e76bbea426559d59654a02836efea2042665aedb7a5c2d39f2f0c42ff28460261a66cb9f22d4ba25b52b2479525da56a2cd622e0bc2ba413865a972c8cd436340b2db378378e82327ad92c36a3b61ae9754216a295e529615c2f102915362baa949413d0754002951e14af9b2686597caf789cf77592afffa78df20866155af6dc3fad574e8a72539106b6e79e6a08cadb140b0952acfa8937839c167f3c3808486124aa5729617eaf5290fdd666557f6e767c3a9c8c09d52ad620142f2afdd08546c7cb4456588d3e53d0152205cfa17145dde664a55e4b54e8e6e05c25732f940f9ae0ae56610c007bea3deebc2261bd3f286895b29e5f2ca9e417cd819925f2e895d7b2f4059e67d7d471d5934d30b76b10a97a2f43431a0b4f3864015fbfe32cbb4626f48b60c70a2d8af05c82b29995c292317b91916208e1a0943594d34b5bf04782829324a19ff926706bb9a2a2402993c224c2d3d6e0d62a91f3706212dd7e9b1918269bf188611f71eed70cd2034e9133e6c84bf65d26326d7c3284cd36dc41cabfe121a8e010ec8dd0260406cf1775800b28cec1ac4423e39026055a8a9925929b6bade5c0548ebab4a83107dc47a558329d7f9ff0321e9f69e0da293c9a8b300915880f44995ea9d743ba901d7f9ef02489857de32a4324b7dfd2220d31e1d64bb2511430b1027cfb5a1417cfafbbe017ab23e0c2fa4e470033044815f3e12c0e8f6d23388a5deeac314c1fdf96c104a1ec6bf4a96cd86ec730b107687c1854008a5c3997f417f50c36e015059f41d3929877a99416ce2c58b41ccc2f6c22096e9deb5005147573700dc819afe92418cedd69141eca6a71a398eb3c9f9a7417c1815832ba5916c296f52a9dc4b77fd66400cde8141b4f6f4c320b6f9fd5280f3edd78f012377661027f1770d3689269b9599003acc9e7fc1aefebd6e40c9875701ac1b9bfa0e0eabe96a2d407fac5f18c43e47105aa522d4e9d7b7412c643f54eea6e35b032c680706d11f5472ae1cc17d786340cd8333036a94a9b594696ac95452a9104bfd796680e3636310c6f2e4dd20b4e02f7d072eabe9f2cc204e384b43835884bb9a0ead6ac79d19b059fc0126ffb7414ced5bbdd645a8af0d48519e1890905ddfa19ad338b5568ae06e9eff19448fad2e19c4027a419e2aa43bbd1918604eaf0ca283eed516993a5fae0c4868786e104acde7bb416c7c3f9a41aacc72aa91a3c254737c6f10f3e3f34400579ee1ad41cc8f974383106cd30f03829d58c8aa17ddb02357aa17ddf41e0d709ebc35202600f921efd266b46b10e2e27fbf882d69e39f018927a6028cdc4a6940a8ecaa018ef5ad003bf29bfe65203bee86017eb0e706312efba9416ce2ef7f20a4c3cb444063eb6770c239d077c810f1fc63c0c8bd1844af53acb452e1e6e692ad5135961b52a755aab1dcde9e1bc4490bb782dfe47231d7df0dc21c466ea845ea3876d3178330ff5c670631b6975f06d425fe362047849ec1ad5743f1b44a55989bb76583987492eb5949b29772db8054611f0248988763032c8aac4a25676cf76f0c625c4e4e0d624551d8aa9213674726ceca0593678f06f1a507ab0644a30f0c30cba1a065a4f66d5125e780a5be3232880efa1818441752826b0e701ad8d0a73708c7b1fe853cbd69f369109ffe796c102aedc3b6414ccbdb3e80f259f5f7ae41f4c7f6b201ae4d5ad99ce79a979141484b1cec168000d4bf5f50a807152e53e2dedea9416c496becb7d944a96d7a06311d9eb5a27408e06e6d0148a5af4fc707ad9d68288948ed8e116c39d92cea1bbe349794eab706f1a55a6239e5a29aaf658318972f3d63c07df6d68e41ec40df4702c8e4fb4b839041bb33014e9edf7e283e46f70c54cedd7c47b997df4c1cf12f6b0661fd929e9cbb8afbbe00fd715000941d882ccd8be8f3d8e7b60414d27d726e407e3af5a98c4cfb889cbc54ba64f5290a5afaac2fad98851cde2b553f6e6e0702aac3fb604036cf4d019c9f0896fc8d30fc0584992cc205a38348d85fc93adaedf704e407fb6010d372501b90b9d6cfc0f54d87007975368fec2fb934b67775b26c5bdf670258f2aed5412cf5fae55600897baf4e26656ab7a9b7900da73bc80ce2c39ed60c62b3d056902b1bce4b6510c7b70d6450de31f93f0c949c40cdc739ae7ed62cc4392e79d6d4d6552b75bdaa02cd207d7b14c032a17f297ac338cedeb2efcb23b379bf16509d912d010c0007970694672c0c422139664a156ce2ddc1be00427a766a40dc3c62dc2e9a071f0298f6ded9d50bf6dbe43833886929bd505e9d09759b160ea8e4c77d11d022cc0d6235503178e14d1a5f7aa6d672b7960ef4162a4b26a79f06310cee3102501b125e2e40689f8d7e41b19ff6ed4880fde58779fa57ef64c720ec96adc6561765af0698e4a9ed53c901b33bbc36a0c63253bb401b6f8ef5166c7dcdf9d020a4e5012a6da1728417fca224d829dd60e296fdd050d2c76301ec41f99a401451e9c8395c9588f1e6f84200031149dd7f5daa42ae33942afe9c526a72017080981884eed0ec08906d9e3cbd8beb590c55a8c5252a5c3b435a963a67cf5e0c62457d5f188471e75bdfa15acfa323818813ef0e99fc25d7c6b57abd2ca9e49cb0df96146368ae6f05b838bcdd3208e9d0a9b5f359f60b6e9141a52e74c9bbb1003171db1b01fc2d57399a972a8240a6c5058889fb722d804feffb93419cc552f6ecb2214c7e55832d3325957ae7804f5f5307a9e67487fc28b9c04cb79f0cb85ee804e831a94e1531781d9ed455a5ba91477b025182abe6e66c0e88795ff32f4aaa66a0195464ac6f2bfd828ad2699f5eaf64b7dc591120510bb6cfcabea32b0c43a5621dd4d15c0c5daccacabf084b6f2a1b5ba582b8fbd702bca55b12c0c0fcc06e5a8d4adc4d19dbaae6fea5bd13c01174ccfe52a9c81fa9172b7b861eb34755643b49cf10c1156a60bafb6a1093ee58df41d4405b30d7473de418999eab51916382d62f547864c65c1fe1ead51e5f1ac42f2e5126462d1ecc2de7a88672eaf53824ddc851f15b2f8052b6e06dc048d6e20f808afbeee95f08feeab0f48e062d91e45bdb06713a39b905740a82ff02e084d5ee3d013033b43bdf06b101a3398e86c4acb66753038ed57fbf88fe583f16c01f66670ba00054f2902c406828eb23c040493353018cc3ddba419c80c7f4877275b6edab41ac7dcaa9cf01519c38408c543f3b21b47ce4fad9ab8d4128bd556e8081993eb5bb697fd980289b3f10da4595092890fed0e077180e675b0631b5ab0f83b04bedac010aec41db5b06315068c123db7189b3980376f5e18501214457801277a09f6783e8e4ab6b835840142e5a80503770291a29bd67b3373220d0511fc6593dfdd935a0844e63105b52ef0f84947a1808a0a01d25067897560631f957de012326eef9bd41a80ae4531a3957e7e94c00156ef5c280a4003d0354fc0d01b6a42d7590e23cb76b83b0297de92d1876dbd9b6414898e611c03d50fa2f3388798aafe44866db06afdf91d206d43f6f066122585d36c0fa750468e5385d18e0bcb06110a6f0258d2d26827a3733c094a5654a768feef1d2203483cf5383686d77661033f95a6bae5306ee63036a1ea80b312234b73f06d4bffd14c00391ac80232705383932a0e6d2bb0125746e044843db1f1ac4f2b8507f2879d6ddad41f4c76c6040c4b2c685dbeae6b536c079f2d28013ce85414c8766d9802aaa4887aca7e2148f063161081c1f39b1c0db8f00c7c8e727831006dc8b8d9411b42605e448e580d28dc280a9bd27c0e995024aa34c07bcd789413cf47bd58008aa4a80dba69fd2201a476d8e05881974a54f97dbebe59541f4e9ed92414c1892f02c4074e1416d100385a7ec1cc89cde3788b6ac7d1970edb32b8030b862ae6743a6e5cb8741b49600a151a63d6af9c980e97066103b50ca6a5051ee76f3c9803c131f0654856c0d62e45ec6025c50151706f18be45b80b3d83d9b56a68deff8d800f3f18a009e90db2383f817b2598c64714e9b3583e8f50bcd2099a16e970d4283fd1c1a109ab129808564f3c600479d2f839841578d41ec1e2b89414c87a99e512a01f98941ec400f17062182296e337251eecb2583585117b54188e042f314fb58bbff68107dfa1f51e7b1d4481004d18f99fb04326374048407e1ed6d8cb4786ff5f5aba15e26c1ed0592da7775757516517b2307e8e2851b0da516bd7960c06cb834203d23ebe9b0629b3f3e31e0826a4780b1fee88f2838ffc620e6edf8c900df85fa05bf767da7892cf982e1914174f6a6c6298eeee470cf20aaff3a30887ed9d224d45bd1073572834ccfc6b141f4ed8346901c66c36d0302db4e0d62f0734b3c1a6238d7fdb141d4b63c3420d5c2b300875502ca464a2954cd1e0cb8cf1e18c4c677a6c551faa79cb446432233aad9ba015abfea7d6d272b53031205b2c264ec0d4d7a61100d74910a280b2295cb1caaf1691067534d20e513afdf3e0c88eb1b1a901d1b6342f9c4abab460055c033ea92498379656e1036dd0e8b52a7ddfa5b0e64693a10b3f2eb488010ef954400119e47d51679ade69f6a9bcb52da1660241fb17e64085fa577ab028cc267fdac2c585e738ca43bda1ed0d9cad2dddcee1bc4e6f9aa7290a5bb3d5047614aa69b2303eee78606313d26af023855649e67b5f68617839884472a29aebd9a64722345fda6fd9e01f1c98ce4bf1c43eb0292076e0d480ece42af94dbf59786c35461d127021cef13fdec345e2cd7f883464aca5dbf6019d8c19c2c19c49ce3b9ed28ef496049ff2107336fce1600f7e032ad9ecbf987daeb48f9b3d3bdb100b53dd69772a1dbe0d61fe5435dd8ed1bc46c18ef09e0dcb963e353187042729b51ce4e98a2ded001d2bda8721cf02aee1b160097c9f28e4174f62a8b41ce656cbd63c09de73c15c0057d9119c4858c6643aef4ae1ba50047f36657403a9bec62b9ee5e1f8606d11ef72b02f2b0ea3b746c42a4690194915e3f2b495d6e023a101319ed9f0518c66290af0944806ebba32f5560cafdab41f860efb70408247fdb3760ee5f1a90c0b16740a48a8614e7867a5e19a0fea246d6327ede17403daaa52e05f67af3495d8a9e32f5ee0a706c5ac6f8965f3b690c3814f1a8665490de249db08e157acac433c65151e4645363f017dcbe1dbeeb4b4b34118a5420d287272dd3a320037b7b7c6b10fdc29be605886450d5fa5480e7d82b0c98a24610757c65109e099d5f0ad44e926ac72056980b16b662aa35592dc6db95647a2150902c9d462e97a4a3486d4ba527c89884e5a0e04dc040002f6d1feba29482ff705d00bf25e11e1d8855bbbf2b102a01698fb95f4af0e1f8d50063a210e0ba85db84917cc1296fbd46a576315e407420bee356452f98b7253b72e752fdfdc805ad6eb9d3a391007ddbae08e0d8dd57d1891b6f53fd47150ee6a6bc30604b62663baff9fd8f41cc7df28b2d40894a007b76c9e5522a2f5ca97cc0c4182d00c9e4b69e05b26831de152c4094237962c094d38c00087d44bad6c7ad41f4fe13ff3142c12e79a2a423d4e7121dcd47a846362754aed2e5c1466c8d959cc315728595329f3738ff16d3070d22fcfc95c509be6e0d626f60f02f00ab25c10b551f1752359a03f007350719805be206d9914afee486e70c1d20b67815801fa6d9df3588f1b19b188431b1f10190260239632bc9bfb66f310a2b051b373cfdab94fba9a9528368f5f5238358c6d7f41fb8a093a30b839851496d1047731e6f54039c080da1c49534659b931b8338452fa5061153737b2b4080ccc716405eeba37d83180ef5274071e3abad41ecd9bd0b03de891702b84c2a7f07cf5c3fe87d49d936ed85411846c5d02006ff8a0a26aff5fa8901fe0f7d8450e2065d850e84f995ea67399a3749658077d41fc13218f700b2504e570ca2b644667420ce2f47b501e184a94174e5c14840615a1f06dc890b30c552f2587500c1ba4703bc929702ec95edad4154ae383620d3d5a900917f237de948be9c9941fc07d92a2ab9b193a50d8358fa36fa06d195e3bf8fd095ea6ce57ce4c143a570e4766d64108d7c73604024c28641ecd9cf1a969534877b06b189dfde0be03ffd5a03d4ca97f46140c6cf3b01dc614fa706d8da43831830c5df7f10bba182c90170ba61c02160c520accf2d2d287804d2f5178358f93f370d623814ef8096950e4dfb0e84fdb1b46e100366a3671047f35adda068b9f50d03b4b1355fa6ac41fb1f0684cf7d1a44f509b3a8ac8ffbf06e1026dca3261049ecebe509400f40ea5c40e1b7ab06e4f31c19445d90d3ae16ab568ce48b3b0302a81a03723d1f0b50fdf7b1416ce2aa9c33d2234a54c905ddfca3d5873daa4f6853a58cf4c9e3df7fc49afcb42b8015bc7d6b8036c38d00219a4b0c5c470e2f7f19e0113815c0807fdc372012e1ca0093656080d222636c3820c6e835372093e2bb01f26b3d032e52af0d580b5b035afd4880b1beea5f61de2ebf18c4c01dcf0530ae2ef600daa39e360d22cae4f9c520b6b5b36d83583fe65b02b41821cd1d200cf8dc20aa8fec7ba534f7e9c987414c8f7e6d10c3215b3188463e7f3720a5b2069d629c89bae9404ca0e54a8018a3137d472e61f87501c5e39e18c48021b540e524f6bd1783f05dbcec184423931aadb2faed50d59793e9e1d620ea4226814ae9e5eb4d7f84754c0bca90608e66ae92729e6be61ab8a4346c0e0e0dc284f390c273d5fca8a4bc8eabe7eaca4ab1a3fa0fe23fd243cd6c94d193b26780f599189095491399d0c8fa63df20a6d8b7ea4244447d7a2680fdc173864ae9e5930d7d0419dafafecd0027b5a63a9ae5c981ff83365dde32086373a2e1602bf8d580f8640d3ac96abe0c0d7804af469ec960fd3120c57469107521b5c00210087a1707ef2a2310a37ab83388f6287f043835eeac19c42ad5a3e80e9c3e3b3488ffb8db10907cf48a0127be5a80a3e8ba7e5601984b983d99563a5c269572d6d73fc706b1f23fb0e4648889d53757061175535f1a44bff0bc7401e8396402ab8cd88d34f916e045aa7f45dad86785019e4d7d29325ff5d2d42046f2ddb1414cb12b065d862257f3c448ce30e19ad99541dc78ef5d0b70b78634450778b1bc668006c0b201091d760cb86a659fcb10cf6a5eee05c8d8a70d27ab24f13734e01a6cdf20da833bf12a2356a1babb34c0fed097e2a74b0e99d919e2591571b01d88c33bcf07ab8c699acc3f0ca2b39fe60238a9773e0d629cbefa3be2bea1b9d56ce06c5a3faba3141e45baa84a79efebfb7d83a80b2fdb3a106d5aea23be90f93188726c33f7a55c9beead19f0027320a0db95b9003b10814b55aed32b42600b809d8c4ad102708981c25095637fd4efa501338af191f332b621b35307622d1cee0a28c116ed21798b2a1d18c4ccbebf314072f95c0027d354bfa26b63b20e7720da94dc0b55aedc93cf2a7a4606219970b9d4a23f1b8318966f74765e102abaa5921608a2aef60c6256deeb3b4a0592ff136046cdd47344ed354bea06c9be6bbee423fcb81b4c8f5c2f86c8e3bd0054ee421fc1d9d50c54b03a1463532e52ab5c079a6f3561838f8dbc0955ced9a39ed7024a15a7a2eb09e240b525eca459a26f0b9edcb587e70278bf643a2d2c168ace0e24a1da940ca855a177d1274b02dcf2fc50b9026b2bc973811cc399fda5c0966a5e2706787b389d1478361b9eed2d000ec44316b682a379723b348845faf153001fec8a7e9695ae5afa11c863e0d66a0f24b99b979900d74f63d5b68ee0eb745345572296070125191e6d1a1017ac066ac3c1dc3c311b0a45b9e6fa88944a46b540e4c24aee594f4b3d655a5937c007bb278050edebd8202650ce382dfb148cb4cc0b50c422dd67852939372413c658490a8ce61f2b4cc9444ed142ea400c98d55d83f88e67e64b49ceb60a59cdaa530cfe05279b06b85ce9ec1215cdaaea098420483bdb1220bfd887ca21c1cbc35b0142deb9f0afbaf8e3dfffa855d2911cccb5009947f73e042498cb70282b65def867108d7c9c0a483ee94e4049104a8121c1d7ab02e10a6f53819a92ca9f5c3652d065ac2b375822e75fd9160860302c4bed73e595c028bee3847e19f5e8b996e562444ebf4407bc91e44f36f591e1902598da8e46916f2d39df13884b9daa6531a8170bf96fe570ebd77d053f9177b6eee3fc6b37be00729693a3bd03b13aecec032447b7f10d50acf5c1238094b97539324033e314c012dc6cef09603a9d5e003837b4ecfbb5f29c35074f06b19ba2ebd481f895ddb901bfb26d10fdb2af9f2520a441ccb403b11312c05d0f70ccd4a39100dee276cd8024f69b0039cb39467620166954ef6b3bcb8f52008fad9bf6d1205a1ded9f5acef27a540a20fe7bfc651096343701f5805341bdb4624036d74b833879de1c1bc4624096ee0ec4b245c6cf5abac5359a3bb51cee75fe6a107be5f6448005854c8ab5c53cc899520f7044543f2b066c276ab10cd188b93f22390786e580c0b67aa0cae5caa854017490f8f707a2a43747067133f2f22ec0c6b7796c80424861107edc4f75a51207ecde1a44efb3bf7420ecc2e9870007cd1f7f0716ecce86018220bb0661e5dc6a9cca9622135a2ddf78f5b6648016d2a10139851383f8d21b35100f3f2b1259d7d21c4e467706e43656134aaa63edd2204c6b727176802b8a4d0352b43d1bc4123cbf3108db327b1150dcc5b10191a19aa672889cdf197023f1614012260d4be57b3d7d33c0a653397099a4976a318e5ee9a68a2e97c9fd92012985560c48ba7c6b406dd70d627c9c3e00a452f4363020895bdf20bea3ba3188f6d8d470d06bc17ffe089634f7c8b5e2c62bd45eebc19488ff496b10f396b791b5bce7e9917e76caad57b16d10bdffed2f65de7a66a3a7d412b5573b99dcd7d48084858541f8a4e71a633389ee360644fdc69e5d2f16a9b0822ffb066129cd070234d0726610036663cf00a17ceae2cc70772f0664fbdd3220cfd9ab00e7dbbdd4203ef25a18104cba6b10b3723c3508b367e3c220dae385a13dec4b32a43288f9f2f06010ebfa7c2e80f7ab5e3508bff6f79e41541f0f6badec72f5fbc00055d16b01ddd0ac19f068b330206fc2dc2046f284e56238646fe02cd6011ee64c0ca23d1ece0c4869782b40ab1f4e0d7886f468109dbd5a19a0cda092ca37de53236772b89f1a7081a9de57b252d28a74208e2bda1b86a80434dc13d60ecf9e7f0b604aa6fa0efc63e9c5ae014e7b3521067c8d745a07c22c7e5257a27a9f2eeb574ac52a6c1810477f224057ae9606316f5180a8e53d6fd61a83e8db716d107d7ba25989e3aedd7b3088a9fe911870025637388f776910e7ec35814a9e6f7d296eb91aa5c505c00ff3b367108622ca2df55006ebfad4200242deb60ce219f49786030f1dab657f84daaeab91b915ad3f7b0688666ace112d5711195a0f59f99391ea42a868bbd5334094e8cc80409db1000176f75aa5241d7f9118c4414276e1500a76472afa4c423ecb0651395468ea0cd9f7f66cd58007755f022c6c280d742046f2355ba3e2a49bfb130176d39b2583f895030134ee92afd42096be333a3b2342a47ebd3620dfda48408b01b654c69253f7d704b0831e4706b1abdfd2ea19998bd39b6d01243197df0d78a0cca0cba42db7d41a606eac19c4f68a704d2dc990749b5128a9e3faf49f410ca937e67e86da5abac124cc74b98404646d37767a29a000ff65839884da0a3292422464865b80706525041cd6193a68cddd818084383203eef7592e3264cf5a198a1987c4eafdc78047138f0212252a0cf0f4aaf765077da91b50d14c8ed4c8530e783fea5bdd257ddc1ac4cc7edd012015d63c3e1a90e1525f3a53d8ebb741ec62cb1a30b31037499769f59cb7d50d77e2754e846a23a326e7d4d83cae0a109149784307628c1186b300a4dfbb67f7c81573f5b02bc0c17bfbdb80143a5b027476c580514477c263960e447bf0dca5032c4a9500a7c6e37d015445b7551769412f2702d8c937b47ace21b1be53c13215fdcb0071e8a1004fed3799fbb95ef99237b2961674bdf26d1003e6a22740579eea4b9538603e338819f5c83a96eb5dd2f4ca802c77ea17b94b4ff5b3ec73ede148804d8b30be05e0baf658dda0894c80dd02b026dfaa4d250ab0a42f95c4f08f2a37459598043975a13789044e2f000fd98ee606c47e617e15e4d5680f998405a664c225575dc8eae3d562073867b3f415435cbfff58b68a6c183bf20707ab42ee412eeb1780d0ea57b646cb5ba4b458c1eba7f6784b0087ea07fd52481bfbe94b002d79126dd485d2bde40f06b1260f99b7c5943321dec0bad061048194ba447327195e0ba055712e80695d0da702284090f1b30351db2f5abde472a99952b972a89c5cff0c62f9e409c002849bb242c0af569c74b24ddf967aedc373fdbacbc9f6db1e5ae9ba1c64bf05bb673d2d0b29b77c0b28947862408eb2da20ceb77bfa9522eea3da8752a08c794bb45c07882161f728654aee3702e4494c558e11421cb2f9bb78db00ad4154fff0440015ef0b1669e938a7e44ca93bffd7ef47ce9605225cbd6d6f0d28c7d8007f329ba7949e2b1e7e2e4038ba9bf25260c415278e881213aec9e85b097154432c83d13064581a9cc38bdf60f7e0ceb30331d6d1ee68fa72769108aee96bd9da7834885939fa01c8c9b4d91ac4cf92e9aae9b32855876b00052df2faa99173b8d9cc0c1087be0320bed7a0d9d538927a5bbf42e45f7bb20b905781e5b3b14af3e1d8802fbd34882578fdd020ce1ebbb16c350e9c3e39348829b64b39fe9439f60d7891faf71fbcac7f05e8b1f5de8f01ca0b2540c7eab5be418c8ff6d980a719b9018f58470234d0997e455e5ab46e3a4068e49a4198a3372706b1041f3d1ac47c514749a5399dbf18c4bebf7a0a50e0f44d6680b4af6aab17cbe3be018fbeaf0470b9de1500254bdf9a1bc45af8b62d406c319ecdc6aa1a5b9f063854f70c626123016ce380e5b591011e78b53a27e074fe6c102d36d1979205315d593388cafdac1ac4b9613c36885dfd64df2076e4758d209cb23589f13a10079ae36b833058bff4a5bea1a90dc21078eb1990abe4c68094759f06bc7b6d0568d33c3188c14feacd4631cef55c434a5bf4bf77801e39afe706d1d93b270631b3cf370d30f15f0d62d0ed7d19202eef8fe05fff5a07286286e7941d8815a6fa3208efd7d7b94134f2d9df77447b645b029ce6c7738398a6637f077b65a509a4b4bb9bacda83967ef9da3440866562106dbaae72e011a81000ed40b4d85e62102db675654036827383d81bb65700d271aeae0d6258e61b0661d2be6a484de565393788f6385d328831b6fe0f809ba1fe6a0da29177fb06d1c81e0e76448c0db04f370d48c412a653a38474cd7966100d4414520790d9680d8810f934204dd38d41b4985687e1124bdf842d49cee1eae7d520ac3ecd97052099dc8e41ccb9d55a00af02cfa11a897924e40869ec1c5eba15e0d5c0272bbfd43daaf9a3010a214f06b87e9705f06c6edf194423af6f1ac4485e7f3620e44c25e508986c9f1bc48021677d23ed8e9498894659eeaaf51f83307b1e0f0ca281def41149752098db0102dad5a6e4b1aa8f66066cd1cc9761a6fc0d5b063c617e34c032e819c421715795c3175c1f7f1a201bc0c075d0338f583b80b7e7cc20c6fad2970045dfd832886ec8bf0d889455ef179c91b97fe900b96bbf0cb817bb31887ed950ef6bf3dc7f03e0536ad24383a8dce6a74114fdca802de9e20ff0aa44dfc1d6d83cdc197012bf109076c7ad01b6d4a301e9b3360cc2103854e5a438cd49ab0351db65f59c9cc3672303dcc795411c9b5634a42a127df5d9c4e50bae2ff51f38bbeae72f03d2abf50d7822720cd0cbe9ab0f018c892575a592951e4c0ca2a467470661c3cc0d08c3e196a719e2ec6a8f350989d94cdea600bd279c1d1844b8c7894aaa9431cf7b06518ee196419ca2f1c22d80d470180e0bb33022bad77201969c930b035e0bce0ca2b34fe9caacc7c5e15a6110563099e01be949575ce975809718fa0fd9da4b8d01c14f77062496d0cf0e591df63f0da2b69b0f02acdacf6cd199c31b0e0c906250c194417919433153da4c749d160067d7ce97015a376c1699d4e76e54396215aa657adfd2cf889a359964130916ec401c8a8ee606f12b03155dc93a2eb6054838f6c2729171bf9f5ca94d65069ed506614c9066a5c994a8e7eeca2066c3c38b00ebe93d532c93749a6c3afb828f7b06b819f41f5c9227ef6706b18cbf9d0ae0937e180b10a6957c1ac4c2f6b56c105159e46b6c24d591f2aea003388755301c44cd3d332ae75c99f66e0568b1d51f03dcd88f023822bef51fe480a8bf7303f4b56f0cd022600996ebb77ebd35404c9dcece074abff72580c1baff6d104bdf9bbe14a98e7473c5202c83277d0731acd5aac10073431fd143a5d54d01fcb8f25de4c4f624e7b501cf5cd70ca260dbad0179579e0da260cf4b0243a23b18da7931408399999db369252b9900f1a77bab0604c55f09a0054d928c0ec47f7cfffd07d9c20d427723ddc6ff91571c7996d5b7150218899a9073547aaaaee4596753b318e49239fff830882175de1360913e9c1b1070a872340c3acd869c2d295d6609ce67e1636b5e98fb451fc7ee16e3a318e69cb339021659fc4af3c09072f431d9a11ae927a7cb7b06e12c27b4a9294639719f14ac904ac007eb475147c1926d15ac1ec6e2a81da8a8239560ab23f10284ad4dc68b0ec4b11afd8f0528c2924646a103bc8060c929c8f0d0feec08a05bdc32c50abd7e4af605b89bff593288612923afe03eaa79bd17e036e19925a7e0bd69b23f348846be614695eca609f9b416001df8f77f02a105ddacd01e76634fee04f0c0178900fa1f6bd4c51accdc017720e6ede9aa41ecc83237162086f66621300887eaa73f1251ae8976e4925341b5b627402ac1657a4ebef18ad8d105087769d5b05c94598489d7770288015547aa6dce97a238dd9405eb8786764922da6ae955405a266c38967e7e791608d76ffbb86d10830e9dbca694f6cf4d6e100bec86ba521743637525c2df29615a1d88d3daf3a341741431020b40b031b7801d88e5628665502a4b15e9809ace091d251560034ee55429d980dbf65e802c88536cedb22dc9d7786e106d7a360020229af2faa919b113363bd1ea8b0d1afbf4ec1be008e61b83580bb905ec007eba7f003ddadcb837085b6a77c520ec0f9e542d00a109fbfad94a2134a706b8b2b6000a49dcac0d6295c24e5e00c21bb69f018df42e6e0de2579050e940d896277d83581db6ce0cf0e3aac510996d903deb40549fa7e5ad43ab93c680f448630102fd36d51eb86e92f53f40394e0c62b958a781ec5f9fbc1bc4f440dab70351b034352057da278088bba6b93488363db831c0e33c37200fde11402ef98367035ed8ad1b44cf71d468ad4372726210e7ca2213607c7cf93fb060d12f6ced924772a8555ac444636c8033a3a90b83283adeaf05203ef9f4c820960b34fedb81bc1b072f06617f149541f44b353008cb002df905e038bbab9f25b0adce5e0da272ed9d41985fdc8bb576daa358df8128292f755a273de4314b3b7096aa4f03bc1b0383582efe7d0950d2423dc709a7fe690c7862766910259d7c1a447b20abd92ac6b9b95a32c08baf9e93f77c63df205cd0a37b016cede1a941f4dcfa1f0853e13e01c8377e776710f3f6bc328856271d502ba1eb7af2651087009eb92e00e7fdcd1383b060ab5b039e44ac02b40691faaa033c747c3788cdf3b03288e5f3eeef3fc2f85e9b1b109f7c21103d77f85e1bc47f78124a3671b0671073ff3433c032783708cbe0ad6f103bd0814aaa5725bb3383b00b7f5e0cf08e3e1b7071a811840f255d5935888f547d83b0c7262ababc2cf72f069c81de0cc8da756e8074bcba52ae70ae275b295fd7dcbc7720c6c76b9881ed9015b72637690768b13783981edf1f06e4b3f827c0c0bdfb3688e170971bc4aba327013c35e9e91f8835e8f2dd8018f86b8398d947cb0278255f36004a77ab25477eede6e99f011a777d8338bcbfad1ac47c79dc13c0bbf15619447bac6f199038b104c885546e19c4b0bcfe318806e26aa003a8f0aae892c42461720750d07d33888f142f0631b3f3bf8f845db85e0b28d5b5ba920d2779da3508afd3cfdf7f44ab2f6f0ae09693fda14c8a75efc920bc5f6487ea40b4e99a3fa2e7c70c4b47525fee1a204935156046bda50631a3503ce8002fb934b4952e0a09d90ec434bd7a35e075dcae414cb1abb1008bf4c6b6418cf54c23488947ae9e0da272af33831863cb9f0651b9e181418425ddaba452bece7f0ce2d573a1a29712031a1bc482d21f1990d160d3202c253c9b0b80e1fccc8a3b5430c7f8d92046e1e7bd01aef0a101f72f0f06615beeaaf7e51eec69e0ea3d10b7f71d08b7ed97e63e091d9271df207a6e706f10e3f4492da6c4bc8fa5018e7f8d20a2b1db4d0d6db9073ff60ce257e61a9698c5d56d6a10dbdac3dc2026a1ec53c958d78f6a20c2c5eacf7383f80f6d4976c9a7fa0f6414aaeb9941ac30a79a40dc9b36c7eb06f11f972a9862d0646c4ae8bafa51ab2b4dc2fdab412c4ab32783f8c82c0e896db6a4bb932b01369c7b768f0c5bbb9edf09706573d03340ade0c120da146d970ec4d9f46ed32046f2cf4020bc3d296a5a6d86b2607bd03788bedd991aa004fe6c10abe5cab2010ee67d01fceb5bfe0ebc0af34301945a771974ba3c488fe8fd8c05361d5406480d9e08b09e36af06113cb9ff07c2b7b5cf54cf7086d684692d00411488cdb519d782e9c396013e5895544f103fd81b32bde19d7c0b48bae44d80dd634de540d22ef93e36c04db96b4074baba52162c12c30bc0f976521ab06a5f1a7001c13495b849c393ff0ea0047e6640e8ac868332b18eae0c4881a172905caf416bafcd24f8205321435820d952efb771cd51adfa2343ec64557faa742ffa599406ea1d66b6e2c693397b43ce14ab890e5b0006fff75860c0b19a9fcd1572f6b0674044b7be435af23c55e940b8f696f41fbaceaf1f0c38025e1ac4d6c8755c9ba372965eea4b0784015f71f2cc751425654c9b677a68b0244024f51e0709fbe8493eb000b807f769c29cfdb62571d102b08ebd8f04f07d266a8f22746953520ab5395b6322bb301f291c79601003972bac05c0f39db05ce4da926e543985354e2f0dd051d477d431609223d556039727ff0b4067ebfc92b77a35b0638022392bae6547b69940b9ce0d934383a82db74d0bc08a8b337401d08858619a167a98f3fa2c802f782b1318907697e9a198ef5a167d213d83e55d81b83b691ed9800b3cbd4dfb6e10bd4f68420762af1ce93bb0719b3b6c9802eb334142a503c803bf1944375cdf0930d5eb338370321daae8d896c94f62108d4c56840ec422fde1ff08c77f5333e88a9c34c4d7db0248ec547476c1c06d52356141c0f2115b7451ea0108dbbc9240b6472a29d73ed55a2b1037120917a96da1d3fcde97412cd27bfe0f1cbb4f3f067156ffb72110b73c355a046dd1487f6c4d20864385eaec0214fcac3abb45282e991a84432451d15bcaf1fc6c105db9af166b731cdd0ced82fca6cdf3a301eda1be9d12363f647c9424d56dbe2a01a6d8c31f88e58208c4b6441b2a2191f502287663d98053125b52896590aeb123975c9326f29f2e0022e6d83025fb7ef23931e036e1488017325bfe0fb4c21f9f055090e9a92e480cb7fb17025c0dec670661e3ae63e396395954cf54fd42d9c3b604e8a852052b22c23dddd07f20cb9b66370208e81ce40651fd357d845bd15483bf249d693adc3088e170bc2980a8fb86ba41afd2eed4d9957436398c943c0069c8ffd23a292641141d889f6d2706b18e9d314dcb4676d09e4138dc2fa702a4ef4434a2ed8edebfdd20cf44f717bb073b503943b2fd84657c71f28a85ed1ff6d8a8370af3bc470375d9177fbf9467590b308ad970cc5e39221954f2f624102dd69c704ca87a924a8ff698f6f1e3b61bab0608b55406bc2bb83488b3c7c60300b76d7bb203c007db6cbc02f0b0369bff0c6227dc780328a5325a370b80b7e7401fd1ab81837b833025778706d162bbcb06f1b3bbdf804675393708cb91a8bd05a0e8bbc700c75c0d0c781d971850f4a1410cbab401c8c5b8716c8062db9141ec1e18ce1d88131febe954cf19aa626c10f7c89cf7a7031c774d353440fc66cb809b667d84b709cde9be418ce4f11f204dd3ad00a6f51345d7dd49bdf36c1077e2983d1d88e5938c391de02aedde203a6afa6e10e7fd8f6dc040f1da4706c858b7067134bf7b328863352eb5054074e6eb05a01787bb3b06a4de2c019944eeb70d1054be33083b88d74f53e5266d761830835caaf78d01257d342049e8ab415cb6f1f46f2ad9f7a62d0084792693330384f2570cc8fcf5252075b109806bd26afc6640b4fe8bc16f131ebe1f19903c4dad4e9aa60401bf0ec4b07c3e058cf4cce4d3201ae8be27c0902a6f0d62813d57cf210258dfa9a47aceb07c6780cf71dd20063f8edda92e641a5435a67a9bd07cf83f38362dab723523e8e5cc00d75e63103b50de175036d7c48094eccc5b5da6d4a804748038b68141d476636640fce9b34113fd9218c428dcd34896b36b6dd9803b8b7383b0fad635b475bbd2bf3388e1b0f5621003b77f6340dce79b419c1af7555bb9c3be4e0dd0e75f32081b26990b60a02df70d78f6abd541ebe945691043eafaef3f78469019c4f8d89f1a90af71558013f0e10f80f7623559873b10d53f3b362023ac061dc7fb7aab34888fb8912512794757ea6d42c235d8d42aef07cb02b8d4decf0d10596191d643831a9bae0351dbef2f83181fc7060ccbd34b03c2e7e60651b92db679a500adc872d781f017f268736a51f7f9814158395ae8adf27ef4cf80777cac30be4c79bc3188989ac7c200fde4338358e9907d9f4a7fbd19b706e1ba419e6f0188ede1b669aa9b91e6facd80e783df06d140f8503a10138880b2a9e4d6ebe2d920825b105ae8008e4cc6e930d335ba9a9017edf5f38d01a7e843032e74ef0490a026c1f8540f0d1a72b64df5ae20fdd0979234a4b9ec1984157cf761101379a0ba9045a459be36083b79f7ce20066ea101a3ccd67b3706244f53bf68077a1819446dbfe7066c6b9f06e4a2f811e0c03b3f3488817ba7e140069074b66a801cdd9d01ef922e0c18b84f0298a3c7d706c45c2d19c4c68718d0d4f71eab5b06312c9f547d49ca5c5f1b445dea678368e4492dc0ddfcdeb6010f848e0ca2e7ce05b4bfbcdf1bc43dd0d99e00ef70b69f0d624869b51c2aa5e1dbaa41189bfb9541f4cb88c571d84a6ebd3088b3fa8f8a8e87b5691e0d62bfbdd37c61a14f86ef06d173e9a6411c894f56049840571f063c53d3f2c9cd7b7bb6641063ecfa9f4138ee36fd1ff84f0f9e0ce2383b639c668a64da7d368851f8782d80cf11f18a05e05674899f5d4cfdf0197c5406310ab97f590062aeb6970c7800521a20da4d8b65d8dac9e4c5203aaab72f80cf6067d5004d26e65c264bbafd035c516402dc0123c93dd54548931c0a101bf8b02d805b6e4f7541f1b1599918c45eb99c1ac4e9f5408dcce9352547ea02508e319b6726f7f1f1be016e7d9514e981e654e528953feada20a63a41141d4085e6414071f46a200ebc15390e1740998c6e0de2bcffa492ea5dd2eb8701622f2b02aca76f9f06b407c352d72ded78dd00c9c39901ef1a356094fde77b47403723ccfd8cd89e76c300dd2f94163b109370ccaccc9403625b5d2911404f0f9eeb37d5a101e27bb70661c0df0ac8da7a3b12c051b5c60492307c72f8611075414abf03313db8b3e8409c3cef581d7265bbf9190aa0267ec7de90ebb0fab026209d6fba214765b5797a17c031b3c2dccf955961a672e0c64ecff41d433cf0d509002775baad8fe492e85a3688a2df3f083060e6ff0ca25fae30037309a21e2e09301cee970d48d7c054cf991ec96d6910fdf2590b105bbcab56d73de1516610a3f089c520af07a42265f3d46385fa712610e1fbf511c7b75c71c1dc254d73d6e4e69e35b9200aa9a98e04f0b1dd726c2a7abcb3d865812d305813e44f3a804835fd52e855ebebbe003db7b367104d583f0ae062c4493d2dc85f59c90c2c8621509f6cb204173c1e4deb2d01c2b3cf698f027dfef680a5afc0da6a885fef40d8a74f9f02f8f9ab63035424186356796f308c0a6595dd568b8de2854cf2a946468e3fa92606b1041fd351ba91a888ee5800d4c47718a785cea6329d0ad43dd255064c311dd0620381b87f49d7d4c8ca12315639668318b884364d4bf6b9b4475d4add68a25630d533821691b70528a34d478d01be71dab464174b26638358e8b9c399ca8b9fd4af0268a70f4e0d628c5d3009cb5c8a3a5f02f47e762010d71c098297d352c98f461b02a8250d6a0154dee5cb2951a0aa26db0228d6f7d41ef8e8abb34d01dcfadf0c7e79e0d3feb900def3138c6f39dcab4b95b40e659fe495d5a124fd6f75a982b52502f58cd3eeefb75fc8c03e2d6721a69e3cf1a50bfb3d0cd6dbc2202eec645b2e405ce80e38378c8625561f3f3bca32eac2241c8df0af23df38ebe3b86b4fcf053815a0ab30ebe3856bb68f0df0c11e19c4cacf13f7595f6fab376f0dc270de7b05c861b6f10c906f6b73668080df064097d37bcf06f1a5a8bfccec1b27426401583f263780468ebbb901af068e0c629fdbcc0dc2642103fbccdef32d0329b6a9b6bc476e786533b386fbfe8a41980a7b4f0631b4675f06613a3da9d5155c3b79332006feca204c5a36cf999e2224a3ca80eaaf1a705a7b16e0683e7904e07649ce3f0d88ed9919c421b11e09b0cf21203cf34383a303038eb3cf06d19588872f00d6277a2833eb07a1b4d88158a5d0649ac97bde90f1b3033170270383d8a2c92f36b3b33cdd31c021b26a804ad18341cc6c12c22c80a4d2fb0651b975fd6c263fffb1414c752e313a100bec09bd6ffda0c19541d465fa6210f38567f233f9d79ba52580a23af18dcf9434b57a7f3688925e6d18845feaebce20faf65b7d5be845bb86945e2fac9e19e0316a0cb808290dc2965a6905b836261fdfccef1bc8bcd181b0a4b70e0cc8edb36af0db4087ef2a18b9b09a0df5ad7c172b4f06314dcf7b0651f4954783185267f7027ac2ac8e52309867940e232b0f06e183bd2e0db8e452ef4ba19da76e1d887ed9d497cabf7e776f101f39be3188f6c8b60d62c0a4fe88f2be2d1944cf21d036b37f1d3db6d90085b27a3036a081fe4016ad9e1a907b3231081b77343488717a5d08700818af1a44f5339660fbc69b3b83a8fee586417cc48b819ce5876303525e9e0a7090d81a198441b2742280336395bd52ef1bea8d91412c9fdfeb06b1017f9d1820a0f3f71df83f6864bf5e183f1a105ef9604076a87d8338e11c4d04f03a2523833059d03def40547f251788cab5cf0c18cbbedf7c1a903871dd20ecb1cf4c8045faf8db8027557f2036be33c6fa10a5d67479c38044c53706313e2e4b0186e58f8aae841f470f06dc69bd1b84bdfe786510761047e29934dc936f7f293712f5d880b73ccc17e7373d383620d3d5d8207affe7cd206603a22233bd4d68df540e22bb9afc0fc4bafeaeea4b6c8e97b11d8885ede1c120e6fee95c4039db560c90823a302073f1ab001754e37f06b13a642abaa57e1a83583e1f6b03b682078368c2cb2f01c6c7e3c4201694ed738398b7f9aa41ac1fdbfa15b6b574f7c120fee35cd5277949fd3136c099c1de30249b4973f36210dd707e2b80153c383188ca1ddf1984f3ef65cb00297d369ca1729570349f491d28d93f3188f5a3dd33086bebad352096f60ff020466d2ab186b71583e8ec6d4d539c6eed9b7e16a75b83a2ce4c8f15d25dd6e4a1e2500e5a03328e8f0da2b6bb890187f70383b060bfb42849bd61578dac28e8833d030451df0cc211f1b22bc0c0bdfc11601d3bbb0628ad086e970e446df77a06e1ebdbd44aa70bdde73f10e3f4ac3508fb347b3708a3e6463fcb1e557f5f1844033d0e0cf03abd1bc411f05b835f7a9f737f0427c266cf20dae30a6b6ba843c04a6d106b212f203a102d46c2f5995f402c650211a15aad6c0b90c2ef9e655c4f22daa327010ab6dd33882de99ac551a244152fdb667a5750dddf1b4403b57f80a410bb0244964f3283d80927fe081754f8d717806715678cd34c4a69678d418cd309eba9648bdae5530364bdfd1f4cb115837022b404a4ce325d4f1e6c1aa00ef46210078983d4208abe3c10e08dc4442dc64a573dad19a0fcd4170877477daef640dbb69da8605c1c26a4f299491ca9f9c7d698c96f79b46d403cdd4c40cf190e05947f4ec34156702f33205aff4440c2dfc706d12f782567192ffc9375d6f58c89dc1e3e1bc46a79531a7071786580fea93a1bd5c86a7924409ce34a6a10336a1b2b474a47f5c5bd0122807b02149d444e1d884d6b6dc78011a421859e637bd833402fa7308885fe4d3d37c3fafc56efcf7834f1c902fb9722762640239f9e1a84b585a2ce020c88cb793288be7da21c39565f4bdabb0e840987884607a272f860178069faba6b10c3f2f19f0031ce578ca0bcaf440a6702caa9736010b6c3292328970b9af0860e84a594e83b86d23dc776c8f138d793658328fae6c0009577fd2ce7ec04d9c4992e20d2c98500b9c188b7ec00f6d89b4118df2f6a2054576ad42b3b104e3732e5cd72a9137e7c1b1091b92dc0d5c0b5be43616b0faa4b29f54a75a574d0900c59006e4537d52f32041ede0d629f7bd836c05e57234b53654943aa96fe98065d2d1f3d9330d7bd7abb29401434995867ca4cdbd4ea06c45d9be73b013cceff98c839b332212be42c778e43d565c62a8500d74c77272991a10b90c5cdc8269b85b2dbd647ab0288789d529742090b8fcf055882573e0de2326549006b3c41a5a8035139f2232f006bd0324b5f2121b0eac0204e276b7fff81a43fcb67a107b972fe15e4364e4fb10c0a25e85ba3a30a22109b677d69c5dd49c544d6b38a643b1588e761d55845af434f29bd6558164a0457ed09e862484dd8e4787b1896ba1969920b01bd8050d1dbd0974a7fe8db024ba93dd67f4c71c9afb15c14b37846d092926c566a95ba9a192094cfbc2dfbdc121f7d1ac480e9b369959cd65a226616809ed3cf965c71a67b94546f13d2ad0f8338371c32b44b29b691287001781291aa1c396f137a346129596fc21b1680c70acb870624ebd81060369c32d6cb52f7a64c8f52efc5d654db11a2556faaed881bcdd9d8201683b9ca81a990f2d67c01a82da1091d88363d632794045335d815c84951ff23407686e329a0514287338190a4aa2eff1944139e71e22ba53f46c6ad99d2ddb60f06253af00233ae5bda1b8318520f6c9ea325b222dc6702a318412129d3bd7fc0ea0b118d05504ab2d56d83d81ae325c62f088b7e6bc9808c066f0099707104fc054830dd198435bef164802bfc1a20cf668cd305700283a94158e3916874011a85aee823525cda5f36882f0d95b30eb0ad1ded007433926c191086b36a10b53d280133ee2c8e8e0c622247e2b35f80d4f1cc00cba035084be9f12180459ace1e0d08c23a32083fff556d80be030da43409f5a832e0d8746e40038d0da2a4616e2c80449a26c70624d59d18440044f521801f37decd2f00deaf647bdf00f7e0b14118352153dc0162e142336301a4daf4786f101d75b86fc045d99541d4e5756e10b3616766401ac05b8398ea5faf00f9b6663383d84df33783a8cbeea141980adf7d015ef8673f00ce62addb14bf54b3b963109bc5bdfa163754b2cb24b4aed3e9b9416cafa35b03a429fe1984c15aaa604e99bb62c0197964408e437da952e6be5c1a84bdbea2a2ebdeb42d0dc2b6dcbc36400ce8d62046504f0563a1af07cc39df8cdc3d18841db4fa6910c6e6fa8e4174f6997a5fb7b39b63038e1a7d03920dee18301b34d66b49525d197033a292ea22240c925f10ddb05e19e01fd308e2dea399f50c781afa075018623df5ab81a35b83b0e8e71303a24c8606d1a6bb9a4072218d32031e5c9e19c4f6baab49883e5dfd7663107d3b5e3240e6fcc82082c01fae0c780e9518c49cab340af129a537ef0608f6ab60bae6d0a6e53701fda941b45804b5fe8218c9a1e5da01c26f375f0cd00faa0da272cbea0692c9d5914e7d31ae7533124f447e0187c44f83701fef8f0c62f768de0c627cac3606716e189f0970d0dcd0976a5d1f3f19c428bc583388ea7fbf1b20593610c0c4bf1d1ae0a367e51f22f7512fcf0c625bd3eea16704f56b6310be8b6f362dbf2bf8d9358851f8b3671061054d6bc035d8a580f2595c199077850d67c88d77bd5c1aa021a27e5122da8f3503e26099fb4365b9db5e3108037e3232889e5b3a370877e9fc9f410ced35d545f2e24b9900aa09857a5fd7e87799415c81bfcd0c4898ac8e92e4f2c98f412c1757aa0b814bd5e73740efd676770c18967702cc0637a1041f4e970d7815cf12ac6704edd31f2002f1de80004c154cf9d59735b4a5f7b9b16510e3f4fac92096f1834a80fbfd49631075b97a33c0b3393588d3da35cbd650b6e5da8b01a959570da26f57d70c88767932405ffb5080cabdd70651b96f36bea195053f0d688f7f0644869606b16cbd1c0bb0599cbc19f02057538c80a156a6f59080a164383620d7e29700072bf76d837af6264b9f25981e7e0c6256fe140684bcfb23924faa0ca26f3de82477fa59192016a5ba7005dededd1b84a1b8be6410bee0477fe980c7f89a2f0a4bbabc308835e8656e102beeb65618b43bdaed3d03920fd06219d67832cf0408b13a5e35886e38a03d3249a6caa6cb94b46c7a6f108eeef7cc204c85e74d405fb1d6370651d2ad5600efc66e66c0dd3c5b418669dd9c3d1b84159c30c632ece4aabe32e05d92ff8329f64a9b669944893e0cb8e64805905b7fde00e832f6fec720ee3d76c60264507ed347e4849c1d1a20987b6410a7f9f19600b1b44f1c13320eabe991aa5f220c7fc508ca460a9c7e1120ba749f23712655d127d5562f52c72a29fa1fc921065aa68bc3d73701bee3606c80b231ab65a6b4227b1b06716abc1e18e088d815c0e3fcc42e964da5a7a49e43bba3be67f0cbf15f8f4e0dc2fb355103cdf0b19d304d15f1dfdc1e1bf03c8c2654cadcf6702080bf70eb4800c5fa5b7e36e75c59dd140661187dce05c25393ac635d28216e7df120a044b47b02bcd25b639ce63a02261301dc94072cf4393abdcde3930081077211e439dee2c32b03f47298d93927ada6566d497b97d4b7025938ddb63147e50a4fb7d5a69c709afa508089fcb62d80c37df5c28049a82664c349be550e368ba4d27f483c7c5bdda083c4deb500abf6ecd82046d0ea5800a7ec0396638eef33196f1af0e6ec53803977f021c085ee0a0b6c3e43c46b95f5b4e0deb469180e059a6ecdcb8d00127f0dbd5f606dd5275706b1a01c313d8a428a3a4381225aaca24d0b49b8bd9f08e0955c627c14a361ec1edf584a0ece6f6e05a2b6d5daa7401e76f25a6540c82a1d55d4ba5dd9302067ac3e520fc9fac78252206b95945f027974c313b3b2206cad5dc904c291d9ee71162bb8386c8f307a0b124bb447a541aceb23466149be9364cef428b9176b8e3e0448eefbf4295012488e97a51cc402dbee32e84a1ee634371b027847875b06e133a83705484ff08fca9539a927be1941a56cdcfe85409f9707854048caa47dbae12fdded8d00023a1b8cc29207a8c95ced3162560e370d62c05c30824add586de93f10bfa90ef4b3359969a7fa8f2656ed74bc2fc08b90db2701a903b115c87ddcccd60ca2a3def60422b342f2c43e57922e2af9c77aba40d1c8971381483ed036cb06c8e0fb23a3b8df4f39be8d7a11cf9f6674e5a88fd73a65568e86a318961b51d25e1fcba0dda90072761d9e0174f6e008d873ae819515800430e21df02f88f932fe0384dfbe18c4327e300348ef62f7d300899d0f03ce2fef06a8cd2f03241ebe7167806d390228c668656e80b6fe1540b1f893330384ae338328c771029087241248ff0274cff70d628a4d4e0c50d41918c4ae7e1f5dd91bc899717f6110e50801e15f10aeceba14c0ca79d17fd8275d1ba030b464401ccab501aeaccc20ecd3c35580d470fa1f06d18407ef06ac96bb06c4a0d1fb0adf4fc67b067178bfbd1160f9dcd2972a387f6fc58036ed1b70283a04c8cd707f6610479efd6b83189657a9410c4baccf0e9082fc5340a12b43005e85a4981b70abb161107b540808ff8208acff58364017ff0ba068fd26374021e4d520fc0eafab06313ece1e0430d0366706b1471d6838288b48c45cfd0204b707067118d9d490c2ab509df83f7065e5fa8e9124431a83702185ced52f2087dd9b00bead15162545da279bdb0671062aaf0cb84d3834405444ed217b6c7bc3800c75d706e1eadcbf3788439116033b9827b941cccad5738328d8766210637daf12c01ebbf677605b6e1c00f484287d3620d67acb20b6b5a3c4202c030f4b650bdf56132a7029c4f77e41ecb7477383b0fa8ac420fc300f2a07164a7af707a25f7a7d83982f956636225ef5e7be01aa2b3706b1e45c7f18c4d96377641046cd3f8df5999effd0a6f605ef0d0c22b8f67bcd206a7bf3f71f310a3f2e0c6214e20a5f0046e1d1b901c246fe082771dc3fbda1dc0ce99341ac30ea067b8b0ff60ce2e8f57561107dfb990850db4897bd005a7157ff19840df3b46d40e2e6b941f4ed4a29c0b13a53d19d817dd320aa7ff761101fd95c312005c683808e807383d86f5fe97d45c9d79148e117c40a73901884d9f3a5cae13e6eb2278398a6f35783a8dcf93a40c96c7ff60d62817ddb36088b6df35d80cede7e3040a07e07a08bc38d6783e86c9c2a1d4093e9d5201ae8f8ef3f6246ed3e1a908de0dd802cbbfa0fadfc17f706ec516706b1e25e2c1b447bbcaaa374025ebf320873636d26a000ffa941ecd9f8d87a92e34fd73e0c6268f7d41ed2408ce0eb5f80ebe6c1209c19915eed17c4aa7dc362207dfefa3e338885ed4d9523f17bbacbd668d19962c7200c018f53a5755f393788556af9544069dde70651b993678398b79f1706d195477706316f5b3590f213aebe1b7053b46210d638678f0e44efcffb02c89fdcfd18a0f5cb9e3d5472acef6f83d84eee730374bef70dc28930d76cc0fb55f7ff409c0927ef06319233760fc5d1d7e78706d162677fff1196c13c31200db11ac8f11f7b06b4a9063fe1b7358129bda1f28ae64b06718edad4d09e2af8493fcb8653a56a53a5051832e8323c6849efc400458c5280d3ebd1930005db1590e1dcfe13a00965c14ac13f799919843b6ccef4c888cca81f960ca2b307ec7399c22cf6f5b3f2c3ecb3ad6518acb58b2e5ff009734ec1e8f5d3bb41fcca492e8057416ba142cd9b84f99229e5d4eb95414cf5e5378338ab1f6249679c09dbd59901eb4765103be1f25040aa3c6c7c592565f4b941b4fac9ba41f4fe86be548ebb4d7a3f5332a8864998599df0558057143214156a9e1c7e1ac47efbba2dc0907a7d3708d7ded185000adcab2ce3d914c70ce151bd4c224d443374204ef35bfa0e49eb9d6402acda5f8706518eef5d030c3476f51ca3a6c25fd801d277fe0194d1df0c62af2c46020c7e2e317af238d717cc5b67d93dbf31085bfbe5ce803126c0892f1d9e1b84d36d9c09b0ef7f32b473067f1dcfb27e0129633e04882cd7c12ae70898f64706889b3081149e5dbfbe0af084e8809ecb497f93aead09508ee51703748cf41f9c929243d59688bb14c7ff02c89fac5677fe4aa6585e0fa360c7ecfb39a9269be989001787af2f06b1efdf304e73a502fb9e0b704dfa7c6e40ee05561889ed37da4e72e939366c5a8554bd4e2e0dc254386f01c4d2a66b3461819b321db1d2150472a57bcb028ce4c31f81f0163747ac0e059221ed0e6d5a1434f26cc52016b643b6c6a21c7021931bc4cfeeaa1c3ca84b5e7b02f4cbce83418cb199eaa2bca2fb0cfea296ea4a6a10bfd2ee0a1017ac315610b29a1293b700f8b5d755176f8db9414c8f4fb5986e9bb66b8188c64e4e198505b74d4d333108fbe35825c5e39caeaa91670332069f0aa0bf7ec8025b2ea1a9b2ce26be18ea31f7af59e84b126db4847bf4ca8124db8f0d0849fc16503ee02b83e86c625916a08846ded3479483fb405f3a546cf19e41ac1f372b02643fd6a9b1ccb869beda3088daeee8239986c3b241f4dc092d56b279a65ca4f6a4259fae1d1a44bf3c9e0a846679325d1540b98548a65e39d297aab648c727afacda96a559de17403fe8e041a024ca441fa9a34d9b7f5b06e436be1628518c65fd2895156163c7200e23fffefe03699b278112a02f9d96a82432e83a2196589468f5518fccc5978900a1d5cdab40a8e1b40f8f0631b40b6a3bea87967c5b31604603bce75c2ef546a500cbd6a81a8563e684bead88fd6a37a22bfb7db9d4f04bf59d7677656c1005dbb905381a7b6e10d5df3932886ed83e31e0c9dd106057f89a41d4963bbe0e44c1d6760d625d4ff51f96c7b93388d3ebfaaa419c0923e5c32f08f36b53c04931370d624d5e1f1bc470383807e895dee6a6416c272b3f066127136bddff53b2393708033e1ec3fd02968bd85ffa8ed7deda3740d9e7de002df9558318637561c0f3527da9140fe6f70688edaf1bf052273108bbf0ed4d405eb81b806348c606c4c2cd0db0fa8e0d229e2e64cf16404f653f7e0cd054991a90daf9c4200a76ae9f25eca4fa7902e098a9b86ee9409c813e0e018ac666c5ed4038a9f7d51e7ae67a766a10adfeb66b8080ced88016db3788a56f2260cf7766c0d3d04d83304743d4ec17e0c8bc338803ef9821254777fd746880abe2c620ace0b74b0356ba06205745fe07a24d5f2e0cc20c8c8cc11d20a6b72c01f25dfcb4065197fd3f10bdcf1ed597ca7bba61c0d963a3364096e6ce8048377514d760753ce9fe05f11fa71706e44a7b14c0a25f7a00e8d8c4bedf8130035f5a033c685f0648e92706d12f578d41b87eaf3492e566f87930e0cae6d620fa65a730205443ff21cff74e6d803f59e54041b72124a0af18e7e4626010cbc5c3a501eaea1b0608f9f83b388c1c6706312baf7a06616c8e355f78d45b7d333d860870d59f5706281d3d1b8429f97d6a1076d0fbab003d777169101100833b8318741fd4c531cee5cc20c6d8f9df7f44573e9e1bc49c3bfb36885d8cdd740188aac8de0ca2e75e6920f9b5ab78c2fc0bb85db936081bf7a26f402c4b6a8068e6a30021ab78361780e34acee0b7e7bbd833c0f33d3488065a4b0c62afc4b4ee2bb4ba39ba11a04db7d59543ba72b530e075be9a90d36b73b865807e108bb4c45eeaed4d03c44dce0c701f0f04d881b6fa06d162db1706385459f9e5e84e57c706b1dfdebf19f0d8e94380bebd5c3288da3e5f1bc4267ecbf450147473be6fc055c9b2413410e11e1de0c8530ac82da76e90dee79e1a594aade3038318b838543b1013f953d3034d8476a2da8e582ddf1b0156dcc9cc20cce2957583287aa68e5266c9831140aeac831303beb41560de3e6a4629d1f99abe035756ca357a07e2bae566cb20c6c7ab560756ede420318831367b368883d5f1ab41b4e99101c7d97d3521f98192ab178318fce3358370771ca83dec1fbb17e064b1abdab26aa7fb7f2096cfaf470342022e0dc82f36328885fe5c5d494873f5b36110279cb51500ee8eea6b6010835f8bf490ada07ebf33409aa22780678218f87ec6329e4c760de204bc75254057aeae1ba0aa716dc08bd4be40f82eaa175a3d93c17af86a10bdaf4d2b9316e3cf4800cfd5cf9141d863c75b02831874776ce2f25a37d72702ccfd902cfb05310a4f5452f214559170ec17c4deb0fe07e26a6045751910d17dbf6210dbda35ab4326e9c5c72b8328d8277dab24b2edddb601fa96aa3e9926d2a34b8318fcc987411c0179a4d8b7f7fcf29f4134f235ab4326d9c48d430106dd0b532c936df95c1b20847e691003f754ffa134d56baa0b4b4eb3746210e3e3504da8dcb532f2b24a1973d484ac30ed2e470d09b534cfdf0631c67899b20031f7db4de66d2655c0fec4002fbe4672ab41a7f6d0dbb7c11f401273df207ce3abeca6d954d1d8ff0ca2b35fd5a653e51ad0cf4e71860e58e932a9f1bdab727a84763716202451cb96a4d2eb0da647de93a8c8d020b6a4867365aebb79dc1d7dbbc2437d6e01065c40f468b19c2bf08457477d4ba5e3bb5800e95dbc198413e19daecc75165bbb142098747bdb203aeaeb40801b891d9a50eaea69efc580dca46702b8b22ef41da514caf60528e9139330e70c94bcaab624f84caf54b04a4942d5a6ca6078c7dccff5a07f591f6906b16acb6592233499ccbf04981ef7df06dcf161e4e5b2f997260651741e5e2c409f5baf5d03de8c603ae55af95ffb0238ed4fe9ca42417abcb358007c5b39952bfa197924d82cacaecee5f402e0713e9e08907a73b80318125dca2d60bfc0c86bb4e24a21a43ea6fa857240b4fa0e4941f1cab70331c66ec602114bdbe0c6ee17d841e92ae3a3c0e7d80c18fc459d876d59b25c14f80b93390b4a81e2524bf06407627c0cb70d628a6d8d04f06b1352d42fa62cd23c765a00ee3de4b92ab8284b09b1ea404cc2848e2a97d85ff25701b2976ef02b658f9ca0bc5ee840546e9fb3474972dfe67ac700eb02b3a7240953fa732940579e52f492999d2e1f0930f865f595c39c9ce4d4454eeae4fd580085109efe2d40c89c57f27f2c002760152c1f90ce5405cb4944fba5ff2818daf98b00dee2523f4b8ed47ac6082a79dcd38c5a8170b9a66baadc88cebea2a34add7af56a83f895e3250372c6ae0b10c0bdaf26ac08e02efe40cca855b5584d9b1eaaa44df8c6931b56feb245f4eef84400197c1ee5f54b5687f6312e643abf6e6cf36b7706c88e50fd518fe0eb876d811189dfe9db6ea2fefe47f32ea098ef1783982f1575190d508abf67468dd0d66fab1d811192fecf0631f8ef191fa33c5219b7950a9647547872ca82321a11e0ff49038d2aaa7f121f590c6c4455772b800e78ab3b00368b76e70620dff8eaae416c056b138072a4720d36b00efcea2640195023bbcb02c849cd6bc10e44f5973f0da2607b8f06b1d21d9c01148019c99f7f01fef543831863bb270039999efe40d48568978102c96bde360dece826bc616037f6c999416c49216df30b08355f06c853c39bd50ea0d0be64100d843fb903e4b1fa3188363d7901c80ff37563c0cdc8a9419463f26010a7a4741d20a74a5919e0a4ce0da2d58f1e0cb8d0fd6710066bff0aa0e8c19d2783a85c084dfe0234ff960de228bac280b11bfbf2c58058960d031ed29706b15a12abb00078d0ca1140eab76f138358c76e3e0c10aa7d0314d2a3af0cf019fcfd47b4e9f4d5208e09137f041b66fe07629b2fd41e7274af5f19c4dc3fb83188e3ec796a10cbf8e92a408eeea26f10565fc8d1fd82b00b430ff617c4fa71aebac8d19ddf1a1010726e10952b34f8e5ff385357ea05f778c5208afe75661045bfd832e0a1e38580d4c41b03ce1eac418ed75edb3088b17e931b9001d5001763a292226ad6d4ac417663afac1bc462b0f76d102eb58b4d8338236f4c0da28156d5735a72c6c706bcf43b33c03bba6210b32172ea2c809eaaf45f0c62b57cfd3020f980be43c7a6f577037437a8ada3b157fb06e408a90d485c74651095dbbe1490b60babc31071a4eae1c28078985b036e565383e8a8e31f014a5a304d1d49fdf36810b5fd5837a0e80f0631c6b65e0d782a7b00509e6622dd3ac0fdcbc88060f4a141547fae9fc5ff516fd60661a0edb228397de7cba5418cc2f6c720a6c7c9934114fdb036201b4121808d7b730fd06ab9de1a90d072c500c187b101fa96aabef4c627b706e4c49803e454e1c8337068f5bf47033c2487028cc2cfdc2096be4bf58bf471df7383b050264f06bc19d17050b6cea79e0101fe1a5272dd1088d101de7bac1ab05c7c19f0566300603dadbe1f0ca2e8fb4f06314dfb2b06b13a3cf50d7898a3561f112f359e1920ea8e41228f73337e3288a2effc18f054451d552965aeff8300999b3f1076f25cc39277d1d560436080820ccb96c3a24f360c62c9c17ddc01a28fd5ea4a313dd4dc979137cf0d78b1bc6d10471e5e9574208e91f7fe0e1c224b4f06d8301a85f22a947d83a8cbc3b7417ce4df914118df071aa752af3c593288a13dae0cc275b3a949a875fdecd520ee70f6d70ca25ff61e0c48a09419c45174b26d1097d3739574cad9b4a706c23fd6eefe18c461e4ebcd808717ea17b682768fe52223eea2e5954d07c8c47a6b80e8ee8d41f4dcda9601b98dd9c5ecd7beab0ca2fa373d8338bf7cff7d84841f6f02daf7370d62d5be9c0b702dd8c710c870dc253203ede83e3b37205463c920360b241006ca2bdaecb2d0674a3db1d508e0b77cde358825f8961537c3c66df73e0ca2e89197b8038a329908445d925d7a5f51e1c9c1ab4094b45a57f5b301c6043b50a6dc0b933b03366016144585a75b33038ea2aa1c9276f544bf424ee1ea8e1995f1a8b73e2a0ca89cc6074b4e7b3f15505e400d3ad9852753039eebeb3f1a1d680a03b211a82b99d9ed3ecb78a6e3dbdd9100fbcbf348802c9933be23c7d7d7228ad881f8d2d53b0116c7313d972b5672c08cca7919db4e7e04f016f37e7fa0b0e8e6f6c4204e27d59e00ab2537451d20c105e3341f4adbf61920dd8dc99a417859aef4a53c736d375a8370bb54eb06d11e7d7fe9307e655f3fab97b1fb85411824674f020c7e7c1783bc2095f197aa5fe283c56136c8476af5a100dff1f863808c828072c77daae89c1b92fdbe41cc5b9ec92f00322cc8050d72225592dbc2208ccda75280951f918405201727a277835c6e86d32b83187448db2c00b5add60ce2820a05bb0e2052cdca9f332c9399c6c74cf93c13013cbdf26ee464954d9e58a40be4e8d2534ee205e7fd54b6b67382be8f0558e99eef058871bedc1108cd8cf6909216bac4a82f0dc21bf8c1ba5ec8b3d9303ee4c64eb8e2ec407c84f7b70b800bfa9eb358a12766772aa9626989b85b00faf693f1e188eee34701748c5ac647810331d92a05b89120347250b47476db3360c5559bb6e183ad52467231cdc3ecd951132ae53652a58b93393d873247975d2d6cfe0d0c92926d2ded5f0a205e71c6382dd9b4521ed20f2463ddb418ace5802fed5152e5f36cf7318cca4ce1c87301c505d384a5d2eedeab60c849a5ed9e013d87a554164452cb1c75e0b41c886511c1e8cdc81fc1d39bd1c8e528b4a09315fd2c19d9d24755aee24b0b55bf0a3d9436991b2091e18f8443b519b1bf940daa1a672c6c654b20d7d1b6003701c58d004ed927b69372869ef401e374b4541095c50ed4c5a7ff7e4779264048f3436e80b798e5a24301de0c629cbe51393b87eff51d43be43bbc7280b077372a28fe445ec1e7718cea332cad1c823306ab87fa9ae0446e1c93b8da20ffb9ca2dbdd1a802642cb1bcda103a7914eeb00fed36f80bcc5cb5f804a4a25d706313ee63380eeb3d70e0ca25fb880183a9fe7566d80807001d0228daac65032d6c9f9870156df130003beaa730314b8ef0de2dc703e00c8171cb99e7f01e7864783e8cacd8941147d1ed6c550eee3aa7a37883579f60f204bfaf3d080ad606240c1a8cba04f3978a438b42f1801e10ec426deff0448cc637b6210d57fdc3440aaa36710a782a51420efc6eeab41183507438370201eaf19f040e8de8084520706b1698df42b8aa75b5a33e0c1f6d4205698b3638328e94cff21a36672608098e9b301e94dd484b91ef4333d1ce3bc7b6410e3747fcb00799c6f83583f7a6a42de78d728b70c077826aaf50f8338140d5f0c48abfa66105bd27d25802959aae7e4bbf8b933886e581a18c4b1ba38322032746610bbc77a6a40721b7d87bcc5f7a706b16a4fa606bc3afa3440a5b911e0b8323f3740a658434a8220a7070664749c1844cf4d7f0c50036e053825bdaf0374d440bd61a84c9bf56e6110e75bf7ad9cc3f99d01a288eb0678263482f4729ab3580770ff6856e233a8d74e0ca2a4f36f0382c08f0c506a7d33887e290706a48954e5e43efe9a19847d8a10d8d05ad09f7b0671027ed09cd3ab569e870ded3ede690cd0ed393620c27d5f40f2d18901fe757a4e21cd0912e51de0f5f5b3416cf3b30f010e12e98b01e91a58d7ed3e1e1f19a0d4fa61800eebd82076c2873301ba12f5eca1749c53a2903a8048e4b3018f9c3383e8285ea50d8703858bbd1a447b1c35061cbd7e0c6258125036944f3a45086c288f73f536358829f6b4651067c2e733036248de0c884f1e0a7077b2f96a1073ee5895d322fd353460245f1ae0fceb19f082aa35c0dba3aeb498c71f885dfda267c005c4a1012b4c2aa0f1a1a2e7648841f270281774bd7b68c05df48941d485c7c51d885178ab82e971f17e6580c0b43a5b777c5b8f0671d498ad19c4c6f7f86c40c68b2f01e2713fae0dc22e9c6aac971c1388421a3a2cba7c3320a07dcd206c7e5e2e2d001b5ff168c0bb794d643db7c55d3ab4bac7e4c78087d29f066499d937882d1a39ba0e7004f447882f3cc330b24ffaf0cb0001bf478338011f68acd74abe786910de40b44c3a106e069e0e0fe5b5ae39797620aabf776980529a0a26658ec91f2044a23688c1ff9d1a846f6b5b6ba12cd8bddc000de6238338358ed5517a053eee1970e7897d6a27f5feb3413887bffa06c88e682d24e2aed5263ec4a596ecfa239afb6b06b15aa22e361c2addcbf4ce20e6ede1b541b4c7c78e412c068f7d038437f98e4c863327e0a19dd4c35b0322cc1e0470ee0ce8cacc2f641e0c629a56f706a8f2fc33886189dfb27baa11251d321ca438bd1848066c7c4f02042caf6c08109733bb1288c8aeeaf902807bb04185662817743bf93088d572a2eacbe38ccaea02e0513cc674ca10ce6b09dfef0062ea9f028ab57e3520dd0beb7a962b655dcf207c171f7d83389adfaae88a99785d1260d95a558bb138a6efff0c7813a046569ce335c666264dfbfe9e41ecfbf70cfeac92321867c20c7f6185e0d4502ee8e6e75c009dbcd7118099ddeea81c38ffd2496910dbfcb5c6986eef67ea1709a37da891e5c923c2bddbe6a2c5d00e1b4ad8393d5b13d003f6738370ba5dd362b96f9a1f0490931a33f77365ddb9b932088708b7a20b803841726710bfa26d5e991493238cde9c234fbbbd254048f3cebb01e74a7d84e34a7ba872945c843c333e1c7dccdb84612eb1a8a78100b780cfef0651b07595b4eae384648bceb99e6c1103ea40ac634feb065cfb5406b1236faa1b10014cee9984b94cfcc7b10151e117027825e533c85971531c880b403465d908e0b73c616fc811df4b6e73010c8113b5fa0c81e917369c82aca149c392a3b48829c93a3a10bd9fb018147d5dc82c0be0845c5b3788b06842463af931a4f419744536881370832d5520b450df6d0a10e48beaecb02842d73ab955c1243faf65bc90d94342a9a1629c536eab87050fb79a76db2076a05c7519458ec3e45b05238635916fcbfe64597d055758b5fab6c02bd9a43d01e282478ce48227bb2957360b408ec3834d03e2d7b70c089c2e04e22d4f8af77c5870e39dbceb3b9499f64e7d3bc3eae325e802442871c365cac29244eb26dd1760c09c609094ba4d20bca103640d3d1660582277bab035d92c506d1a96bac24213b203f12b5af9cb01aae637a501990454b06124a74896986265c68cba591720ebdf3e1d55a231532108b200458cd389beb408f771baa5ffa8c2d1dd94fa8eaae472694b803480050b6c59872f387d54c1c85a5e11cb322cdb92eb27368b724ad4efe38e40040a2727fa8f19aedf8ab1dea974ff7e29c1711d88bd0121b00ec48e7c49d13bf58e5f90e83b067167910c18b85d59e3238702c42737cf06314e53fa659411d27c4fd1473971d2bb1b068423b3258d0a6a7b1acb5667e4c4771cbf03147583eb267328311177994534c6db0661afef6d019ca36cc9202c2584c032eb49afee19843dc67d43e6e8e3b57d83982f68fc778097f5170099e7ab1b0631e7c67f802788fa59e5492418bd03d184ed8a0117a995417814916dcefea28fef0d480dff6910bbfa794cc2ec2f3ef9dc20aa9f4c0d628a8de8287b9c0fe600a5343cb833885fd9a22e037c17557a6010bf926e1be064fa368846ae5b805c152c4a991316bead1b10f3dd33402c4a9593dfe1626a100563c5ed400c87935d837088103193c9395c5f6d19109f5c1ac428c462cb24fd5c65ab021cf03ef4a58584e2f60c08c05c3288fd65ab358853d2a9da03b3b8ba4f0c62379dd40638ffee0de208f8390648c3fde1d480c4013d83f0c0ef3c029884c9c9ad012379d9208a8e3f3993eb37999c1ac41e953c1bc439aa1d198477635f1da50891e51f0316fa7f060cfe55038e804c42eb5d7cf50c6285b95835203fa16aab2c33ebb5014125fe0edc94c32f807cc197db06640e2c0d50475e36887e595e03e872e9363588baeca91c7a2c99ac0860d454af00ced929ea511d8892de9f1810d47a60102368a76f10dbda2e6bb21dbb1f9706b1675fcc0d388b7d1ac46c4041770138ad8da9dc5f3ebe7b83b0c6375e0d88e9fd32e025977e45d214b37783f06d61b165f2f4a638993a104b0e92871d884177acbae8e167796310b3e19d716ae189c70b83b0a4793bdb81e83952d76476dbae65029ce66f5f0d9008f577107ecbd3bf6cc8cd593dff3188065a490dc2d8ac3f0d629b77132a79ebed9b418c420e890bc0cdfb5b6210f6d89a7ed6b1c599410ca99b258338f06e9d181025af16cb9448f2cd20062e32f899a38fa76a42a914ed8e0cc2dabaad0d788cbf6a10837febc9806e480df0c0670664da548b298f371ee7cccee1c19301f1b8630302dad5841c78ebe20320fdb1935783d8a3ae6f0d0858ce0518967b3303a28f6b833014913fc914b0dcdc3e1a44f5b3c220aa7fef8fd0fbeb9f0631d5dfd909156c9c929ba303f11fe7c70631604ed551bc0869c689410cfe2f35a124fdbfef0d90503933880505c1cb0e90f7ad3588656bc6026bb7edeebe419474be6510e7a86fb50772c9ed5c739f753dedbd1bc4b9415bd2503a68377d035e736846297278ffcc20a6fa4025c5299b0c570d62141e1830829658b59da0eff0c520969c8b3b03d210ab6ff5dee3e9d900e19a3383181fef543f5368e4e9d020fe63b86b10c7c8c35680857ec98057ad3c72ce14179c22e6d101b4f5cf0d50d37a3120d1f98e0043eaeccc204ef31ada995e842c5d1bc490aa970ca22ebc27ec40ec0ddf570016fa8637ef1d88f6d87834e056745d00dd8d9e3e427843b2445766bad37a3e3488818be24196f1a0bff9772cc0bbb5836701bc1b4bb9c080ad9115379396da516e10f3654fdf81ca6af5a3ae9443d51f19c9c1fc691027cfbb3d011c2243b5188662ba8ed9a320df969c071d88713a3812c03d488ac72c435dac795c16e0c2ee45c3418935fb9b02d22dbe36c032d0f8e0a4d52288da81180e4f6383e8b9cb1b83988477ea2884c0eafeba412c28036a9bfb821b6322d7398a67bf5d4fc6f239da1720e0709bb5d04a14481d678e2dde79314042654340337b47a04f23331b720e67cdecc280e80e4672aeec94037a3fd72949b676ceebc9a69a1884abe262cf005d853f10e6c60ccb31e79494f0be21937338412eb90331d59fd9807365c8e5f26001d8a31079cb723d2e2ed584bc166c9e19b879a328e8c6802846064cce2bbd1635be05e09eb0a1b37369106dde0ae0ea7c573728eeb3bf24809ec129df6159090dba6289e73f3356eda2174dd84c590bed83252ff102e01e443d3b2b149595e82388ee26f754bfc0b86ada2d01a23ab59d148badef17bc635d140517ba238e3c45a994b9fa0f990a4521408cf3954aca369f96aa9c922f92923d2b6ab9f5e9ca421bf0c196415c4f92f76d0172dc3f586c8532b027d706640b678b2e4877db9cd0ea8ac74d77387a2dea16bfc293cc05885f4912067fc98b9074f548008576824a32c7e3668cd372103ec7040d91ac247f764bf85ca68c7de9d6ae00e2157bfa48260f2b6d5ae65a93d991cb4205bb1540aae388262c4b8935b02895baf126e35607e23bea1d0182d18f59834a24ca93a31d833878efd12f658b4cf13393b0e4cea219cd04a4d3cb4e3842a0be29287a27fffb0b7ab469a7c4fafbb3d32d8170ca5697a706b125911620eb025f7f3f4212a6acf34afffe47a58f64fac8a74038325bc2d53b10a390b4991d20801b7b7d9413b1abb5705448b798b93faa46b1f48d3003477504d73623fa76341dc5227d1805cbad4a8c6d993b7416e1cd5cced09697071dc074d27768bfdddc3088557bbc6310bb07596573a7ce5bdb31885dcc5f2a5767950324e176fc6d10b6c3f6990191902940d29c9b7b06e8076d19f0deb435881945ca98dcc9f50e63c9c9edd9dcf83488b59017761d88ede4621dd053b4ed9b41d830bc7bed0089470e0d629bdfdd04c8198a4457ae68db8a0cec1d4085f75a0083756708906dc9554907a2a45fa7029c807fe8fd81b288207ad78198519c703a10b6656f15904937f09f41b4fa4f65102d86c2612e79e00655d10e8461b4bc0c906ac252658038c1b54114fdf5ef23b137dcbd18c49e4dd6f20e448b9df93f903a4e270045db3e9e18f05cee0fc4a2f431372052363588f5832893dca9f39ad62076e4b7cc20eab2b76a10e383cb947cc0d658ddea3b9497f8e1c580ba5c09f00a6bf60a50bcd4d6d420fee33e3588e5e27262803ab2064c2d07d1ab41d8b8af6303c490870631a356358274682e0e0da21c3f3706bc9dad0d7840a6de9733b49c1a2057786fc083ed03031c77c7008ec44db26e802e6d69401a8d6f017c4a1b438328e9a74aaab0d7dd0703da74d3200297fe3182ecfbbcfa312063ce8641147dfdd2000df7478398956c7c1d880bbbeb3b8016a5dbc62086f6e69601adfe661006fce4ef238854b3383acaf5f1d280e8d217837032bdaf19b0e26e0ae022383b30f8cfd4796cb5ae2d51f463d4f7c041a9c921270306937a0a363967befecad45c8bfb4eebcd6ba4ad1dab6a5720df271346c6d0e4f0db2084bccbcc80142aea0f6c9f2d86880520f5c095418c4b796d105ebf645ec85c90eee7cc0037cf7783d06f9fd563f23f5d7d3288cfbfff30885d0a5fb8ccfea71b7f20acc51494ca64c86c2abf85eb7c427617201af6a63e95219344c6990c993561040b408a8c3783e80f42aa321b3209b5ef00b2f6fabb414ccb737dadae9fb65283d8b6defe00d7604b06b1e69e1f0c62cdd53f0671b19c7344dba9f5df8901daebcc20fae3a76f406978f5874a91ee5c18106acf521f95cc314ac62c408cede1b901e52ab5c4306654cb9541187657d4746dc1c71b0624347c3588d14fd563ca7573fe61809d8eed531eaacded8b418cedcea7412c64496cce9a80a7ca02c409b4a62eac4901f9a255a95c599f4f06641a38330851e13d31c0fa75674039f50703c656b350c6d0f7a1410c54be6b10f3f4425fdb6af26b65139f5d9fbd1bc422dc3d308809b3a76750acb425bd4526db673dbc330837cf376d4a983a7b63f642b98ab6af9c2f72f36cf63303324fa60688d6f70624047915e07c599a0950606b1919578ea0ad24e914d34d7bd818448f7dff08e0c5f88f6f91cdb17e3a302062795700cfe13b3d839dae45f35c8078c6dea3005b30e9d6178042817aadafc02f0d62f2df5f187075c44039b10051f19953eadee506a1565f3c19707baf8762ed69a6acec5459ac2839953961eefdb5c09030244485b4922fdc8b415c83bdb1e652e2813a51466088e3a3fa0339a8d51e9422f6b4a45b5f80d8b6ee3704b89ddde48c52fdb91e59ce1620e658aa0983da543d3f1ac421be6b80d1edfdd380ab67f5077a54b74918c4b78c18fd4ca93a46b423d3552b36830e28810eab4146c89e842b59141bd2d066d95046ea7303ca8a307299c24c569605d0f79718a88ca3b13ada1648c3dbf6965ecf94a0fefad0204ef5c76583d8a4afd50e6507eaa502b89c9db2e63add3dcc2e8f3f0298c34ef40cd79b67a967331c410fcf04b0f610ae9fc901b3795c13c0ad91d2f05dbb90e9aa91410c3641688b02757124e58500be70aff702e1159e9cb1a1e4987e13699eb95cf06e7e0c62354c99743977d109d9e63b80b9f4f2d820069b70a80ee03abb4f07e5ce51b52380e56a8a0e94ab023bce601d60b7bc410aceb3c864933c7322e7b9ea6a6402589d2a463f4732689225017c69295a96e53299a406ca7ffa6310f3e3e959808a8e7b6a0725c8937bf5072188499f1d376f30746b97ca55c2efba34883f39633fcddb3087b587d7067875aa1daceca63e338815b5c784297479b0722480d322b56b1720ce28c23b168ed4f12d3ae79cca767220807b65c3ae5d8c0a120ab1f317b2e2b71f02d163d56c55202aa1f5a42515489f09518b0b400a26e48f82cac54dfe4f006fca9c755b1484fc9fb0191494104e363f0518fd17ff4296ef2581348c7f5fad4081d3a24095c7369e33618a36da519d09ccf2b01950cc36533ed8a6bc1428d93f58518b4cce310b770570d15c62a75ba427f86dd8d59541bc76c2c82d3c2e7f7fa1c9bfb08f06604a2d7ef30b66eb06319444b76465a1963e0bc44393cb5b0372fd224b951539007a4b063c437fd294216e601bcfaa25aca338d865d590bcb4d3d89472fb7de29d9e0f88386c773300e1c7ede63aa052a681158318b9af6380bcc3f68e0072e25cdd35c0d07d0a902113a5395715b36667c3209abe776d403964354c9689e3338390d79930f95f25b4990156c9381b7287fcd7a90129101e0d2859b7035020ec016fb111b23d37a0f4f783414c074a3de5caf65a0ff916677b3d181ac471b2bd6780f3c204a0a892838101b97e0550ab9be3d680e4f29b0614d9f9044825a6b4e20284d873d01844077d0e0c620ffabc31c0e2bc691052dfcd9500c68c9649678be2eb8a4134fdf9dd208661efd320d6cbc11f40607d3060a9f7013231d6f70621b1a5b7062107bdee19449f9e1c1b60a73b04e89c7bdc36e02afec5209a8e3b502ebfcf4e6705b8027b6d10eafd9966a1b4d7f9c08091fbfb0552dfbd41f43a37781d50fab54b030a156b164a595d9b1a84e4f87d638049edd6207a7da66190cfe69d3e4e46c8cf3f10538a233a57747e7dba621042cd74db80c4f02c645b2537770de27cd9783588e37536300835f24ed341bbc365cf20bee53a17c000b0cad7fe45d68f0cc86e7a6610dafc033d36429d4db29e412c42eea27359146b3cee3a200fb3c6200c4467c7025c93ce9f013231eef50da2e927ff0ca832b36710b225578bb912b3365bd70671be68993a4c1ead3197cdb1fa5a3188b3e1fed420e4b1efb1016617b514a1b77ed2b7b0b125f997412cd3c99301d95e3704488bf7cfcfc0272f63f23b087e3937a096deb20179698f0cc20eb3a1d1c7cda239d55b32b9ae6c1a5062e9c880e49d9f06d1f4c73d034cd06f02cab17b63102d7dd75be4f858ec1bc4d7de7f1ac43977f56c109ae7466110fbd8d6ab003df6f303504547eaf1e5cad4da9b1606b1a228c9be00dc7a69b0f195ecade9a1ba9059fb32a09c6965103d46b59b0508d56b55eb455a2386aadca5c08e0e0de25b3e5303ca00fefd825ce1730136c70b8e79d90babcfbe011ebb4f0621d19fb1b1c98bb17e9b1910d6f9621062b1b70b4c1535b6be5c8e8f35e1b6b96b831d7e1970573037a0a4a11e8a13566f7715a058f38b138330cb610dcc156b5e91a56801c82aaac19ea1374cb45d28aff5fbb601d7b55b06248c519f2a365287c588028ecde4d22014ef5d3614d90b13fc4f3bc0e638f93060e2ea4fe4eab5fd62101b5b3b3788c9bf5a0a300ca35b03f4064427392dd664385c80904f8ffe19c4e47fdb3608db16e1c71d2046f343ed90efd7ca9201a95bf516b256d7a33d83d03c49329ba78ad4793b31a0446c6d107e5b4f8c4b4a4ea6fae1db2014ef6336c7542998fa5b06f1f9fd4d839874af6b02983b248ea654304c76592fb24ab624475a8018fda1da81f8d5dbcc0de8b14b8350015fd4302296937d7dbef497dd7783386ff7359424d1680ff427952a6f7c1ac4b80c353f885baba77a86642982f21680fc526a98c2d46e0db8a0a27c569ee22fd56eeaa13873549f9941dc567f5c19504d4df3946bd2e6555fab1aa9ef4ccb4c859bb93a5a00b28a7244cbad3119d1b06c2839e8d4002bed96008bf0a932203483b99e9196a6c6d895ffb935b22767d24eae06061810cf0438d59fef0c22e87bcab9af84a83d7287e599d40422643a80fd638062957124b5db3b0621381fea4f0a6279266aa92c57077a8b02a65ed5634c87843cdf0b80ffa900a275b2ca899c49a4eded09c8c6a6fe5001c7d191006f196f1aa0abdf187033a28f9be3d7873b509eab76ad24a59cc289c921f2478ef4995cb4021877ee69473ec00a37a0a5b25b2604a02e40c8528fa541ec41af770291d53cc19329cfe58277c0e8775b5d881b43352ccdf021413bc933057d2f19c4898c913acfd97292960d25276f4f33f9115076534e8f1c4fea1e3553f2bc1a1037cfe8e778ed25574f0631f949cd99cb79b2b7a296b6118d9eaceb4f58ea4da23f99f116b201e7f91c6f7d49f40545867b94edee00766d0a6d2c40349d1408ddb729cda87e4132d34ae257d1cf484e8076d2cdfd18ca25e4c2028b7373b3661087f8d6b6412ca003269d7c25db310bc8c94c6bfd49165f5b8dee05222a3e19f3f9453e20ac93895b9089a21db3900bd2d0d6d77a4ba5a4ddab06d1b047266ed184adafdae0002eda88be4eb6991fc52c0d113f1d08602fc4f6992f0a57fd8273e6a90c880dc5d2f3855362fc02f56d6175fc6dc7fdbd410cc301af2da9fcd5b6ab0258f28868cfcb228de3a4570ae02b79b769105f5bf50d427fb9a3d7cb9254a5775b06d1c9dcd0e4651dcf684ae647d9f027f8f4768b216c8e4df963406879ccf56e02716d3c5d02203bb454ff29e44d5953bab79037657d760990b90307aac216c5ed758358fbf84b15b628aee9a13211acac1bc4c445e12d6c1e5cdf30200751d8c60bbb35a27b2c40ecda384e17cef789185838dfe75766100be8680580d2dce36a7101e25b885b5b00b28aee1a841c44786961e3dfe18f01799d128338f7e7af00450b1edf19c402fa7907e8a6190bfc0244c3b64f0d62dbfaae0d624f7e1803a49b92636601282b7260104af3c68f016946ff9e41b0a43e5fbe2cc7b706f8d4ec1be02ff56a10169289dea249b79f19905ebc3188b5bf3135888f9bee18c4b1b6a26fd1c4eddf1b849c4c29e3427936ebadc620843cb69c0e70f7faa9f92173faee9601eeeaf706218fdda9a5c81ff5875aaa2c9a6fcf066144c090b9003193df7b001650f5b26640e4e3d020748f8375030c775b0614d84a010aa83b7d31c0e4fa60100d5b3e34202066d320cc508ffa38b99d5c2506219eaf8f0ce20026c9ca0284cac3457b614bde5262400e80b9416c6c64d3ea00defa0f7e069263ab5f48f33cef19c484a1dcdc02c49aeb332d4703cde43d032a6fdc198476f29e1b90f75caf55d4d11a935f66b9a6fa32885e1fdc19e04eb86e80816868108b70be6a10cac8d74840a13bfa16b9022e6f1a50c8a93588d570b66110330875b603f86d95570698b29830b2e4b5db07062434fc67c0c75506e120b3a5c14e9596f7d2002d49fda1fc96bb5383d8a5ea6f83184a5294770073fa32abe12f1ef9c7203eeef0c180b57f61102da5986d07d0b476960c420cdc610b760833554317808c3a9706b13cce070621f5e9341da1563793558330668cfc503a88b4ab852c79edf5a601e5192f0ce26b4f560ce2f440705e8090c6cf354f95dff271c92024c76575a1e21ab7ae0c904f1f0d98c9df0631505f1a7d65affc3a02287be5dab241f4d8ddc0805c9d0706f12d951aa644c6c307034ef5c2209c6b77d9605d84e960d7804a8a1303aaba69bd3801c6bb412ca0870f03f25d709aca15b0d1163c525a3c6f17aa94473ec74271d1f5f0de8022a1ea5325431eef19b08ff50d3032fd01c26ddf0ce2149b682829435c9f6b0ba63c748ff4af85ac814db66310930e47ae0ed0ebd75f062119bcb23bd8e170f207426b1cd31f7616dcdd31c00ec3166c57c0f18541ccf5f1b90147e3a5410ce5c7920073fdebc7208ef93d063ba5dc5cef72598020b433bd365589fa1d83582f4f06ec747d359d7c39498a1c94b24bb5b73b06689e6f026402fff62ff00f3a783688a13c47504c951ff7517daa44e82f7d8368c73da2424a9e9aa61c1a601ed44071e7d923d6bc035477b9610b4e1d30b52f40d6c84fbda5556245763ab9f135df5383d080a76c6ca9ecdacbea3185978e6887924426cf33019e41987ca700f3f92427e8146072b8ef9e017473f6b822a023e9de8076ac1a8482b7abd7aaeefdc38f008e7e78aa14194ef13d7c258b2cc39db0c7c76594a96ef65984193b7ff3fa6910739dbbf92253cee1fe83411822a4372830b877b32c807158c255a63a236435ef0005a471b02bb23a8da57e853091717792ecab0b911c9b95546040cd4744968ca16c37f5713297260383d80cee98b8f9923cdd68a96c5bcdd38b00b1f764b15a80980e64f32c7225ba9e9d18c42f4e6706f1da553d9440a524b91620da78ce999d73cef5b45e72a5d54c5895798dd1ed8ced33c791bcf9dc17e06af16a661017541326bfcacb37648e2b72b6f164bc2240d32ff40c4ac3f7568e0d58c8970219091e99749d8012df920b0c0961deda3188b1a5c078d149bdb1d395fa05a9186a2c7945c12e55e142d3813c56d4dac0201af6c5ae5d90a33b5962eb2b4a1cfc3196170575ac9a5c6fa929f74232a0a26834b5cf0d625512a6d6016c5bdf6a98aaa77fe917ca2f757664103d46eeb0a2c4b4975008ae90975ad5470e529ac06acaf2504df2b6e1b50b53d5ef3328785a2c5a12bff814c0fcd35e19c46ac8ef0c2240f998255696f8c235df06b15e8e19db92f49e0dc11b1da061bd914108683da6b6eae134e583416c7d090bb99cf1da69286765df97c20500adb125f573695f38b203759b96fee40c305294ef1020dde3781320679f8323802c0213fd89b4f9d30a2087f6a35703a249b70168e2ed38310819866440a56d5beb9b06b14c7f9e0de2585bdf02c8d845b98652e56f92edd8b6cabf18de1b8368d87606907efb790e502d9bf575036487a901e9c60e00f263a3e443a9bae615b9c3ca3fdbd6ba417cfece8a410857a483295d82fcf9d2804493870648b04301b2485cdd01e4fa46cebf52f5c4dbf1b101618c4706b12935ea31a95e54dd29552dbc7ebd3008c931bf3388a9bdfc0788581e0364b93adb36880338793420927c6010fbfaab8092779ebf19c4303c1c197063d533888f237bd402849af0a96f51fd177c0317203e8eba1aa5b202d6e993418cdc9d9ec16a488eaf0dc22cd756067886fa1708466c5ba52c57cdcea941a880e75b06d1f475b5b455ed5a8d9c5c24a64f06245a3831e05b1e0da293d76706a1bfaca9e93315f66e0d1048f60054a9aa9727063161889d2d1508db0c0f0c42c1fb776410a758119b6369dbd6e3be417c2d89271680da1cc706d861fc0bc4e2cb7b80d204e2a8532a32b6fed93408231306e6520561aacf2b01fa83cba5d26e6be45f2fe572566f5506dc45df02e472765b18c4ee303c34886f21d34069dbd65e2b80830cf51a4b1707c7c9a6542df09a34f8a552fcf5481259cab6d53b7830086d6d363488336a6d641022cbba3e6ea4c8c76580bcd4be1a831058770e0d62831ddf1810a1fb288088dfaa4f952580f0b052c5c1eb7f5383186c2ccea54d59c5954108683bea42d9f92fce0c621fbb7e378891d3b625db56bba976a838f8f39d41fc6257534a86ff7cdf000bdaa3416c7dc48a96b26d558d468e0bff4a87d60855b419ff8138a3b0c1962e307e9b1a50bbf6c5207a6c7f6a10736cebce202ecac69ab8b8ad35471a17890a17a706d11faf770661319abc1950dcc64009fc343f947664ebde8090ff470372a72f19c40cd2f13aa2c85fbd3d3088a11c6bb06b8c4c48f4a5eaaef42ea606315094222ded1c97ab1da8e6f5bb269d32fa7d6f1a44afefe402cad5f96e1097a0b83794f2746b305594f263eb1dbc1bc455ebcec020d484e59ec0003bae26ae0a7b6ff70ca2e9ff760da82ff6691032ff9ed63e95be6b7c7b4a57fa7e3d348871a1c672e9f47cbb4706216deda70684750e0d622693c9a60354dea0cc6c99721bd9be4e0cc86eaa6728ed2a2e010b401ada7f00052bf41383981f87b901f50ace05e4b3a9d74ab4de7d3308d52b1d1ac4e47f7937c00f766010e7ede7ad806a61a983d84f7be4ea5c00dcf8fa06313f9eb60de2047a7c1650d4f3ab01dfc259e9085dbcf54bd9d89a13b5437e28f7238318ecfec0203e0ef79705088d6fec5fe07c3d54072933e9a867c0fd7e2b802a3a631b770ceff3b70036c7557d0b994a92839e01a1f6c81f2aec5df7870671514641ed0ee0e9b6776210c2e6819fa1f2156a18424d73c9e7674a644ce2ef0588b381eab665c6555a32432e74bebe110d9349ad2127e42281104933e9d34c1754c39101be702c64d5f16eb9c329957caf7afc67102d9db3e6945aafa598dc22aa370c553a5e3362f09a2b666146544973732880cbd909932e23a0aedd573b10e0134a5d770019869275a5caac3414c72a5d55e548afc5dad3921bbbcce45fb8cb8acac8cb925c0072e4c2e4eecd207aecf10f846197f29d65ae80299dea39e52b92eac8203eff18e12a1f286fe0bb0036a5b55b0314cd1aa02d6797c1ceb17d26158b3057099d37bd250dbb6543f8f102c49673427fe4880abd3301ec41bd9219e4d224c58d4198c31235bd563264e6692e7b10f9943a40c8ee11e77eaea499d861ca7c8645f152ed504c73ffca206e128913ef40ce330005f92d7b3beb06b1e6066c7dc5208f819ad31f451a36d85e86385ae4396628267fa17240394359cc8bd8831e381a3ba92794008adb94e5208c4c8d36fa4566b8df3fb96279fce574e3b0b0af53c586b278cfef33ca17813021557899fcfeefb7a5ad1e5a29e91d675489c76eab0e92f353db636ccb56be4e3702556c6cdc9d94e58c3fc14a5b56c32af6d36988f8d540bad8a40fe8cb847408d04df3f61d40a2f5e131a09019ea0f447f1cef1944176ebd03743b4b79a4cab59e37570de2dcdfb806487244daaa06c47ab5dccf557f959c4b0312d64d01337d4b6e104b7d7b1b2033d4f2b3412cc2f3cc207629f25d547f86aa90e92a1baa98c995aa66345c9257ce3e4790d102c4264dd6c8ca519c04902d0019fc6b83381b7068af1ce779dd03c8cd62ebc020da41d5aeca759ab7970c3063270019bbfe6d19600d3c32087fa97619902a66756410eb0539a872d1e5c3350312a1eb193276d5338338d58bda20e607e53b2b398355ed0fc04597f70ca8c77764c09d27a36f47aeac3288963efd18841cf4b26910bb1405a52a174cbe9919c44065b501ce60bb0638e77f18848ded591d245dec74c7206e5631fe55aa8fdcdc6bb0493954f5960ca20b0996acecc8f5f36a1073bd39360831f064cb8094762b06587b3600ca0bb73e304025be35e0ea79db2046ff445d28d5ab1590efd7fb81410813cd99417472a9b7704675fb0a4016b4adda20649875cd7542889ad316203d8a7cb0958a1d3794f0ab64fdaa5786026827d408a964ec6aea6783e8e4bd9e01e3726b10bbe5f29201732c330825e0646a10337989056473d8c3ad4128ef1fbb067124dd960604b2b502880aa76abaf3c23d19106aff0fa02b0adc5f2a7965352789414817738e137b650d9e0c6218ea2f836858736e40c0c3b60057cfadfe44a57c6e7303b236bd18447f7cd506444e1f1b444b97ce0c42dc3860f465b9aa9f9e0cc2b63579378809c3456a2537adfa82992c4355f5b86110bbe5f5a501e590970cb04ba94fa918dcdbd2a493cfd5a430a0c6a17a4c56a72f355daad7e11fc025f1d620be65fdc800db85fab4441c4dde0c62c27c5506d8b539e75ced77f7dd20bee5e2d880c09c2b83d872bef55a157e2f1e0c62c2108852c9ea54ef1406b1b2477383d894b2be416c4a437d6dcdcaa6b066258faae45863dbe85b4a030c447f203effe9d520cedbbdd620b446e26f2bb958f58e354fe540557c0214c0fe726410a2a43f5ff5e6498150d9e7aad276d1527e6fac7668b71cfe81d0e72687069c0d6a076a75fda176c80ff6f0c5209a7e313760cd9d19c49a23ed5907b0c18e99fcaa3491a48501859b3f0cc82dc7e6a8d2bd0955552aa570abbf99ebf2a8ea7d4e0d88f6191ac4404d9e0530979eb027cbead4ea144b9522637f6a10c6f2bb6501ec85d4f3acd29142ccbe05701a18b1d45576b7de5f3240825d1390dfd6a54108686fea20e563cb98638e7ce492bc52fab5f67657401550599572a04a52fd89aef41e19ecb4c2f6b98714ac1abaf561df80c1d6b8a886ee2bdb458a889f9c9d1b900a7bc9202c02c79a0edcad55af8941f4e91182403ad35b38805325011c315019c76b72f16810f218216655a63a23df2702a41b237e7f01e26b53d64bc659d95c2d19c4d178f42e20d75976dc8cf9914cc600e6474f4a5136c2eb866c38559622c35ceb5b3236fafb4383d8b6d6f527d29133a49c4c81e34b5f02dc68369706a1ef63a6ac32ed63d7c702b8352643018c192f2ca0acc543a4d16b95d26ec0435577b621bbe902c401fcf825308c6f6998fc4a6ad65c9d18e0d5c974c887945a9833f973597af73f04080f3bd22f52ec41441b2f400cc319532acfb8d3daf83088b7dcb2b27372cbf54a3d34c762d4bf36888d2d41d5c80bdc4def99a739dec73d6ebd16008faa6f8318caa97e21b7b50b35bd26589284ca0b10bd2e61226f70d3e21aacca393d122ad574806138d340917fac7e583188f9f14fcf9863855bcf0486987fe2e6ac52cdd89622f60b10cfe8a3f214543eef95bb06d1d2554ed382adafe53eaa2ac81cd73b43dc28f0eaece18edc010c66a7ac97a2c284f483485be0d2dcc39e5c156d16eb16dff30e1424fd6745150a96245f4ea56aaec917bf28292cd1f4538170176b0ada51a61888a8a75595946b682b96983c991a6dc17f4626fa74f1eff74fda4b032c469cd9654d22b04b46ae6cf075ba7d33885840325154e5ac2011d8a340195b30f11e1da862a9979c739d40162b6a1a1b5bdd97f9671acba3b6af135a746d5fa79d1e40cb74fb1e20e17b3200e8142398a5965daa9e2c01f4dabd03036ece1e00f2cada6d004af0b8f50570becfc6202e308904ad6586aac96354db1b0a8fff5ad55c1b94e6fa2f11d8a101c5e36b83d850482a52cbc8d48e4f0c624551e0b376f1562483da66286c17b5fda5febd1ac4e5c1fcdd20a6361eeeb58d4c1ba501fe526383f8386ece6a3b61711b59db2e4525e7da95584757063884e82db207bdfc33e0f2e0ef17218f7d370671243dec03640fa2447dad2aaa091798f5d079adf516dfef9f1ac4d426615dada2a9eddd1940f9b648a55fbb682ac9a26a174d3d78378855399d0860bbd85a3188913b7b02b80ac0b5411c27076b06c4469e1b50f340fd21a5e8b56f40c4616d8052941b6088d02cd4950d7ee3b5cd3f04c4d4aaa27af87664c0b5e0df2f421edbfb7b468476917aa0768a2e5c891720149aadb9412834374b0671242db1e69c91eb7c6880b6f66ac09de79b414c874ac3a07bc2b96690d6edbc3408a9efdfb1018619bed6f620c2a06b570198cd0ce25bf60f0c426d22a96a2d4fa6e4f0c780b4bc6383509bb24783e8d38fca805c594c18fb3a0d1e0db218b96303aa75de189058404dd7cdfbcf85414c4b0c330b4056d175016e12c76cc1b207f5ce2b03c2075b83e853a2396abb25a19cd5ae2bbaf166102de59eb056d5d096b2ddb593ed5fdf1bc4d4dedc370859ea7b6c40ececad41f4e9ea8541484a63367a597b92d32783f8b87f8d013564760ca283f6128036a5d75b038c5d9901faed8101b929ff09286e8db3d289af0e5e05d0f8b68606314fa79ab8f2d9dcb83008e5ec88335bd53a7be32d03dc1b2e0cf01c3e3608d1fa402387d9a5fd627354545a4f07b073da3fce0da20bb735c794c5ea4c0fd5c5506fd9202494e7558318ec8d1b039c8e7e0c42b64c1e0ce228f8e114b30da59c18c4d7be9f199025716410dbd68f1a2607cc8f89411c5af987411cf387eac2b974f52d83f8fc0f7ea130b5dec69d41e8629b9b06a17b8cfc0b6212dfd8939df5fe7cc920ceb99f910126931301f4171d490e643b4e0d42d1fc991984f8854f4ded2c569ac9b2b2d487038318fdc7a1012144df06382fb07fa423d52aa1d7ed9733b93088fe28f516f4ec64776810939fda9375ea7b53f507b74d2d977eb563cece996329f1fb49aafee052271914022a1a823021fb47d23f12c035e182c9af929789ce5b656deaf6d100197261321050c4e1ea96005f4b59e63a93db3c51e0b52b4ba6ccd38c8dbea214fa02c47d3669cf3aa0ea72b43493e1bf87b8a1aa90f580ed5349dd7b23667296cbe34eafc557b2dd6406650ad97d66bd64157af629db67a650d967f6e48c85dccbd60494a469c9809cf69c1e723b69c862d50192bd709754e752671faf0ce22de55860c006cb2ccc396f936bc63657660ef27fd4f948c14e4ced9c5bd1e49afe5086a11e45caebdcd90919979c0c10c9352b3b577de4233a2847036eb5c3e4d872da832b83181732e7d74a629e341c27b94a2c4d59fb8562121bf6e4821c77bdbb4f0154f38cd1eff4fd98309afcc5109bd2cdaa41ecc92bfa453a24925c0f25795675c9ba2dca48419d48072a94ef22a53f8a9adc3fabc830055169cd9473ae50945e3e1308ff8f84649575c9fca8765840dd28849e8d7b54074accc708dfe580b4ef64ceef401abb43ff53a08876e42ca072444a6e0a072c40acb98aaf2d5374759278d56501689160176e36bf20e1e3e498925084ba5e7cdeef2f66fa380a16261a86ee1f997dd48e261c5312d28d75ff9dcc3eedd88042928f0621b09ea27996f3e8a084dbfb0508930945653ac05b0874acab3ec68c840db61a56c4f0727afc5926a23f1a1b228e7280b671ae8e9a012a60bbbb6410cfd8fa04c85385d8d9c6d981508a1a9b08c647002703d22fa4596c5e1810e9971bc4e753c8a9f9b3085406d4e1cd0d62c2fcdc00544eecf5cd203a68e3cb80cd71152003c066cf2064296aa4364a1edee25eb90021089014b1b101802aaa8d62ac1acefd0588fd94b4348d5c5792f104e028ac6583b05d7c0c0de2ccaeaf00ca30f4716040baf5994158f149e6d1280751b3ba0f4009680f370de244aef416b9479d1f1ac4d158360631610e7a06213b60a76b647748343f545bb0cede0ce2b528128d3c55aaea19a00bdded0f031c53f4965291077aa824fa934d032ae4d6805aeadbdc20c4c0e1ad4188b4c5bd000770a9d7ca44b0756840acd7c4200ef1f19d41a8d5a55eab05448587c68502bf6706f83bac19c44cbe579f4a3cfff9308819f47d6f401cdfb24188e7d9a54174d089467fa6243c7aad2e41379e0df04fbe3388b17d6e0c425bdbd06b11e0abafd4207a7d2d76cbc6215554fb6de465921ccc0ca87643c35c289014d48d73ff0cf87c7977d4830783902ef26f03fc1d2e0d6253fac7d4b645e0e1d5808a5bdb06686b7d83b82aa9ce0cc204fdc122b4cbc8bfda20ba707e6910ea1bb9081a9b08f6960c6235101ed6d8bbe359cf50d1a12f86c12682f5910139ba7f0ca2a5eb9f0294a9de61cb9101a037cd0da2e993178318dbef7703bcb13f0da293130d65aeb2eee7009908a66b0631d8c389010691338350bcbf351db47f7c5e1bc474f8fa36c0c8b469406e6c0d36b5f4ea0b96ba638acecf0c623a1c6826e3b6d65cbf19c47a39dc378825763305f8bcdd30c0bde1db80c256970698199e0568e96a6a804eb80ed0b675f86cc0f5e4c880f4e27b028ccbbbe607db5642c6b6c621447ba706d1d2eda141c8747b7a2d66cadec999411c0593158358c8ef9ab82aa95c0c0d62a09e1f0d222a6da2f5328feca61559351a17c67bdb3588a6e3a8d328d74d6fe3c580a44408138a18aaf1c86c5429afb9d09f90e3bfbddd14a00bbf194ae7a919b2f6d3912cbdcc0f15b54b282bd2a8a85defb811a090d3965eabc29aa4d4ed807230eb2de4fcebad970002a59bd3b9805253b0d453ecfcada4ad141b7d72f869c0b1c6d697d668166ffa5a54af849a8f8dd4fb56f32325a55d4b846ea32ccd2dcec64d4ad1c3de46221017a9ed3223a7ec2fc9b58084bc1716a16ab6250d532a531104cc1d8d122ab73bf469462581e6fa440043c419733d5348e6fe4c0047ae5bd68b94f716eff44615d91a4a933459c3b5315e9d1de052f82803702227332414a5186e34f97334cf66c2c7e54494258fd702dc9a8f111572d994aef8967c847a3ffe0750612b748f46d9807b245a6872e5527bea091001717c223022c68a05942bc31055113a8593842064916854e82b59675c0a721124f36501b2cebe570291dda34a696991e6d18e92e3a4501e0112e577200f41e01f33b9c05a9c54e70621e32ed31f455de055c1b95fcc88183a46c329c8289cbcdd0b84e2dde0fcd42878a322d4bee96643cca07c55802b70fc949a45068c7828025a398ca2650945db9b72145a7445e989a64ca31656827adf2c72e8febea5bc320877a02df63155cb6a8ef50c056f1042d4e8a2bd3a61ff58342d9a3e31883fc1fad55847be3d3108c53b61bd94330251488eb400f4070dab967415cfc8550302404e42ba68fb4ae641d6d9d60120d8f9db011963dbe37580eee68f0f00ba9b3f1e0310aedac91dc0312347005d93364b00056fe08cde5a257ed90648923e8fe9d03ace62f3c12036c7dddc208e68fc505adf784fb60d486a766a10c7c931fd218537d9dc3108dd74f3de2036a5e715803a68bf6710c3f0736940ea925583d850fe8d00d26fc966b10064b06b0188b40931ab0b10277242affbd6fcee1ca02bf0cd4783901d362a83e8b157c6d657e0e99b01dada9641d8b66ee606b15d7c0e0d6221ffd4067136b42940d3c14d5751aae327031ab6658048bb2f80afd3780d2075f6fdd0208ef9d7258390a52ebf05889e7cdf0348b6dcbf3688f9d1d79f28d3f33c3588a16c340b1103abf49f012953cf00526787ff0ca2a57b07063161eaca20daf19a1984ee51abd7959f7ff265404583c62046bfad0da24fcfd5f499ea7bb0f6a5ceb68fdb06b1f34fc706a1587ddf19840df6a035885d8ac8d8d6daebd18b418c0b11320b10937fedc420ce282e0f5a073c50aca375ba8fb5c62024c7b55a00cfaec73b83d8719ff45ad67e95fe1884c637bc31886bc152cfa02c738f326fad6ebc6bec74ad4b4e9192bbb506fcb60150cd947a6010bbd4d58b0157f11383b0c0b79f0029bcc31f83782d95695b15b1af07ec520e67787833886fd961db72b0c2cbba41ccc2ef37831069d74e0d423e9d6be464db9a4c0ca8a4f8644051aada20c6656b2480c7ee8a065bd7d7e34783d871cfb60c885b4b0c62997eb1194837adeabe418c1cc6d00508f16bcc9ab3e6797d6510aba1f8fb45ccc2a3758390faa6cf024c18eadeb74ebb4af1d6564102edcec42014cd53cd31453fbd7f19c4ca7eea1bc484e9ef1ac46a38180b703b3bd69fa85ce5fbb701d7e84706b1b247ff0cf054610f52cda56ed3340833d4c59b41c4df5217b003647cecd30e2b9ae5a1414c078c7fad9299f608126855b828c1e5ac55eed2a64707293743852f5c075035b61817dd01d7177706dc239f1884047bd23788eb27f206b6cebcb0bc631006b31df68f5467e5f9894174e1895e4b7ecbf6e81880d362f5766a109ea15f530066dbea9505a4ac09ed8e3e1f836a8f425fad4a9027a7f70631830e0db090a0562f40acdb1fb55489160e106a52392da2782f400802c377010c998f1c9e2a0754a74706e4b9da37082978836d2b53f92c54af0e9073f899afcda4cff5f50c0a06d527f70228de57485bd94886882b0142ccee5984aafe938c3e0c6293e68eafcdf0514c08dd598010f1af8e0546a1ab538c7201a2c7c674900a06d5778541dcad8de9e44c45420785416cc1cf9f02a4a17d5307c9ed75e7550065f599b1cd2a655e606c33c49ea68f28d929de310cdb2ca0ac45cf7efc34883e7d65ffc8e62a38a60e9a1375b4792b404a088ab62f40349dfbec5695cf9339f343e5807a679c0df94071274cba9cdce9c964c32096e9293328a7a4614354eb02e021821290537db0f7fc26308c2d27635f7781f119532aaf70b1ba637e74ba7a9c0d3bccf5ee98e36e9ee3d557e0199f5f50912db9e5d02a94a28b28acb6488761dc393a12c8e34fe66c7d054763b2fa6ec07df69b413c34d9148872401599c1daa2e10afc9ffe84fc74c93f3d945472c9652610a11915f9503a80977cc2e477a28511a7982ad5f4246d9543dcd57324fa7244e2cd63666199614448e8f5457e8bdfd79227afd3a1d1b3d31d032eeb370c429b1f330caa43939092bb2d2bf46c692765556111606c172680df5fdcec1950a9e65a409a386baefb174d9fad1984dd017b505b1235d0de4e05e282bbbd433c2fe7d80c6e5f0de24ff0716eab256ebc737698aa4f8e887cc7203aa864f25703fe24e52dd5b0249bc59e00b7e6094bbd4a2b620298745556517d30066ae67bf5bd4380fcb68e13808c08473f0025332587fb6c8095b63dfa0648373dbb02c87d7f720b9080b6b70b9070e5b7e816903936fbabbaf3661023b771654022c1d8d7673244d4d9314036146cc10b104734d55d3a80c3503503c8e44a9588990bf5b0e66676ac1f1f18c4335ef838dfabafdf1b103da93fd1cdd9516b10a3bffc6440bef1bf5fc44cdeb93008d9e1fac3807273fb006580b8ba378829f5b66e10d20577c0335dc5f738d666b65d54d706142e4a0da23f483a339375a3dddf3388ebfcaf4383d850ee4e000a949e950638613d19844a7c9108709fbda46f91aaf1fc6110320cf751331933aacf77802c131887672ac3d3b0b1cd9cce01efc1052051ade698dcf7eb6b839896c4decf74595fbfbf0014bb32d937883da8d6d7ca10b19119e0e37c6980d7dead41cc8f2b4d18e90d1bb941881bb7eb0621e3beac1a102ca909235b1f894966aa9853a115cc5431a799cd0d42357fe06b6d55c07169a6440b4d5218c419f5f6f72771027df40ca887c3e7dbccf09a1bd0c96f06d163da8374d1dec31f7726ab42f37c61c05ef8651033686524a08b5446eecfd3fed32094c4d51d8398ebf39941687c14fa9ae992bc59290d423b21ca66a6bad53d2a3bcd54cba61afe33884548c6e999f27d561f8d01b7f7b541885fcb6a87b4a4af2f83b0e24ffc0be4c26d767ea7f77c3c33a0a0f6bb41dc4672653393dda1fa680d4812796d1099160f37047027dcd5c7c94cf9f36d40b9db378358b707ff0c62ddeea93fe490baa4d762956c48e13673c998e98a0159138e0cc2ec72f60ad06640faa4990ac23437f706945951c3e447bff2654075b9778318db73cd314ac4f60e9e0ce24f96388174c15d7dcc0c42393b3c32881535d59a6b090d2d34d71576d3db36087bd070608003e6a5416805eb5a624a50bfa785cc99dd4eef0d62dbfab76710322ed78233992a7adb2c53d77a3e7d34e0bee1d580b200d706a18a129f3d7379682a18ce54eea5fefe0364167c35a00b330332823602032c689c1e4a9ad92ef3714a4e90e0e33c53b2ca76775b4097a0fe050a6fb5661002fc547fc2215ebdaa1dba465f1a1b443b3e5f0c6297c263660142823dd6c72906af990bd08e37967a8ac2db1ed602f4e932b330557224ea6a740047f294c333c5689f4cb70c50bcf527e8b70d895a66aacc52670232a75f9e1a6032d1c851dd365962cd6514b36dde58d999e4c2cdc22036694aa4cc32394fbe7e08a0565f22c3643243ed5d1884ebec2d876796236c722f365391e186540cb34ead8e9be629af75ca437ccf17206c2878a9cd5c76175fc99914ef447b61aee384920f1d1870120e012a8d76f62e300a35926c0533151e69499032cba92fd6e2c835cb0bca565129af0319ea3df323c74720210a6b96b7d1f4e6dfc0206621e10cb39c545049f364101dd43250b97cbe87ccd3629051ef9519b428cbf43b0ceb57020577f3ac864221aad98f40419172e66951c59d78b5c63c2dea82957d6310339988a14e674435ff583108f17c301688fbfda660932ee69499fd62a99724cdac2e2b81b8bdaf48623e2bfb057e8ef447a79aa3133e188485551a5f992b6d626a805ec98a72f50eee5e672595ad1b52a7cdac9a1fe94f548a831408b34ef1e6a14ca9853efffb8bd9be0143c9d9e0da1c4963100b39bf3008b5ba567fa08937046f74ff375e9b3c330c551f0340ae5f0c2adc9218db6a54f15ab68b2aaf623320a3cefc2f17e33e4017cb94bf994b47ae8f2b802494ad12200df8e4cd805c8c1f00a9c41b1b005dc5373dc04c87e7950161482d40d78294e25880f8fcd59852735fd6b7170621e57ccf0d30746706b1c45e7600babd9ff1b57fcee8e70631b59757002ae7511506b117eecd0dd0910f01ba79df3c3540c87b32c06f7c1d20cff2e5478390e9a8c43a77c18feac680f8ec0b8310470ffa00158fdf7d360873e9516a1047c1ad80c4e2bd4383f8fc4ba68314de763c3588dd61ced8fa2afee3c4807a051a06c9a79b4f06219fb2f6e756671bf5ba92117e32b5adbd62829eab144773fe64101f475980b96fde3fb600f2c82c960c42fec80a83e875e292e6baacaf3e97019aeb53f518e2688397c9dc81e39363033cedd552d983a63b0621d34d1f0d628e9187642eddb457bf1bd0638d41ccb1d9a5417c3ed9f8e67f29fefe407cfee8cd0007eed68034d6438082be0f4e0ca2a5a32f8310be47df06247a627958151dbd1bc4fc2001e85c57e0d5d78100c991cef55ad9a570189a2bc55fbd921950e3700cd09ae3ea68aefbec46eb45b5289ae98641d8c6a7bb006e68da9d0d0392a96f1ac43e46c8dddc6555f12c5f8090d85ef6000e0061f4ed8dfdd63308b1e7f0db002560df207c592e7f041426af4e767887060abdb2b9b833084384f6535578e8edb17d3a827bba6a804b736610bef8bbea20addbef0f83d8c790c6e7aaced0ac65067163f5790fd0ba3d3f37c064f26e102da506d5dc57e0632d0f39c85c4c0c42e37bf930888d3ed1c7a918c3a67a7d266f860d037222a8a54a00faf06e405eb84f03aa1031d75d26e1e2c880f3e5cc20a6f6160b48053e9be49f80ead030a55c15e1fddc20e6e9f8c900e7964c8025369c0174ce21b0ce1528ddf4fe199095f84680fbb937d69c2ec9ebb5dc2056e58ffe44891656f40b122df4b0e4cd75279edcd1eba94c37c5b7410cd4edb50151e07d8318a8afb9010600d66d4a11c876594de7ce3319b3f5a524426f5256434a91f2765b3da67c8edc3477808be5470d363145edf2be01565a7dbe5263656a87b245cf39703239d693ada00378225cbd090cb96ae5f35538a0a500ca02c4219eb2083395a91ed08e8cd414edf2910197b14ca94c19fd0617025ce862dd98673ae61f960d0822d91440d39a311d3225df3b6197ca1d24f02e8047f70bc77c3e64c2648870398688849bf7799e9218ed9aa1944ed8dba53ff2424e69b45479f19331eb3667974a2a3d547ee38ddaa1fc74d44d98bb90e42d1326576e9796eda220895742b9ca792117cdeb0383b83bc1f9695ee0e25dadbd0b84f6da4ed8c70a2e962bf497795166e16077a83f29f3786d2340eac5e49f9ec1d4ee25884ee5d230e4d3c1be404e2c7123105ed0d590e9500ee276b6fd47af97431281a5db803454c08a422c0b4015c4478368e98cb9ae34f81566b9b9f28f3539536a711f19cfe0005e2881f1274b0624b947ca59bce7f72d37b7062446ab0da261b30d8318db1675a53bf770be6693d6bd6972487f54c3827bd36d01e973f47a5556d1b0935f502db9e6e3c9bf00cabedf9e2c035cdaf902a04bd09d0ca078e4a36780c48de31e406f895a581d900ae85fe81e686fc7009f897d03e2d646008ca1f5c12480f5b9f557038aa81c01a4ad6d5c1aa003d130ab6f61ddf805442c9700dd683ed36356ceaa5b83903f36cf0c420c5c7e0048508cd0d05f4078d81ca0bbc6cf1303ca55b606214c5c5406b1f6cf6e0072ad8e5cf2bf00e973cb2076ba7a6e106743aea64b505cca0d486db365105d983c19c4a97e7a00905c18feb81d909077c684b1ea95e70621b26cbf1b449ff66606b1803ebf0012e1b62f0ca89fbd658067a8be56a16e27db06dc9c3d196055603548f5aa225de12f8813f9edd92076a9fc9f419c954f0380aef3df8e0ce2107f593388536cebc62044a7175aaa7bc2a66d0c38099f0c50dfee0052ce2218ee1744d3c30be9178462b5f4651086aabb3f1032ff37cbd4eec8e1e8f70ba8d7b86d40bdf93b0372855706543e67ae4b7deb4d3e0c3077ec18842030991aa014ad00a4be3ddf1884ad6fbf30c0afefc380004396981d96dfdf0de2003ed45b94d9f89c95ed8bc3d18741f4e9d1ab416ce3470303dce6d53065577fbf30881e5b3d33407f519f3a015769404affa101a1c33f005f1c1e1ae01b3837200ef8d520866199a92d6dad377e338835b7a31e237aa11d5f0388176b8eb70ce2f377d463920cc67a2d47414f7ba173969f5f1844c38e05144274f86e10b7c4d5bd0159240606b1054f72034a5f6989cd94c3ecd32054e228f7b2007123517da883b4d4a3f8e20228153673ccb9c2cf1b83505693150194c44fe6989287b7fb038358ea1f8d41c8745bbc3695c9e4ecc900ff753d5441f03bd706985d2a83900bdfde0dc840f50d5029b0b8c05c00d5bdd76b53ed0ea700c90eef4b065c813706946be0dc576af0dec6bd009ed43fccf554eea66e870a04bf9d037090494e1f0cc28494b3d3a52af6b3732ba0b87976ed54b57c57b70550f08ed894941abc5d3e34888fcb045add8a7256a633395fef02f0504db4c49c1a6b9d5d5b79be9bc33783d8a5ee991f4aeb9d8cde05f896ad6300e55d9b57ce39dfe0ed225c65782125170f02b857de6706542152c34a628af698c952ceda317b5036a31d87f4474ecab2de332dcdcb706a4deed8f9952dbaba7c14c8c282d670003bd3f3fd9200e9b576f55045fb0c99da9dc412cfd8e5002efa11c4dabb383488ed62c42c2c0679eca7119ddf81341c527b63fab450b8ed154bbd202aad57183050bbcb02c4ceaeb2c3486d6afa7a2db76fcd80a95dcc72cacbf3d06e22470769ed977d3c659f7868d7a5a1146dea4f467173d61bb27d4a6d4aee59b7f250ad36e9c24561b3df3f293f04e22aadc998858bcc4ebf63fbf0681043396473ec142b6eac10f195b6392912c05c0ea9ec308b7ff1b5acb94e078a0eca19a86a104ead6da35f8cf0fbac1303f4b93e20c3dd3467bd745a126a135f5bcdaa10e1a2ac48d5b79b675ce87640799cc7bb00550f63a7eb0ff0526bb69e0076f35c06b8d0571c7c7d2b349131a503d25fc257e11744afaf6d1a90b6e81a208566efca00e3df0420856665d920fae39da65bc3a92f0d7008a90d62934ef40b69381110f30ba24f0f7e0ce26c60bdf487ce4e981a448fb16efbce9f9ce85ba4e19cad1ac4e723a1f4953fb93e3b04c8bdf265c520baf0e3d8205efbbe63105f1b09953b2085e67c62c025f9aa41880a11c2dc016519c904383d1a7fadc219fe3d18c479fb9509e071b754002407a5b50132bf260cee5175a61e933765385fff8290d8c25dfd178452b4fd661047e3b7a694ae9f9aa941f4fab431c0b0cb6ab0f3e474df00d58bb738093147415f39876b3683be4b4e6199e85ba1799c1a447f8cf70d426b9c5e19904b7ec320748f67fd42ebe575cd205aaa29e59cc3d9bd411c6b6fc706643666e4a4d024d33d831069279f0624ae793020854a6910e68e955480b17d619efea93cd706b8bdbe1a841818f70dbf200ebec36583e8e41516b274a0def79e41ccf5d32b8390949ece0dc255a35a15c08cdd0c0c22bce32007a8e0fadb082013d252691092c11e73ccce93d583411cafe7b541ec30a8a27d959c6a0ed9821592d93e3e1a706fba6a10a6bdb75783f0c7bdd7c42d0784207236f80aeb74dd007d6ec900d1fad4208c19df6a980cff97a901b528d452c996fbad01d98035b64a31fca60584b059f5760c62791cfc012edb0a03aadbea2d0ac73ed58499ebdaf8d920a6f6f8c98003a76f10f3e38b3f911763339d1b8466b1c9229442d31c0e05e8a0db5b806a70171c168ec0c486d257d2ddf67f207aec8bdd52374575c1524f955f7bed039073118229abaf50c85a5b9f0a48d7196743aa9454fdc22094f7fd4783e8e44ff5877c695336b65439a94fcf049071672cd314eb57327e3108ffa02f36a5b455b906bd855d3bb9ba03a8c2c32e4bfdef1e686ec07d36afb52271c86b33f21627d76c0659a91cbbecb859cd9fecb26e3339c6deae090c6316beb0e6941e27393b010cf1741bf02df92825d70dd245aea1bc2b055012c7ab0638d81d015486f88cb1ed540d1280b24be50da17f4376987c9ec62f366969a1d7de32833a25201ab6ca0c2a083eaf5224b6a24a03d46f02593c749d995c90b9a54a0e000de55e06bb02e13e57adeab52d2953277ac68c44b5af6cc165bf207289b55f0ee36bab2db6e04e2b880efaa63fcabce06288235a45867be9ad419c1e23a6f6a28accef33300e7720c4f3648f4d6991ecf8f7a117ccf54e0908b5e964cd20cea8199fafa4aad5840d65a139fcbeb65c150899bf8a84fd1de893a7e6f6588076d4f4473588fb9726df179012f0651093bfd0438752460e0c628e4964a9529eb1179bc1c09729fb9b00bb7ba400470c6d0024b0367d8043660e0de22d91f2b003d22c3809075624f6f88593aa7e6f03546e6e3c37a050f186414cfe7fb4d47a03d2d6406e6bede1b60109d91b8014897037fd05217c4fb60cb890d19f4891d8bb31e0243c332095cb152093d4b769101b4aa4a1fd05718a1d96002912df3d8368d8fba601d71cea20a98017854174d064cd2026cce79241bcb6f97b46489f91ada00332ca9ed606310ce75706a18c7c8e0c885eb80548d5b8d831a0e9f706d14118ff062ac4529f4f01d24e66ad418892b93a48b370ffc620d6feb5e698548da50d0312e85406312e272b004ddcef4b83581e5c950cac6a6c650631fa2bea20a91a4b2383900bc3a9f5179063868fb3eeb17267105fbbf96510af7da04fa57b3417a7065cd9cc0ca261f7ac7d3bb6a53d83902e0e6e0dc2a614f195bf203c229e994152249ad35d8330db46c5be5f107b7204b1fe82983007df0621f63cd7067163952e0b50e132fd041081d9f33364e93dbe3288a13cee19e083a696ea3225fd3288a9bd71621012db67df8000b2bf67c45c3f65fff0754b041afc8290c78e560dd80c342e2a663b65f28f50ef93b43488437cd01860da537fc8dab3df18448f7d5e1a447f9ce9b5f250fd9718c484d93837880574a671d1ade8e4cd2064cbcf2b8330531e7c195002943d487727ed5cf354dea52fb9417cedda9900126cfe039036ff78618043eabb41bcf62837a0b0046783d5849d2b83d860970b8318b9516a80eaf566101af0442d9d1343c365ec40c14e757f6e1066ca3d8641f93e9bb37303a2f4d861d2a102841e0d28cc3b3320714d4f804bae558641a14cf5a8360859eaf3098023688bbc3e50a29676fc6cc0ed0ac390eae2906bc1812297eaf35b033c32e9f554aed55b4f06b18f1d32f953aa1fb707cce414b7e8e47e0850c1d36b7a3dc540940c5201e5a9618375398f2808d381b9ca79e402b8ad0dd8c655dfa3fde15b3265b1caf8964c0691fe0040be9c66f71a805f5f93f22d4aded9ee2329297967ef78d320c665c2f2c8549d724d0fadc84cbacbe199b944acda51939864cc9a53e5d1643e3188a3e095a1cc556902ed759093d8b93de44ff29ce09e6da64341845d7bdc17a016c5c9bac0884c36ccd362103723cde05c200fc3ff1a7b90d26a36531a56109695dcfd81b83cb864e48a7688298b672cca40fe820786725138e217a0df0e9446b2ea332e8a7f69b23f107be18879dac9fc98f5cf0d227467b40798f327198b507925dbe4d9800c329cd90b3d297e510b2899c79101913a5b02c4bfdcea1703dd156c19c4a42bd9a5aaa1f25dbc087001d1aa1daaf0300ec56a38902fed9e80ceca4822da01690551b6bb03d20ab67380236406005969db2580ae17c209bc1aba1843930014dc73b80320997a1319b83ba0ac91d59d0119207a0671de2ebf0024f38f138378e8deb50189f3560092f9a322db2f885e9f3406d1eb6bfa85fca56ab543127da483f9057156deaa61d872ead37d80f34abe1b900a7b621016b457fd42f2fae79901a2536380687d0c9078be7f6a107d9a3c1a449fee9c1b846e1ae9933a20f17c63db20ceeca2318889db0e01728fcaaf0c42c63ddb35a050b1bad0a2c28741b403b57a6879fd223388b332ed1bc446bff36240e2deb900bb76c4577680795a7d7e189090fdc780cc9389413c63e5ef4f42969acc0d62d79ef1f94ec5f0b16ec0c85506147064187cdf905d1b90e76ac980a87816906f1390c61720baf09a71b1447f5d1b903aeddc2066509a18847471aca63b63caaa419c0dd87187cac5d8f46e0cc202ff782b80c3f237d3c1f23a47d250d91a9b7035ff05717afcef1761623cfc6710bbf6c71e40cbf4ab6f805fcea3418cedfad0200cffd75f02e4cac27631f45dc120318861e85f18c4c7bdb080e41ed53e2c19c4167c343408f10b1fc5a1a35b06b5012e67a706a147bdb339bab440b166800f7c6540390f7dbed4eadd5583d81c7798c912e0eb97b1414cfe9efe44691327ea642dd3f1a941085767c706acec0f83981fc8a74319eddbed894108575b1c494ab6df24cb06e85143833880f7e9c21433540fa17701624a4de80f25db6f8e770c424dd83a010c950f65c92096faaa1a86fb7e72c55c4f55cff36064102b6affc820c4d11b03d24a0cf4278a8d3c6e0470d5385b3660ddaaa508f0d5b23e3f23eff996bed67579960d4237fd371640d8dc7f022877c70adb85eaf1d505bb658aa76c82acdd01627910e087be2b58578fb15b26b7ec74197a5472b709a0d7935de64786f3641209963a403d8be44240c14e3ae633fce992475a9a0f2840bf766310d3520b391f61815f624371e2bc2dda91731d57adb007e56df8f63438940df3397705bb6c068552ec64ff04d00a6ece04b0f3efb23c0a65b2190e0472120b302e454ad3076cc14527d2ff82a91ecad5516f896dbc28b3d09230ba0d0bf68fe49613b920da27b9a73f8a96f4051137df01b257f6723ab91c15b4e300904635f926dd128858f3ea9087aa687bf2c49a53b2b9a6dc0034048eefb3e3966dc46a5417f48722209a724d0093fc944d4989e29a3c35884957b35e165710bfbf183d1b84249db07dda689f25028444dc3083bac7f2b5a5006ac2d58a414c98f33d8398c9c76c28d588861da706715374cc8aaa52b48294c1ae0ab4829cadaf2ae585c45056b31a2b7e0cc3c8c9e676cf01f287d9db03e89c8bd0e10ee8a679bb077014c5364045644f9e0092949e635c467f25dab60c62b02fe60678caae0324d43425c0c5d356011248b0e38e94c2ad3d4c0c4209b8680c623a3cf0f956029a4b03d26bd5000913ff360d62633b6a0c624f5e593120337a0e909a1049123a20c56a2335200afc0fc486724d9f3a31fc676ac0d97005d0409d8f0cf0d8dd37084120d7e7cbf877b2674039d3250372873d18c4d87e9c1a90097cd3203af9a60f50a285d3914148c1c73706f1f9f30220ada07765403bae0dd05fce041048ee5f0ce234fd50c36632a8de19c4cabe1d001c34716c100dbbe36b2dd12f6d19e063b4631072e1deb1417cedceb34158ad2fc600c9fc9fa7062107cdcf0c62e4cac420b6bedb2140977ef7ab0678ed3d188450d35e191043c31c939ad03ef50c18ca0b80bc7fc62706a8d5f4a905f8a34f83c8d4ea8fd38a7aba30c0a07a6b105fbb373588d5302e0518ecdb37013c76dfd41fdac78ed60c6206dddf19c4893c617ec8d9a73d793508c9f1e8cd80af65115a5e3fbf372047042b4af9c7ea537d8bf29eefaa0bb53ccee60678dced18c440edfdfd09a98ed5634a5778aa96ca9c3e606a8f14b479cee72b4557efedda8074eb4c4b09ce4d6fc500d7593e3f252742ef980d2555fa82837d034a2aef0a502f3a6ae9750047ae76ebce20c665ed5300bf712e0e47324127ab3b0204d35ee8b5caddd1670f4a0911497e0e0c42c63d9a0030b9563f6a873cedb799b8727fe9e1e9d601ccd80facecb4e5aee09fba70aed86ace974c958bfbbc3653cae50d462ecb79ed84c1ce54fb7a975ecf548777f86140842efb69c6d657fd6397ca6669b463ccbe9e0f11e1d0d64639d5e5ea5bce28658f6ab9381ce55cd9b4374c876e75209eff00a8f5dc0c5b812ce67ac1d42e6af9d4940278990cd9728a26c348cdb7c816dca47a6d1b999f7a259b63a1e8858609532aa47b4a3b3ad932e647b92e804777c65bca1af1eb81872e723dc72fde05701939f62f247e09cc9450994d5a9ee59d486910fba9ceca728ec07ac4feb1708bff05173f063161aed9c6ab7e15eb165ffc9184cd66c4c1b7e880383df40c322e25afccb18a00e5e4e4c78072c86c5b4e649cf027dd298f535a58d0d2bec4c0e3358072214de219a9edc907af06f87e9d00742d38ad007a0617a9a9acc5f5d935406260a40afb0578776c027402457dd35f4035a44f804ea0b3358378c667668013c5102011ee75c3803280ad01e6c1558358b7dc15a436fd963d806e78a31cd02fe06eed0650c9e77bc520de72d43388b77c5d0264b63d3d3108ebd7cf9a41f4c7d6d080f4387aadecb8177b06b4e3ef17214ce4970671e0e405c09e199941b4b437378879ba7f6bc074d06b6553c21321b567c6fcc680dbea73803c332287d92f88b13d8f3d39fd13e1360da21db35480cbe929af5542a1def8d620bef6fdd9203eeee8cb208e028489d49e19a33583580dcb170661cb297a0628017cadedb89f138398853f6f06313fded70c4856c96a9008d77b593608eb060eba1dc01c1619fd3a202de9a131088bd18445a8ec40cde50020f16bb86440886a61405e273d836aaeedd1c88022e5cc31d94feb4844fa0b62168e0706312ef3b90159794e0c625c464c4bc59b26c7970684fd1e19d0520da502508f12839830cb2b027c4b5451ed00abb2ea694a49621bf60dc2b0bbaa816a4332a8fb6c392357b8dc330883489438580082e10ef50c69e2e75b06f1da284659a54accda5ed2eba9ea23f77e0ce2a1db0c94b2f234cba50151366383904f476c8ecab953171f06f8496706216e60ea4c5385418f9605e47c4d27a732da4f960c42a69bf604b0e3f6d552629a2b229752a54c6d6f2f05c2a05afda8e978c9576f2cd3d4e9d7d430c5aeac32b5d37954bc68b7794686b9a3878b44aa84a8edea37402122396754a6b57fbe23c09f6c5f0154b9479fdf8992f12ddb029c51eddab100fec9245a48b3824a9b4b7c4ba64aac4bccd34c79e1b45be699aca31b06f84c709ca802488323469acf54589345580ca97534603a14a3b05b26db2c31258c694fe8c2828a17c9ba7e41eaa3dec1145012d738a761056e16c9e687414839f3250152a6127e9c76b225351ff58bf9806c380c433990abd78700b54a1a812136fa2947419992cd5333b9cc0a5284727a94394e0397cca0b288c8c796a88154e53c9219cba3c41ed42eb34c3b19373e1f5b4e6aa13753c3c83193bc727a2c6a91fcb603ed24958b443564635346d0e49e49b7487ff30ba240df2f886f59e22db29f56d33b83108ba7cc8f85f7c6ef33c8a9d2812abaf09103786151fe6d7acec4ed04d298c92dc7dae2df2f6898a79dc01abbf62bf3a3ca91b5759a3acde86eecb89973cc1cae017468151b0045f81f940614701c0024a1a4a70049b03b43835024d03cb3bff29d5f0678879d01e43f565f016c0c154010a8deaf0d6211927a20b347c4cf9741acfd48ffda019dea1733036a94b50095325e5e06282a3e4a4efd0272526f19705f790490a97365cd80f46b35403694b30383903f5e18067b339caaa54ad48213676691b64d00d2d50f960da8a6b6664082e95d8006fbf1c10085f7ca203af975d5207a6c3602683a9ced197021d31a444bdfa706b8f1e5004bb0a541ac86face203460a23932fb16cf5b03d2bf5e0238c4abcf6f803ced2311e92f403cbf3688331b052f73c2cba56d0302d91e0ce2f2b1fc322098f6cd20248331cb4309521a7cd0322748f9fc31c0e8b603e0dc6f27638012e7118c9f4994acbed5b04206917783e8c25d86c1994a4e7b0621f31fdc0970deeea81d32b81f8e0c62b0ef2a8318eccdb1410c36412499fc717bf50b40eadb4969c0127b33e03e5b0f7522e333839896137d9c0a18ecb1e69cbae4e604209f9ab3a941b8261c6aa0943f687f641012db254b4c191f9bc3d4809163b74c15497ecc0c4a07d8c7b60a0082621559bc3ba01babad5b83b826bd66c755c1c2e46edd20cea85bd6adf37f4ce87525e268ced58e0af1ab78330851e1887d2c2572ba3db91740da3aa64f536ac6563fb706884e4c98549515b08e66920b935bd66d86cda0daa0a59d8016df72477f641556b81d3e3f238b553364cd657359e142945c087db11a36b705c21a985c30b5f311c6d0cdd2805037c6362f35504c98bc1a90bd417fd20cf062a4838a615c81f7c64ca942d1719169b103791e02da3693bf90e1aee5a19dc446fcdcad00c226124a07303196f4477778106ddc0a90b06ecad62789ad99d2419dc41616e725f6a032a3023bf17359998740921c33726549028c53166159936b6f5d7f322390ed90a360e14efafbd0fc5480f030d2e2651575df92e30920e5175162a9031955dcab17019200cebe042aa4e01b80b2cd6774615528086d24802c35db3588a94d3abaac1ed4ec41312df33f5b5ffc492e57d1f6f007c0215ee3c29bfb1eb9ed0374c7479c783e5001a5932b80ad81b1c4f2a14243bf9f01baf562fbcc2df66cd40638fbf4007239c3bf3077ce721cca72e72cffd643652ffc79374076d801c83c4896b35c29219a496d401def4d8004a3afd220daf1b66110ede8a9a53aa3a68501e1721f06044d5c1b8412702960596a6c4082b6ca80a499fa7c8ea41e36b6dce6c183258368c7716dc07dd41e4083fd7e641067f6dd85419cea078941a84d834b016eceae3f0dc2da73c22c74d288f7894118662efe7e11e3f2be62c0d57303d01d707b6410520eb69c5c79f29aa7d81c735b14fbab06f1f9d31b80ccd81899f2bf9ce52b06047f6d03642ffc603a387b03f9831600a33dc320d35e3b1b1ac4947afafb451844f6cf0ca2d7c78c9c132ddc8d0c625f5f7934882975c642767c54ffca205ebbb56a80d7ef2d4005b5b5a1742006fb545fab40c7b301800da597a81d128c4e98a7be265d990870db74caa664b74662bc73a51e68ce42f8ce5325045965aea72aaa4bca905cce827541d35d74797e00d0306c1f19707bcf0e23db56f5a167a80b4b76984ebae03e9b9173ecfd9c759b4a4d88c29a0b802be00a2b2a1b7088f76998321bb7c436e519c6ae768f999c29d9dcd6b3403ca3dd8a433ccf870004923cefe4addfb73c7e01f2900c1a6267f3bc0cf9a387bf43dec90ef1964776febc1ec6017c96021abd965d3b9f292a9ea9ddc90e71565eb16d15aaa775c5422eb16c560d33b9ec67d8725862e5504626fdc990b893637a4c29a9da575e5b76a7679ca6d702145e9dd163651d178709cee8f9222d73fc492b40a80a424dde2905f8e4b1b29570aa7dde020c900c4673038c2af4d8c281eef72d452d40e0785619c422cc9830dd411fd245363608b9f0b03008b9f0862e5cfcfb05c437e455196697b6e124acea2a5a4ae045de9479ec52a86fc55f16ab6d80f2f41ef5015268486d53a8f268f3911ba09ac7ca2e6c2189aa901dd055c9bc02d81f776610bbd4bc079041246a0bfe02321de9a12a4d32fe037136a4170099900e69bae2b3dbc87cfd0b282bb20f90b963bb3288afdddb0228b3f1636910d3f2eedc802bce470312b23f00a457ce3303aef4fe1970b756033c0c67066cd2ab00eda7249b2b147d5d1f5f1be04fd700e48475f96d80a9e2c980f2ae9f0631b5db29405b5f7fcd20367aa2af0b475fbfaf1ac43c4d421028fe4c26d70608ac7706a44f9a19449fb6c7009deafba901c1f8f706f1f92b7a8be6e9cb9741cca0d1aa01f6f57301d4a65dc6d6499afafac5481fc71253b9cadef4d9807ba057035cefd50ee9c82b0f06144e6416eacc6e936d83d8a51ef471b9ae4a0600d79e54af6bed3f5c19c4c8113d598cd06fab7faf06b1800e0594a766e3d48004072700d216358f99414cdc87d620ba704983ddea7a3217c0416657832dd3de3ff587aab88f19060506b747a702588cb6f9386518aa578e0450bcb778ad1ca8922b3a28b595766c10f6b1af17007b50f5c6f6a980dc662d15e05a90a411454a3a87de066baed333b15dcc0178ebf78ef52773c208d6687a46d1f676c2d69711d0df92796101a23f7618974c1bfdee0140d7f978eb179d74c5d647172e8498902ed82e7265afbc63167647611c5ab76c5b85d205e19edd81487ed33b633a744b2a9eb1f906c047b121c6aae8a48bf8c5f607a0a01d89fe048b510fc9b103c80e0d2baae4062fa92e04f052cbf89632c5e57dc0fc288b02571ef6643bc567ec854a78d99beaa14d11ab81e47b1d2071cd3a8b70511cfeb71d4ff44739e32e09b57a01f092cf0ce25267ccc72df279c65bee0d62169295b8a8fa24d079656c3b0985fba84f01a48b0781515c7255b8ab170b37ac5f40969162e1edf4fb2747fb06617522994751a9b2c2a800642aa4500a84c89210c25c2c84a7f8c5894138e74fcf0d42a4ad19a845affe4ea9f9b200b74dcfcc5365f36c46ec5255c59fb4bb0215b9d462ff2807d2c5b253801db82f015245b743252e7d3174f605d071f2910264fff81801b47f3cad1a70de3e0064dd58ff03d1857866942e9ef6b40750e289fa16209b01a9b14a87973eee18c446ffac5f4820793831c05dfddc80dae8df804641ac2f0624e2a80d6218aee7004928650bb0a17b0c504a88f3238368e95bcce4d2eafd456ec06dd310408c66d35406111b49c86e69f76cb2cf95caa952f7d70d0823b835e096e715a0b1dd5a031079d0de4c0cc2b4371d0074611715d97e013e574c29e9d9f5c93b400e659f89012541d4740e8b76671720e3ced9d080877e188408f73833c0b0fb095075b99f29809bf7de846f5102bfde1e43293f94fa90814a3163f7b6ee0172f7f8a20b9dab62f20f40d4738feb85528a778fb8d705c0229001da012166b1059799b32624025c2e4db601cae8b7ad3fa11dc912ab417567db3d1a9653af20b963bbe814ef900c6e1b4025733a0dcb5b54e25d76875cf19507ec309de88816cdee50d445b463fd0dd0f449fd7c2c40919d6bd64b4145d8de0993ae2c0b144d5edb1d5ab180d00a4a9d2fc9c91d803a34097e9fa57c047ac35501d448e2914b453f559adad25edb8acfef76ed705ee833e9141f9590b07f0108ab604359fc8b8631b5ab5a0572c602f1d00477c2b2c175b66a78469385ef46b31d275065a781a30b809491a8da5555f60038fb04685f9f2700a7713a07a85ac5f80a40b05383c37235b437c33a4036a5d3d600bbf695411ce21c169577fefa0660bbb61ac676d1be1c019c9c2007b05d34b8242e40488e513eab038a3a1a6e1850aff1d3002fc61383e8c24b7d8b74d37f4f0664581e1bc4e5e3dbdf2f422be85d0214d38c6b75e5dc61d70d40f6e4add42004c5f763c05c35dae39cab7cf3fef4cf208e82976f800ff11f03fcb5a780816afafd1884483be7b57fb5274b034ae7a5066166184f0de2f3b7981f0ae86f0f370c38b4960ca2d7af980e0ed7d70c72a4cefed42034ad7200905bf4f98b412c7534e0ca55218f3e0c62e44e6f0c5045d5c9baf7c0ac5f3908be7f0d50d84dffc680c457022ae7717a0b90f7f1a02f80c3e1018b5011ededdc60402d1b3d03334383e374a578f51a2da90304a2a84f952caa3e383008e1fb8bfe5011fbba5c11c0b2f9b106d0314f9c6795ea542f3f0c621bef87aa5165ad92bbce00ba6cdb63d2a9645dbbcb9fe4c49c254bcce41c0373b39b01f2f0fc6b7158aef2929a07157d5a28ea8800b2aae853719c4ce055418eddf63a154849abc9ca2ec8c3da3bd033728541330b8b36479f63972a66714655ab7168756a5564296ad255c030ae6b93395d58a6780fced8fa4a2275da65065b85bd9b94055416a1f2546bec85651961d0095a74775a90b6a8c78e6be58cd4bed55fbaa05c204eb18a9242dd79127fd2128a50e9623979a583baf511079f3658dd235778cb558bfbea5f401863b53042c7217e0720cb6a757c6b40c3e864451b27272ce4c56f7e1bd6ae1bc48421db5a5535a42dba31080373429db3aa6a39a21b1aa6b893048f99aac978c634d64bddd7c177bc0a90298b0c65b5531f1d3d017412525dae765222dcb46a2b56d45c5a80f8938fc2204c9d381bd70e44795a07e81ef969cd20b6f18367802eca3e86009db78f638318fdf71b808c3be77f2036c78d39c0a5d09f0d885e5836e09c7b348873bf12902afab66dc00d9ede2287f6af8901e7cbad0189f3668046091eaf0da21d278c9c5df0ee2f0d42af7c2f0db8cfbe03e888fed831a03ac3bd019ae717403bdd25c00a1e8e4bb52242ea013de6dbd96d6690edb8671b06384e5f08209eaf30500ecd38675a3a12e360d7007fba7b036c066383b8284bd40e9dc8289ab5e26f7b53fd22d7e1b909500afbb71b83f89353c6e52fe90ca3afe4f2ed445f8bc9b5ad9930b28ef60e6869ea0eaa0c70e11d006499206955adc0cf9660a73acd94c3fd0d90cbd58b0993eacc26315adda95eb17fec31b6394399dce7809cdbc87b9669de4daa382c18fd7c1e7a547bc75ceffa27647ed2aed6459ae2e1de075494111db190bb0327ac5f982aea726940e423eba5ec73248df48bb4c050750828b1f5a126d4658d271329fdeb45baecdf67ec1c08a02561d8ad17f279eceb3301367a9278d50a1f4c8803aebbd303fb183bddc275faf7a1b869d50b17aa5f80df67ad8bc3f6ea0480f3752f7f3588fb4a42feebee3809c9a054d38bb0c2f5863f803254c076c6e72ffec571c2ae5d91f3afbd1168e34f3a813940cd456aa571e9005b70cc8f46da5a9d9e0174b974726dc0fd5cec418db3595cf7014472f5c69706685a4f00ad7d1c521b25986ebeef0d423efdbe012839f4490ef0bde9c420066aebde208ee88f2940dbf8fd8941c87457cf06e4c9db00c82cb7f26d10ed389d1ac4c7e1b6d65817db5c01c84f9a2cef0b10f2d8978076edebd620b479528634dec68fbe0d6289ad7c1a20d12f01642e5d7b3420a96acce4461b7d8b6f71236dad7abf0548397be25be416ddbb7d15a012da0e6f71501ed9e61ba74e3b38348871b9d52f54bcb51d19844c371b0064a5a5d6e202848e7c70611047c1780fa0cbe90301a71d619e2ad4ade2ac6ce439dc1bd30e2923d5d7b70165002b83b0b27cbd037cc7b70ed03c251abd51b6d776ff00a06a8cab4ced8cc267bd0d964736c0d8359b03949a62720ec875a7c5b4cc4a9c5b303235d93ca27d2a32ea34f9524ade6266508e877bd2301df2a1be96cfcf71394bee994139250e925d7ed1a92b31d7c9d9d514598e1f1b9f5f945486a3ac59535066a55a5b0634e1c3da0c58a6c59c7ba0214d2f970a94911e604828d37b0dc8d99339e69bb28c7a6b4dba2ec095cd3a2d2d2b5d1dd1ebe53cf4975ec9d6d7691678bb5c0a6074fbde078cd05f8e6680947650f66e01622807ad41a82b6facb9aa8870a85e3e1190cbea8b80f23ad1f4ee6ca0d80fcb74a139c4fec1aa5c9c1fbf7f72c69a5bfc0bf9636e1032cc9c1eab6678bbccf60ce2dc3f662177ca48c8410731835ae753da3b02481ecba600f96e600b6eff63eabcb61bc76130fc30baff8fbbe54b77274e73e2d43b4a94dcbb5c9f7e29e307677772f6cc7c91658904410004413d623ae6610cd6fb1eb31e81cafabc49a0eae2ba2050d3297b21d0359cec9540c7fefadb03de6346a0d9a5dc9665bddfb079f280e19f0981be0b2bb45b5f55743225d015dee987074cbf351ec8f0387c11e8ecf1f0ec014f867bf080b5f57704baded053a0b5c24f7f1e70e77442a07343a7ed019728161e885e679d1aab757b62d695b47ed9277b27d0ed0c9d1b010fe98a59e2cfea1a4efcc307f35534b39107ace837f08061865f02cd426a1408e8bd627520a85319446b02ef24be79c0a35ad8fb15ad1ef5c17ed19d29f10f3b5b6b42c65c35b75a1f066f0a744d8bbb9f6c55637d3f3f1e88a6630eabf573c33bbba1aae7568f659eb3351e3a649f28da354d187aa268d73419accde77016bd2894a51824d6bd2c459b5d19865a7684c0e953712412be7e83999060813607b8058009bab6116ba1b8214142e3bbcaf1929f60298057e455eeeedfc25322acafe9962d09eadc09ca4c266b58982460056e67d0d2f8e6827f0ec44bdab23d9c96920632758254145bc0d504eb861ceb5a5714704dfcb025603aa135214159341dea6c8fa86eb84159da23f1bb27df87048c9e5b16be4a346bcfbec94d9372818b4be70681eab17ecd032e3e82400fa0673e4ce2e31f9b670f98f2bef24026bee701815f575f782096e37446a0466f36f040ece4c32781a6bc97f50aab6b16170f44c61e6f042ab82bb698cf41bbc9304d34e52c9ec71ec8fc32dd10706ec0f98f40f7de77561e30d2db53c0bc1cee7c4c34d52bdeb391f5a46ff018d1c417be1af15df4b8ecf87744a0273cb02642a21955f6f595404ffe9a895e4f543b18965f4baade3ead12d4b5de679720d4b37d5e3c102d45abcf01d174d12b65acaadba1de15c4ba2bbee9014b30c9504f6a55ad67c056afa9c03c51c6ea451613632e5c1256a43427585fca39f7250698cb04b6ce8ad33f040943d065b67aa31cb281788f86eeb19a4604b52213c9071e701b121bc8997012d84df423ac2f157cbd28d08af59420cdcbb14c35cf81d863acd29ce4d590ee6f3b5250e712a736b28ff482a3c1187af34c5e708613e30edc7792037135be7704d670137c4690d0849bbc7b203a2896c922714248b55524285139d638c462265fdb910cb1d42ba5b78c40fbf6222d9696b91136be0404eabe5d40a06916bf29818fd2363c103d76dd78208dbc6e11f83363af1eb058e5928013707c2a1168659fe53fc00394961ec840ce1e08546d4d1202358c7e230f785ec133813adead1d811a462ca99bfac4d8eed6032ee8c6045a91bcfce8010b6f3e79204f7a52c0e8a8bdb1c57cb60b652c554bc932db2575568e0ca0c73581b629f3f953ad2063bff82e7a1e8efdd87bc010c18c40e31f4c7a4e9d1ee366962981c62e7ef45b748310f383523d992560c990b45ad1f04f9980935690be12e8fa9c76a5932879db215fbfc69e0b9856e01c40b6182b50a5614996d2ecec51414d16759830943acf53bef6f14850a74bfc7a260865a12c5836096296f665926faa053062d60d4c9d1e1345cfa07dda2894451930d73a6d6840a45c27a8b3745a854fda30b483bede08f46c0e263da75a6722aec87a65aa1b1ee20a25282f217cbfc71f9f540be6c63cac2335dca369deb61e5017a60a9810c2132e53f75cd21e0c85a78645340c57acd2fc43f7d74f5b1e8809f72cd3491a1518e93d50e8222ed8056576431cb25e70a540a06a6b7c575b9113064eaf1f1b0125dd4056fb22f035ed6301651d5172f8c01d887f3beb13e810931a2277200ae5623ca0897f22d0f29e618f809aceaef9a45eb13dbc78c0b5b58207ccdb8a08d4625b7d7b201d25498b0ee80e88de96c05b6c4b0fe4e5a67a852684fc58027523cfa1075cf7e812a872ec871e88c65dfc0372d3f6c50379fdcfd80399a356570235f2c49fbb03690fa9987207a2a5a66f049a70587ef040948114dcbe0371468e1501ffe296570f6839d609745adbe9155aedb574f3407a7f1e7820bdff48a1f381ccc33381f74dd951be06c0880fa6b90a76d22228490680b9b009abdc79102c288555dde6fa5526509ff083b2ae2531edf053405da3b4ad1a81ad31f56d2f202cd7e46b0710e0f487bc6d8537f5fba32a670f64eccb9608076adc175d3912704d3c18b36f7d184abc68071abaf2ae57a861f4c936cd573e44f57508b8c06da45ce11d88d738a424e75a48540e9bd0975e9c3f11940ceb187515443c0d89ca200e43b9871c851e158bec4afb2252582c718b887d7d24d0a12ea7743bc00114d55b047e0f2fefe195c1e0d30319518fbc878e7d641b0fe46b25307307dc44d221d0dc9eaf90c017a99e7b2075bfdea6047a22bd1c011a157de51639dd252afe1ba6ef04baa8338f3c10599f2c04f845e1d2d503898e667a85eee1958af50e70e741fccc9bfaf3d5978107626eec7b043ac45ef50a3db36dac3765250ac8a187913f2edb9cd873baf61afff2e5fcd9d727d130c57f07d27d1370bdc1bcf11ece62117fbfcf8eaa5598caf3c877a9d1b8321db6472dae881b3916c12dd6cb1519629f32e68a218fa9367d4a61239525ceb8c277d19d8fa6c2be35254dbde783f93d896207395037dc45b123687044fd5082dc8812753194215674634a9249f77b025d054c4e0a6400d989f1800b870502ddbdb0fbf140bca4efa3824884cef2d1a332ab26c4fa1cd5484c0509633b1051c394f8b531558eb17502e7488aaccbc8fe7720eec5125435ffa34e402f3aee760934b03bf8f28071ba3d01e75b1c43025de3eb27043abd368a04ba60b7ba79c0ed72b1079c700c819eee721615ec4f408d5f8e1e70abdb9a807536ede58740e31fc3bd07fc5ab6879e3c1a3f2d089844114b7a5454f29be19e8d07d496ef04b1d682ee13b0d2402cab095149c75c2021a4a8a4d9e9e6c297ab32e46a6e1301351e7b679f650095ea7ad6a254d37240eb491b11ba52c863abf0271ab7d4a8c84669d3e3d73674a1fd8f0fd68868af4f3a04cc44882b329d9474fd25aeb03d0cf3d802397cc0012670db7d9bc032b5baccbe55e7ddc8c9b4f984c4b2238baa07e225adf972f98c2b0fb622287216b36c64ad32623867bbf1c4aac4a95e51915119142885718d37fd10812917d5da7a95b9b25cf2a22db6c3bf73df7e1302f5b3271302cd42a2f955d60a10f1f1d10369d3ae34d0bf63bc4e450f4417fec404ba45e454f08041c82581ae25597eadafbcf02a3d5776ee9b289444867ab95114b307bf9902592734e2bc47f9c92cf2b6950702adfe222912517eee0acf6bbc12441ab90a09582630ae8814964d5136c19b5ecd03def446506108a9caaf355a51a77255a0eedb2b8186c29f1205dcc955e3bb683ebfa9e8d7c6f4b42a6c8f88c7339ac29307627eedbe082a74df643ddb01ee173372b6b103f5885948323754fce9e92f238258175312023d7a221329f48786d8754ae0e341478250775f4f3c10ed304b3d9041387d27d03ddebf9640b3e4fb31812ed94cf41eaaa429fc157fc4b41cf613f9c329ecb14aa00bfea32b01f3b58399187915d574560a1b45f9b100622a487e619e4fc688404526bebcfeba64ecca2955912fa61e971b029c2120dda08d6c8a4c5c9272c90ef0901d2305731dd094a2ca9420a49692e2260e686d069a1b15cd5035fe6b354c3962cf3991e247020fb8aff19580cb2d466a86e602c5a4a30f8a83133a114b29157607321a2a7f040c64227c23d00383d2334185c6443224a84562184dd81e11dfd6beca1579757506fe8f045cd24326cff1af88f9b24ca089a03f07025dd0ed760834f03f1d792032d6b704baf6da91deafaaeab3e70b81664349d595a8aac754dbcf0f82846916b2c52cca8bffb282ae7465b5a65502a4c66e9e0928a12cfbf84b4077d6c80a8d03564eba3252ec36f2c55d83773650a35497415811155cf511a3ca8f0722da9269ef40483350bf25cfb6bedfa3de2388e957ca118f39101d04dab839108bbefc4460b970f8aecfa116ac242c3b90328fed4be6dbaa9ab4460e7fbe03ca18db2362aa06aa948f5c0eefef323f78c08ccc07826ac44364130fc41999f0c19c7214b14c7b1ec8bcff2753743566fd3163d884b6c8e5491a6835f75c2252526f2bca8baaca8e32eaa07fc53b659934aafd5b4a6b79201dd551a007f548fdc2a8e667d36847a011b4ef2b81bab3b2bce0268254a39222eb353dcb170c33d4542999ea8aa0caa824631735dd7e1c485a41e48baba1c077310dba3cb263c8818885e238dfd6346660e4785707b85dce145f14f08ae2ab07322317c60234666064b1de8112fbe54faf281ba668f26d7319bab758dc23a849df9ac7990762b0cef9e8eec9e56dc732f6f343a9e56d8f32e6fe952cfbc9083491bcb721d08d5bf39040eb4ac6d22f7537273163664ba00b9863823092934820274c45ce28aed3ba106beb5f799cca27418d8673b54c4037d21e788f3cdf56ba61e3014fcd3811c46ce4fe8e20e5c91b57d1eb759f7f2a274bde8118682f86a0ccfd0d7bdec34d28a2d8267f04358eb9d991a01e51d3f13922ddd738ad1134a4a302d9bd10d5e3aaacbe19393e2baadb0af76aacc5fe08bd4fb868107065c4ae7e3de051b57a856e769283ada27f5546d840615deb5cb52e0489a4e09996347218d6a402b7dd6604b16ccc81ecf38cc24655cc51f3c52b1a961b2e2ba272423d0cdb3070e7eb08048c1885baff25a6720cfd12676541c0ddf94632eeee4016634b0941c4aeac3e12581aac72884a0e183388c47608238e06f3b725287345f37b4d50e1d73e0c096ab1d81f9f7cf45c42642a083c9016b3038290a372a21f71827a7ff403fb258a393748ddf328b4b590616c994efe6dd75f8240abf1ad9a1e30ef53e66cbfd7dcc60502dd5a2e076a470d4de28c4bd22f0de78cc8cb4df8b58d9047f97c94080c374cbd4803e56939f42cde094a6a17fe11d4e82436970a18549104ee28dff62b40f6463aa0274b7e2bb0cc819ff609522eb4cb597a6e3c31fc637e42828a8edb0341955df9922a90716b8a0a6a0c32c51d02ba1ae65baf6848cfd954af8822eac21a01c3c781946f8c1a6ebe65bd2db1821b96ae975dc9046cb48c42fc249396d164e3f86949a09b367f4040ad6d64ed35ca77943188f04150d56ca831419d6b7ccf750586b3698fa0a159484f041c62a8b63c10392deb3d621d95150f386975092c07b29c919a037a7ce18480a7320589089d71a392a7432d08f444a54644c020a4a1256d34e06e18a5cdf7433145825f9bdbe377307a25a84a679bdf3f02d65233157d8e069f74faa980e6d774e201171f4f0446c421c08e20325cd04d14f01e935f825844ca54f58a845f5ba928d0594c3a2a72a352845f76c7e541ca90c72464043c34d5c80a6f14e9667c70a84779c51cf9daad020ea0a441609876d27920e0f104a6ac5fab51a76a4490a8d61613eedf6e8e4395403344267c5237bdb23c1f9fc30fd3aa2530bae3b04be0fe93566f13d8888b8fd20d515c60370ce7042ccb6b0a62b1c561a526df3210d18e1bb59051963e81650395643438274186983df21e3eebe6ef9120e10c148be31dab4d17ec4a04654e5ab27be10e646a2ccc09743aa9c41ec8a34b4d5907428ab61c319dcb8ffa0d8620a2965a3d10c46ca049832061f660f51f908f70752507dc7425ead336caa2e85110c5668d565896f27c0ec41418aee0e59990324ce55415072cb5f6d39c20e53298ec4d88f2c4475139e10301252890ba2c915581091a2302da63a6bb5440f34b8e1571a0ca8840ff9dc027502908d9c8f42b9d40d1799f0e1450d1cf770496d3fc24f040e6b9a9de238999f1afdf92ea3df61ec8dcc0d5d91c88ea3b883de6e66ef6cbf49ba01c737556442aa9725dcc74442925614c7745f2609d3aa1e9147c8bca4974aeb47b05158ae5f39180e593ec75e4019ff4a480464daa1f49f8e85f7d027d5bd991ea5aa3202d16488521078ab482a5b65ce4bc2849d243497a3f758a8d5e744610697047de36d569def45e086adc45f1cc7b442c3b12708a4ef3c9e07e855439bb03f1a39e4f04111f6c6b0852ee2bb0d603d6211978c0446111fed4bdad68a96d4c50d441385510f35d3e09e8f1c5dff75119177c155eb1d89c7d5f91c06e20f164f71d0cda07c91741c877197609228e8621ef914bfbfd2312777020952735bf350fe4e5e65b01f91fe9db094189c363f6a180c22f96630e28a7df77498efd12a79d1e053817889bf121c0146499c33cf00a5df037bd4702dd9dff7bf380b9f82b828401c4c717015191a19bca8ca0aaf3ed9aa0a601a2a90209bb0478230823466a561e70be55c0b86530d911708e32df2782589d804440fee7fe91191fcc3521cf4d4815c432e1c899290e9423ba917d05d22f7632f3802b3463823aed8f0f36b26b309af87739751d5961ed9fbf1181bad50fd2b7f9c29074549412708baa298f092a6ca0b04c50a36550d18fd4a9b5e39207d452758290269c1c71e04023a2957320e0aa979183131db0f4a324ef2207b174a59c04ef40c26ff9b004298787240cb9262ed0e69f2d094aaab68c82980bcb6c20d70d8cc2c51e88b736ed115462fa84af043616a1eb8b38941b29b7547dcb78299b50e352f29172be4c2e726a08f4887aa9b09c3f85ca6993a0c68fc8799ef96351a4164505f22e0843029d70a24f01ae3d24185a4f084ad452af1941595ece1e7a049598b5f6da04558ae5ece201b71f773c908e9272da0ed4a83ee514f7b8a2273c980a415ea5eafe2dc580c032b7a726525871b398c8871c69e800b74458d9dde24083c6d5704110313abada78205f5be5b744babd432a603aa0da7228fa234fb417d537bb12708a0e16fc48ccc3b182a0a080ca20795420ed6124a7c6fdb3aa4184c80379dbc948412cbec7b44e5063bf4c7e3ce00964f2a479085a9cf7ea94a0a40b7621419d516bd935e04028d32b8a15024d242ff1a66a6b9bbf7f80cb2dcf04c58836ae5e51d2c9f381a02a4f1a48d6affb672362fe98089d9b0864e283ec0277e2c29d8f4612527340f7adfd4860444ba1fa4240b3d84854c1354f9153b42cd9e4edc5693ee5d7e67fee0fb6ee11d4d51e4b0842e986a024faa3ae0b5441f995804b03288992ae472c0783c694807343803201ad71f345106b9195eaab0732adfdd6094a1cc88b0a4185d6d658efa191ab804f1a6ba06ad2f3809378aa8032660d41839a6e3652c0b1ff2aed51b70d8da0c998cba381221f5266230eb5700dc69f0486ce59f740c00aed60ef87468f6aa9caa3875e7007df04ac7b0e39fdd8014a90a9ee09180b0e381584aef765644b1eca1d48abffad08ca1c73e1134125e2007a20a873be950a100e849cb393a307d251721883fb274348c1ee5301c7edf6ec81c493b3a607d29572048603860ff63550c08e9a9d3ce0213bfa2d966ffb2a9a2e8ff5c9a3cbc1efce772bf24843496d72a0c44c15897f38a0c9d752f0c101f5f8e45459f76a3c951a5265f50ee4498757823a03113f3b82500fe5be10c411736ac46469e41688e80fde34d7b9d2731f1ed096da78200ff6141270063252eec3012ed7da242368b0c52c9fc335214f74d47b44ecdb69d70306fff48a988d5c140d93977192c8d55744108a68dba63ca9f18b3a474ba0aee8fb8e40e7280302ab2bcddf042905574ea4770f5ea44efecc08ca1ceadb3a01a713f39c12d428dafb2d818af690ef9237a2b4d881c0e8eb37082c4d270b0f782a42598134a12989ef11a96b1ec891b90e84868afe9340bb410e73716dce5c5a43bb3072a352549fb8d50e703a31a306418d06c9342430545bf3b607545bbf049188834df61eb0f6f18d208e69f59d096c2c135f4f5a2c8fd4d0376d10702ddaee06048cc3d813814e49e6f59b40cd2fc90e73a0ccbe95739aef80c9934b820a354ca437e5f0307226a803b42e50782608290e6f7a05a735f35d26a0520ad284c0b03dbeff0822fdc8de0306cb3704311be84b06506c0b1cb76f7d024eaf466a0038f9b1f45f166219d89885ae4df99da028a3c10c1b041cea90733572919326444381fa1ec33a4183d3fcfcc5036aed1b81a145ffd9248845f883da23816523bf241eb044c6ab07d2ea3510245439bb0e41ca1135ad7a2032b6e13d6c955f2bc9e8b14d8b347b46d2d9899ed986b13c47d208b9eb88de891339fa51b23e9703b1e9f03126301c62d51d810611a4b44d9c876eb803734850a2e31d340934b0fb5724a07d1a4cff08746a7c9812e82cb66d105895b11f828412241b62ee401a68f74490d2d37a15633375822c0ede562cfad4d499b1fbc52b8c65645376f8c76954e7f2a41c24e9002b510472e2459c6ae4ca1eea0455112994760435da85664910eaa435f740146ce195c0d00998bc792062d97826b0d474b2db27970edada92b6e6402a7a2c9062b7716a99b715c8c9a339a004d5cb04454e6b0736902d5b568f7a22a85899c5c6f7816c0b6e1a139356f2931db09ad648107115d00c3e08aa9a0ff340c04004e4305b0734b36bd82448b9ba724c04f808daa146a08b3aaf0d821adb430a2adf81b8c4b2cbc6813abb015b02c67282b9024e6ba81e08627e449605ef804522c7043acfed7e09529d2c661e701d884f9a3fbc28c7b502cb584e9fa028b26ef72d055606d0079fd4963823cb796b39b0f26072a68e031a0ffabb8f7d774b5d28ebff2ad05056a0804a697b2228b3912509dc810adf763d26a8a9a99011841cea920d658bea3718c90acf0145fb6741a0c23f0c09e29886c08480dad24a92af6b8d82153b48b2b21c28527fa41eb03d467c5bcbd914d5ba07b4605f3d104b69f146d08899c07d1fd9b6941793bbdf540af8b90ff0746cf3542128ab9c8604eabc07758288168ad4d77620a17cc881960e702a40c88fe4fd7fbf42ce4cc9bb9aa2fd3350c0b1bf78202851a4d29507128799bd13542c63397c0e5b9336b552bdc196f3dda222fcf291b2ae8c98371951653f014b929e0315ba91521a2b071c2f5258d101aa3e2bfb5fee40e62839dbd88186469c9f3c108dbbff238878c51b9f34b6ec06a9fbe540c209785a2148a53d8c6cfacecbd4e8301d1314d92fdf3141996a7cd75320dd60e538b13b10cbe0b74350e11c354c3ca0d3bc5620fad4ee5e08aaeca8ddab07d240bba507d24035fd961ae574df24a8f3a6d9cd0331260efa91d08a3fb739105876f6724a90b081bee48a8aa9c85c190ca5092bea670772848e038651b8a182882ea094f9cacbd430363e7c21a0ed00d9b7662b1a6531c333419db694d4ba71c0507f8cc60a78455a276064d3ee15a496e7ce8a62cb0f34a0b67c2228b35fe67c52ed399b4c1458566f587b4003fe99803d67e4a062076ad452bb850236b2d40acffbdeb23c709bc048cf999e0cd36aa40eaf9c68e04043ec0f9406044c09b04dd141555d6d0aec9280c67720cbc67720e3761829b0d2eab2adc201cb796ef24890d0157dd39b2654d2457f858e4afd96846f2ba518f2e6911633b25dce81a27ea442505223afe48188f6ac4e50a1628bf5a6557ee46ba8807a2c997ac0348b910722b85181a0461770192ae02094927677c0e4fc070f6400ad15d42da33d8620540bf644d09027b58748810ed3ab07cc73d4e7301cea12607680c6b7ddea3d223aab1f2f0a2c4b0f5082dc4066b5b52f82d4ca00eac8cbd574db9e695d092289b0da8d28b69a7313244c29a7fe3990aaaf2e52588b790684cd40a003391811d4b94451e2b738354e6bfc48c0970b3e2e045cc3b1b27bf20e64783c3f11d0c4076dba9a379de67f0445ca8724c838509216b37b0fa8b5276c0fa70c64569768f11d881a7faf13543815bc794091aaf24973e1be83554450e398935dbe77c0738ae60a2841d38b075c1a4808ea6ad3e94d433a8934f2722032b67b536019866a11187eed71a040e5435b2cb2f4a37e08546052f67ea2992a6d515bf5885b2121992a0ee8a15412fcb34e8933cbe4b747c0b5572b076d38a06a3c991144346a820a81bad54f0141c230c3242248693b4c8e1e70e3a7a88b7a6e5e899c4e3c60e5497e24b740e45b961ed0fcd27b5474cc9d08aa549fdf05821add261a9b39602dd77f80f571f5a6755a7dbbbe02aa2dc986ba0391b1a13e69c8e08e38893950b5c5f6f02a27ae13181a3505fd96885f3b3b28101d6477050f280efae8560546a6f97a52b09cf741506288a02d0d144645aeef172c81ae7b48c69d13db125702644137075cf21d3f10e8f2b5640fe692ce60f9654240e72c908a070e58469c7fda0a3407bea3404304650f445d3ccaece15a9402b36f101445c162fc44c07a6c014d1607b88613bd1254f82dbf45059c4ef6550fc44b923ace0ed076083e1e3d602939bd42e563f7ee0197d2d604a1ea8f9907a2d88eec1737e1f0ecda1581e1ec21b54b73339153f4a14b104b675b59b370c0269c0ac4ca0913a668dac588a02e57408a10db8629332ef527eaa21131146e24ffd4e6a9b3b28653926ef0317a838840d36f2f7a05b543f0d92048a871df0c414a47f333f1405a4c2ad8e580032813a5d4f07ed4b44040133ff8fa23a8585ab06b02daeb4656011da0ed60e4505d07ea7446def41e75cbd0cd8520a4ba983c11346828261b0f685b061ec84d97fae8aae8d38602cb8a18050f38d4471e885e972dccf92d29fcab2a81a532588a4835129bd04211d1361177d8417215dc53686530a940e580d63d977334ad5f6f30ed278288c6e670a480c6447745c08840503d11588d1988963279bc4754f0d403514a5284c7015a9fc15a3f52a2c596250a68d17fcc08cafc5a4939bb0351b0d777822ae7863fbd290d017b800734485e08ea966aab41d060ef1f120f44c3c8e6e23ba00d5326301a317af68039790b0f447fec8c07cc94d507a31360d76c6437d4e5e5a4e65f6e28d0077a5e13706f13ea7c97a446499633746dbe42c3f8e93b0113eb4d7740c0289ccd02025d5d913374f3194a2335150fe88b11d8a2c6a5be14b06fb70f040c65414effb90376c3d103995fe22a4199bdfffe4aa0b3fae399a02ec32390453f0742da96bb0f0589f4fe49afd0ae1c9e08d49dfd2e2ab05c8078f540dec5b2c5bc899f1e3c60f2c29b075cced78fc4d41ff3358165ef2ffb0434f2ec6aa940b4b65d8a7d1a25459de6570425aae07599a06259fe441a2836851a97286464bb51cbd8f867814013309337024b77f62212146b74d4b0c562b5e883ed9480e63924252007b4c7a4c89b03ea24765f3d90065a0f3c9097039fd4cfb7997e0bcd73233ba8f2166554a1fae4818cdb7589205491aa7b20daa1f049d0a04819b687d364d20d87950276e549ef118948059230745f4ae264010f64e21b471e489456d692ee8036dd5841c2f58617028d07a5750f18aa5878c0820f010123467621433d7602c347ff2628a948b181926a22afdf13cb20af5ccb4c840641a44903f211abe92f76b620d0cd3d72ae8603214d85817e8411e7609f10682ae0b398d656e786e06549a0f91f2f194189b3e9654ec068a0799a1130661048fe87033a891f171e30a0ba2760328719850aa8b59745024373a3faec01adbe9a028ac3c70301230236d377518bfeb0f6407a3fd17789798f777d524bbb90e290ff27636eb2f440fa76daf280e21013249c4e769102f6fe51db34e594245bdcef80497a3279daa4c88f1c620f182dfe2128f3d18786808b6df812b14c4ccca35aa47ca34d62a6f0dae68e800b1066f2409052a442996f13cb045dd31e1094e948041f0ab4d52d01e385081f09aab43e4bcf1ec85cf9b255c009474ec97480395766a8573468c2fd963de064f1ec8188941c78ea80e1b83d6e3c101b26d17b44d441b2ebf90ed87355051ca6419720563b79e1014fdd795290300df893c0b2e72643828462996e3da058ea4d5560d212414a5b4a0ec9c841c29c899a070cca8ac024ea9b9a12db23e1ba983d1515708ace2e1e3049af4550e59c2d87ca385063aac6b247e00c1f6942798ed45425a7d7aee55bf2656351281d3169d3b8c808496f4e40eb33187e1018e6f60c1f096266ee648640dd95a398b4f9fa2dd7d62e04baa6f53220e0028491cd5f0ed03b09169f04544a56ce18ca0105e6f9d50331378e53029a2cf6b8f48042b725883825fd7e13c4aac7ea0aa4d503aa3ea70aa8e865135a0e3823ef860af8609c8073c02b2a0a280e1cd9a9fb232f974e3c60c66ea6800a652d8691b38268f472aecc014d6beb01d35e1f3d60142e5140e197cd5f77200fb6d81014391a2e470f3845ebb7a82e3c3609caaa0bd973cefce23ad055813adef78f2485881b3fcde38e2065c6fff02620662239641bb4034c240f86af04dce61a489500072cb554741460997216ec1a0415a6151c2704748acc5344505313ae4a50d7289cf180f6e98280b10b93c404349dcccb2f41cc484d7d4f60b9ba22012207125d5b5b7b40033e54400d230b21aedf0af491bf8c02d552530fe4a6f30281f6adb687eb4ab9e9912de69412c7dc3fc06356de08ca34e1866cb1a4422b78fc4c5065039dbe14f05de4a00d076a14baf57d9826c57c33f5fd5b7e520171999b6a86058290a9b372985ce2d7e603a9f7e980faea12727580a96f08a5918b1a500d44293950177b0c615581066563059ce7c46f7020a44172ad7920bec7754ca033e17e4560386ef7c603da6333829803f9b8f24014caf44581f4ad19f2f5737b4b86d8d603e91759c1cb472d5d8d89be4ba286331bd9cf514719844515299bce1424548e650fb8b8c427cdff08587ac07475fd48499f140a68e2a7ec9744d73c8f17057c8e4c1f8c1a26d89d09346e791a7b4013bf4450e5b7b4a4c54a11cbe3e057e4a394e7b84b039d08984c1a0c7f08621af05283e80e38358e08985d1ac87492e439132c4e20625952af3128041ec814fd5a2528318d2f7a20d054d1e78307a2fad884a53cc47cbfa2fb4640f72d30968086911147221fd70cb9cef9b6b9a928e270f680637fee015d9e8c801b73ec8137cdd5c1fd0a99c5720b86f738ee3de006d4a2024ad061e30123028f04ea9cc962ca1d70a74ed30369d3704150e63c97d63c60c6ccd603e63b341450b413b6989320a6f29c3c9047bf640a28ebf3ae07d27329bb32d175f5634b01bf65bef240de76b126a8b30987324c4b6991d6c54a04b7ac9e277e1e0852ad3123af5fcef3d3e51e7f0446b7a97d11586e31eb7d13689a67513a2a4f3ba171d520609e92cd2282908a4d8aff3ad0607b1cd70409bb615f2448358078f1808b18324ccbf97c2a574c14b0810e19013dad400e84b903b9e9a5e381889454c3c9950525685af2805b11361e88c63dbd11a804cd1f14f0e5d29d072c6a56f1807dcbb77502c3e16115f0c1662f1eb0c44e9ba0ca909a1cd37407d2fbc7b302b5b6ae1ec868c8320fb838fd4150a3e01e6f04753ec749bfa521ed615a624b55a2020fb21eb6094a2c61bf9a13b0843dbe44e356629e1162646b970375558ebf042c2b61fa20b04c1991edd8b912672d02c921492a1a410b3ef8b57932cffd1e830241558dab1d81baa243bdc25070e538e4bc5774566f29e04ad1c47a207343834f9afb16d284730fb81561e301b33a652aa8e456dd1dc8a15439a0015f3704454d7e9a2aa014ca894a77c0b9322028898c05af0b82b2ee9cae28d0ce3e28a0e0cef61ef05b761eb0e79e092a9c1bbe1b1ed0254e15a8d31c7b2042370f3ce08906570215dc946d9af82c82d803868f230f68b2240ad4253e784005db2508756487048d84271ae8cbc509ed753148aa3e9227811937e234685fb81194d5107820e0e69ea01278203332bd82aaad31043dfff540be45a20a3960c855c2fa0ed0feb0ab01812e95c8e61e0762ee8088f58a982ef16541c08510236771e60102a6367dea4734547159792093d6033c602c58acbe6aeeb0c8ebef0898e31ccc02050c413fcc3ca05e5f2960ef5f36042576f6e9d50319519b318166a8ee52059ce67f0b1e301ec447f762392d7b20dfb2b71e30f0cf6e70de094d167df42a1fece2afa014be1e15a849bbf7809a1f1e8814ee63829a0ee413015756edb1a7408def364183c354fcfd24df09ca3c9412413de2d1ce2702c3b44639d53ec9b390f811191e35cd2f34933d01033341b543c0656323c56fee405abd0e02f5e716af0421c3d872f4553e8c695dbc950918f80fa48ee21d3052f344a08bf51241cba72cba3cd4300e3094f5c6077332c67ef9f040bcc6b0e6813cd8f45541c2ddd7738212b390bebe3ce002a6bf825abba657d0e1b512b4cf41c2e20463029f3a3b5140ad3d79f2806128f66d3e40e4a6070f44c666af1e5082520fe4f5e958d512cddb3a8d147010ce070a34ea34f180995d370f98f87824a8abaffeae40eda0d0031973177df490a321db7b208d9c527013a3fa54842e4fd3a2b9d12588d43210fd518f59c609721e4e9227504957b645e8eaba4c8a5a9140d76fe7fc16e725495732b853b70dd5b815025da06a3f1024fcc85e3f926a384c6cdc3cc748e6391adff5dcd7badfa3b8f480f18f270f987b3e5390705be79ea04c33b01879406f6da780916f895ae7da433366d81eb9d291afad7ac0797fee01452a23a8b12b69d4d4bdc04812d61d305574ef014f4fd78fd4d9fbb259e10e980ba7afcf641f9b9d14309841f32b07f21cb28fef0ee89bde081aba7474f58036dd59015f3f5b7b40d1d62b8cba2b948f2492f6c0af3c6918a77aee8acceaa1d55d25cf2181a646ce6a0475dd550202263e226c13188ae555efc198346a114144aff1fa4bc05551f37220e09aa779d910e89ac545842e4cb8efc4bcac3c1073f4890fe6d567714ca03ef2f5c3031653ef28604715b704d47401233539a0c7b750c09edbcf08d4e1e588ca81589fc584800ac594de3de03df61e304b7ee701c5e1e081d8632b7df450a3d67305940f0a5d0e5821445fdfe854a02f6754b16d3ce0c156150f64200fc5300a534de26cc94d1b9a5d1a3070976fc7e6798d0d02567fc1f7a3022695c84e5027e9ac6661674302ee5db1cd3d017762d8e58440ab26cc1704ba99e549af603929d3e773e46bcd77f06c091206a95ff61ec8735cbf08b8886146fc88da85f634f440f47ab9ad8093676943c0f060501e7920faf4ef42c0c5032b472adf813ce960eb0117979a04ea23efd71eb07cc18aa0aedac178202f77697bc021762650099214bc3b60fee98c40dd6a3942f80e688e4e3ca03ed527351aa32f7940a1d3978b548db708621a351d1940f9de7b3ade72d37c233df7d0c868700e31b35d7ef8115b62e9b4e44ac0ca1c667220d068cfd707014db840f20c1cd0d8a7549dcdd52bb5c3ebd603b6e945012d7a296a96bf3c1d1a296a96e427e2f2acf82a01fd4af31212e86ac2a5a58086d14b81a0a6fa63e90157abf549d586d94f09422aa551dd03d699f8236824e2cfedba0486fd32f9f080c3f4cd0391a0c58e20a28f2c99b2f9eff55df48a38614eaf74651427ba355404f75faa173d9c3c818a85af3e0898ef806a530145ea2a62e913a8ccf32781ee3c786a2bd0b8c390a0c2f6389509d407925cfcfcd5b8067c7a51c0d9e3c77840cbb1e901032247021fa8aa78c0cdb405024d2bf80c14d0c19bac09b45fa6570fa80b7b041147a59ca17b0722da8b4782988afeb227b0ea468a4845a96e627d1639cdcb2888521a3d78208dfc209a3ff65b32dbbf041107e1b04ca0f5fab8a615abfd61e4442507ea5c3c2866045a14a01b12c4cc73444ca0e52d5e15245c68a71918bbdee7105b2ba0c6bdf2397ce47b5f20501f590e5dcedb8ba1f0bfaa07ac86b3f140a6e8771084ec4a1abdb13a12e6f5e401b33af9e8f910ba83529320d208eb5641ca2c027db098e1e3a8e801c3c7270f58e0c07ac0e85785c0aabf5ff6801e4e8d8011458ca509adbba7844b3fe56badd58a18f10f01f7239b895ec1f2386652f080e9c813050cee8c32022ee9050c33e4894bacbe2feac2fa9480414040cfc236af0ad8b7d7ba07324caf7c30f55e83cf258166cbbde815a1b429aa470235cf275f049673e5bc4f907010267cb094066bb0bb2a602377443ef27c29b68728d8c4b980d295cd0381e617cac61c0774a7cef3ca0316679427f57939f6fa47a08b4b72508f036a16f7bf15d0fe1819828ace735702ba5e01ed8f24b740e45b2a1e487b1c4e046a4a4a750f0762b90272e44392ffc76057ec81b8092d698f342eea66b81e014b3f9b8ef4adafab60825f02ee2437ed1a01b32a4cbba780b1cf6841c0ad2a41f042a0fb1bc6a1022eea3433024d6e69cadba67e31e5fa43a006dab544a06ec2434ad0d0bdb34b0f441ca4cca803862ae7e9d903ceb77f1e88246f3e09987761a416520e38f6277a45cad9836b7ca9134b4e051b022d4d31b9eba0b4e0b7fd5e0b02d4868194c6ca059b297812e7cf0123571240cc81c64f6f1e88b35aab1084bafbe991c0aa7dca9be67fee374d5e3ca06771379d525fbcd33c9c08622aa57699206576d8602cc056a9a5da0981e68eb6eb04863390b4695a4cb87329b0ef0a24d66762de54e31ff6caaf757a5dbef67747c009d84ef891fc8fcc0d1b82724a3be83e013b4f8c3125d31a1368ede3b634a1337a589cb17b230875bfd807014ba606ef99022d9a7924e022b969a704290b9314441cdc5c4acd2f9eb803baa15f8e9b73a04ad5f7c59b3a47527aee7547d0e0fc522c1068e2f4a54b6039f1adab046af51d87025cefcb98db8c084a1407db232853a1b4a54dcb31cf3c30520f25fdb78edc0e081206a9dbf260ce7c67ed9fd62781a637b47f08b4404afb9d400b71b4c7044633337e09b448d383bc5c59bd46d4270474bd6cf3e201eb172a30cca62cbf10447457d64f0a1893b6330f987c5d22a0ed10bc7d78c083792302cb74d3725380134c19ea52dbd681522a3a68ce06721f624c7aaa2065b52411a94acc5a48a60d8294c971b23292566ca825864305d4da52812a3f909ee9c81ffc48a255244c9380b37af06409b4d2e2a54fa02193a79840b77536cf049cc5cc80cf917b0e7730d48f4414edd58c80a693e9cf15a44cf2fd2048b51b3a1eb04406dbc3b5a9b82bd48595548d1a8e864afe47e6283e475a6537ec2e044685ff3eaba7d5bc3e90803f023d6ab2fd45d0d06cec4f02d64034ed2a8177cd438294f6fa446fcaf5b940d2b353bf2e667e78853a34c1e784409d11a934e000e72823ebeaeed50a328b99a72e41558c09d39247cf379f73c3c392a0ae7acc12686d86f62b41ac8abe4ba09517da21414a67b5fd2c20e1e25220c7333ac0890fe56f058c073da5042113a8c67a0fad5ff8532048395e1e455bd6520da78befe100f558f0fb465015e568be7e096a29fd28990aea1133ed4d4b66b1bab3a59822214f5ad7a09be904046ac0b7f50a2f0e23022d1754300a68c3fc4a13d6fd36b55e99800552826d8b20a5adfd5313906b760119413d95e1f1b322e0ec81fa2b41c2b76d891e0b75e781694b1386560bd5b6de09b43665eb46c0a54514e4e5429dd650e81268f1f0382060babae97d123000601ef40a567f31e53541c46ca8a4439072dc42242874a680bcad98a30e94a882bfc704e5849bbff82e29b308023933d681903a79cbe7481b1a428a15a46c0fbe5ccaad2ae6874d9832ad00e37bc8246dc4754ad0b846c0d32a4c4b54701ec7654ae20f41450d9288402bb68d6f1ec8a8ec180216ac3356814e8d1d10585a17518720e5061039a52af521c64076d6bb772d72bc885bed40853226598c39a071f5c92775822986916488e42015b3a7be2568888235e212bb7fda94b1713e589a262ce1262ad8c43c49d10c44b1195b53cb2026d0b2014f578258759034b24974c5bbdd2788c4fa44b5a78053d2f38c40fda817b10c8cb3944460b68f044cd431a52e81267249dd7307aa54c1b2c49903dee36749504b59296d4740932518ebd732161ccc62056aa0fd03d4eb7c97349289cf50d64d9ab2913b2241ce7963bdcf96a8bec8b210ba79fc23d078a1447ad328a1c51684a28322f7b60cc937096a9cc4173f047536e1e759818cdb805298a78f31cb446f1a533edaf7185b1a5b3d2542ce2b48638d279ba1184671ee06dc6f5a3d1368abcba1dcf92dd9c847bd22946f41382688e4390229627e2f4e28c23f2e11583e58ab4d4039352d6931abe940a6bd25d0739bda3b023d31a79d1134d4983878c003619a04cc9534bff2e8ce9ed7300308ea6a39f608d884811cc472072cf8d025e09883ac68a689e5d280698d3ce07ea098a0a60a4506a133cf98362f4b8bb9cf4c93652b6e42e247c3fa9980ce3baa358290deab547977a0c129e987dfe2e4831bd92a047cf460ae1f4928fc2f910722746f720f27ca4c1a90aa1a691af3083fd397f648f322903225353d908e6a15082aaa71ad0246e15a2141951192569940cb37b68a044c3cc0f84a403712dffa11da8518cb68487d04bebb21287395b8f8ec01b5e58480b57f305e79c0f858c7035a170b05b4b65edf0858a8c5b45f08b8381d8c12026ecac3784ca06660a7a9c0f2b0d2b2077c30fd5a4b7f7f2cc6551e439178a11ccfe880d60dec3c2aa0835759289047c7784ac08432f3c8de4f991d661e561e3036bef680f7f82060e00ee3b9079c0afc158c38977f14a8733623a0f38ef2af02d141a05e4fd31a0f96182f15d0e519241eb0d8ed9707d2847294a003ba11e55d1facce19b95b25e00effe0f9ec01cbd2f4148851830f7d174625f1f147c025f0a0902aa0abb19d79c0638843059c81be9a1e88d07d3f7bc006faf28009eddab791ac9aa3f0a08081bbd54101271c33f1807a4c5f8efb3c4defc1031187fe8b0732804a4b0f58607aac807661f2e101f5d8b3071cfbfab69651858f5f0fd8a6df1ec898333b0f18eb3b2a60282bfcf3401efda3ea813c7a75e401d3a35a1e48cfadf58a8433e16ae9018f14ba78206f1bbd7bc0fd73270f98aefee7814cc0c83ca0adfd4ac0ecd2607df280e3e5cd039ac5fae84cf4c378e401c7be8edb940dd4483c9047b7470fe449d3a9070c10ed3ca0896f3db83ffa28c3280b46991965d1288b47991d65c9284b47d964944d47d96c94cd47d962942d47d96a94ad47d966946d47d96e94ed47d9619465a3ec38ca4ea3ec3cca2ea3ec3aca6ea3ac39ca5aa3ac3dca3aa3ac3bca7aa3ac3fca06a3ec61943d8eb2e1287b1a65cfa3ec6594bd8eb2b751361a65efa3ec63948d47d9e728fb1a65dfa3ec6794fd8eb2bf51561865c551561a65e551561965d551561b65f551168eb2060220081018041182188145902048114c104c11cc10cc112c102c11ac10ac116c106c11ec10ec111c1064088e084e08ce082e08ae086e089a085a08da083a08ba087a08fa0806081e103c2218227842f08ce005c12b8237042304ef083e108c117c22f842f08de007c12f823f04050445042504650415045504350475042182060c6002180313c1c430162681496126f70e34539819cc1cc6f581fbf5126605b386d9c06c6176307b98034c06738439c19c612e3057981b4c13a605d386f38e4c17a607d38719c03cc03cc20c619e609e615e605e61de6046f74ecabb07e61de603660cf309f305e3fac3fdf307e617e60fa600538429dd1fb40c5381a9c2d460ea30214c03111005880ca208518cc8224a10a5882688a679f744334473440b444b442b446b441b445b443b447b44074419a223a213a233a20ba22ba21ba226a216a236a20ea22ea21ea23ea201a207448f8886889e103d237a41f48ae80dd108d13ba20f4463449f88be107d23fa41f48be80f51015111510951195145641a5115510d511d5188a881188803c4067194f7501c23b6f71ff1aae214f104f114f10cf11cf102f112f10af11af106f116f10ef11ef1017186f888f884f88cf882f88af886b889b885b88db883b88bb887b88f7890774cfc80f811f110b1fbfb33e217c4f74e8addcf08f13be20fc463c49f88bf107f23fe41fc8bf80f710171117109711971057115710d711d7188b8010bd800d6c046b031ac854d6053d809ec1476063b875dc02e6157b06bd80dec167607bb873dc066b047d813ec19f6027b85bdc136615bb06dd80e6c17b607db871dc03ec03ec20e619f609f615f605f61df6047b0efb01fb063d84fd82fd86fd81fd85fd83fd8026c11b6045b86adc056616bb075d810b68104480224064984244662912448522493fcc7357b3245324332bf774fb240b244b242e27eb141b245b243b24772409221392239213923b920b922b921692269216923e920e922e921e92319207940f2886488e409c933921724af79f7246f484648de917ce43d948c917c22f942f28de407c92f923f24052445242524e55c1a920a922a921a923a92104903299006480dd208698cd4224d90a6482748a7486748e748174897485748d7483748b7487748f7480f4833a447a427a467a417a457a437a44da42da46da41da45da43da47da403a40f481f910e913e217d46fa82f415e91bd211d277a41f48c7483f917e21fd46fa83f417e91fd202d222d212d232d20ad22ad21ad23ad210690313601260623089308931b1982498a4984c30996232c3648ec9e2feb3cc5f7cb2c2647def9ec906932d266edc7531d96372c024c3e488c909933326174cae98dc306962d2c2a48d49071377650f933e26034c1e3079c46488c91326cf98bc60f28ac91b26234cde31f9c0e4aebe26eee70b936f4c7e30f9c5e42fef9e4901932226254cca985430a962e29eac8e4988490353601a606a308d308d31b5982698a6984e309d623ac3748ee922ef1b37d94cef1d33753fd2371b4cddcf16d31da67b4c0f9866981e313d617ac6f482e915d31ba64d4c5b98b631ed60dac5b487691fd301a60f983e623ac4f409d3674c5f307dc5f40dd311a6ef987e603ac6f413d32f4cbf31fdc1f417d33f4c0b9816312d615ac6b4826915d31aa6754c434c1b9801b30033835984598c99cd87d12cc12cc56c82d914b3d9fd678ed902b32566ab7bf7ccd6986d726537db62b6cba78ad91eb30366196647cc4e989d31bb6076c5ec865913b316666dcc3a987531eb61d6c76c80d903668f980d317bc2ccdde105b357ccde301b61f68ed9076663cc3e31fbbaffe51bb31fcc7e31fbcb35e1ac805911b3126665cc2a7957cdaa98d530ab631662d6c01c9807981bcc23cc63cc2de609e669de3df309e653cc6798bbbf2f305f62bec27c8df906f32de63bccf7f97c303f609e617ec4fc84f919f30be657cc6f9837316f61dec6bc837917f3defda78ff900f307cc1f311f62fe84f933e62f98bf62fe86f908f377cc3f301f63fe89b9bbf937e63f98ff62fe877901f322e625cccb985730afe6523baf615ec73cc4bc8105b008b030584458c458582c122c522c26584cef6328ef182c665888725b2cb058e60a6db1cabb67b1ce55d36283c5160bf7cf3d16072c322c8e589cb0386371c1e28ac5edfe9126162d2cda5874b0e862d1c3a28fc5008b072c1eb11862f18485b3d0beb178c1e235ffc9bbea078bb7fbcf088b772c3eb01863f189c51716ee4af7db5f2cfeb0286051c4a28445198b0a16552c6a58d4b108b16860092c032c0d961196319616cb04cb14cb0996532c6758ceb15c60b9c47285e51acb0d965b2c7758eeb13c60996179c4f284e519cb0b96572c6f5836b16c61d9c6b2836517cb1e967d2c07583e60f988e510cb272c9fb17cc1f215cb372c4758be63f981e518cb4f2cbfb0fcc6f207cb5f2cffb02ce42a7a59c4b2846519cb0a96ee9f352ceb58865836b00256015606ab08ab182b8b5592cf3dab14ab0956d37bf7ac6658cdb15a60b5c46a950bf8ca5db1c16a8bd50eab3d5607ac32ac8e589db03a6375c1ea8ad50dab26562dacda5875b0ea62d5c3aa8fd500ab07ac1eb11a62f584d533562f58bd62f586d528579bec98fb3f5ddfacdccf075663ac3eb1725ffd8dd50f56bf58fd6155c0aa885509ab325615acaa58d5b0aa631562d5c01a5807581bac23ac63ac2dd609d629d613aca758cfb09e63bdc07a89f50aeb35d61bacb758efb0de637dc03ac3fa88f509eb33d617acaf58dfb06e62ddc2ba8d7507eb2ed63dacfb580fb07ec0fa11eb21d64f583f63fd82f52bd66f588fb07ec7fa03eb31d69f587f61fd8df50fd6bf58ff615dc0ba88752937c9d665ac2b5857b1ae615dc73ac4ba810db009eed3f61c1b834d949b73eeff9b181be7de34efddb349b049efaae63e7436136ca6b92db79961e33eb6c06689cd0a1bf7ab0d365b6c76d8ecb13960936173c4e684cd199b0b36576c6ed834b16961d3c6a6834d179b1e367d6c06d83c60f388cd903f713f1f529b276c9eb179c1e6159b376c46d8bce7236cf381cd189b4f6cbeb07197fd60f38bcd1f36056c8ad894b0296353c1a68a4d0d1bf74a21360d6c816d80adc136c236c6d6629b609b623bc9fb663bc57686ed1cdb05b64b6c57d8aeb1757c8bed0edb3db6076c336c8fd89eb03d637bc1f68aed0ddb26b62d6cdbd876b0ed62dbc3b68fed00db076c1fb11d62fb84ed33b62fd8be62fb86ed08dbf7dc1edb7e603bc6f613db2f6cbfb1fdc1f617db3f6c0bd816b12d615bc6b6826d15db1ab6756cc3fb4f033bdc7f827bf7ec0c76513e57efe2dca6dad97c6e77eed82ec12ec56e82dd14bb197673ec16d82db15b61b7c66e83dd16bb1d767bec0ed865d81db13b6177c6ee82dd15bb1b764dec5ad8b5b17377ebde7ba597ffdcbb07bb1e76eeff03ec1eb07bc46e88ddd35d25be61f78cdd4bde43bb57ecdc3f47d8bd63f7819d23ee09bfb0fbc6ee07bb5fecdc6317b02b6257ba778f7bab327615ecaad8d5b0ab631762d7c01ed807d81bec23ec63ec2df609f629f613eca7d8cfb09f63bfc07e89fd2ab700f76bec37d86fb1df61bfc7fe807d86fd11fb13f667ec2fd85fef3f37ec9bd8b7b06f63dfc1be8b7d0ffb3ef6837cbed93f60ff88fd10fb27ec9fb17fc1fe15fb37ec47d8bf63ff81fd18fb4fecbfb0ffc6fe07fbdffbffffb02f605f747fb977cfbe847d19fb0af6d5dcacdabbfbd6b10fb16fe0001c021c4cee881c221c621c2c0e090e290e131ca638cc7098e3b0c06189c30a87350e1b1cb638ec70d8e370c021c3e198db8187533e7e0fe7fcc7f590fbe7e182c315871b0e4d1c5a79df1cda38747223e5d0c5c15dd3cf55dc6180c3030e8f380c7170d73ce3f082c32b0e6f388c7078c7e1038771de3d874f1cbe70f8c6e10787dfdc9c3bfce5b6c3a1901b7887220eee9a320e151caa38d470a8e310e2d04086dc67ca02640659947bbb6edc380f3db3c812642932f7db29b219b239b205b225b215b235b20db22db21d9cb3991d9065c88ec84ec8cec82ec8dc4d6ec89ac85ac8dac83a70b671d643d64736c8fd16371f670fc81e91fbe97fb9d9ecbaca39ecd93332f7ab67516ed3dcbdcf5e91bd211b217b87f3deb331b24f64eeea6f643fb9999bfdc2ddc2754f564056ccc30a5929ef9eac8cac82ac8aac86ac8e2c44d6c0113806381a1c231c631c6dee0ffdbf7b263b1c131c531c27384e719ce138c77181e3329f158f2b1c9d539cb8e911c70d8e5b1cddf5fbdc463a1e70cc703ce278c2f18ce325ef9be335576ec71b8e4d1c5b38b671ece0d8c5b187631fc7018e0fb91d717cc47188e3138ecf38bee0f88ae31b8e231cdf71fcc0d1dde713c72f1cddb7fce0f88be31f8e051c8b3896702cb37b8e151cab38d670ace318e2d8c009380538199c229ce2dc8939599c129c529c26384d7172648ed302a7254e2b9cd6386d70dae6027adae1b4c7e9805386d3310ff0e4d3f308a7134ee77bf79cdc45579c6e3835716ae1d4c6a9835317a71e4e7d9c06383de0f488d310a7279c9e717ac1e915a7379cdc5dde71fac0698cd3274e5f387de3f4930f9ad32f4e7f232732a7024ec5fcffae3ff2d9cf5d738fd338c1399571aae054c5a986531da710a706cec039c0d9e436a1b3fdcf11ce31ce16e704e714e709ce539c6738cf715ee0ec2e58e1bcc67983f316e71dce7b9c0f3867381f713ee17cc6f982f315e71bce4d9c5b38b771eee0dcc5b987731fe701ce0f383fe23ccc230e6edc9c9f707ec6f905e7579cdf701ee1fc8ef307ce639c3f71fec2f91be71f9c7f71fec3b9807311e712ce659c2b385771aee15cc739c4b9810b70097031b844b8c4b8585c125c525c26b84c7199e50181cb1c97453e3d5f96b8ac7059e3b2c1659bebc3cbeede3d973d2e075c325c8eb9db7839e172cebdd6cb251f55972b2e375c9ab8b47069e3d2c1a58b4b2fb7a92eeea6035c1e7079cc2d77e7f15e86b929e94cb58bbbfb332eee2fafb8bce503c575cf6594f7cde53d0ff92ddc6f3f7019e3f299fb3a972f5cdc57ffe0f28bcb1f2e055cdcfdddc5655cdc6fabb8d470a9e312e2d2c015b806b81a5c235ce3bc6fae16d704d714d709ae535c67790f5de7b82e705de656dc7585eb1a5777e516d71daefbbc4bae075cdd65475c4fb89e71bde43350e4ee70c5f5866b13d716ae6d5c3bb87671ede1dac77580eb03aeeeb3435c9f707dc6f505d7575cdf701de1fa8eeb07ae635c3f71fdc2f51bd71f5c7f71fdc3b5806b11d712ae655c2bb85671ade15ac735c4b5811b700b7033b845b8c5b859dc12dc24d87e9be036c56d86db1cb7056ecb3ce6735be1b6c66d83db16b71d6e6efe779f3fe096e176c4ed941b54ce60bf9d71bbe076c5ed865b13b7166e6ddc3ab875f3089e7177ebe1d6c76d900f1737689c397e7bc0ed11b7216e4fb83de3f682db2b6e6fb88d707bc7ed23578cb7316e9fb87de1f68ddb0f6ebfb8fde573c9ad805b11b7126ee5dc09bd5570abe67d73abe156c72dc4ad8126d00c7267a869d074ff8fd1b4682668a6684ed09ce6f1bae60ccd399a0b349768aed05ca3b941738be62e1f31cd3d9a073433348f689ed03ce743a77941f38ae60dcd269a2d34db79c8aed941b38b660fcd3e9a83fc159a0f683ea23944f309cd67345fd07c45d3ddd3fdea1dcd0f34ddad3ed1fc42f31bcd1f347fd1fc43b3806611cd129a65342b6856d1aca1296b76cd30bf75b38116d00ad032f9288b8b684568c568d9bc7b5a095a295a13b4a668cdd09aa3b5c80debd612ad155a6bb436686dd1ba6b5237d45a7bb40e68b90b8e689dd03aa37541eb8ad62d8fe9b5dc052db4da6875d0eae6a3a7d543ab8fd600ad07b41ed11aa2f584d6335a2f68bda2f586d608ad77b43ed01aa3f589d6175adf68fda0f58bd61f5a05b4dc0397d02aa3e5ee5645ab86561dad10ad06dac84df07680b6413b423b46dba29da09da23d417b8af60ced39da0bb49768afd05ea3bd417b8bf60eed3dda07b433b48f689fd03ee73dd4bea07d45dbfda589760bed36da1db4bb68f7d0eea33d40fb01ed47b487683fa1fd8cf60bdaaf68bfa13d42fb1ded0fb4c7687fa2fd85f637da3f68ffa2fd877601ed22da25b4cb6857d09685a8760ded7aeee8b443b41be8009d001d834e844e8c8e45274127456782ce149d193a737416e82cd159a1b346679387443b5b7476b9bdd1d9a37318392bc575492743e788ce091df7f70b3a57746ee834d169a1d346a7834e179d1e3aeee303741ed0794467985bea9d27749ed171777b45e70d9d113aefe87ca03346e7139daf5cf974bed1f941e7179d3f740ae814d129a153ce7ba25341c7fdbf864e1d9d109d06ba403740d7a01ba11ba36bd14dd04dd19da03b457786ee1cdd05ba4b7457e8aef35583ee06dd2dba3b74f7e81ed0cdd03de60642f784ee19dd0bba57746fe836d16da1db46b7836e17dd1eba7d7407f970e93ea0fb88eef0fee36ef88cee0bbaafe8bea1eb7efb8eee07ba63743fd1fd42f71bdd1f747fd1fd43b7806e115d5902efbaafaca05b45b7866e1ddd308f4e761be801bd003d835e845e8c9e452f412fcdbba737c9970f7a53f466e8b97f2ef2f1e43cde3c48f382de329feb7a2bf4d6e86d72a7cc98dc097513526f8bde0ebd3d7a07f432f48ee89dd03ba37741ef8ade0dbd663ebbf65ae8b5d1735fd145af879ebbdb00bd07f41ed11be611e29ebbd5337a2ff7bfbfa2f786de08bd77f43ed01ba3f789de177adfe8fda0e72ef843af805e11bd127a65f42ae855d173df52472f44af813ed00fd037e847e8c7e85bf413f453f427e84fd19fa13f477f81fe12fd15fa6bf437e86fd1dfa1bf47ff807e86fe11fd13fa67f42fe85fd1bfa1df44bf857e1bfd0efa5df47be8f7d11fa0ff80fe23fa43f49fd07f46ff05fd57f4dfd01fa1ff8efe07fa63f43fd1ff42fffbde3dfd1ff47fd1ffcb7ba85fc8bdd17e11fd12fa65f42be83b5843bf8e7e887e03036010e44367603088308831b0182418a4184cf2e96730c56086c11c8345ee910d9679f710ae305863b0c1608bc10e833d06070cb23c9633386270c2e08cc1250faa0eae18dc3070776b61d0c6a0834117831e067d0c06183c60f08881bbb9bbf2198397fbcf2b066f188c3078c7e00383f1fde7f33fb6be635b7695e7f661667f0edb959b959d73ee55ce39d7d35f70ad7dbebf71f7607b78d92064262009248aba209e51cfa917d44bea0a7595ba46bd46bd4ebd41bd49bd45bd4dbd438334406342634a6346634e634163496345634d6343634b6347634fe340e348e344e34ce342e34ae346e34ee341e349e345e34de343e34ba34ba347a34f634063486344635c255d0e2f4324938645c3a6e1d0706978347c1a018db082c78868c4341289d046bc4e696434721a85dc42354a1a422d16aca834341a351a75b91a6134683469b468b46974689226684e684eab34a33997ebe4e682e652eed49a2bb97c60ae696e686e69ee68eea546601eaa74a479a279a679a1790d848568deaae7779a0f9a4f9a2f9a6f9a1f9a5f9a5d9a3d9a82da80e690e688e698a64ed3a069d2b468da341d9a2e4d8fa6a822a019d28c68c634139a29cd8c664eb3a059d25468aa34359a359a759a0d9a4d9a2d9a6d9a1d5aa4055a135a535a335a735a0b5a4b5a2b5a6b5a1b5a5b5a3b5a7b5a075a47296cac13ad33ad0bad2bad1bad3bad07ad27ad17ad37ad0fad2fad2ead1ead3ead01ad21ad11ad312d9d9641cba465d112747e66a9e5d2f268f97289c50a6885b4225a31ad84564a2b93dbd20bc1474eaba055d25268a9121b4ba355a355a7d5a025fe6cd16ad3eac8649336684f684f69cfe402863da7bd9086ea6d407b497b457b4d7b437b4b7b477b4ffb40fb28f77bec13ed33ed0bed2bed1bed3bed07ed27ed17ed37ed0fed2fed2eed1eed3e6d416d487b447b4c5b97da946dd036695bb46dda0e6d97b647dba71dd00eabe291ecf5764c3ba19dd2ce68e7b40bda256d85b64a5ba35da35da7dda02df869d16ed3eed0211dd099d099d299d199d359d059d259d159d3d9d0d9d2d9d1d9d339d039d239d139d3b9d0b9d2b9c9a1e3dce93ce83ce9bca48473de743e72d1c8f9d2e9d2e9d1e9d319d011394774c6153c8e4ec7a053b906389634941c9b8e237bba7e08ee3db99ae9b8727bdbf1e8f874023a21776a7017154774623a099d944e4627a753d029e92874543a1a9d1a9d3a9d069d269d96b48d9c369d8e5cf5714917742774a7746772acb873ba0bba4bba2bba6bba1bba5bba3bba7bbae2ed91ee89ee99ae287ba57ba37ba7fba0fba4fb926dedbea5c1e87ee87ee976e9f6e8f6e90ee80ee98ee88ee9ea740dba265d8bae4dd7a1ebd2f5e8fa7403ba21dd886e4c57904ae9667473b953e716744ba914b80a5d95ae4657dcd7e936e836e9b6e8b6e976e8911ee84de84de9cde8cde92d243cde92de8ade9ade86de96de8ede9ede81de91de899ec870a177a577a377a7f7a0f7a4f7a2f7a6f7a9e0f1bef4baf47af4faf406f48652a47b237a637a3a3d434a14cfa467d1b3e939f45c7a1e3d9f5e402fa417d18be925f4527a19bd9c5e213790bc929e424fa5a7d1abd1abd36bd06bd26bd16bd3eb48ebdaa75c08f1417f425fdccce8cfe92fe82fe9afe8afe96fe86fe9efe8efe91fe81fe99fe89fe95fe85fe9dfe8dfe93fe83fe9bfe8bfe97fe87fe977e9f7e8f7e90fe80fe98fe4a0f4c7f475fa067d93be45dfa6efd077e97bf47dfa01fd907e443fa69fd04fe967f473fa05fd92be425fa5afd1afd1afd36fd0170405ff6dfa1d0664000613065306330673060b064b062b39748235830d832d831d833d830383238313833303f1f6cae0269d20a4c3d483c193c14b8abae0cde0074ff065d065d093ba6fd0975ac0ca92abadc180c1508a1321f32fa2ee91d4088231039d81786b32b018d80c1c062e038f81cf206010328818c40c120629838c41cea06050325018a80c340635a9650475060d064d062d066d061d8664088613865386338673860b864b862b866b861b865b863b867b86872a1d199e189e195e185e19de18de193e183e19be18be197e187e1976e59e45d863d8673860386438623866a83334189a0c2d86364387a1c8e631f419060c438611c39861c230659831cc19160c4b860a4395a12667d4b0c6b0ceb0c1b0c9b0c5b0cdb0c3888cc068c268ca68c668ce68c168c968c568cd68c368cb68c768cfe8c0e8c8e8c4e8cce8c2e8cae8c6e8cee8c1e8f973487cc94de5e82dd7f9af31a30fa3af941f5197514f0e05d1dc519f51e588737b311a321ac9492c1a33d219198c4c4616239b91c3c865e431f2a5835514300a1989e2826cc228659431ca1989b2a2468591ca486354635467d460d464d462d466d4614cc6603c613c653c633c67bc60bc64bc62bc66bc61bc65bc63bc677c607c647c627c667c617c657c637c67fc60fc64fc62fc66fc61fc65dc65dc63dc673c603c643c623c66ac3336189b8c2dc6366387b1cbd863ec330e18878c23c631e38471ca38639ccbb92e2e18977205215618ab8c35c635c675c60dc64dc62dc66dc61d2694ba7502b9399b4c984c99cc98cc992c982c99ac98ac996c986c99ec98ec991c981c999c989c99fcd6dc922b931b1351fe21377e922793179337930f93af74caf9c1937499f498f4258ac9404afb64c864c464cc44978b3a89c1c46422deda4c1c262e138f89cf2460123211f9632609939449c6246752302999284c54261a931a933a9306932693169336938e3457533205d309d329d319d339d305d325d315d335d30dd32dd31dd33dd303d323d313d333d30bd32bd31bd33bd307d327d317d337d30fd32fd32ed31ed33ed301d321d311d331535197c1d4646a31b5993a4c5da61e539f69c034641a318d99264c53a619d35c6a1cf38784272de450484ba60a53f1a7c6b4c6b42eb1f988aa1b4c9b4c5b12c2b4cdb4c38cccc06cc26cca6cc66cce6cc16cc96cc56ccd6cc36ccb6cf7f3dcdf4bdb253b4818b223b313b333b38bd405b22bb31bb33bb307b3a7dccbcb5e72e93b7b33fb30fb32eb32eb496cb23eb301b321b311b331339d99c1cc646631b39939cc5c661e339f59c02cac5224d1ca6266e29a32cb98e572213c2b9895cc14662a338d598d599d59835993598b99e0a1238be7ac12984f984f99cf98cf992f982f99af98af996f986f99ef98ef259cf981f991f989f999f985f995f98df99df983f993f98bf99bf987f957b29a7799f798f7ab34603e643e623e66ae3337989bcc2de6367387b9c8ec31f79907cc055711f39879c23c659e31cf9917cc4be68a54047295b9269791f21af33af306f326f316f336f30e0bb2008b899cdc8a298b9f477f3167b160b164b1926b68520b3059ac596ce4d2a748029e62cb6227b129f672d7a83848778ed38cc5b1f28813994f2cce2c2e2cc4db1b0b51e4c1e2c9e2251bb478b3f8b0f8b2e8fe4b3d167d099b4048b4573160316431623166a1b33058081e2c16360b8785cbc2ab300e59f82c0216e2266211b34858a42cb2aa969c45c1a264a1b05059682c6a2cea2c1ad5ab268b160b91adc3922cc172c272ca72c672ce72c172c97255a535cb0dcb2dcb1dcb3dcb4335921c9647962796679617965796379677960f964f962f966f961f965f965d963d967d96039643962339e39563963a4b83a5c9d26269b314045d961e4b9f65c03294f09491b4b1ca9865c232ade029339639cb8265c95261a956024690d658d624366254957539a7dd05515153536ef095ade0ae481f06e9eaa64b38cb36cb0e155201950995a96cf7ac6a0e65567573f17c4e654165496545654d65538d86b66c7d654b6547654fe540e548e544e54ce5225b56b952b9c9b1a2dca93caaf4a4f2a2f2a6f291f0285f2a5d2a3d2a7d2a032a432a232a632a3a15838a2939512c2ab6cc2c5a5f71a8b85444a53e95804a28b157222a3195848a20985111f516544a2a0a15558e279147d2d1a8d4a8d4a934a834a9b4a8b4a974a8922aa84ea84ea9cea8cea92ee4da9d31a0baa4baa2baa6baa1baa5baa3baa77aa07aa47aa27a96b0a917aa57aa37aa77aa0faa4faabfed38f54df543f54bb54bb547b54f752025bc98d00442520d8ba8569e0242c1534754c7723f5c4c74aa2ec7996ac845ebc598aab8b7a8da541daa2e55af9a82baf2aafa7200a90155712fa8c55413aa699532aa39d5427ebc5a5255a8aa5435aa35aa75aa8d6a0214af9a545b5445a51d6aa4066a136a536a336a730998b6a0b694cda7ada8ada96da86da9eda8eda91da81dab0c276a674944bb50bb52bb51bb537bc8cea13da9bda8bd25d2da879ab876a9f5a8f5a90de470d786b29f69236a636a3a35839a49cda2665373a8b9d404119f5a402da416518ba925d4526a19b59c5a41ada4a65053a969d46ad4ead41ad49ad45ad4044b1d693fd5c81a589bb03665ed37b9d5e6ac2d585bb2b6626dcdda46c2239218434299ae6de5c810f008d5aeb6636dcfda81b5a3d4116a27e94b254454edccda85b52b6b37d6eeac3d587bca36adbd587bff2154fbb0f665adcb5a8f355176c0da9035417fcc9ace9a51e53159b358b35913655dd63cd67c39b66a016be26dc45acc5ac25aca5ac65ace5ac15ac99ac25ad5bb6b1a6b358950adce5a83b5266b2dd6da12e05ae7afaf8821581709ac4f589fb23e637dcefa82f525eb2bd6d7ac6f58dfb2be637dcffa81f523eb2759b67e66fd2249d5afacdf58bfb3fe60fdc9fa8bf537eb1fd6bfac7759efb1de677dc0fa90f511eb63d675d60dd64dd62dd66dd61dd65de9c05df7a46342dd673d605dd08f588f5917f453d633d673d68b5f984ac9bac2bacabac67a4d0e9a87e0a92ee13928d5f8a886cec4907e0b0b51bec17a533a5e3d04f72de96c5d6fb3de61836c808d091b53366652ed69ccd958c86f6b2cd958b1b16663c3c6968d1d1b7b360e6c1c25368deafb1b67362e6c5cd9b8b17167e3c1c65362d378b1f19640363e6c7cd9e8b2d163a3cfc6808d211be2f9980d41c460c364c362c366c36143d4eeb1e1b31154f3a778124af9d188d888d948d848d9c8d8c8d928d8282b5615365439b61a1a1b3536ea6c34d868b2d162433cecb04936c1e684cd299b3336e76c2ed85cb2b96273cde686cd2d9b3b36f76c1ed83cb27962f3cce685cd2b9b371943d0bcb3f960f3c9e64b6e0a37df6c7ed8fcb2d965b3c7669fcd019b4336476c8ed9d42b789a868c38689a6c5a6cda6c3a5287167a9a484d974d8f4d9fcd40fa203443b9fcd38cd88ca50f7b3361535c333673360b36457d0a9b2a9b9aeca769352389d61722a15963b3ce6683cd269b2d36db6c7624002dca866b41c223a4716bc2d694ad195b73b616fff4bd4a38896edb5ab2b5626bcd96c8b9656bc7d69ead035b47b64e6c9dd9bab07565ebc6d69d2d41fcc9d68bad375b1f49a1f565eb9ffc68f5d8eab335606bc8d648ce8ae2b9904962e66c8dd9d2d932d832d9b2d8b2d9121cba6c796cf96c056c856c456cc56c099652b632b672b60ab64ab614b654b98bd3d2d8aab15567abc15693ad165b82810edbacdccafa6c83ed09db53b6676ccfd95eb0bd647bc5f69aed0ddb5bb6776cef7f416f07b68fd2d814f25f68042209780430ed13db426ab5d8beb07d65fb263d11da77b61f6c3fa53f69fbc5f69bed0fdbdfe02ef277d9eeb12dea1eb03d9408b5476c8fd9d6d936d836d9b6d8b6d976d816993db67db603b62b255b4826d93a6db623b663b613b653b6b30a21913f97f0b40bb64bb615b655b635b66b6cd7d96eb0dd645b3029ca76d8213b6067c2ce949d193b737616ec2c2b01e656d4daecacd859b3b36167cbce8e9d3d3b07768eec9c2a59283254f2a973a9d4992e3b57766eecdcd97948f83b4f765eecbcd9f9b0f3654764e8b1d36767c0ce909d113b637674760c764c762c766c761c765c763c767c76027642762276627612765276327672760a764a761476547634766aecfe5403818d4883b39cc7c4cc26e0e9d4d969b0d364a725dd1385c8b9d6a58f554730dd91c168840c67f88d9ec9189c4878262348579719e46ebed0d4bb90311f2bc830830da413fb0ed29de900e97d7b8274e9bc48eb270bc16ba5ce8acc37540e67908e58cfff0b0fa40bcf1bd20be40be94ed083dca01e40ee838aaa051b3ae4768d09b90760432e2fbb129e9a0f7aff83a7f02097f902c815a40872714210178697e8d2c256cc7fba35a40d22b46fe54fabce458d4233133a8990dd427689795ccc7462e08b521d199d27ff4d80293003e6c00258022b600d6c802db003f6c001380227e00c5c802b7003eec00378022fe00d7c802f5039f1023d91aadde8b314360221014f3301fac0405a39ea0818caf0b6990b8caa58c1b1304e011d30243c30010bb0010710ad20b2094b4db0eb0301100211100382660a648078570025a0fc4c5440e833e27b34a006d4253c6854ca5efe671bb5459126d002da4047462a4e2095a84a77c76482c9f46f2614404e6698cc315960b2c46485c91a938dd4bb8a37265b4c7698ec31396072c4e484c919930b26574c6e98dc317954d99e424a61f2aae680a1e470f2ae2afa60f2c5a48b490f933e26034c8610fd5234c244c7c4c0c4c4c4c2c4c6c4c1c4c5c4c3c4c724c044501004634c047b292619263926052625260a262a261a26359a826c1d9306264dfc1d243f11b5b6ff2f3c98746498e63f786487984e309d623ac3748ee902d3259f8f1f3c98ae305d632a046381e916d31da67b4c0f72284c8f989e303d637ac154d0b9617ac7f481e913d317a66f4c3ff2cba75f4cbb129e690fd33ea6034c87980aa54eaf1afd1f3cd331a63aa6c244f0303531b520ac8a9fb92acdde4e25c604290753175391c7c734c054d08ffe07cf3416d9304d304d31cd30156405db25a60aa62aa61aa6354cebd50287d4f4306d541c36316d61dac654e8d66319c02a46c86c82d914b3196673cc16982d315b61b6c66c83d916b31d667bcc0e981d313b6176c6ec82d915b31b6677cc1e983d317b61f6c6ec83d917b32e663dccfa980d301b6236c2acdaefc14c17e9ff4e6e98199899985998d94205c0cc811837330f331fb300b31033312309bab1ccaf8afc09af196622a7b8e69815524152db9895982998a9986998d530ab63d6c0ac89590b33f1b68339ab5618fec48f9c12e613cca798cf309f63bec05c0a6dcc57724cccd7986f30df62bec37c8ff94158ac981f313f617e96824a6ae702a12ee617ccaf98df30bf63fec0fc29756201a1e801f3976ceeb9a8eb83f9177391b987791ff301e643cc47988f31d73137303731b730b72b734714146cb8987b98fb9807980b2211e631e682b114f30c73c14c817989b982b98ab986790df33ae60dcc9b98b7306f63de9151c9629a584cb0986231c3628ec5028b25162b2cd6586cb0d862b1c3628fc5e117867fe442c7e224ac1c391a445a9cb1b86071954ed9028fc50d8b3b160f2c9e551237af6a61f421177b1253863cde4d9e1b58bcb1f860f1954db0e8fec1b3e861d1c76280c5108b111663c8ea442d2616d69fda5608be6d89d0c2c1c2c5c2c3c2af80a9e05948e5180b4133c222c62281e8348b0c8b1c8b028b120be56f0089d1b350b1d0b0a86151c74234cd434eb61341b9292d53b589450b0b41ad2383b78574584eb09c6239c3722e81592eb05c62b9c2728de506cb2d963b2917db232cf7581eb03c6279c2f28ce505cb2b96372cef583eb07c62f9c2f28de507cb2f965d2c7b58f6b11c603994426529288cb1145518589a585a58da583a58ba587a58fab4332c032c432c232c632c935facbd908a67094fd4af14e5144b912fc7b2c0b2c452c152c552c3b226b11163685997cb07b3915cea2e04f70d2c9b58b67817d5b4b1ec6025d56529145713098fd00e5653ac6658cdb15afc1465ac965889e76b6622ff464c26586d253cab1d567bac0e581d2b22a79f3c17086175c6ea228111f3edea86d51dab07564fac5e580995413cfcfc8d9e1f3cab2f56dd0a1e41e723c78dd0dd85085b34b1ea61d5c76a80d510ab115663ac74ac0cac4cac2cac6cac4411172bc1958f95a83ac42ac24a184c82c3042bc14386558e558155899582958a958695a8b48e55032b51450b2bf1991df657327c5fe807029ef504eb29d633ace7582fb05e622ddeaeb1de60bdc57a87f51eeb03d647ac4f589f2b78d6178950bd85f515eb1bd677ac1f1cad7e03487ace0b11b77e62fdc2fa8df547ce75eb2fd65db9a0a0caa81dac7b58f7b11e603dc45a3031c65a9703626d602dde5a58db588b52828e87b58f758075f8d3cab08ee47a9aecf85dac63396ed609d629d619d67935809e95dae64990d605d625d60ad62ad61ad635aceb5837b06e62ddaa28883c1d799481d09536136ca6d8cce490daccff26b7cd426a659b25362b6cc4cd069b2d363b39dc377ba9b96d0ed81cb1396173c6e682cd159b1b36f7aad4436ade42226e9e727edebcb07963f3c146d0ef62d3c3a68fcd009b2136236cc6d8889c06362636163636360e362e361e363e360136a2c6089b5802b349b049b111b5e7d814129e4dc9f1eb6ff488f90d1b4562b351659208ddb1d12442423b905c8aa123ec5e41b78e8d901f9501dbdb61d3c44630dae65dd0edc8f31d84fe1cfbd84eb09dcac97a6d09835f7cb6ec77db19b6736c17d85653d63a14adf9a7b9c9e613c557d88af9d7c27683ed16db1db6fb3f6d5860b33d489cb6476c4fd89eb1bd607bc5f686ed5d62f3530d7e436dfbc0f689ed0bdbb7943ddb0fb65f6cbbd8f6e4fc261a7adbc77680ed10db11b6636c756c0d6c4db974d412f782011b5b075b175b0f5bf13901b6a1348304c0db08db185bc1498a6d866d8e6d816d89ad82ad8aad866d8d81e0bc8e6d03db26b62d6cdb3445fe0edd589e7f2114ecdd04bb297633ece6d82db05b62b7c26e8ddd06bb2d763becf6d8fd64cfee28d766067b09cfee54a5b384672746cf591aa7c232156adfee8addadba8a570fec9e72c76176e44dfcf9c2ee8ddd07bb2f765dec7ad8f5b11b6037c46e2445f76422970fa478a8248440426847bf9bdd581af3f246c7cec0cec4cec2cec6cec1cec5ce936362271a489788ee82ea1afed669b08b2ab54d0cd3f80f98c95a42b813ad20ae297619763976c55ffe95f8f2123b053b153bf14535ecead835fee0df35b1138a7bc09a282efeecc8734484a1b29f48156e3fc57e267bd27e8efd02fb25f62becd7d86fb0df62bfc37e8ffd01fb23f627eccfd85fb0bf627fc3fe8efd03fba7d4a4f72fecdfd87fb0ff622f68f6b0ef633fc07e88fd08fb31f63af606f626f616f6f66fcd4d747fe50f9ebd5325177b0f7b310b09ba815c7fbb26d887d21fe1209888a40ebd8f2964fe3ea1d031f629f619f6a27af1bcc45ec15ec55ec3bef65b6f9692795f9702408887bae0bbf1c346eaafa271f74da974c99b16f66dec3bf2701561bd1d26384c719849fc044887f91f3cf33f7315876ae1e7671b89f63dc8d5011c5638ac71d8e0b0c56107c1f0e180c3f16fe5ad52d37138e170c6e182c315871b0e771c1e383c7178e1f0c6e12347fce18b43f76f93a951feae38f470e8e330c06188c348c27318e3a0e360e060e260e160e320187371f070f071087008718870887110f5a6386438e4381438086a0a0e2a0e1a0e351cea38347068e2d0c2417c4b0747fe56ac372c5561c94a848e131ca7559ae138af92307217382e715ce1b8c67183e316c71d8e62dab9e278c0f188e309c7338e171cc5931b8e771c1f383e717ce1f8c6f1f3b73d2a178cbb3f3ded0fa4ffe0f94d71c72f8e5d1c7b38f6711ce038c47184e318475dea6347e3b76856c9ad8e4cd584266c1a1c4d369eb2b98f168e368e0e8e2e8e1e8e3e8e81b48d0a4f5aa3c75062738c708c711437298e198e398e058e258e8ab46cc4847c140650eb6fadef37b08e1a8e35e682993a8e0d1ce5ca218e2289571d7946cf09384d709ae234c3698ed302a7254e2b9cd6386d70dae2b4c3698fd301a7234e279cce385d70bae274c3e98ed303a767955e38bd71fae0f4c5e917fa5baa3f7870ea49544efd5f928bd032b5e5d45713750c701ae234c2698c938e9301a114c83dba04271b27072717270f271fa700a710a708a71827f136c529c329c7a9c0a9fc53a377828882938a9386534da8d738d5fff4ae5303a7264e2d9cda3875e4e94467e03cc1798af30ce7f95f8faee0c17921b4069c9738af705ee3bcc1798bf30ee73dce079c8f389f703ee37cc1f98af30de73bce0f9c9f38bf707ee3fcc1f98b7317e71ece7d9c07380fab11df96eba48d99c4e63cc2798cb38eb381b389b385b38db383b38bb3a8dac739c039c439c239c639c139c539c339c7b9c0b9c459c159c559c3b986731dc2fc3837716ee1dc6624bea823cf5e1222fe32c1652a57162e335ce6b82c70f9c5f7fc22d69ad91f3c975595d655dae0b2953108a7a58c180902a9dd5d76b8ec253c17d1172c5c8eb48fb89c7039e372c14564b8e172a798d92f0f5c9eb8bc7079e3f2c1e58b4b17971e2e7d5c06b80c71a9ccc08b483f4daf8d8b206be222c8dab838b8b8b878b8f8b804b884b808ee635c125c525c325c725c0a5c4a5c145c545c345c44a5755c1ab8347169e1220876e4c15357e03ac1758aeb0cd739ae0b5c97b8ae705de3bac1758beb0ed73dae075c8fb89e703de37ac1f58aeb0dd73bae0f5c9fb8be707de3fac1f58b6b17d71eae7d5c07b80e711de13ac655c7d5c0d5c4d5a2239edbb83ab8bab87ab8fab806b886b846b8c610c2e29a42d8f2d71cd702d71257055715570dd71aae755c1bb8fece291316e2b52597ab3d41b72d0d20191c227815ed7595cb3cc2f6bcf8d2d943e88b37ca15bcdb44be3297b84d719be1366758e2b6c04d3c59e1b6c66d83db16b71d6e7bdc0eb81d713be176c6ed82db15b71b8442717be0f6c4ed85db1bb70f6e5fdcbab8f570ebe336c06d889ba86e8c9b8e9b819b899b859b8d9b839b8b9b879b8f5b805b885b845b8c5b825b8a5b865b8e5b819be047c14dc54dc3ad865b1db7066e4ddc5ab8b571ebc863c2eec07d82fb14f719ee73dc17b82f715fe1bec67d83fb16f71dee7bdc0fb81f713fe17ec6fd82fb15f71bee77dc1fb83f717fe1fec6fd83fb17f72eee3ddcfbb80f701fe23ec27d2c67b6bb8ebb81bb29c7cdddc2ddc6dd813013ef1eee3eee01ee21ee11ee31c454744f71cf2034e17bb51d877b89bb82bb8abb867b0df7ba0c34fc3bc443906888241d48c54c7a17d45bd5b5cd99a8af230f427b008f091e533c66b46c3ce6782cf058e2b1c2638dc7068f2d1e3b3cf6781cf038e2719213d7e38cc7058f2b1e373cee783cf078e2f1c2e38dc7078f2f1e5d3c7a78f4f118e031c46384c7180f1d0f030f130f0b0f519783878b8787878f478047884784478c4782478a4786478e478147898782878a8786470d8f3a1e0d3c9a780836da7874e4596e4fe039c1738ae70ccf399e0b3c9778aef05ce3b9c1738be70ecf3d9e073c8f789ef03ce379c1f38ae70dcf3b9e0fce0d3c9f78bed8174fde787ef0fce2d9c5b387671fcf019e433c47788ef1d4f114994d3c2d3c6d3c1d3c5d3c3d09e4d3c733602efe0cff460f9e5195623c133c533c333c733c0b9128e07d96782a78aa786a78d6aa54c7b3816713cf169e6d3c3bf29cba17f09ae035c56b86d71caf055e4bbc5678adf1dae0b5c56b87d71eaf035e47bc4e789df1bae075c5eb86d71daf075e4fbc5e78bdf1fae0f5c5ab8b570faf3e5e03bc86788df01ae3a5e365e065e265e165e3e5e0e5e2e5e1e5e315e015e215e115e395e095e295e195e355e055e2a5e0a5e2a5e155c3ab8e5703af265e2dbcda7875e4217b6fe03dc17b8af70cef39de0bbc9778aff05ee3bdc17b8bf70eef3dde07bc8f789ff03ee37dc1fb8af70def3bde0fbc9f78bff07ee3fdc1fb8b7717ef1ede7dbc07780ff11ee13dc65bc7dbc0dbc4dbc2dbc6dbc1dbc5dbc3dbc73bc03bc43bc23b662e9e2778579e3a7867225527d9e4788b2480d1e4e15e8b18ef5224b98ff056aaa4e2ade15dc3bb8e7703ef26de2dbcdb7877e419821f70aee133c1678acf0c9f393e0b7c96f8acf059e3b3c1678bcf0e9f3d3e077c8ef89cf039e373c1e78acf0d9f3b3e0f7c9ef8bcf079e3f3c1e78b4f179f1e3e7d7c06f80cf119e133c647c7c7c0c7c4c7c2c7c6c7c1c7ad92878f8f4f804f884f844f8c4f824f8a4f864f8e4f814f898f828f8a8fe0b3864f1d9f063e4d7c5af8b4f1e9c86310bfc07782ef14df19be737c17f82ef15de1bbc67783ef16df1dbe7b7c0ff81ef13de17bc6f782ef15df1bbe777c1ff83ef17d31104fdef87ef0fde2dbc5b7876f1fdf01be437c47f88ef1d5f13528fadcd7c4d7924b0c5f1b5f075f977d41c7c3d7afe0f906f886f846f8c6819807bf09be29be99dc79fbe6f81632bc64267297f82af8aaf86a1463e82b525dda3adf06be4d7c5bf8b6f1edc8531ebb407782ee14dd19ba737417e82ed15da1bb467783ee16dd1dba7b740fe81ed13da17b46f782ee15dd1bba77741fe83ed17da1fb46f783ee17dd2eba3d74fbe80ed01da23b42778cae8eae81ae89ae85ae8dae434d1477d1f5d0f5d10dd00d652b772374637413745374b32ae5e816e896e82ae8aae86ae8d6d0ada3db40b7896e0bdd36ba1d7956a5dc089ba037456f86de1cbd057a4bf456e8add1dba0b7456f87de1ebd037a47f44ee89d652c917a414fa42b7a37f4eee83dd07ba2f742ef8dde07bd2f7a5df47ae8f5d11ba037446f84de183d1d3d033d133d0b3d1b3d073db782a7e755c9472f402f442f422f462f917b07bd341092b397a197a357a057a2a7c840f8a8859e8a9e26054faf865e1dbd067a4df4c4f3367a1d7908671fe84fd09fa23f437f8efe02fd25fa2bf4d7e86fd0dfa2bf437f8ffe01fd23fa27f4cfe85fd0bf42ccdda2fbc8f440ff89fe0bfd37fa1ff4bfe877d1efa1df477f80fe10fd11fa63f475f40df44df42df46df49d2ab9e87be8fbd434f403f443f423f463f413f453f433f473f40bf44bf415f455f445b61afa75f41be837d16fa1df46bf238f121d00830906530c6618cc315860b0c46085c11a830d065b0c76109ad4e080c111831306670c2e185c31b86170c7e081c1138317066f0c3e187c31e862d0c3a08fc100832106230cc618e8dc8a8706062606160636fdcac71a03a74a2e061e063e0601062106110631c5c81d2418a4186418e414326d50605062a060a062a06150c3a08e410383a6dcc11db4306863d091a7a30e81e104c32986330ce7182e305c62b8c2708de106c32d863b0cf7d5fd01c32386270ccf185e30bc6278c3f08ee103c327862f0cdf187e30fc62d8c5b087611fc30186430c47188e31d43134303465430f2d0c6d0c856124ee5d0c3d0c7d0c030c430c2326a2ba18c304c314c30cc31cc302c312439159c550c3b086611dc306864d0c5b18b631ecc8635e47a8d204a32946338ce6182d305a62b4c2688dd106a32d463b9a5f8cf6181d303a6274c2e88cd105a32b46378cee183d307a62f4c2e88dd1072391b98b510fa33e46038c86188d301a63a463646064626455f08c6c8c1c8c5c8c3c8c7c8c028c428c228c628c128c528c328c728a1e342a302a294c939182918a9186510da33a460d8c9a18b5306a63d49167d68e81f104e329c6338ce7182f305e62bcc2788df106e32dc63b8cf7181f303e627cc2f88cf105e32bc6378cef183f307e62fcc2f88df107e32fc65d8c7b18f7311e602c1439cae03a2166c6238cc718eb181b189b185b18db183b18bb187b18fb188b3c21c611c631c609c629c619c639c605c625c60ac66a95348c6b18d7316e60dcc4b885711be38e3c7c5707f409f429f419f439f405f425f415f435f40df42df41df43df403f423f4137431c58da05fa05fa1dfaa7487fe80fe84fe82fe86fe81fec5b606bd0bbd07bd0f7d007d085d941a43d7a11b8c458d66058f6e41b7a13bd05de81e741f7a003d841e418fab94404fa167d073e805f412ba025d85ae411775d4a137a037a1b7a0b7a177e461c272576f02630a6306630e630163096305630d6303630b6307630fe300e308e304e30ce302e30ae306e30ee301e309e305e30de303e30ba30b431e6e0543a4018c218c118c310c1d8601c3acae160c1b8643610c1a2e0caf3abe5194f56104304218118c98c254301218298c0c460ea38051c25060a830341835187518224f13460b461b46479e8d6c02e604e614e60ce61ce602c2ec335730d7303730b7307730f7300f308f304f30cf302f30af306f30ef301f309f305f30df303f0cdb10434d28df6617d2bfa005b30f7300730801ad3986a9c3342a784c13a605d386e9c074617a307d9801cc106604338699c04c616630739805cc12a6025385a9c1acc1acc36cc06cc21475885a3bf294670bb026b0a6b066b0e6b016b096b056b0d6b036b0b6b076b0f6b00eb08eb04eb0ceb02eb0aeb06eb0eeb01eb09eb05eb0deb03eb0beb0bab07ab0fab006b086b046b0c6b07458062c1396056172594e75efc2f260f9b0025821ac08560c2b8195c2ca60e5b00a58252ca522abc2d260d560d56135603561b560b56175e441d536604f604f61cf60cf612f602f61af60af616f606f61ef60ef611f601f619f609f615f605f61df60df613f603f61bf60bf617f607f6177297a95dd83dd873d803d842dfe1cc3d6611bb04dd8166c1bb603db85ed55f0d83eec0076083b821dc34e60a7b033d839ec0276095b81adc2d660d760d76137188b574dd82dd86dd81d79deb6e8e30ee04ce04ce1cce0cce12ce02ce1ace0ace16ce06ce1ece0ece11ce01ce19ce09ce15ce05ce1dce0dce13ce03ce1bce0bce17ca4a780f385d385d383d3873380338433823386a3c3313017744c38161c1b8e03c785e3c1f1e10470423891f44d706238099c144e06278753c029e1287054381a9c1a9c3a9c069c269c169c369c8e3c38dc05dc09dc29dc19dc39dc855cf97697705770d7703770b770c5933ddc03dc23dc13dc33dc0bdc2bdc1bdc3bdc07dc27dc17dc37dc0fdc2fdc2edc1edc3edc01970db843b823b863b83a5c03ae09d7826bc375e0ba703db83edce0074f0037841bc18de1267053b819dc1c6e01b784abf0220aab7035b835b875b80d898d2b528bc2be73db703bf22c740ff026f0a67f3e88e51ade0cde1cde02de12de0a9e78b281b785b783b79771585908ef00ef28b729bd13bc33bc0bbcab741cfc79f0fefc43a563fb18dead4af7ca79aa723cf31ef09e727f5afcf75ef0def03ef0be55d55db9b3a989aa7bf0faf0065515c3ea3a8227a8e9727d5afa0e54c933e099f02c78361b2fcc4fd57278f8b7c7ca273ce7cf4beba8c825f05cb0eac2f3e0f9f00278e243227831bc045e0a4fd422582aa482e095f014782a3c0d5e0d9e3c43199e484d0af9eab5e0b5e175e449f23ee04fe04fe1cfe0cfe1ff7e2bc15fc25fc15fc3dfc0df52ccc5c212f2777c2ce0efe11fe01fe19fe09fe15fe05fe1dfe0dfe13fe03fe1bfe0bfe17fe07fe177e1f7e0f7e10faa409108fe10fe08fe18be0edf806fc2b7e0dbf01df82e7c4fb66091c2f7e18b1a43b69bf0a32adcc7a336c234a25a60dfc45c7018c34f64126d3a99564ec28282289bc1cf65a3fb05fc12be52015081e1ab7f78fc977cd14007d9e2a25bf835b908ebd7e137241ebea8ba05bf0dbff2b70a28a3121a0be9a6174ca4d368b912dcca2dbb602a777e8359c5e418c11c81c8b6e4e48a6085608d6083608b6087608fe080e088e084e08ce00261ab063779d484f5a6e88bf2c7111e089eaca7085e0804d90f822f822e821e827e054f304030443042202ad31118d27740c8cfc0e4453cb77811596d0a1b307010b8083c04be3cec504c054180204410714704318204415a8d1e483fb7204390232810940814042a020d410d411d411519929fa8d808c437b710b41174e40f1184907d339c48279e9f87665a39b0ffb7571d4e11562ef61dd157aac02bd14ce11ce102e1527a57852b191524a3e0ce15a9f57ff7b2fb879bbf9da7bcdae55b772a9a5b843b847b84873f0771f115eda1843f3c561eac6b84a76a47b589f02ca10a2f08af086f08ef081f089f085f08df083f08bf08bb087b08fb0807088708470805933a4203a189d0920ea4a18dd041e822f410fa08038421c208618c50f0f95bd4090507e2930a84254245faeb1e04972a424d8691cc46f20718c4889e29086bf210cb87785b47d890e7140ab1190a765b10aa48d8913ff110417e5534c1d644344534433447b440b444b442b446b441b445b493ed2866bf688fe880e888e884e88ce882e85a05b3793f7810dde4950a6b42de3c2b9f10b9df83e85e55f4902d1e3d11bd10bd117d107d25248288bc7611f5feb6e3a27e751d484822517024f7f764a06b8a688c48476420123c5b88ecaade7fbebb918b4814f411058842e98f18457f8045312251bba09021ca1115884a440a221591464534480d511d51035113c2968fda72ef40c01375e46f61c48050a0e329e219e239e205e225e215e235e20de2ea1c6bc43bc47bc407b98a131f119f200089cf882f88af4277e129953b0ec214886fb8cbf37f11df113f38a9217e227e217e23fe20fe22ee22eec91e2dba76eb2b9b23ee231e201eca85fd7884788c58476c2036a52bbafa0b6c8b105b886dc40e6217b128e5230e108788c5ab1871f2e7817d10b588d129886410ea495c202eab6c822515b1a8a2263d3de3badc0d8a1b889b885bff4259ab0dd9b88db8237f232401920992299219923992059225921592f5dfb6f79f0744806483648b6427778384619b54d3a3f24672acfcc855242724672417245724372477240f244fb9b390bc90889c1f245f245d243d247d0a6b211920192219211923d19118484c2416121b8983c445e221f9adb925828310498424aecee3f5d8fe486c44af941ba3a27c2abdae45956b4131439207775153c1a7205722519008163524352475240d894d15ea87a489a485a48da4237f324528c129904e904e91ce2a57f40ce91ce9426ee3a74ba42ba46ba41ba45ba43ba47ba407a447a427a467a417e946935e91de90de913e903e91be90be917e907e917691f690f6910e900e918e908e91ea129554546d4a712243f572a416521b62880801967a487da40152912d421a4bc6d2e4cf7b642b1848910a3e45a902a9e05341aafe10aa286b486b48eb481b489b485b48db483bf2f76132209b209b229b219b235b205b225bc9b59c6c8d6c836c8b6c876c8fec80ec88ec84ec8cec82ec8aec86ec5ec1933d903d91bde46e42f646f6a15060f63eb22fb22eb21eb2be747bcb0451794c253291c6d2fd2ad39119c84c6416321be263321799f7e75020fd662b9f824c900a20be248b90c5c81264a26c151c22030a175214ef0a643932712d9129c854641ab21ab23ab206644cb674b942d6fa353184b4c83af2f77184da964f904f91cf90cf912f902f91af90af916f906f91efb0fdfcb973fcf37440be477e407e447e829803f30bf22bf21bf23bf22a96f11731590518217f227f217f23ff20ff421091beda4dece5ee3b8e35e43de47de403e443e423e463e43a7203b989dc426e2377900b3a1e721f79803c441e218f9127c853e419f21c7981bc44ae2057916bc805d9df0f40e60de44de42de46dbe05bb1df99b40ebab8c2128262884a2fc4531433147b1e0a28f6289624561df156b141b145b143b147b140714471455a89bf830018f74e56da13857de65cbbfe08de282e2fa0b2bf86123516c3c51dc50dc252ac50385f8f305d10ac50785a8bd5bb9ba87ff690a287a28042703144314a32a8d51e8280c14260a0b858d426473210a76aae8aa7cf827f30557858f22401156554428621409840e5964f889bdff0b4f51a02865d044a1a050516852d55e4b5f11c8c86ff14575140d144d142d19525288e71df9a34a25504e504e51ce50ce512e502e21a66821b4ca0dca2dca1dca3dca03ca23ca13ca33ca0bca2bca1bcabb50eb2a78ca87d4a4df75944f796eefc29267b27a26172309c9fa267f6f64b2e24e5079a17ca3fc7021eaf8a2eca2eca1eca31ca01ca21ca11ca3d4ff66b6f5bf193fe7bf088236ff7dbcf40b64f10bd796de55029ed24069a2b450da281d942e4a0fa58f324019fe6c1d01b61c3d425c9711ca186582324529946671cd5116284b940a4a15a586b286b2fe1f3c95ab70358664db35a412513651b650b65176243c0aa1408e1ee96ebffc73f5127a8432f9f3db52a6bfe10e65260790301e444e45fcb984b282b286b281b285b283b287728072847282728672817295fe1eca0dca1dca03ca13ca0b4280291f285f28a2961e943e940194219411943114fdf7437c061493131b8a05a1e62a8e3c875dd8688a0bc583e2531519022821840c5762a91a085b47119ca55032283994024a094581a242d12a77a7b63ca7e13f813ced56aeee6d19ca5b45f342a9fd0f9e45538a6ba50ea501a509a5054564e8c8a412aa18c4aec4557a5ab724d882a03a813a95f15cea0cea1cea02ea12ea0aea1aea06ea16aa78b5877a90915f49f3ff038f7afc1f3cea09ea19ea05ea15eaed6f64ff9c267f6e5fa2b87aff45aa407d407d4aaf4a1968272a7d495f11553cff40fd42ed4ae710b507b50f55dc0ca18ea08ea1ea10cda89a502da8365441d085ea41f5a10650c5174550638a99504d20b47633e6fbfe3b154410ca383182fb10bbab746f17f0a8433a3984141586a15ab2f782aa4055a16a506b50eb50c51736a1b6a08acfebc8df45d3006d026d5a39b0b52bdf4c47ba3b89ceaecd2a9c2aab5b2031ad66183fafcca38db42bc560d2e6101d535b425b415b43db40db42db41db4346be8fabb8aa6a3e1465b523b4d31f3cda19fb1ab40bb42bb41bb43bb407b427b417b437b40fb4ef7f93ed1f3c5a976d0d5a0f5a1fda00da10c20a16c693a643aba2502a67f92ab1722112359a95a6d0957a414d64b37034a1d9d01c682e340f9a0f2d80267246d0626809b4145a062d8756402ba129d054681aeb228360b80ead01ad09ad05ad2d379db58efc6db91a509ba036c55fe0fc29e5ed859a18aa7dd416f2401601cf55436d89daeaff91f526cbcaf33cc3eec1789ea20d6448dff73db34b490810fa1e8e7ecbb09efbfdfedaab52a9ac60cbb265c992634926bd76bca1496f4c7a6bd2b149ef4c7a6fd2074b9bf4d1a44f267d36e98b495f4dfa66d277937efc197aa3b2a5445a21bf4cfa6dd21f932e9874d1a4b595b24957ecb294ae5a0d7571b2dd4ed78c765b8d9b74d3a45b26dd36e98e49774dba6794e17edca3e4d121b30bc6c2a407263db4e4498f4c7a6cd213939e9af4cca4e726adbf2e4d3a61d249934efdc8f3756ffb8f15d26993ce9874d6a4b5178a46dea43d9b732f634ce67bde58b532a590deb5394bd7af70cb88957519df640293094d66653291c9ac4d6663325b93894d6667327b933998ccd1644e46d5a2ccc564ae26733399bbc93c4ce669322f93799bccc7d226a3d08a26533299b2d3560815a58d53561caa265333999f70cb344ca66975b3ddc0bacc1f5bce5501b59cbbe2d136998ed35624ba26d33399bec90c4c666894fe99b1c94c4c666a323393999bccc2649626933099a4d907dfd046fa6b4a05b7c9a44d2663328a8d6b323993c99b8c67b28ee5aaffc8e3644f266b4c16931593f54d3630d9d06457261b99ecda64377f5e70bf5153852dbb35d9d86477963ccec164f726abf7a3b170ce267b31d9abc9de4cf66eb20feb1a6e5d56de7ff22af731d9a7c9be4cf66d97b7acfe5b30d9a2c9964cb66cb215cb1cd9aa8d37a297cade6ccd64f54dc3649b26db32d9b6c9764cb66bb25ab76fb203931d9aecc864c7263b31d9a9c9ce4c766eb20ba3d6423661b249934d996cda6433269b3559d7647326abcbb076d3b319185d635c9c4adeb8625cdfb881cdb917ee8dfbdb737357c68dfec8f34d3e61dcb57137c6dd1a3736eeceb85af460dca3714fd683d23d1bf762dcab716fc6bd1b57cb3f8dfb32eedbb81fe3aa995dfdaeae5de3168d5b326ed9b815e3568d5b33ae566f18b769dc96d520940c2ad9dcb6713bc6ed5af2b83de3f6adfee60e8c3b34eec8b863e3feac90e1374acbcbd6d2e176a7c69d59d5c055080be32e8d9b306ed2b85a376ddc8c71b3c6756d78821f79ec6aff5b4e3a7fe47173963c6efe8f3cae677355da35f22bdc7e970ab7e4d2e430393139dfe402930b4d6e65dd1fba2b938b4c6e6d72df935639bd6293db99dcdee40e267734b993c99d4dee627257bb6193bb99dcdde41e26f734b997c9bd07b79151e33d4c1a5dad9569728a83c22f995cd99e5c8b7f670d721593ab9a5ccde4ea364878a769720d936b3a9b94c9b54cae6d721d93eb9a5ccf59eb73dfe4b4a5a1c929e8b1c94d4c6e6a7233939b9bdcc2e4b42789aff366dee492d6b327a740d22697b167db725993734d4e1ff457ef8f3c7995b655eb9591ff724f5e2f3179dfe4f5a7d0e457261f99fcda4a95fcc60687c8acbeb5b6261f9bfccee4f7267f30f9a3c99f4cfe6cf21793bf9afccde4ef26ff30f9a7c9bf8c5ad9f9af7ccb17be224e1f8a265f32f9b2c9574cbe6af23593af9b7cc3e49b7faac1b6f8b7f6283be65b26df3679add5b5be0ff99ef11726df37f981c90f4d5e31d79713939f9afccce4e726afbf2e4d3e617777f249a38b5c3e6df21993cf9abc6bf23993cf9bbc673cc778c678184f8ce7db31f702e38546d50d2f329eea81bf0f0adee6eb0d123b9fb2f1b6c68b8db773e299f1f6c63b18ef68bc93f1cec6bb18ef6abc9bf1eec67b18ef69bc97f1dec6fb18af60bca2f14ac6530815db7faf6abc9aa3469f57b7fb8c9eb6ddb42b84d7325edb785aa0fbb342ac7cd3e1f67ac6eb1b6f60749df346c61bdb639edec478534b1e6f66d7b31f39bdb9f116c6d35f13c64b1a2f65bcb4f132c6cb1acf355ece7879e3793655abcd34ab8b95e0f85f35b2f3d395b12935436c16c7089b3870834d4b1763139ded710e5f41dafdfba030eb6053739cb001212fd86439376cc4da07ced304636c0a8b3736ff41011b41bf840dd15ec10600af61e34937b021255b3836e70236546c171b73b48f0d7039c4464d543813d43c782c548b57f2d89cadb36fb04a6c40b485cd66d9b011b4b0d1a492d88842696ce4992c364e490e1bc6c2b3e969adfb3e58676d1febaa1b62fd3323ac6bde06b3b58ab5ae3dd9b7931e631d8d76585f9003f610ff097bd8fb82d1493ac01ea2bd7fc3e134ec7ecc5935bf878a72ec91c617f6ccdc077b28ab6861cef5a1f4db48c69e9dd17b157ba4a18efd72dec47ea06d633a8ea8ead3c57e7dea63067f81b1ecb70965cfef88db2d5bc56d62b5eabc429862b75fe6583b5c2dc9c4ef143c567f5794145a86afe4c58a397defd91cbd7614f44fc08700425841046bd8c01662d839fd07ece1004738c1192e7035d52edce00e0f3319c1d33c9228731f239b0c31d2623ff260bfe4835e452841192a50851ad4a1014d68411b3aa0407bd087010c41e18e61025398c11c16e698b16adb6aef24f5e51212a00da7200d19c8820bb99f4b09e4bf77cf662416633b2b82f8488084df6b8544c85acb23f65b00a2525e0bc488f2a50d9e82ec910372444ec819b92057a733466ec8dd6a7dba16fe67269b58e13c9027f242dec807519845a48494910a52456abf6f6e7a2175a481349116a2ac9f413a4817e9217d648028c011a2cd2926536486cc9105b24412963c92445248dae92a70ad9e455c2487e411cfe661b6597f7b4a1e1b7745c9e3d79db0a544ff92c7177cdf3937f103fc107f851f395e1d7f8dbfc1dfe2c7f83bfc3dfe01ff887fc23fe35ff0aff837fc3bfe03ff89ffc27fe37fac6d3199e017f08bf825fc327e05bf6a8d839cc2ace12bf086d9eabdf90bea80afd8b4f13be63ac7efa2b82e97f87dfc01befe3afa1761e2ef938f8e94af9a9236a70d4df167f85a7181afb512f849fc147e1a3f839fc5776da43cebc3f5e7a662b9c7cf59d560a1bdcee37b365175602c0f04e24c57a67723f0f581202008095487de1244046b820d813ec7043b823dc181e048702238135c08ae045af74ef03067adfe7496138217c19be0435030f5364191a0445026a810544d794c50b3f990f337cb3dca0641dd0c5a04dfa320044d02fd47df7608ba043d823ec1009b74589118a11236d036a604338239c182604990204812a408d20419822c814b9023c81378362777682cbb8742e813068421e18a30225c136e08b78431e18e704f78203c129e08cf8417c22be1cd2c938477c207e193f045f826fc1016088b8425c2326185b06a967dc21a619db041d844279d4ae9c38cb043d825ec116a8101e1907064b65a724c38219c126a99f9b79505e1923041a8cf29c2346186304be812e608f3849e4ddbbdfab933385680ad8495cf2a6015b25ab18a58ad596d586d59c5ac76acf6ac0eac8ed8ccc34556675617565756375677560f564f562fa30be4eacd4ac9566355f891c7aa6d9b84f35208c52f795625566556155655565aaeceaac1aac9aac5aacdaa63c9b3eab2eab1eab31ab01ab21ab1d29713565356335673560b564b560956495629566956195659562eab1cab3c2bcfdc2ee89a17192b9f2321f28902a2f07b5f1145446ba20dd1962826da11ed890e4447a2132a8b23ad7e25ba11dd891e444fa217d19be84354202a129588ca441527a81355896a44fad0206a12b588da441da22e518fa84f3420527b45eb8e88c64413a229d18c684eb4205a12258892df2b459426ca1065895ca21c519ec863ed383a446b63d79ab598d382b5cf3a601db25eb18e58af596f586f59c766d263bd63bd677d607d647d627d667d713e4ab6820d32e31b7b40da0b6da6b0ebdda6447c7d2352b1beb2beb1beb37eb07eb27eb17eb3feb02eb02eb22eb12eb3aeb0aeb2aeb1aeb36eb06eb256ccdace27cbbac3bacb5a9befb31eb01eb21eb11eb39eb09eb29eb19eb356d497ac13ac93ac53acd3ac33acb5aecb3ac73acfdab349ef3746d754b542d8081b9f4dc02664b36213b159b3d9b0d9b289d9ecd8ecd91cd81cd99cd89cd95cd85cd9dcd8dcd93cd83cd9bcd8bcd97cd828b4229b129b329b0a9b2a9b1a9b3a9b069b269b169b369b0e9b2e9b1e9b3e9b019b219b119b319b099b299b199b399b059ba57969eb093649362936693619365936aef968bb393679361e5bc72c6d446a1bbe47f583adb0f5d9066c43b62bb611db35db0ddb2ddb98ed8eed5e0963d536d5aa957574f26d0fce21c1f6f88b48a5204e6ccf6c15e295ed8dad9678b07db27db17db3fdb02db02db22db12db3adb0ada28242178f6d836d936d8b6d9b6d876d976d8f6d9fed80ed90ed88edd851536ba140266ca76c676ce76c176c976c158324db14db34db0cdbac796b5d976d8e6d9ead47ecd8e844aafec442ec1307c421f1cabcebc411f19a7843bc258e8977c47be203f191f8447c26be105f896fc477e207f193f845fc26fe1017888bc425736f1397892bc455e21ab1826d1037895bc4fa5387b84bdc23ee130f5085c2de47c463e209f19478463c275e102f8913c449e214719a38f3cd84a13867895de21c719ed85325ce465adaa93627ec7c7601bb7070ab9b4cdd51cd6bb772ca2af78aec2227de7eb38f7dbedcb35b3baf33bb0dbb2dbb98dd8edd9edd81dd91dd899dfe7461776577637767f760f764f762f766f7615760a7104beccaec2aecaaec6aeceaec1aec9aecb4d536bb0ebb2ebb1ebb3ebb01bb21bb11bb31bb09bb29bb997929ba73760b764b73d7f7097649762976697619541bdeb9a6a24de4d8e5d979ec1d1b4e4a95d5bd58a1b4f7d907e6adef43f62bf611fb35fb0dfb2dfb98fd8efd9efd81fd91fd89fd99fd85fd95fdcdbc47ecefec1fec9fec5fa6f261ff66aff702fb22fb12fb32fb0afb2afb1afb3afb06fb26fb16fb36fb0efb2efb1efb3efb01fb217b853666aff84c6d7e926ecdcc4e9636fb19fb39fb05fb25fb84a96b9924fb94d3d2ea69f6199566ecb33fda387eca093766b2b071a8fcef9e1b7b977dcee6b4d049b1cfb3f738383696966aea07e1e0730838841c561c220e6b0e1b0e5b0e31871d87bda32bd6e1c0e168b3f2a9d67438713873b870b872b871b8737870787278717873f8702870287228712873a870d0ea350e750e0d0e4d0e2d0e6d0e1d0e5d0e3d3bdc873e870187218711873187098729baf81fe61c161c96a81c500178487248714873c870c8727039e438e439781c1d1b174cad8ea370f439061c438e2b8e11c735c70dc72dc798e38ee3de2660d9b78df6e8a8d791e389e399e385e395e38de39de383e393e38be39be3876381639163896399638563d551321f6b4e4381d73936383639b69c478e639b638763d7e6d3b599f4921c7b1cfb4e4feb0eec97b64bdaead3c7a1cddc6ac3f157bee4398e388e0737853e31758535e538e338e7b8e0b8e498e0a880521cd31c331cb31c5d8eda589ea3c7c9b1e1d0d4d83a09279f53c0e9cbb0aa0d9f569c224e6b4e1b4e5b4eb19de0a71da73da703a723a713a733a70ba72ba71ba73ba707a727a717a737a70fa702a722a712a732a70aa72aa71aa73aa706a726a716a736a70ea72ea71ea73ea701276d77c469cc69c269ca69c6698e2edaa7a5a3e6cb29c129c929c529cd296367c929cbc9e594e394e7e439952c67c751e17636e631b116e45938fb9c03ce21aa289f235398715e73de70de728e39ef38ef391f381f399f389f953c966fce17ce574b9ef38df39df383f393f3cb66a9ae1e6d4cc25195f3db7eb851b3f21b0f9ef3c7e67b57b29d0b36cfdef1fb4181739173c9a83d782edb9d867385b3d6ac71ae7356e84dce8a6e9b73877397738fb39619701e721e711e73d66e4c392bf439e705e7a5a9eacb04676d26c539cd39c359bbed72ce71ce73f6b8d8337bd6763eeeb908179f4bc025e4b2e212715973d970d97289b9ecb8689903972397139733970b972b971b973b9707972797179737970f9702972297129732970a972a971a973a9706972697169736970e972e971e973e97019721971197319709972997199739978553764c77c945af04972497149734970c972c1795b4fa6f8e4b9e8bc7d5b161faae98d99eab70f59dee836b603309750f4ea9c835e4bab276cb35e2bae6ba71323dae5bae31d79d136f2cf75cb5eede245a5c0fbf0d37ae47bd7fc9733d713d73bd70bd72bd71bd73d5069e5c5f5cdf5c3f5c0b5cb5198552e65ae15ae55ae35ae7dae0dae4aa40b5ed0ed72e576dd8ba71711d98e298eb90eb88ab3e4cb84eb9ce50ab5325cf75c175c935c135c935c535cd35c355dfbb5c735cf35c3dd4c2b819bbeb71136ebaba64b905dc426e2b6e11b735b70db72db798db8edb9edb81db91db89db99dbc569b7b85db9ddb8ddb93db83db9bdb8bdb97d1c6fc4adc0adc8ad646a0d546cdc2adcaadc6adceadcf44d939b566f3b953cb70eb72eb71eb7bec95cb80db80db9298431b709b729b719b739b705b725b704b7a4235a2cc52dcd2d6389d457208abccb2de7d41519fdd76645c65e863bf6dbc163c95df4b214bafbc60d9dcf917bf025cf3de4bee21e715f73df70df728fb9ef1c1523f7bd531f723f70d7d227ee67ee17ee57ee37ee77ee0fee4fee2fee6fee1fee05ee45476dc97b897bd9bc12dc2bdcabdc6bdcebdfabc1bd69f21e7745a2cdbdc3bdcbbd67267aef731f70d7b646a876709f709f729f719f735f705f9a9bd6528049ee29ee69ee19ee59ee2ef71cf7bca5f7dde3e1f0303ce0213c7c1e018fd0a9ed78ac78443cd6364d553dcf63c363cb23e6a13fed791c781c799c789c795c785c79dc78dcad60783c7828132cad8afc78996397c79bc7874741ef768d7914799478947954785479d478d47934783479b478b479747868ad9e3378f1e8f3181857410d798c788c9d8a8b8ad0c794c7ec7bcdf5727cadbb703e0ae79bd21cd51c1e491e291e691e191e59c728a25a33c7433be3f174781a9ef0149e3ecf8067c873c533e2b9b684796e786e2d799e31cf9df98c78ee791e781ecd27c1f3c4f3fcbd2e3caf9630cf1bcf3bcf07cf27cf17cf374f05a2d58b3c4b3ccb3c2b3cab3c6b3ceb3c1b3c9b3c5b3cb562876797678f679fe780e790a7b635e639e139e539e339b736dc73c173c9539b4ef24cf14cf3ccf0ccf27479e678e6797a76f7e46578a99d2ebc7c5e01af90d78a57c46bcd6b63b5bed796576c7a635e3bd48c7f1d781d6d8ebfc2c769e7799d508df775e175e575b3e479dd793d783d79bd78bd9d6e97d7875781579157895799578557d5513bf655e355e7d530ae36d1e4d5fa3f57d3096fbcdabcbeb9e37829941eaf3eaf01af21af112f4568c26bca6bc66bce6bc16b8972c32b6996da922a855a26cd2bc32beba8ddfe7279e57829c61e6fc786437dc35b78fbbc033b94ef90f7caf167bc23de6bde1bde5bde31ef1def3defc37ff723ef13ef33ef0bef2bef1bef3bef07efa77357802fde6fde1fabe1a8c1f12ef02ef22ef12e3be53aef0aef2aef1aefbaa9267937783779b778b77977787751a3eaad980c780f5195fa3de63de13de5ad5829b405ef25ef046fad9be29de69de19de5edf2cef1cea37acdc7b1615e830e1ff888e5aa8fcf27e013f259f189f8acf96cf86cf9c47c767cf67c0ea898d2be7c4e7cce466dafcf858ffe7bfbfaea2e8cb2849ab49f079f271f556e874e5321bc1d95cc7f76cfa7c0a7c8a7c4a7cca7c2a7caa78632d7a761f1fb34f9b4f8b4f9285a5d3e3d3e7d3e033e43944b3e633e133e533e333e733e0b3e4bc7d55f13a825fc4999d9878f6290f9e697bd3945454261ba7c727cf27c3c0a8e8d6b6b77cc85824f21a010525851889ca04261eda8915fd850d8528829ec28ec291c281c1d152085138533850b852b851b853b8507852785178537850f8502852285128532058556a5a0d0ea141a14b47a8b429b42874297428f429fc280c290c288c2d8e9a4284c284c5155ad30a7b0d0cb513a15961412149214528e3265214d41ef590a2e851c052de039398fa243d1d894d8baa817a128147d8a01c590e28a6244714d71e384538a5b8a3145d569b5d69ee2e1e7b443f1bb6b40f144f14c51a15c29de28de293ed0712cbe28be297e28162816299628962956285629d628d62936282a9416c536c50ec52ec51ec53ec58133d65a438a235441284ebe97e231a338a7b8a0b8a498a098a498a298a698a198a5e852cc51cc53f42839360a71094a42c9a714500a29ad284594d6943694b694624a3b4a7bd368503a503a523a513a53ba50ba52ba51ba537a507a527a517a53fa502a383ae1549b2a9528952955285529d528d529299026a516a536a50ea52ea51ea53ea501a521a511a5f1f76142694a69f6bde69416949694129492945294d2943294b40997528e529e9247d9b1e194cb5016ca3ee5807248794539a2bca6bca1bca51c53de51de533e503e523e513e53be7cc953be52bea1566bf941f949f945f94df943b9607770cb45ca25ca65ca15ca55ca355492941b949b945b94db943b94bb947b94fb94079487944794c7942794a7946794e794179497df2b41394959c1a62967286729bb947394f3943dd406a818fbb1a922547c2a019590ca8a4a44654d6543654b25a6b2a3b2a772a072a472a272a672a172a572a372a7f2a0f2a4f2a2f24657ef4a814a914a894a994a854a954a8d4a9d4a834a934a8b4a9b4a874a974a8f4a9fca80ca90ca88ca98ca84ca94ca8cca9cca82caf25b384125f9bd5254d25432a8b5a48b7c25876a7a158faa0db86ebf9755c556a9fa5403aa21d515d588ea9aea86ea966a4c7547754ff540f548f544f53cb84d8d6ae7d50bd52bd5ef3937aa77aa0faa4faa2faa6faa1faa05aa45aa25aae5df5716aa956f74e7ef07b46ad57eafacd6a8d6a936a836a9b6a8b6a976a876a9f6ecf79ea93ef77f0e184e42c10eecd997e5c67ea0ab0e4d7ffcfbd84575841a49d509557d3fa33ab729c726faefc2e43ff6f8e0efc44fb0fae6fe513cb5b7097b8026a5bd4d524d514d53cd50cd5275b52ed5dcf720ea9c6ade99b9543d6a360ebafdb258136a3eb5805a486d452dfa3996d8e66a6b6a1b6a5b13e9afb1d93fa8d9a0bbd4f6fa6c833edb2c659d3f67b9857667a8d70f376a077368533b523b513bdb13a9bfd8c2f64c5df0af8a4988f5ca0bba3f673c6a176a576a376a776adadc93daeb1bf36b48eded547deb09e2ff845bed43ad40ad48ad44ad4cad42ad4aad46ad8e9a05b526b5d6f77bb70d836e0f7da55f3f1f046a8a56875a975a8f5a9fda809a421ffdb2ae511b539bd8644a365395be9f7e132bbdff4ef829c6fbd04427cb16b519b539b505b525b55fc8632d9ffc0b0fbaf07ee7491502b514b534b50cb52c35975a8e5a9e9a47ddb131d8eb50d7a9b7a0ee7f2bf6a807d443ea2bea11f535f50df5ad49e8bff1efe81af51df5bd937d523f503f523f513f53bf587fc7af439d45e617085ec7fa7b68f25f862c9bfaadbea77e75722fea37d4a6a93fa83fbfd9b5d6df1452366ee97fc719cddf797f9d58752dffb69d4af9d43fd40bd48bd44bd4cbd42bd4ab4ea423ff66177dc953af51af536f382d6daf49bd45bd6da776bdf375be69eb45bd4bbd678337e6145c5f47d9ecf561805a45f511f531f509f5297585f03d456dbfed4f6d0e85fe40bb447d61499559d993a1d9efa14336d67bd4b6b2a49ea09ea49ea29e36bddb3726ebf0ef1cbd326e3d635d0cb4cf73a581526562eff55f0045fd35879a32758f866303c7db7179fff91aa66dc8781b37bf010da1e1d3086884345634a23fd72a7bb2b76389aaeab25a248d0d8d2d4ef027271af19f33ccd7b5c11e214e6c6cc05ec959aeb2dfb96b347634f6340e348e344e34cef67de342e3fa174931509e5e7c4f815d69dc2cccdf49fcdf955264ee341e349e345e34de343e7667a4a1adff3ec7354a34ca342a34aa34b4bdbab66a82d07672314517de4693468b469b46c706d15d4634baf6a487ca90468f46df2e038d018d218d118d318d89150ed3ab19ccec6990860299d198db0fa38d058d258d048d248d148d348d0c8d2c0d97468e469ec697632c7bd9e87b341d9b94a0094da1e9d30c9cc58766f8931e346df0509a11cdb519f55095b4b9fd1e1fbcd38c6dcebfe68ee69ee681e6d1eebd364f34cf342f34afd6f151adb9ad581a376f34b5ca83e693e6eb9714c51a7acdb72552535bd47b91668966996685a682aad1acd36cd06cd26cd16cd3ecd0ecd2ecd96169f67f1eb234073415cf11cd314d45756a4f385b98b31f79686ae105cd25cd04cd24cd14cd34cd0ccd2ccd6fc0309a39a3bad6397054b76b2aae1e2d7bb09896b16eaf2d68092ddf74fab4025aa1712eb456bf33e0b42227b5a7b5a6b5a1b5a515d3da59afab44600b2cf5bdfe7aa075a475a275a6a575afb46eb4eeb41eb49eb45eb4deb43eb40ab48adfc3ba1d1bb1ddc64d6ed02ad12ad3aad0aad2aad1aad36ad8e0bd16bde6377cfe8a568b569b5687569756ef4fee275debe5ab52aba5686b2f86a8add61ad39ad09afe1882d6ccae1f3a88ad39ad05ad25ad04ade43796efe077908a568a569a56865696964b2b474b7bedd1b63e03f6744c5bf03bb47dda01ed90f677c6b4232b1becc39af686f696b675aea3bda3bdff26132a18d1a97cb363d83ed03ed23ed13ed3bed0be5ae3a17da37dff92a7fdb047adda4fda2fda6fdad6e95019dcba20a7abb40bb48bb44bb4cbb42bb4f54d8d769d76837693768b769bb6e2d7a5dda3dda7fd0d96cbf6b766d01ed256e063da8aeb94f68cf6dc1ee468eb4f4bda09da49da29da69da19dadf14893305e5fe5cb768e750fbbcedd1716c4a8f0e74e4efc4f3b6f03bf249c7a713d009e9ace8449636bfc539159a3841674d6743674b27a6b3a3b3a773b0cc61cf84587f233a473a273a673a173a573a37ebb26383cedb65d2b80aff4ee741e749e745e74de743a740a748a744a74ca742a74aa746a74ea741a7e964fdaf34b3e7fde9b4e8b4e928902e1d6dab4f674067f82f2c309d119d311d2d39a533a333a7b3a0b3a4a39827bfe451fbab93a693b13b5a9d2c1d974eee378be9e4ed52d6c9d3f1e8da68f0f61c5557e8fa7403ba21dd15dd88eeda8475ba1b4b9eeef697fb40bba7cb3bdd98ee8eee9eee81eed14ef3ee89ee99ee85ee95ee8dee9dee83ee93ee8beedbfa586f3f363fcbefc860f743b740b7a84dd02dd12dd3ade8d4b68bff37a308dd2add1a5d6dbd41b749b765c39b1f333ff2d0d5e63a74bb747b7415b701dda191dd6f25f81b415dd5bb23ba63ba13ba53bab3afae18d9e0ce81b1e4e9cee92ee82ee926ac00e826bf2749b4648a6e9a6e866e96aeebb8fa9c33a7ffce3b5ac7b9a139691ff3743d7a0e3d63949b7b18e2ff914797bd9e5e3ebd805e486f452fa2b7a6b7a1f775fd75862f7a31bd1dbd3dbd03bd23bd9355706dbe357b2a93def95f5a48134de95de85de9dde8dde93de869930ae14def63a550aff037bbf92a94e33cbd22bd12bd323dfdb54aaf46af4eaf41af49af45af4daf43af4baf47af6f7ddeff257c51f2f406765c7a437a237a637a93ef71dcae2e8df4a616be0ac0de8c9e22b9a0a72513f492bf9426d68d4d35051500bd14bd34bd0cbd2c3df777a2f14fb3e8e5e8e9dda3efd83c3b7dfec8a3dcf3258f9d017da1efd30fe887f457f423fa6bfa1bfa5bfa31fd1dfd3dfd03fd23fd13fdf3bfe3a816b7fe85fef57bdde8dfcdfc41df86d3a0ffa4ffb202c03ebfe97fe817e817e997ecb7fc7e997e857ef5cb3dfd9add42eed7e92bb8267d7d6e5b069a7df5e3fe378162fe6bf7284ba56af4bbdf7151703dfa7dfa03fa436dd59c56df712cfc71cf4ff82896fbfb9f85f1bbfe0b3160d59efe88fe98fe84fe94fe0cebf173b2c741fa8b3ff2f49766a35d4ad04ffed940dbfd9f5be18f7bfa29fa69fa19fa59e32a04977eee4b1e452cfff56dd7263c068e4d71348081e52d334d7d65608181cf2060103258318818ac7f6b8f9d01d1fbcfb732393763ef7f61adb3be93aa32d8d862baf20db60c62063b067b060706477bbaaffefe973480c189c199c1c52c2effc1f9c3df044f065706370677060f06faef8bc19bc18781e2f6d3dc06250665061506da6a8d419d418341f3973dd1f4cb36d3983d2cd8b3a98d53b5af3aab205a76f8066d068a41d7b28eceac418f41ffb7f6fc6514f9268db2227e30b097efda67d50cbfd107502b4cc9a3ebd060c460cc60c2606aab3b963ce698f8d34dbfe1ddede5fd82b97719cc8c68f93903adbb6490609064906290669061f0cd89a412d29a1d4a1297418e419e81c7d03ad731347fe419c25018fa0c038621c315c3e89b46f0f33ff2fc02c78fd5ba92bff1b59936fb7f8bff70cd70c370cb3066b863b8fff2cd371dd12e63595c29343cfc75649dff26801affcdade191e189e199e185e195e18de19de183e1131569c3df21dee187a1225a64586258665861586558635867d860d864d862d8fe1ac073869dff2b7c2ca9865dab950d7b0cfb967bbeaa811dbe2ff758e1361cfc0deebfebc746b31c431da911c33143ede794e1cc2ecbbaf6b89d7ff0bf4dccff4cf4e1d7094bd79ee182e19261826192618a619a61866196a1cb50c1e6fff2354d15318f9163f382e962398291fc0bbacfc867a42f43462b4611a335a30da3ed7f0917de3fe1f60b34ff2f2609a3f85fb01f463b277765b46774607464746274fe42be5847977f0923be9e75ff25afb3a91c1869ad1ba33ba307a327a317a337a38f49771815181519951895bfe41955185519d518d51935183519b518b51969d12e6a4f8cfa8c068cb4d5d1cf0d4ab9f2eb36defb3b2a3e1a33525ca776f5fe8f7b7e13c4c92ad2334673460b464b460946c9ef9562946694619465e432ca315238deff4d36a6aa3363c7c469c6c6ce561bfda36c9b73027bae7b2c8c7dc6fa1c325e318e18af196f186f19c7361e8f4218efbe8982f38cf78c0f8c8f7fd9677f66d3f8e4785af7ccf8c2f8caf8c6f8cef8f12779547a8f9f768e8ff57a33fe30d63745c625334d302e33ae30ae32ae31ae336e30566c5b3623baadd2fe393e32ee30ee32ee7d096cc9635414d75cc67dc603c68ac388f198f184f194f18cf19cf182f192b136f1d3dcc629c63a0419c659c65a33874e79d5b5949d278ecd4437b107f39908139f49f03538ecb8dbfe4f427368325959eb6412fd09b7dcc772cf57b8315933d930d91ab7cb2466a2367687c99ec981c991c989c999c985c995c98dc9fdcb5b5628ffb294307930795aee9cbcfe38ef9781541974f266f261526052645262a20854985499d498d499342c6ececc494e9828862d266d269dffe571986b6145a9c7a4cf64c064c864c464cccf65fec7bb5fe1c664ca64c664ce64c164c924c124c924c524cd4431ccda056ce232c931c933f94aada9c3f44b1e35c9a73015a6769f89a9cd8363c9330d99ae98464cd7565d9a6e986e99c64c774cf74c0f4c8f4cbfe995989eed61dfe985e995e98de99de983e993a936f366fa615a605a645a625a665a71726d9bc7f2d7811ff74cb5811ad3bae59e69e33f167e7f116d326d316d63b3cc2e505d63da63da67aa0a4592e990e988e998e9e41f79beabdaeb8f3c3a5ba7dac39999387fb27e14fff290d87e4ee74c15e6d2924767f45401a6ac83ca34cd34630bab16939cda6d8e6996a96bdcf6dfce6676c934c75431f79839360de20c66c2cc6716d8e5e19b23c50ab7a4cb2c64b6621699e48d9932a89d8276526a2f661b665b6631b31db33db3ef1aa3bd9e1d7ffb8acc4ee65c637666766176fd9f52a076f75c1b558077660f664f665af86d520af3c3acc0acc8ec1b918a5999598559959902aadb5ecd6c066b664d662d666d94ecba1acf7aa83a341ba03fb55d9b32e7dfda301b311b33d38ad39f70fb9f66359b29794cdc603667b660b63467bd2798254d56c1a698a52d1bcd32ccb2cc5c354a7ee4f9ad9fcc724eee806dc263ee7c2314e47fdcf9075f3ba98b7f3dc75c98fbcc03e621f315f3c8aa1ef3b5cde9bc5c33df30df1a55b2e7b1dd3ad32ecc77ccf7cc0fcc8fd89267e63a82be19b5fe3c84f54a4e995f2d79e637e677542d9e3f6d2fe62f936d337fdb7d8af9877981799179897999af4ecfbcfa279fe735e66a450c6c2fe60d4bf88cfc29a5ed2f85e64de62de60aad63f27de60ab0c75c1f06cc875ff2cc47ccc72ac598eba508cdbe5b0e631b196ba51d9833578496cc13cc93cc53ccd3ffb34be619e659bba2cc5de63a46793bb374e9b6c2edcb3d738f8563f3732e60212c7c16018b90c58a45c462cd62c362cb22b66ad562c762ff97c1f21b6f4dc963f7721607164ac2e92f061f8b9355dc79690fad885b9c595c585c59dc2c6d1677160f164fb4f5c194c5db6eed2c3e762c16056bc62d8a7604172516651615165516da449d45834593c5ff218f4d05a810da2c3a2cbaa8ceb9e8b318b0d0ea2316631613165a60862a4d8b050bd5569c3f834f358b94424bb050635f3b9e62916661b72ad494b6826e6113b35acb7de1b2c8d90034aee2a0bdf3583a369de9f2e7dfb314a7ecdb63224b9f65c032b4c6cd7265f7659d192a1974f62d372cb72c63963bd5777f7689557c7fc26db9677960796479b2c22db9b06eff6ad6390b96e7ff1b10ea97ad87e5458d0fbb31ac7cb0bc3ab90bcb9b93d586eeff78df525715dfe5c30ab7fe83e593e58ba5f512fda634ebfcc51d52d563a940b4649165c9baae2dcb2c2b2cab2c6bdf8ed47f11581413968daf07e4c84ab665d3ae3dcb16cb364bfd559f7b2cfb2c07ff0f797ecbcf72f8276f55e9f28bbf751ebf65b66f962396639613965396b3ef3e64f32b99c7d62c5deaa8ea202c5926582659a6ac705aa6edaecfaf094b8c0ccb2c4b951c3ada8a9876c123e190f8066db1ce6bd50709e1d825e19308487c293409ad5ff2ef5b85a2985891887e4bf7f7dff59f62dd6e93d8d0dd58b334b1b58af577e9fe93b0bfc01a2a1513b155997e38a904b0a4ef7e55f00b891d893d890389a34d42f653f9f49e6e9038d98dc84e8bc4998496bc92b8fd5fe169b78e127713dc4968179e36724af24342d1d3f7ba6a6eaca1f6fdc06147edf7e54647245120512451b2e4499449542c791255123512f5ff3f79d484b2f12a93f72f67787f310e7e4bac4ae384e2d924a1a07428fec3eda78527146c8f84767f406268375213a3ff749cce9ffd1e6bbb631213125312331273120b124b12891f7992245224d2243224b2245c123912df4525e161ee24adf3f437f9dbdc660f4ef29bb6968d74f89242d2b79b3aaa4eeb2a376dfc5bba6db24ae583ede8ff65a0d27fcfcae05a3d20192af7905c918c6c403dcb76973ff224d734d6243724b72463923b9276d780ea77949387ef8c3e92d44b419d3175a373257921794557721dd09edae4536bb1db94664393f22dfb261f249f245f24df2839930573bf58f2248b244b968a99b3fdecd42b7dbf5a2dfecb7af7fa37e56deb365a469d64d9922759b1522ea9106a5624541724bf3bfa49fda949b245b24db243b24bb247b2ff3351490e8c5ae5c921c911497d98a0b2343923a9e3ac107ee7dc9209eb7d924cda6fa6c914c934c90cc92caab42473dfefb80a34afd6e26f53e7cb9e73fbcd26e999f39294cdfb673d475362b52fedff7e6573c7ee0ba40252e197ed5489d4e715a988d4da1c3ea436a42cab918a49ed48ed491d481d6d52e9d489d499d485d4959402bc937a907a927a917a93d2ba05a3565baa48aaa40d7d81944955485551a64fd5493550b99f6a916a93ea90ea92ea5924555754d528a5e587a446a4c6a426a4a6a466a4e6a416a4b43b09525a2c452aeda43d5219525993d6d65d52395279529ed96bd36beb189c762c5ba48df59a4d0b699f74403a24bd221d915e93de90de5a57c0744c7a477a4ffa40fa48fa44fa4cfa42fa4afa46fa6e29977ea00da55fa4dfa43fa4bfc9c948174d4eff2f912e93aea0ea4dba46ba8e4ede7493748b741bb566d35abf47ba4f5a111a921e911e939e909e929e919e935e905e924e9056bc53a4d3a433a4b3a45dd239d279b4b719c766ecce4046c8f8f66eb7e9f44d402624b32213915993d990d99289c9ecc8ecc91cc81cc99cc89cc95cc85cc9dcc8dcc93cc83ccdb241e645e64de643a640a648a644a64ca642a64aa646a64e46cb34c9b4c8b4ed1a90e95877c94cd7b24ea647a64f664066486644664c6642664a6646664e66f1bd96641264b4628a4c9a4c864c968c4b266774fe65f2643cb28ecd445e7f58d7e6ac90f5c9066443b22bb291710e64d7643764b76463b23bb27bb2faf248f644f64cf642f64af646f64e56813cc9bebee4c9bec97ec816c816c996c896c9568c1791ad92ad91ad936d906d9a45966c0b55285521ce76c9f6c8f6c90ec80ed1c5363b263b213b253b233b27bb406d8b6c826c926c8a6c9a6c86ac4270c9e6c8e6c97ab88eddbd768df5d37605d7c70d7043dc156e84bbc6dde06e7163dc1deedea44ab807dc23ee09f78c7bc1bde2de70efb80fdca775b4775fb87affe0168cce15b788abb5cab815dc2aae3657c76de036715bb86ddc0e6a2fbb3ddc3eee0077883bc21de34e70a7b833dc39ee025741257093b829dc346e06378bebe2e670f3b81e39879c418df79c90f3c905e442722b7211b935b90db92db998dc8edc1e55b2734772277267542dca5dc9ddc8ddc93dc83dc9bd506e510999fb71cfbde58cf2e48ae44ae4cae42ae4aae46ae4eae41ae49ae45ae4dae4be6ed3b92eb91eb93eb901b921b911b931b909b929b9990d43e80ecc537fd5920b724b720972497229726972197259722eb9dc7f97b6eb599b39ef7cf3de435ec8fbe403f221f995518d361f915f93d7325bf2b1d1e1c8efc8efc91fc81fc99fc89fc95fc85fcdbd4bfe46fe4efe41fe49fe45fe4dfe43be40be48be44be4cbe42be6a77d8f235f275f20df24df22df26df2da9642e8a1f6477e407e487e447e4c7e427e4a7e467e4e7e417e493e413e493e453e4d3e433e4bde259f23afb879780e9ec1034ff07cbc002fc45ba133de5be36df0b67831dece3cb4e41eef8077c43be19df12e7857bc1bde1deff1258ff7c47b99f608ef8df7c12be015f14a7865bc0a5e15af8657b79e885e03af69fd43bd165e1baf83d7c5ebe1f5f10678433c2d33c69be04df166a891e12df09646c59a97c0d38a29731f5852797a65f0b2df07172f8797c7f3c471c43166991647bb77101bd323b6f1381d5f9c409c509c953891386b7136e26ccd3d214e2cce4e9cbd380793ba8a7314e724ce599c8b38faef4d9cbb380f719ee2bcc4798bf311a7204e519c929a146a67885311a72a4e4d9cba380d719ae2b4c4698bd311a72b4e4f9cbe38037186e28ca8eabf637126e24c557b1347cd6d05a86453386aa3283e497152e2681754bdcb8ae38a9313276fee0b713c318e18630338e8eda9fffa0c5f6202b119e85762b38bafc52693de8a892d79c426b4dd7f93951ec5669f3c8b4d5178159bf4ee2e369fda536cdaaeb77cd31589299ae7586c669eb2d8043055b1a946ea621ac4fb2f064db1e913da6223f677e9697b3db1d1cd070c15da506c04658530111bf475669efaebdcd2b5a9082cc48677545aee3869bb49b111e2d2a29aac8d56e58a8d3d9417a333534967bd92c4c6a9f08540ac97fe4aacd3f75aacf7f056ac57ea4eac93e341ac6fdc49ac3fd545ac27cecd7a6c586786a7d863f06fe123f6247151ecd9d4b2d8b39055b1c7e3ec411eb187515a628f16a891d9d535535544b19fea0662bf498cc4eed14e8ca3ec3f15bb4134176b872fc59a2caaddaae2a4ca832eb6ba2ea9285721a8253dd109a884d26e1cd762ff7c9140241459897c0f5289ac793e4536bcf7225b91586427a2cf0791a3c849e42c7211b98adc44ee220f112dff12798b7c440aec92224591924859a4624750aa22354e1b91ba4883c35ca429d212698b7444ba8c97223d91bec84064283212198b4c44a62233112dbf10d1320911059e12498b6444b222ae88c2cf8b78e23be21b1b41443be5fbecefe207e287e2afc48fc45f8bbf117f2b7e2cfe4efcbdf807f18fe29fc43f8b7f11ff2afe4d7cadf510ff29fe4bfcb7f81ff10ba2b667acf792f865f12be257c5af895f17bf217e53d420bdeb435bfc8ef85df17be2f7c51f883f147f24fe58fc89f853f167e2cfc55f88bf143f217e52fc94f869f133e267c577c5cf899f17df93c091c0d838284a9ac09720902094e09bb754824882b5041b09b612c412eccc6929c15e82830447094e129c25b8487095e026c15d8287044f095e766a076f093e121424284a5022d6f265092a125425a8495097a02141538296044a187dd391a02b414f82be04030986128c24187350081309a6ecc612cc24984bb09040d14848a0ada424485bc7d2cb4e828c0459095c097212e425f024742434df002f3aed7c090309430957124612ae25dc48b89530967027e15ec2838447094fdfeb2ce145c2ab843709ef123e247c4af892f02de147c2828445094b129625ac485895b026615dc286844d095b12b625ec48d895b027615fc28184430947128e259c4838957026e15cc285844b09131226254c499876a2a163ab6424cc4ae84a9893302fa1272b4756c6c6a851ce59f9b2faba5fc92a94d54a5691acd6b2dac86a2bab58563b59ed9d55565607591d657592d5595617595d657593d59d4d5f560f593d65f592d55b561faeda40415645599564559655856220abaaac6ab2aacbaa21aba61dbb554b566d597564d595554f560a6720aba1ac46b21a9b822bab89aca6b29ac96a2eab85ac96b24ac82a29ab14b1564fcb2a2316312d993393bbacf2b2f224726cadc8d8f83bba36b95d897c4e3589028942e7e94ab4922892682dd146a2ad44b1443b89f6121d243a4a7492e82cd145a2ab443789ee123d247a4af492e8fdbd7f242a485494a8245159a28a445589147e5da286444d895a12b525ea48a44df724ea4b34906828d148a2b144138914bd9944738916122d254a4894942825515aa28c44598914c99c49282679893c597f7366cbda38c3bb4a3851e9b7f6651dc83a94f5caa9b5641dc97a2deb8dacb7b28e65bd93f55ed607591f657d92f559d617595f657d93b54278c8fa29eb97acdf26d391f5c7093b4ebc907541d6455997645d967545d65559d7645dff5e0d593765ad0db565ad85b56457d63d59f7653d90f550d623598f653d7174f6ada7b29ec97a2e6b85b994b5be49ca3a25ebb4ac33b2cecada9575cea9af9db8cf475fe665ed399b9a6c1cd91815dea2b276e3cb26904d289b95f38864a3d75a361bd96c6513cb66279bbdd1c5787390cd513627d99c657391cdd5bc9eb2b9c9e62e9b876cf4f9259bb76c3eb229c8a6289b926ccab2a9c8a62ab6c53aef856c1ab269caa6259bb66c3ab2e9caa6273aad3703d90c4d53ef23d98c653391cd543633ee33d9cc65b370ba0b9e79d9fc760df6fa2ae10cb4c9a46c52b249cb26239bac6c5cd9e49442a6abad6a694fb68e6c8d6cb12bd4d6a7bc956d20db50b62bd946b25dcb76235b7d19cb7627dbbda30be9f6c0e12cdba36c4fb23d3b8afdf6e24cae94f64e71e7a4b74e9c90edd589f68e2e0cdb9b6cefdcb5958773c9cbf629db974d5293c669cc65fbe63995ed47b605d916655b92add23b6946092be8b615d92af09a6ceb4ef1e56c66b26d38e5876c9b1416a699916d4bb68a4fc751f1b8edcab627dbbe6c07b21dca7624dbb16c27b255f83354a1da6a730bd92e65abe825d199b74dc9362d5bad9b95ad2b5b6d5131f424762436363a962ed9b12fcadf71e86c9312af248e245e9bda40e28dc45b9e1589638977a20a547c105d08e293c467892f369f52b72bf155e29bc477a77297f821f1f3cb3df14be2b733ba38696de6233a85e3a2c42533294bac9702ad4a5c93b82e7143e2a6c42d89db12772456883de736348fa9c47d89073611938bde251e3a43e7471e8947040d1b50213a38e1da190c9dd9c1198c9ce256e2b1d35b483c71f6a1a34b45ac706612cf45792e5ef27e8a122fd6aea6b8a6244ef35264321267257625ce499c97d8939d233bbb3369159a9defd4f7ce7efe75a05dcb2e905d28bb1595b2ec22d9e99b8dfc7f4c7dc9b2f23ccfedc578eea26f86f421b4a1879997e92184400849aefe2cb19ff77c7f5536c50e892d5b96b424cbf6fd8afb0df73bee3eee0fdc0335aee0fec43dc4fd85fb1bf708f78f7a95718f71ffe29ee09ee29ee1dec0bd897b0bf7b670e8dec1bd8b7b0f7707f7bec8e5ddc57d80fb10f711ee63dc27b84f71f7709f998404ccf594352e705fe2bec27d8dfb06f7ad267cb8ef70cfe1ce7170d3ada668b27b01f7e28f3df712ee2485f55571afe15e87af09ebe12b3d4865a7348238dfc2dfc33fc03fead218fe09fe19fe455bc73487f0afdabdc2bfc1bfc3f76535619cc86ea4d536959b6e7fb5d782ff9053b74763e1cdaea0774539267d7ba10cc10fe03fe187f05f1420b5883435afffd6714f9faaf023f35da84d1104667e0cffab7bac28814fda32f80df84df82cbf0dbf03bfab9d07fc9eac9e0d7bf01df87df82efc017cd239824fe227f0a7f03df833f873f80bf84bf82bf86bf81b556aab98b56fe1ef7e570e7edebc78a7009f3494e097e157e093b01afcbaf17d3c341e4af69323d47d583cf6781cf038e271c2e38cc74578f3b8e271e3a567a9b0e771c7832f3ef008f078820ae6f1d2e32e1e6f3c22bdaceae1078f5f122f1e311e5f3c123c523c323c1a7ab5c5a389474bed580d8beee0c1377b783878f4f170e594bd7784c74046a8cffb433c462a2be131d60d3e3331df81969d1158da54df76c298c3556faf7210fa64a0db0f39c8be4bd23d3c6678ccf158e0b1d4cbaf9e673acfea2846739640f6689714af4168fed8cac87aecf0c8e191c7a38047110f565ac6a382079fbce80effade15147a04da81028d9828fde416011eca513830382238213e8670417045704370477dda921f0113c1004089e0842042f046f614f1021f820880d3dcde08b20419022c81034103411b410b4117410747f570f8183a08fc0453040304430920d75ca7c7e8c6082608ac04330433047b0507592b444b0fa5d6b5e7a4c323608b6087eb6070129c823282060f52504650415045504a4b88ea7c653e9ce4bf619a45777f4f1b478eef13ca89c8be75127533c4fa6f9c5f30c3a3acfab0e0f78def467afe38f9e7fb53de875c04bd1c2956abac432ef9abec593453df89d4cd2c5a70e225eeab8d2ed9b2e95b4d12297cf40c7654d4febf9a4e0e319e2494ade7846787ef0e47dd69be099e299fdc79b1a9e0d59d9fc1de0d9c4b385675b3bacae836717c4724f07cf3e9e249e0ff03157276f3dbba8b8aa33b66584e718cf099efc4e09cb69e29ae70ccf399e0b3c9778aef05ce3b9c1730b7a20cf1c9e793c0b7816f12ce159c6b38267154f925147a8c151121a711d436b5e1d847b3133640f7b293c223c097bc2b3b027bc20bcf2925d2b1a2d847f5183f08ed047f84018207c220c11bed49a37df0823841f8431c22fc204610a0a44d840488a597a4b555bb2d0dbe18b6d9550e4efa2d9e815861d7dc9c9e623ece8f9580ecca0b711768537d439a1e3457cbd8fd0453840384438d2c14171c48563841384531d8dbca88dd053ce866a4d5593ffb187d213b27973840b844be14dc8b6ad116e106e11ee10f2813cc202c222c212c232c20ac2aa80b7b086b08e97c64b69fac42f239477b7e276bfaca23d78edf13ae075c48b0a7c67e8a5bdce785df0bae275031daf978fd703af00af275e215e2fbcde7845787df08af1fae295e095e295e1d5c0ab89570baf365e1db131afdfa197e3b1f9f2c51e5e0e5e7dbc5ce1cd6bf0bb867a5ae585d708afdf46c9784df09ae2e5e135c36b8ed702af255e7c81b4b24492bec32b87571eaf820cd85711af126839c396a0e7de5694dbab82170bade155d7f6246683b262b40ef6da16f5f22597d7c55b1b0af59b03aa6f8868df4662116f8bf75e7188bc0f941ebc8f9a75bd4fb41f905d4e8a785ff0be9a63a85b0dbc6f78df5536c1dbd743de7f6862d67780f713ef10ef97be8c0d07d3fb0daadff707ef186ffe9b086fde29de19de2ca4a9a3d54fbc38d4761c5e66c4164186c2bb8577db640aef0ede24b887b783771f6f17ef01de43bc47bf6b8c376998e2ede13d13e979b35d0bbc9778b3096bbc295e4d4d87e6cd56ecf0cee1cd46f1b122711adebc5fc6bb629a24b22a3b8d169b6ac9c26ba0fb18693dfee0df0924ded0b403d9143502228b680f0eede888e884e88ce882e88ae886e88ec847f440c4879f7a3440146ad9d169acc38b0946885e88de6cb38a584184e843e34105a8f23b44b16c5036efe8758ce88b2841946aca6b948918450d6d531db3c0a6fe2a44addff0a7d260456de932da9ea883a88ba8a7bd149183a88fc845c457868846a6b14134fe5d13d368209a22f210cd10cd112d102d11ad10b1103eb645447a7288f2b296dfb83a76759fea5dab229b5940544454425416c6441544554435b04584fb1f858f91a8d6c7e2b3c7e780cf119f133e677c2ef85cf1b9e17357de141f5fb7f9f0039f40d8f079e213feedb181cfcbcc327cd8512d7c227c3ef8c4cae9e3f335494b74c387cfa4f8f099c6df190a6d7c9af8b454f18e0fbf77f0e9e2d3c3c7d11d3ec4375d7c06f80cf119e133c667a2fd993ed584439fa946e3376c69a33ac2a78cca97547af8cc04bc4def3ad9e9e4493c664caa8a6cd2dc8bc6aac2562df0598af9f970b81df468abdda3b6541a356dce62097e260174d63e1b7cb69a83eeb3c32767687e3f797c0a8a757d8a7ac34696f0e1f70a3e557c6af8d411d36029d9703706628b788ff880f808baa2f119f1453686b63d392da2996ad9226088f88af826ec89efe6f840ec237ee8b4843840fc441c227e2987a5bd11472246f107718cf88b38419c22ce1037103775aba29b2d55bf236e216e23ee20ee82ea84c33f7610f711bb2697473c9016c52c879f63c413c453c49eaab2cc19e239e2c54fb9c54bd07189d7883788e9afb20114c62bd5881e58dd7b09648873bac53a58680131ff25d1657208714513adc6d5bf4b58f599d2f020e64ff51ff49a68ea99afd6ed237b015fa5e8f07e8d52035572d5f9832f74f326479d59a5dd93ec3ef1b5f8eef13d9043c2242237b2e7fb0b3b91b6ef19df0bbe577c6ffa39c4f7aebf2cd0c7f7816f80ef1354ebdf17beac34c297e5c7f87ec161fb4df1cdf065f94dd56f093d96d8b2a1721ebe2d9d39941ecd1a2b0adf36e842527abe5d7cf9e9e0dbc7d7051503d943bfe7cb7a4782a1bf637c27820ebe537c59ce0cdf39be0b7c97ba4b0256b2ff523e0fd94d86b5b3155bd92b99d2f3dd89aff3e58bfcb5802f351ecb2c816d216fbe157c89ad7fbbc08b9afed6405739d148946cee9c008995cd06933d9203922392139233928b28fae48ae4f6ffd9c32ff26f7213de2477d9fae3bfcbf8654177d79e965758da034980e489244442299eff8e3d69c8b981b6a0bc0192b7c81cb5591221f988954e62245f516e9f2d1276f1494f1324a9a0832443c21a9ba6b106d5027d0b3aad4917490f8983a48fc445c232874848f318c90404998987648664aebb243511ebe8350d3555b240b2143b97ac90b0c08d763f48b6c29e648784d5e5911490144562c898a484a42c4e2e0151524552435247aa912ad91a3b05528b746fd22bd203d223d213d233d20b4507e9552dc7486f48efbfe3b17b487da40f73e55b81b0277df2fa8f3d6968c2587f2eba1b237d217d238d907e90f2df2fd204698a343329cb6de87df7b7c3885c3a7e8a8a2393d2265276d01d846d13b9e8b5f05254e269479ea111aa531a7648bb48498d83b4afada7b724cb15bfd53a9ad63b1d10a0eb4bc910bca643dde809d24d47a26cd3b1480f955b3a41ca9b9e00eb942d99235d205d22e52b6ba41bb5e427bb953db5d3828fd94d395de79379a405a445a4258ea4df96841339aa8066262debaca79da76c9a9486482b48ab486bbac78eae23d32052c88c4c9e6416d91ed901d911d909d919d905d915d90dd91d998fec812c40f64416ea311f7b217b9bcfc4d02e64f4af23641f64b1a6d0645f7d28086fb204f739b21459a687acae81aca987fcfc25f1226b23eb4847645d643d736c8b42cc9c3f20ab8f4d647d642eb20132de67356332e61f87c89b6ca209e1b2a90edb3ab91b3aa799f7ebf102b2997984fa63757fa992a26a6e91918e05b225b2957e957efbffcd64ef59093d90d03531aea6b0671b645b8936a5437efeb8352649c8e893b28539646c1e1f2b42aa2b23ab20abea5145dd1e324d1a10ebb3d7485b9d8c4043e9d354c56b919286d1fe87724e699631410e550eea5233d91b0d8b061f38a07144e384c6198d0b1a57346e68dcd1f00549371e680468f04b2880adf142832f4668b0cc188daf21d06f24bad9518e8b462a8e4e23fbb187ae7a038dbfab09ba358d361afcb52bec69f44077bed117e969f0c5011a43347e3b52a13116896e4c8cbf45638a86a766fc9775cfd158a0c1faf8ef5a702a0152636bda2471275bf434ef7a34a4e2227b7497ad25168ae5e8395b900d31976d390ae8f0830f3ff6682aa5460e8d3c1a05348a689454e5cc512c7a523045158d321a1534f84576e194f05aa3f6bbea686a3495eca4df049ad6506b37f702559a07348f689ed03c6beb2bc20a7b107fab7b57f14abf5389a8569b685e148745f38ae68d1e921e78b2f3ed61a469f09b77d5cc69aad3a68fe603cd00cda734b9190a7b9a2f34df20fc6d7ed08c41ef9b16b4998ad03433341b12fe7914d06c0ab5cd169a6d43fcddeca04989bf8ba3b3e09334603b4354d5746878f4f48e66df70b435dd5f8df4fcf622406ce3990d1ca2c976f1e1df89f3684ed1f4043c346768f2a1858eb50421a84c9a4b3449e81acd8dc4b538fc9b3b614f932e27a9cca3592087d02ca249e2ca1cb372dc83fd9dfc1140bf16fc2ef021eec9a941042dcd0a9a55346b68d625e2c0e14cebd5d2682939c1a005b42c5a7bb40e426beb88d6e977516b3fd0baa07535b72a5a37b4ee68f9aa5d10f6b4f85380d613ad50b79fac57ac7d8b0ed05b8db7bf4daf58f81bad08ad0f2558778a822dcf19e54976c48f373ace549d55c7d253ad2f5ac91f7b44b9b552b432d0df6a35d16aa1d546ab03a2a4560f2d07ad3e5aaea1a66a0d047ab586688d8437adb15a4ed19ac8f674f91c5afceefd3619f4c4396dcdd09aa3c5e1f2306d12b6446b85d65a10d9850ff3812d5a3bb4feb24439125baca020a2d32aa25542ab8c56c5c47f3d55952047ab8616915843cd4afadd465b9bc68b0e1388eedb46a6b0db16ed3dd9a3b387b087ea45ae3dff950dcdeb9eb841ec97f601ed23da27b4cff49984b58d2ded19559038b3f419db17b4af68dfd0bea3ed8343813e19f9e4c7aa9ac89e82644ffbc9a1aa5dfe1aa2fd025bd88ed0fe4064f722f55e666648405193905d7f83f617ed44390bb453b4339dccc52d0bb4f0afd443bb21ccbbccd06e8a2568b7d066033b6877d1e6bf0eda7db45db40768b3bd23b4c73215d4260e268553b43db4f92e9576a267a9b9d5d166454bb5b80a6fae7b55e31dbac0addf9735daa4678bf60eed9c4c2eb4f3e0206bb3674a54896897d1aea0cd36d6d0aeffa4a7438f45c946cbe7373ac6f41ae8001d8bce5e37bab275325db3ce4113cc7835a26431b3640f8163e788ce091d6a15aa9aa2b081facde444c5851db94e113fc54a772ee605f1373b5774a85e56542fdaaba37347c7972db4bb113a0f09d6913df73c3a013a4f7442b529fcd8734687a321458763ed20ee5beb64c28fb0a7c3173fe2cd746274beda3fea57c1eca91bc7e82482713ba9b8ee74e0be4b74d8b4263a24a32dba34dc683aaaa7023a1d74bae8f4feb1a7e3a0d347c7456780ce109d113a2c6d82cef4f7af87ce0c9db9dabd64ec7ebee82c282e8648ac23e790a3b3a288e8e15b132bef2fc21b7a81644c4bce5946678dce46723a3a5b7476e8e4d0617b4943111dd25946a7820e3bbc864efdbff99eae4657c9b9285da06bd1dda37b40f72861fcee09dd33ba1774afe8ded0bda3eba3fb30f516ba01bacf9fc62be84349a6c29e07f86f3977eeb7db0a2f62398f1e7b37342f2b2186aca29d87b8aedd9748a1f0d867ddfa32d4435624785a9cb5c70bdd8fc82ead0ed943484937b9fb55b52a05889649ef53150c4dda4797c4a7e866e836d06da2db92b925a2475aff2ecbefa807a17cacb3b39ef14e17dd9e446fc39c04a2ba0eba2cc1357e0edd01babc3332c14a0df97d8cee04dd29ba1eba3374e7e82ed05da2bb32c48add35ba1bf376658ea3bb1578d6dda1cb42f2e816e8e8e8197d948f5e2872482d594e51a2385d5e233d7de869209ab0cb4ea8a05bfd555d43b76ee8b4910bf45f3f1d955fa2f70bea801af67bd0ee4b1cdd1ed0b3e8ed4db846ef80de51e5bae89d248a454bd33bebd350d8d3bb48cff6aec29bde0dbdbbcc9efd809ce0346a2dbab17f17d58e7034448fa09376bbff17ea97cd75097b7a0ff4024a0f7a4fddcbe929d42e428f0ff32796cfef1fb13d644f8f97b047ad9fe825e8a5e865a0a0f79ae8b5d06ba3d741afabbfea1f7b88ec7b3df41cf4fae8b9bf6b20caf396574583de501385f646e88d0d91776f421c2cc6bc37958a6eaccb436f861e0b59a0c79e5aa1c70ed9a0c7f6eed0cba1c7de28a05744af24ce8d04d0cae89525dba95741af8ac753cf7a864e7a7b45de506e54458b6892a3bd1a7a75385a74007d354709871c23709ceca1e74b9fcfb13a59fdb1e7a486ecca92f9dee1ece11ce01ce19ce09c4178ea5ce1dcfeb187ceff69a8df2f387cd247b453de541216d9d15dde7c2096891655b9fcb62f75e104fa437df5db9dec5585f35459414eaf2b75e184705e2a7cc814a7f38613c1214db179e7e17ce124705238199c860890d3147be0b4f47002875fd82496d083e3c0e98310d661f3867046127a907deef9ef180e1f9ec2a12e3ac84505e0cce0cce12c042c384b382b386bd00b76b67076a2a3de6c6c0e0e6928c029c229c129c3a9c021f13538752d21b811fa5ac6745f36bc421fe85bf4f7bfeb80fe11fd13fae7df759173c86483d41bfa57f46f22348f0dfa776951df47ff817e80fe53e23ab443fd10fd17fa6f094f4bdce497a92371f57ea4eaace3837e8cfe17fd04fd14fd4cd3cbe9377e0fb0b8963e94457afa6df43b122def77d1efa1efe8e151152ffa3246bf6fe8a5f75d1df3f501fa433c1bfa03d9b93ff0d48e858f54369733ec2a743294172dd11feb571dfd89c93289eaf7a7e87bf4b139f4d09fa13f479f96d633741efb4b43144e4fb9bf427f0ddafc2e9bbad54824e0d6dfe9c351fb271d58da3cf473e8e7d12fa05f541e5d74525ba20a459f4f56d0af9a6029bce9d7d0afc3d57095cc34bb46d2f1ee095c0b770ff700f708f704f70cf702f70af706f72e368fc0c47d08d07503b84fb8bcf382fb16fde646703f7063b8dfdf961eae4cc1b92c9312ff516e176e06b701b709b705b74d86fd6cfc066e4770803cd0530f96f93b4341db1ddc3e5c17ee00ee10ee08ee582dee702770592eb160a8e95eb9b37fec71897c26648f0e33f2462e77c166ebfe4adf167806a2dcbb3dd1f24f4b1d62be7c65299b695f6a82adddd50fc85aed0782d6a828faac680d97f46d254df59d834b92f89917f65015b805b845448e6e34f42b369aa496cc93af9435be702b4a4aa84a3e4931f0a24cd32371f9565dd3eda07c477551a1ef0b065a50e240b65c227be45401d3d4b72706d0a73206566474b0c7e080c1118393443f07670cf8e215831b06770c7c0c1e26edeaf06834fd8ab9b96b0c020c58c8d3bc87224983108317067c374278309f99b067f0c120165d2da2431abe1824185043e4f4b286418641e3577b138396b4977ef7a0fd375baa45110d3a189087050c7a183818f4317005920e06268d6546723014fb3f186130c66082c15422e7b4c1c460c3934cc10d6678f0fe1c83c56f760b182c65a68b2e619d085b8202f2e9b0312b0c387259e9061169da62b0c3208701692a9817ef143128e9530503f61a3fabd2a4377b872da94b9ac4508b6b32549a9a706824f7d419616831dcebed43670d0c0f181e41b8313c6378914ff2e6a3b43f14a83dbc6afa95c39bc0b9e15d20ebd037572b6ef8f0816180e113c3502675862f0cf96b84e107c318c4eb694e47bc936098629861c8ba9a18b6306c8bc743ca871d0cbbc2a1610f43c778fca98fa10b220e6239fa91c43e43963cc1708aa1a7770b73ab506f1395d0f2899e18ce44aadc1f7b949d63c86ba1e8723ec96d1647a2572ad79310a1ef63b8d6fe5a6cc3900ddb62b8a3a223b730cc892a1fe66516cebf1120098e18b2ef486209435653f1228d6115c31a86758cb41c27c95ea395a26318ee3052724ade0818598cf6181d303ad210caded5f4de47278cce185d30ba6274136d36ba9b64257920231fa307467ce68951881115cb5c473d8cdee6a3f53d27223e8a3022b2f2f5ab26e141fa56b7b99e57354d7acaea628cbeda5cc41a8f120e705922b84f31e29561d4c0a8291307a316466d8c3a18753162f90e467d8c5cea0645d53a1aa81cef0c311a6134c66822e87f34c5c833195f996134575448a305464b8c5618ad31e25b5bdd4879b122dd4964066bb493b9b8510ea33c46058c089863ad1e7f215107d94a655bb207a3124665119a51859dcbbed6d9d4a41f3caf8acda65f42268daa3235f94cc141c4e13faae9e0a2ee6bf365dd75937431d6b46fc6ee25d84c5bd7fb411ac97df14d3b140cbdef8aad22761a2b39c1700c355e626cc5f71eef313e10730b17fd0ec282f6f9d35125558c4fe6fc9194957b05e333c6178caf18df30be9b461e631fe307c601c64f8c4399f519bf307e631c69398b02187f74b369b22dc6b120a5f117b78288f83811f6749612e48f07e2118f538c338c1b1837316e61dcc6b88331dbd5c3d8215526e3037db5fbe86e2813f963176316c8e68c301e633cc1788ab187f10ce339c60b48eb5618af31dec8eccc9834ec3445629cc3989417302e0a581d97302e8b573eaea071d0d3df46c9185795eae98404b14975930311813ee465f8d31f7a8efed88389d6c94f861e55e1cd44e968a5fbebdfa41907e6fac7ce8ab0646224bbfdd3116f235698584cf6981c64b26b72c4e424191ace5c13c84d656b7f4cce985c30b90a489bdc4455d2256ae66432983a7372c7c4c784ee424ff255e8a84f023d7f61f2c42434cf0d26fcfec624d28d02261f4c624cbe7abac524c12495b99f498609110ac96852c10a8c9eb4306963d2c1a42b51be494fa293130793be785753d2ec8af44c06980c31196132c6846f4d652a7672d254e9130fa7bc0452097f5c0f93194d0526734c16982c853793d58f37bcb3c68444929e9d9e92b61c26794c0a12fa9c143129e935fbb6fc9b4b658d158179373abc348d7fd3716997a2834955446752430aaa35c9359dd431d5982a9d9d144df7d4b07f458008e4a696a2a35b32a189af1536903dd33d9521bfcb7c2b755d54309f9d903ea519b89a27a8064dbcc0f488e0a6e8a670fc4e4f86eee7f42ca95f533ad881846a9cdf0147c50ba65779256d0b4c9ade30bd4bfc89bd40f51d7b32ddde1c62ea2b8288e903f4f5a64f4c434c5f98be318d3065c931a6ac25315103d354503e07bbb3f12262e2baa23f3ecd306d88e29d3631a5fff435c943133b4cdb9876644a74da0587c5d4c1b48fa98be9c0443501ba4543e911ac3b1dea848d1a613ac67482e91453367986e91c53de5fca0a8329d55aaa5b2486bdb4916b5250334f4487c368bac3944de0f702a6454c4b989631ad605afdb1675a13d199d6293af0343c25ee8e676412cc03e1dd3ff67816de5eec817710dbe81de19d080444745c39c419de995a4e272f0108de91788f80508d77f02e1c653a994bf29b3dcae11b4f2356cabbca5caf771357cebb8bbfd60e40954df60c6602d3296104d05fd6eb8b37108c04c5790f7801bc27bc50a6e5bd17bcb79ee614a19d17c1fbc08be17de1f1a7145e2699ef5e035e135e8becd144254404141d42ea69a6a3b530c923191d785d351ea972c1dcef0858480f9e03af0fcf85374067a41b6578746629d392570c6f2439ec44ed9d0c1e9b3c85e7c19b69ea436f0e6f016f096f058f3db381b715de78ec8d1c3cbe5510d1f17895e0b158aaeb992272f6aaf06a9240ead531fb4b819f29016c3323a23303d963c29578499f2e6616b33d6e89beadc411a38a9b1d303bfe1870d29702f981d94978333bc1a721d526188a54d14ba0027c3f25f6353b63769144a727bbe3ad6f4bb57b6376456b2ce1dbd90db3bb4c00d2039df93ff67c4ca8c5b08579e2ba5f150fcc02cc9e9a52320b317b61f6c627875984d907b3587254665fcc12cc52492b986598b1b426662dccda987530eb2aba350fb69968ea46bd8a9943dee8c05759517274385c66fddf59301a3317b3016643cc469891fe09665370b0cf66926d3a9b63b6c08c1aac8fd94a6daa98b1f96cc816b39d38d4331296c78c5d5ac4ac24b1ea570fb3326615ccf870cd7c4b98d531d798cb7eafb2b489ec995bccf772e82cddccf901f323e67fcbafe66701d3e3ba7267a288886ae617e9bef955e6c15a7909cafd59a09e8bf90dbd8128b44b01f3fb9f5a930c373229914333e8fa487a66d89119eeb9af0f6fcc1f9807983f310f25d737a1731aca24eefa85f94bb373e76ff3ea621e61fe4154a4fed42d921b6ba1e18b7982798a798679437cef7913f316e66d39096ede91e3ede67cb727992a7307f33ee624728039ff1d613ec67c82391bec898f950d056e0d8ca691fbb147e23a9d96a471cf6798cf315f4856db7c89f90af335e61bccb7c29ef9ce24fc9ec39c4fb2e14555b9097ba8dce625cccb9893e02ae635cceb58682c6433402ca0a64745095e582cf6581cb0382adaf57caca77571b189a417272ccebfc567172cae82c517371385a0df39ff6d948c856f52fd8f3d0bfa5c27614fcc86fd6cf522f81f7b8871174fb12b54388bf08f3d12bf4b2adabd89db3f8f4d3052f1128b974c6c3b1789af2cdebad9c022827f157775f1c122c682fdfec22291bef636b282651e6939c3e52d898c92b737c522c5826de3bb4d2c5a68785810d10df5d0d57339a20b8b0e165d55aecb5ceaa22733630b479f5b58f4b170b160d5432c46588c55e54e84290182c5048ba9917c0412e9097b166cf51c8b0516bcc3fe5a63b1c18245edb0c86191c7a220b18345118b1216652c2a5854f1aa2b0230bedb75c5b15dd4d4742ff18e451d4b8da5c2d250cbc9d9734b6069b1dc6379c0f288e509cb339617dd7f48dee1f28ae50dcb3b963e960f2c032c9fda6eb1e48b7fc86df9c632c2f283652c86a7771410dc2a60f915e546f3f3a7dc9634a4467f2ef0ef3ae648b94bc2fb32550ecbca04232c7f41e2a82521d1495b139d3f562660e3df1ed5c8c1d7f452e98e2c9b5a0eff26602d6b21a88d654772889614828fc0330201ff263a6dd9c3d21133beec8be7b8744d7af52296c0560d7f0d1b6139c67222613ae2d1250bf164b1c77286251f5b60b9944480e54a92a72f1e966b2c373a2ecbf05a92ec1d963955842031c2f7651e4bb6ba886509cb3296152caba04bbfac63a5b152725af90a5859acf6581d64c282ae9bb39450f2ea28a3fe186175c2ea8cd505ab2b563739882f6961c5077cac1e5805583db10ab17aa91a05ae83d5db1cdf58f1c50f56313e3bc921700d6efcf7fb7fd8d37a0b7ba43b484a8255fabb3249c9f841035511e42671dfdb528c1099d47024a99a5de9de24183c2732b1262b4b949a0ee06da703a3f26bfd8e2563d4f625ac37bccaa42471da378f5503aba6d8f9151bd096c87487557774a32721db5517ab9eb6b2db9ab82984e62b1aea1b567dac5cac06a2165643d10cab91a894664fd3156f2cb11acbaa8fd504ab29561e563393b15be726e5930bac96fa5292e650210fb60210562b223149b95eadb1da48cee26a8bd50eab1c5624b2805511ab125665ac2a5855b1e22b75ed2f7e33463ba21e610fc9cc19ac65d722591abbb658efb13e4866c1fa88f509eb33d6171043af6f58f3791feb07d601d64fac4350cfafdf5847587ff4f023f91d51df64fe2fe6d6661ff1cd58394b99b9a2bb433c3d284b36d3fa8b77eb9fdfb34e28d1846d12a25fa758d3fc1ea888c4c9ffba02e4e2eb2f01712a6a8d9ae7b1fa630fd60d5c13c99a5c3739780d3da1754ba649d66d119a754702b7eb2ed9a3bf054d4cbceec9a47d9f443b266d097be2162138d6acd7c57a20c160c5e60db11efdae31d613ac29da23b50e75ff44b71c6b0feb99b0ca4fb09e4b40a5d1c67a81f55226c269abd62bac49db46ec10dbb5e62b3bac7358e7f5be8875016b7e96b02e635dc1ba8a750deb3a361a1b858d9100ca06823536169bbd90b7396073c4865fce627836176cae12d169b7b0b9c902eacd1d1b1f9b87f956b109b0791a2d87cb611362f3d223bef296e4d04d24f9b99b0fddaf9ff4b409727a22e3fd0dfa0d3907910eff8be05d49c2714f114fab0ff1cc827e283631365f1d0e555bfc7909254cc5a1a1e1c526c126a56613f650a88399ce3bda6b99a68feb5518efd266d624ca4b2bb2c94ce062d3c0a6890d1bd0c6a6c39bd874b1e9d19628a72f614aba231b476644367d618fcb56b9e6ca8e186033c4866d1b6333c1668a8d27ebcb3733443d13f454f5ab534752c637734dd767b3c066890de95febde55ce5da30bb561176f65d03c59d40e1bdec98b4edb14b0299a94bf96b02963c33b559db1841a3675fdb9e9fe4a0e36ad5c6475c656a3d3917dda293d745cb60a5b23abcab716db3db60761cff6882d21c0516ccff68ced05db2bb6376cefd8fad83eb00df4d0e1e8c2f6896d88edeb17fafb0beaf44712b21c2c4d56c7f68d4e8a6d84ed07db185b3a107b9dac25aa4d27719b60cb5f334db66d1bd836b16dfdaeb6ac56bc4dd5a626eb46da471df465cedf76cd83f575b0ed62dbc3d691d9916d1f5b4a5b871ea8fa90a081a4016d8722ac435fe6ea6511f2c9dc6ad88e3028c95c0839f45d49307b3bc676822d3bc5c376a68524f67e53d32bd82eb05d9a6f2c8b31b62b6cd77adc13f3bbdd506360bb95accaed4e5ca56d0edb3cb605c9d89af4386e4c34c4b6886d49169f6ecbd856c4e3d9562577774b32ead869ec944c10ef0c76d0b7810c44ff21b38bf4733b4decac4c2570d0508e5737ecf6182fd47826ecd9f13a6277c2ee8cdd05bb2b76375988b8bb63e7eb7184dd4338b40b7483e53ce91ae31669eac3de6f571055ea99c455b72f76a1cc850c0632014cc6ec5ea08332b9cb1cf3f4aa555ba26d3b1647f8fbd0afba79ad65b26b17134cebc14295869251fd630f765fed7bdaf04b22eb317a3176297619760d418d8e12198de7d83565a9cd8ecd6e4bf6616c94f81325ec3a120579dc4407eebab218330bb1eb61e760d75753b6d3150eed06d80d79099f7623c960de51d13d4d5cd143164b46aeb19b62c72767d8cd1575fd6e81dd12bb1576fc69a3b38979176856cdf7204b7faeac9a35eeb0cb8966dbe5b12b6057c4ae84b6d512f7acca2288b847dea8989e1cbd6c165516ebd82b6357c1ae2a51831de58c24d591d3c82950b07240ce22b747ee80dc11b913726749a7ce5d90bbead445ee86dc9da22f81255ae526dffab33d728a5f05b9874986b410aaa8c4f89331393a16378948524a724f618ff3402e94d99dde5392379c48b4f0c6c84c8f1c67ac6426fb9dfc1ff61c244f31f79259ce1c1da0979cb048f650cb8d6a925c908b90fb20472a253954d1ebca25c8a5c865c83590393245d6e84ab651bb801cc96821d746ae63f44438445f32d783c48c177aca57fac8b982b6731cc5a19e3926c9f498850f911b213796f4be1c299922e72137436e2e1933b905866be496b27c2eb7428edf3732d393db22c75f73c8e5b57ba2c696f3f1087cfa4be40ac29b907671c0c14dbb2053d1b9227225e4cac85544ade5aac8d5247a9dab23af9157f0f3c81bd944236f91df237f90d841fe88fc09f933f217e4afc8dff0ae227f476785bcffb7fc8aaf3d900f64262d71548f6ae72e2b49f24f0e6ae4431d13a80c917f498aa173d684b66dfceebc25ecffaa892349b3f4f1f5fb63ae0ffddb69519246e9798d5cb1ff94597637c5221fe96957d3ab2736cbf38a91ff222f7e9540f93e694d4d8e9c68d0c8239f89efe5750413e71be6d343be296b9a2767094ce55b7f02a46707e4496747bc877cf71f7ba4cd3dfd8ac502c911c16cad837c1f79d770c0e507b24035cf268c901fa3c31e9ce802fb618a3ceb9a213f477e81fc5272b5dbd6ec7f39c6e38f8ef3fa2007a722bf92fcc59243bb00c29ffc468da7924b9da7d9b90860cbd8b49db80df91cf22c999c28224fb2cbc857347de13cd95043be8e8296f55605858291ed4f0a56790d1408fc067f49bc54c137313644328d8a20dac2412c677b8ad751b58b920b5038aa574d8577144e289c75bd84ebe3e7977d50b8c8bc033954f750b86a59243ec4602413d5f48d0a3714ee927c5bf07fd743ef131402149e288472bdaf9462145eb2ebdf672cd9fbf458694edd8ec493e80315deb2f2a610e9a6567145f205bb3514586f2cda83babef0458165a628642834a8df08e1a4d8421385160a6d143a28b0513d141c3523e6dc8ae016fa28b8280c2457bb30446184c25882028509c6a18ef8fc14855fb6576186c25c804f6181c2d27cd8832be3975058cb41bb850d0a5b33635d3b71420b3990cd85020a4514f84c19850a0aec7dd25c475183cac9e3a74173221bd1142d8a7b140f281e513c4968ae7846f10236b9f8b778317251bca3e8a3f840a7acb331da39c9a12d06283e510c517c996ba0ee2cee8d6284e207c518c5af0448864d3a31f2cad76a1ad26e4b4f36c2a1622240bc57974ce0c20345faff8938a1f3168a99f089a6e59e1341a148151b92b15f6c8ad7fd2ea0c867688a7e00b2d8d1ad2aa2485f266a7afbc1cbad1aafcc2745b1abc76d614fb187a2832209664306280e65117a7184e258a6ba93268a7c668aa287e20cc5b94eb63a6c4a44bc73403857d4968fa2e449cfbe78b6515ca0b844ef8ce7811223f0cc86784c749c987a531f26c29ee24a472c708de20645762875208d6545945b9155e7512cd0aea8c912c5a25a9236de2fa35841b18a620dc53a4a1a25d9a75bf6092a5994f6281d34bdaed211a593a42a527a4abf23cd51baa07445e986d21d259ffd228b05d387ccaaba0d34623d3c6b81aa3d941e2805283dd571a7e29deebe500a517a819e5349d67ee8c4d746e95741d696266f01ca733e1349de1aafd207a5582e0ad33d8fd257669f82314a094aa9ac83296554b8929a7c9f4bc4efbbf94df4ad444c4b0d99141f6e447a763d392f852da3f92d35c5012ab5506a8b662b7550e2674fd85372447396fa28b9280dd099a3c427797f8c6601a589647494a692ba5ef2509a09782bcd355d887355270f1a1b246f1a66ea67fdd6a2fcc39dca0a7fec41e937b94c73525a0a2ee81f24e99096a3c49fd6f85e88ec51627793f21d4a3994f8242b651525b5f6157dd2e4805219a50a4a55946a28d585f8b24659a16c646fa7b2fdb1a7bcc77c218bf9cb07948f9279553ec97c6aa32f332b9b86c9fada3dcbc2b6f219e58b6ce9757b993e1fbba27c9360c65da36b243996ec3985bf1581450c38064b28df65696bd9e76592a5a8e3f95bd61a145e8a7ef2372f6912e507ca814086f253e029ad22319b775732a749296c52a7a11c8a8a5fc628bf507e0bb62e47287f64b22b58a2ccfb5f94138417d91da07d15a55a4e05769633f1ccce1b941b129898de05cb5c46b23038f7fdcdfe91b6a6e446955b28b7c91b943bea52158053eea2dc93dc23778db283ae43474772b29b6f5eaa9943b92fd90a65573693f036623cca03041b09779687288f501ea33c4199d47a28cf509ea3bc4099afac10ec4cb129cb19cb2c9ce46d51dea19c13b0b372251fa69cff634f01e5a2c87899bd5916a55fae482822cb49b8a54c726b28d7659382af41456bdf97115451baab5131b281179954b1a8ec5139a07244f2d0b1a30f312a27addea8fc961df1938a629a62ba926515952b2a37747aa8dc653a75adb13a6a3f14c7b3e2a342314d5109302808ccab3c0d81692544e585ca9bd81a157a6633f146b74bc927cd727a5945e5239b023cde02e2a717245f89dcbcaa8a50b31213fb193a3d952f2a09c10e2a2c3fc3e4814a4362f095a6e42324be2488cbda0a97e05356cd3563591e5c69a1d246a5839450cd41a5cb4bd16c70c0557af08c6c2c5171c4af22500eb6a890421715163b446584ca1895092a53543c5466a8ccf11a8b7396b213481b0b59a1b246858e30d57b9e6658c66ea9f7634f85c5ed50c9a96425715f0a29d9334a65955325ff4bbfa77d9ecb8a0bd3d7eb4455db926753294882c07af01f7b8aaacecf92599450296bc38a2ba8b0cb6aa8d451d5e29438099603499ccc5eb2aea5314555c1399b4f135503e764ee46b66aa368efcf9a9666b614a82de767dd51b592885cdda37a40f5289b03564f7448513d137ae8560bcda5d927027d64638dabe8d5ea05d52bd61b9963245fab3754efa61b4ba8301fa2eaa3ca4202bd00aa4fc98c14d18ff4f6a6f38e0926d2d8494b5b572237553effd2bd0da547d2c1fa0b54df12428cda323f52958d70b0a1f2d8abe5408fdf9ac88dfe7ff5a3879e8936a07f435d574d8437d514d58cbc91055938a3da4095ad6881bd5aa5c33046b50bda91aa836affc79e2b7f76511da0fa4bf3a98e501d8be8542778be15d53a21c0d345f7a193409b1daa53f3d949124fccb23cc97baace141dc3ea5c345e95a4ff92cdab2b615b758d2ae9dba2ca177362f9ab79540b62ae5c2dd1e86a11d5927266bc502da35a41b58a6a0dd53a6a1a35451114e54987f416ca3462cdc8567b358bda5e40c16a84da01b5a3047ae95a7502c11a8d19a8b26a27d4cea85d50bba27643ed8e9affcb1dd726faad214d22738e507b180e97ea1bb5800a5c15f7eab8d197ddffd8930e507bfeae10b5977c3a8144df89bebe5662925980da5b7762d458da07b5588f9f123dab7d514b504b51e3f7066a4dd45aa8b551eb88b6df9fc4767a15d4baa8f594eba2e6a0d6478d5f58e310b5bfe557b5b18a67ba13619098f3550f6ba84d642cd4a626f36512a5e6a136438d7716920a535ba2b6426dad9715d1846d6a4957b7db12f36e37b4658f6c50e35b3bb8122d177cb5380b7b6a39f3652fe4512ba05694a9bf193bba845a19355259458d55d765d6bdae259e466fa6ae7e39b156145add80b88078ba6e254d890e47fd80ddc85cf79226d09ac82aa7fa11f5131a99e49b2d6aa89f51bf483e50618bfa1594effa1d751fb3beec0f557f8807560f507fca0aac4953df7c1d4ee4f2c91e8d7a48e5a693896e37507f19baa2644fb656b7affe1cd1afa84760523ab02fe9a8fa1bf508f50feab1f0a0fed5239690a09ea2ce5a1abacf8a9aa8b7506f8bbb4adb59270d5dd449361df0aeace17aed50674b5dd407a80f7feca98f501fa33e415db2e240f7a53e9390dce489fa1cf505ea4bd457a8af51dfa0ce76ee6471453d873afbb120a94f496c12719e55e6a96a5f821c9d4c6d4a7a7c1069a5725bdec40692a67a51c2d51b07f49cea65597353afa05e459d5d59b75a5badf4f86ab5b11a1246db0cc448527f6e27565babf7084f561fac261bf6569f44863e4f61e1cab5fa2c4cadb29c8bd52ce4266b2e9c8d09962ae7587db7dab79a8e578a56d54ab2ef5312071d657568f5cb129ff97c26d2e6a45f4b614feba5e31cdd4fda544b48473ef5177ab09230419f43d3339f2dfd09dc52abe958245693133355ab589d09271252d8d03d96dc140c3dde58ddb2ba6d75c7eaaed53dab4955df6a524e95c88787568fac1e5b3dd169ceeaa9b0c76acfea99d573ab17562fad5e61c2a1c4cad656b34452b0b39a4fe7ad2e585db4ba64e55c3912c146d6549d6dae5ba555c5aa6a53e2aa8ba9693e656036bbe26c7e1bc29b5a4e66d2d62d737e5b258932b2aaa6a2ac32564175675659abf6561dac3aea71cbaa935567ab2ed8b1dcab40b542aca6bc79b3ea6e956f697e266bab02ab9ebcb0ab59156233b1ea6515ab8844254e5a047e567d78c9ae63fe0eab44d60ca58f5fcaee55a0e3ae6b556c15fb978f252240343fb7292128ad9155a9ca0d644d7961254c521911816420f7372abf32df950997e6fd5b20f7c8cb761df42b9f213182550d89947ba122f4ef934e92c146b5adea58c51a7b563956f50d7b5eb9263d9aefd1aa815543ab46568dad6243fed8a33cab66da257173ab16bf54929c8ed8114bb56397adac5aebd6d2aa8d555bcb5b2a6755deca6904a4b46455d9fe38a35b3511f9b18b554fa6c3bfc7df8a56565f93f52e9616c8c328611f692764132545b4a2547342ac648d32fbd66fdd23acb1d6ecad395889a80ead39897c0c2291a18dab87ecfd9bd967d851c79dadb95873b5e666cddd1adf9a87358195ece99338642d996044bf814e6a245f97ce3c8b95bd879053b290888e57b7648e6d6bdeb27b4bf36b4d24b1abc3406614db91c4728abcf92187ac89ffd823eaa15fc535c5656acd178d0916814e27ffd6badcded624c8cdad49e9636a0ea34195ead89a06266c5d53f2842a057dfa526d58d392337d1bca1a7ac4ec8a8e488fe95ad3b3e697026fe5b06fd79a8195a3854756ce8ce573acd8934d4fbefc3eb3720cdec2cae9642b9578d6ac71648f6cac1cc8b353d38f3539b207dbb7f9d4f4dfc2d76022f182025b95c78204dd4c7aa654fdf2ffba9892dc82488f1c3c50b2b2a77dc5ca06ea356bea223ad062b1d6430bf5535f172bdb21c3b281dfb7fded570b97a6f960655bd493b047b6dae463572bdb12f25f5f39ae79e72d086a5656360d7b4a20a3fb4313bdf0e729772d4299bc18942509e94180f89220dbe3299b5f8f061280bf2cf5694b0cf07327ba92c29f443abbc8f28d8b27a9198d3d0aac37426767654397d80a66482c522cf985388d371b164d8bd62fb3fc67c36a2fe5f55546f2da56162392929e95753d639d6743686fdd1f7b44ced90b232b79b4f441a65672da6656727b16164b64ec8b951ef4759defac2d36caf001524c6a725602b0058ba2aa3684628708ad20e8b914d10fb5f4eddb0bc42309fcacba589282325d245984ed2cf581745745c0058ad5ad9817c582b57aa138a01011379befc79227fceb1f2568dfcd993490051b4dc7da3de5c9da83b5472bf381176bcfd6d2f01842066baf124576954405fba1b5378986fc161a529429d3d6de6522397f3249d344656b7d6b1fa6714473abbf1ad98432666da0a33e5d3de1907d0a3a70a9d3ee32817d99fd9bc9e5d5c99bb4692d6b79994f5f4cdad641ab60ed5b76d118b1ae48b687fcfc058aceb20b21af0bd156a0fb39d6822189674b636bbfd626d6a6d6663ff6d886b52cba656ddbda8eb55d6b7bd6b2f17d6bd97876d3d0da91dab3b2b19e04d64eac9d5aeb593b93a5b09fba79f0e65c1666388668cdda85b574b52e32fb528aac5d615896dd26a961124796e3c6a976f8cadab29b2c9bbdc3686e2da9cc5bcb5a8a3fde94f49776eb63ce77b246790dc136b9a2b565590bd8e5978a6c1c10b147aad6d6f430c478666dddeeb5208bbd42ae6bf764b0a74f65b9a63ece4a3077b720bb5defc9dcbde4603c5e767f40e4d8fdd112ec96fa767f96857f1c6add97a4b55ce67a2becd171d3ee2f86167a4f2fa268f7372cd7767fff7dfa76ffb0fbc0ee69087be2360cabb47cda7d7138aacad5ee43bb7ffdf610ec0828c93b7a5732c1423d8eda394b1869aaedfe6df791dd7fec3eb6fbaf0a7e2151bb4fec3eb5fbccee1b764f0a5a76dfb6fb0eae25bb670b7b764fd249b46bf703bb1fdafdc8eec7cae13313c4812e4ded9e9767f73399315bd0ffa8d9fddceed98ca59c00f0e65b2b49e25df0e65adb272f520c6f6cf71be54eec7e6bf73bbbcfd97dde721048e7b2f125944849d9ee2bc414ffd8d34831b9d87df577d5d0e98999ddd7ed41db83c2b4600fc61e40e113893aec89154deadb03ed4d5e626292e233b087a33d9c1077ede18ce2d01e2e941e7bb8dac3cd1eeef6c0e7d9d1677b08240dff33954d03e348a4e7f0a42ed2d995d602fdcc1e427b60456f7eaaf6c81e224b657088ede16b0f893da4926bdfaf4a8e7c3a30012d4224f91721f42eafdbac852534f48404b0f6963db4eda1630fa4aa670f74f2f8efcf2db507d71e48349f631d637b98d8c3d41e3cf8bc33b387b93d2cec61690f2b750eec616d0f1b7b20ad3b7bc8d943de1ed829451549ee3ce6473da5713bb37ff5978f957e1dc4bacbe80d5160032ab892b22a21b8eeb3909a79b3d23af5a83d6a7b54f668640b77eaaae39e6eac31a1ecd6502fdae3413214765d54eea6fd9609ba9b2f119aad6b8f47096087077b3c19f3b247fa58357bbc886f4b1577bccafa8dd54026eb7663164bb3247728dcd46cb43dc71b9d597bbcdba36f8f0f7c86f61848be47729179c8c25c34529c53bb582524e3698f2106ae880ec7e25a4be8a43a4391888994b0f6b73d46f6f82134d56d83c1ca1e6339ae216b49be5fe2e9795b3dd8ccaf3d26f698fe36864ced31b3c7863d36edb16589538e1d7b2461bfa08e3d3af6d8b747963eb04712c726b119137b9cdaa3678f337b9cabe06a8f0b7b5cda23eb5bdbe3c61eb7cabdd9e3ce1e73aa288b49ed312fe95ece571204f3679913ab9fec911e289f2962c6174bb2b34e89506a24e9afaea7a6177b2ca30c3dbd0adc3a56ecb18a1569905090a476f4aa32d88f757ba21f9217047c52e874edc9f04277408b2371ee77decc32b59c584284e3cbc8bc4a644f7b7b3ad8d3d19e4ef674b627326c6b4f577bbad9d39d6a8d3a4db7327bf2653b95ca59bc25d9e97f237929dd0d82c09e1e982a7be297a73d8544d2f4e7ece985659f23c39ede44a7749eec2942b76c4f1f545969ac330f53e8dece9ebee6ceda13e5b9b25189e1f754055d9d6fd953a69f257b6ad853d39ef86fdb9e3af6c476f5ecc9b1a7be3db9f6f49b8eb3a7a13d8dec696cee7c9a2d9cda9367e8e29c66f644c036d41e495cd8d3d29e56f6b4b6a78db9e5855594f71389c8494a742db427618fa1af9cb240be5e140b7c2a49bc475268d9800ae1cadffa457baacae85301bd4e7baad953dd9eb5f895f461bf5bc48eb84ac5a664c7f721abb7967d7b56f66cec19f434655a617a10ed31d90b1a38ef312e995cc19e0f3287449545f93b1fedf964cf677bbe98cfcd9eaf7ae6d833bfdcedd9d7e9c09e1f7a60cc595c663d33269999acf3dbb086c404e6fcb1e7a73d87f6fcb2e7b75e56ec39b2e7cf5fcaaa3dc7f6fc4553ab29494ae8d1db73fa7b25b3e7863d3765aba1575579ac850fb7c91bfd79fc2e5f3d0e9a9c3877b43083cff37bcf9e491bdbe8daf3404573ddffeacafdc79ef3d09e47f63cb6e7893db31acf9e67f63cb7e7853d2fc5033dafec796dcf1b7bdedaf3ce9e73aaf4b5e7bc3db33b8ac667834bf6ccc72a7fecc1faa9bfebffd803319e552328e058540ecbacda73cd9eebbf05cd67e1cd45db8b927c4fc1691236a59f8490b091634a4bd09ace7fe509c2dc664be078a7692fd48145023fc908ef9664ae6ff6b517603914b34731b8ecede5602f477b39e97157a77d3d6cdbcbd95e2ef67215d9badcece5ae7ba1bdf87accef0f7b09ec850e56917eabbdd0c36dd2d9b49797eedd5436518fa7bdbc314f7544c72b46d6b31716f2418b55c498f9f64202127b49e17764b79336ec2593e313971b6df6c29eca581d68773b7a3e96ab18e8f6f3b7fd6ddd5e1af6c246b5ec854476eca56b2f2cffcfefb9f4edc5b59781bd0ced65642f63cc7967622f533824d4b39799bdb0cd0b7b59dacbca5ed6f6b2b197adbdecf4eb6d2f39b2073532af622f6c0f5f29da4b898095c049940f810df5f2a50c22ac0b9fa94ab6261144ff2c4b7cd7537ba9c9b52fa3969309d3015faf5bf6210729b5d9d9c8ee75d4e3d3a12c779243070affd25a27352c1ea0f127338537bebd2a7b3572e8089d9fe555e6f03f7d7bdddbebc15e8ff67ab2d7b376f3f67ab1d7abbddeecf58e59c55e7d810cf41fdd8f3ec83e246af73277fefab0d700d1c1642cf969afa1ac26ab97b0d9daebcb5e654d8bbd46f6fa51ee46b233866b1dbaa00b41d17947749eec35b6d7afbd26f69a9237721dd7bc8449efaf5e7f789143f69ad96bc35e9bf6dab2d7b6bd7640d1bf767fecb9f6ecd5b15736c3b5d781bd0e55af6cafac786caf137b9ddaab67af336ccff63ab7d705bfe8d25ae5f9ebd25e57c29eeb9a1d67af1b946fe6c31749fdee0758c99e92084a97b6e4ada7ec26a28923f18230838cb9e645a71dcfb2d159b129a9d219d127fba2e0454a820bd7a2bd9664853b1d15eaf436db50267bcc732f53e93ff6d86b45265e57a4bc6aaf357baddb9bb63785f6cdde8c1c0e73a3cfb3b7b783bd1deded646f677bbbd8dbd5def8c0ddb2badbc3de02998668c876edf6f6b4b750f61d786c4ce0d8db0bd5a1bdbdc50eddc42195f5a48325bfcb16331396ffb1370ad051b7f9c05736804ceee6d8d4045cb744b7c37fec396e78d99b7c11f6fc5d64d2ae646f99bd357425b5b7a6bdb52c61dbad636f7fecb9f5ec8d44f4edcdb53796485246f6363697b2bd4dec6d6a6f9ebdcdec6d6e6f0b7b23592b7b5bdb1b6bdadadbcede72080bec2c7bcb633bd1ff8faef75a561d56ba461f46f72a72b8c4989c73b89386c8608331f1e9ffd166aebdf777aa4e958a627a1aa5a14e52abbbcf7a3338656dfea2681ded727254938f6497e994b38d829844454e1f2bcfcb3910ad6e0253f9cace423e107dec30d28d8c7e4f7593d354906b1e121c622ef08c1bba7e13b7bf82227f93d3f426fb50947b8754d24e259ccaa02a7456381b49d94393e9ec70de8022fabcc3798ff301e723ce277de4bfce385f700e700e71be4aecff5a64ab7b81e77c93b854e100e7c83ea91ff19dbbdccb5c78a4630e56bf63d59cd15a9068a73d9d383975cdbb2351aefc07450eb131e1506df338c7f6befd9d53a86243612ee53c62d15c40e787f63ef6c80e3c717ed96616e737ce1f9cbf3827a15e71f670aee2ece35cc3b98e7303e726ce2d9ca9708f70ee083ce72ece3d9cfb38b3c7439cf9648cf344e0394f8d178a967c9ed93bff9ce34cf0b2549f249a49b722670ddda389afb209366f0bb99c9776c5595bd94724b11c6b33d997d49c82b5eca5b623b90e381dda0e75b33ae50d753a9c537292edbfc55c2f64704e532f10a5e335570b0937a8871c059f67f59018e470e6bc14702ee25cc2b98c8b047bc3c5488ea50b7071b86c70d9e2b2c3658fcb0197232e2773df88db572f6bc2b938d4e7cfb89cc53da3f3c1e562232ae579b9e9f7fc4af08c624bf55762c09d52fa99d5cfb4fde4559c4fc243b769e28ce2142d50928e847e9e793feaf9c1a30b4b165c025c42b5da494e8e5e17972b2e375c225ceeb8c4b82441fa7179e2f2c2e58d0b3bf1c5a5828b279474a9e2e2e352c3a58e4b0397262e2d5cf8bc039a4484e7d2c3a58fcbc0f6f654a57019aaee44e0b98c70e17f27d4aa7199ca326fad46f158b6580a540ab42d5274958cfb92bc088cb9cd094972c7f32d67c3b9bb04f84935e4364bff254776b5bac455a9a5ff7ce1873b6ae4a2945f66e29e4080971c1bdb5d48e1921e719c1cfc0a97352e295cd2b8b027595c72b8e47129e052c4a5844b198106ad10497fd04060c5b32efd950007bd8cfd36110081b3cb89d843a9480e46a9fb051b5b9cea98d6f441e28d7d3a36cfdfd2f672087608f612da37a42ed0d485815e9d880d8283c093c81e616eff038f0e270868543cb44fa33044704270467041102008137828c1821b282a823b82d856f8fd81e089e085e08de083e08ba082c04350b59339021f414d787a5047d0500f899844c98f805d6f512746d046d011736fd942d0954d2a4aa6a0671eacad8f6060d559b69c1b79db1aca5ec37d8f60886024e1f6165ee25cf04acad9de5722b1683cb5ace297608c80e3992298e96ea4c75bd92d2d7252d8ab0582258215356c046b0429046904197de7f32c023e640f0b088a084a08ca08354285d048b632ae7171112dd35c85835cd8dbeec49d287d42b841b8b5a53bc29dec79cfe786ecabd742b857a98e6ea5f465398a7deddf47f152c76da57c8407d9b3a10e5de8ebc57324b1babffc22fc8d6573d3b7018986458733d0a00cd9ca597f43ddde23a4448811d23a3e23fcc1135e11de104608d909feef81f089f085f08df083f08bb02208851ec22a42365f435847d85093bceeeda017f645e383036e226cd95c51e021fb5fd05c28994b5a0c9d1517694f269a1a95cb8bbbdebc251e04645fedb6b85e3603e5af610b42462baa79653246846dd88bec6ca63fe2529238eb421d64b76652fe2b8305c20ec22ea844894f96677d0e6780708870a4bd25c231b842c329642ee608f93e1fae10ae11a610a6116610660df53dd20a5b79702a7208f3c666749f7354903bc6093c088bb6b3300fabe311c212c2b22aef58f469a077771d77d529c6550b003f1367f1d4691f57a52f27d9744ae0d1a5f00f9eabc1d52a7b0059f7d5e1ba21d8c65474778bebd6fa912927a15e71dde1bac795ef1d713de17ac6f5826b802babb8e27ac335c2f54e1d41a7f9027bf0d0e30eae4f5c5fb8be71fdc8467d718ceb574ec9ae153bbf2701d9bab2b3ebad8515f89e8430a83fa04e365597553f6f8afed394fd5afbbe483e97f7448243559f724371fc3b5ae5827d88a1baece1eae15a95ad52da344e993babdaca791d0daa2ba7a0866b5df73d514cae0d5c9bb8b6706debadc5955dede2ca1afab80e701de23ac295bd9de03ac57586eb1cd705ae4b5c57b2f7e338156b3bf1ed8d1392b2697ea669fae09a11788a77734fb6474d4ff8180d8c6b96855fc44fc1eef59dade7f4c137e1941628ae795c0b82d07b24a77c861da37af9c1b5a4f95c9371b3b9326e5a7cd3f44292dadc6a044922e95ef2093c37859b8164570c6547fce670dbe0b6c56d87db5e992ed8d1db11b7136e67dc2eb805aadbc48d2f5f71bb9970611b65437de916416f65b36b7ea7216227c9e6eeed4e84708b6d913f7fd8d508b727a8cfd0fa693de49cb814ca1acc35c4b2e97aa23eccc2c4a767201b2db7976cc3dcdefac54a3e6269debeb85570f370abe2e68b23d2cae256c3ad6efb23934ae3d6c08ddd6be1d6c6ad831bfbdfc3ad0faed9db103776608cdb0437f66d86db1c12f9956f2e715b9121e39660d36373294b83f1c60a33943d26284afea85c43a5baa39806ff9a78e8d2557c7abc0f6e04a9845b0eb73c6e05dc8a7ac5c9e1933222ad175f955ec83dce9fbe40b114cd088f20142944465134846581c774242dc5ad21a1f0be3fe616594400d5926883688b6887688fe880e888e884e88ce8822800c18bae36d3407453e4815104daa4516ce7fc42c53f87e889e885883afe4ab6eee77563de883eca1b21fa22aa20f26c7f8aa88ac8b7752bc750514d8f2ae61e488c80534081845d59ee1a34dff24931764ccb0dc55c09515d0ae1891a7258173555bbabbaacb985a88da883a8abfa63097e9f2f9898adf410f5110d100d11f1b531a209223e9f219a235a205a225a215a234a214a23ca20ca22e228f2c6bd759fc2b993b4cb192c9af75cd39c884a9a463ac5b8e1cb65dcb508ff1062d9dc95c87f72d1bb91749b77dab81bdc1deefcdce2bed3cf9778d0fd82478743232b2cab6f5ac73d7245fd143f21f1e412601a8210ad8b4d72fd0a94ccf703ee47dc4fb89f71bfe01ee01ecaf1e8fd8a3bdb8e70bfe31e832ce5fec4fd85fb1bf70fee5fdc2bb87b307ca18abbff07cfbd66cf13b109764bf30ad594d5d6cd9ed536706f42b1c296b9d174f8a8d35d5f285dd80ad7ef0356e3de11d58ea4f3d9890a4eeab927f0dc7bb8f785860e5b616bf7813889ad394743185a1e4294b20dd11bca7dfc5e06f791ec68dcc7b873ca389019ee73504db82f715f8106c03d857b1a77be99c53d877b1ef702ee45dc4bb211f7f668180823bd976d7ff183c74e27326bd99326c0b1a620016d676c847dc5467b9c0d2d42254e8e0cd639bd39220662beb641bcd5ed1de29d8ab3f63bfa21a4a95bc67b6dd2fad4d7bbc72fbf816eacc5b19beb203e24f0c4ace584f88cf8823840cc06ae886f8823c477c431e207e227e217e237e20fe22fe28aee0f117b88ab887d6aa2ff81477c9d839b7d0ee4e48d0c3aaec911485c47dc40dc44dc424c73aa2c2725714773b5c65dc43dfe695345c47d5061bdbd1297ab8aec58cf4ec2dc62b6c5ee8ee50242ba266704a912c1d0c39a5c6494e0909ca0096d12c4539b6a5077301c67d5b354a9e31962cee602f11231a7638d388598cf3388b388d981bcfaf087aca1a8f27c58c2815351c643e3b093eb28992c1e4aa8e761fee0211f7b5811218427dd1412b995e5cb036266de5ffa92d2aba3be0d35ed2a2adc8f0d1e5b1da4f4a04678f0e0c3bdf8d11d96fc54714e0ece37678928192a5dcbcbb92a5a6aff530d1e073c8e789c40658ed2ec11e011e2710575984784c71d8f98363a1e0f3c9e78bc40fdf8f1c1e38b47050f1afc3d9bba9b978747150f1f8f5a724564431d148fbac2008f061eec7a4b76c31e6d4d7be5d1c1a38b474fcd2678f4f11898c657fca71e84a14f7d4c7c7a5a233c46a21aac6678509257f590cdf1fda91de5d990e8d35414572e896dc77e926bbdf483d33a97f36cc95bc2874b3c5678acf148e191c6238307672787076b28e05114cc1e9ceb329e1a4f85a71157b2da1d4f2b775adcc772553d21db6e41d1b09ea7d3cf9b78f3e472786ef0dce2b9d354d536373cf7781e24d517e7f056921dcf4d4b32e63d5f781e255221d2fa7d16ea390df03c0942a59b9478ac3da37703d9ac6b46789ed5f0a25b336af0093ccf0b9e019e219e573cd90cdf60ff623c1f783e21b5bfaddfc1f383e717cf0a9e1e9e553c7d3c6b78d6415ec9f1eca931cfe4a6002d8665cdb6f85a13cf96c9f29d369efc7917cf1e9e7d3cd9b9219e233cc7468f6db180e704cfa9c0f39c89e45767d9cc5e0d449528183ce7782ef05ce2b9c2931394c2338d6706cf2c9e9ca33c9eaca1886709cf325ec9991eb5556df1a255fb318722c8f65f568ef06900d044232aaf2d5ebbe4cf3d5e07bc8e789df03a9be3ddce3dbc2e121feae844097c057885785d25a153b68fd70dafc87c733a9a2ad552a7db5f49363a65439ab64e6140f96ff725bcee78c5724b105aceb0fdb7b80145d93f4703f1359852eeeac2544a4c61d3b3e948828247791db263bf5d83d713af175e6fbc3e787df1aa80a4f0aae2e5e355c3ab8e177bd9c4ab8557dbbe337875f0eae2d5c38bdd1de035c46b64e28c1c8fbec6784decbdaa0a16bb025e53bc6678cde564ecb5b0257e2e05add7ca86531663f3a03879a5f04adb89d5fdafc402e06f2f3343ea7c6504b95716af1c5e7c931572664b7ab8d7e4c0af32de1a6f85b7916cd76fe0edf0dee0bd1578de3bdbcfe0bdc79bdf8f789ff03ee37dc13b1048de21de57bc6f784778dff18ef17ee0fdc4fb257e31ecc3046238578b78bf21b905da9a64f7fe8a47dfbb227e3c335ff69be127a9a2f8cebf3d1b5a3685212903ef2a8b4a8df0f6f1aee15dc7bbc122628676124930298407ef26de2d21a33bc5017bd5d61ce6bb8377e2258a770fefbe258b33b4f9d9ef01de43bc59ef18ef89ec72bfa778cfcc670649b5c01716782f55f3ab3b1ccf4a791ce41aef14de69b95d359784192aabec82ffe504656d9e23e7fc2e8435516d7be7f12ee0cd1e94549318af8911e1d163ce72191f8d8fb2930d280fa4587159f9387cf8640bea0b9f3d3e07d068a5a0fa9c92cf333e177c027c427caef8dcf089c467f85ea2d28fcf1d9f189f073e4f7c5ef8bc85683e1f7cbef854f0f1f0a9e2e3e353c3a78e4f039fa6b8cf7d5af8c82d0e326a55ca89a7e7a72327409f96a9c7fa1ecb3526c989f7d0f5ddafa86243bc7f272f711d398cf5f7cc4f7cbaf8f4f06127bbfa5b95e2bdff10fa5744474893b638b4013e437c46f8f087137c7ef1dcceeceb0c9f393e1ccc129f153e6b7c52f8a49392c1272b07749f1c3e793be367019f223e257ccaf86abb3d2ba2a867721fa8ea0cb9d657d94ec79296bf065f2b44f385cdb6c57f93b3ffe59f1b01e6bb35df3abe3b7ca983396c8bf81ef03de27bc2f76cc873be177c037c437caff8def08df0bdd3b2ffe76e18087fb37c3fc6f781ef13df17be6f1a40e22e3aebe2fbc1f78b6f055f0fdfaae0f1f5f1ad818dcaf706be4d7c5bf8b6f1ede0cbf7d9a53ebe0355e612e1c3a18433e49af88ed474a396295be5c331be137b6c245a725d369e8b8d5fa1a6a06755b9c111e7696b4bced6cd457b16df29be33014c50f93fc0c89f647dd2c939be0b7c97f8aef05de39bc2378d6f26a19e6f5637ee36cdbf73f8e62523f0803352902450cf33be454b16f72de15b4645a3a25031824dc58a0356c5a1b241658bca0e95bd605339a072b4f90f2a2754cea2055438cbb29b63177d540290fe2a57d5ec8af354e5c6efb637169dbb12a172b7fd89781e57e2a43c92f244e585ca1b958f1df2275f3b1c0b4238d8fc1a950a2a9e7048c25ca926eea5659bf350f16d366353ec610d953a2aac9fd5b65069a3c22e7551e9a1c2fe0c5019a2c26e8f5199e8da4cf56fe2a8d51f0b3cc50aabd2ee65696356a636c36a679264afaae586f389adcf6593e6af5cf5baa80f0b01066dd1f1a81c57167672d597252a4b1d15a490aa2875a8b6192dacafb24285f5a45049a39241258b4a0e953c2a055492707ba870aecb76119b7705bb0b3cad69877b4ab215dceea05211efd5680f2e0435118738cfc1dbc0dbc2dbc1e3f303bc23bc13bcb33d7ee15dcc6329d1fa666d7801bc10de156480143f95488cfc69195e048f35c7e27ceb3de03d45edf65ee2833865d36fd00ea719e155e079f0aaf07c7835789ce58f21a7f51a327d5e53fc4668e77a2d786cab03af8b1b95fb965d1e75974f7af0faf006f086a0694c783cfe8a43e04f66f0e6f016f096f056f0d6f052f0d2f032f6ce86b2f072f0f23478652fdc71b00509cdb0a84bd0d925f5e689e4c4f15fb205405492225b3bab0ba53dbca25cd76e861233e43dd59ea73b6ca8241a1a8b640c38ff1f78bc32aa1a5585aa41d58abf61d5a1ba41759bc053dde94f5b7fbae2bc52dda37a40f588ea09d5b36c9d79d68ec8cd3b7af0d6ebb96cd4572fa806a886a85e51bda11aa17a570b36108baf6cf521096cf27ce189ea0bd537aa1f39f9a74a46de55fd8a855fada0eaa15a45d547b5f6074f40ba3e083cd53aaa0d549ba8b6407e22853fe9a2da43b52f205507422b55aefa50ce8daaa3ff034f95b438c09ecf27e67c46758aea0c55766c812a3bbf42759d7c4f895f5f358d6a06d52caa3954f3a8164075a05a822b886a90e19b655df1e16b8962dcf4e02bf8860a81e4b5394d685d8aedf22bcf98c5e8057cd8e918be83bfd154dcb74fd951345db92d4475805c4edc4b5bfa9458a6de479cdfc80bfc2d287efc3dfc03fc23fc13fcc415c4a63ae6fe44d096cd661a80fe858c087e80635a1c682f135b78d81c7f1cc2bfc2bfc18fe0dfe1c7f01ff09ff05fa098f13f927c7ade9063b7969c5ac1ffc2afc0f76cb609bf9ad0509eb32f0b5f80a9fe83c7972fbe2fabd527540db365b575f80df8fc612b296d50b3f7bb8219199ddf83df873f505dce023b3cc286b3c6efa48c487587b2d3e34fedccc29f0937f6e7f0396b4bf82bf86bf829f869f819f859f839f86cb7a0f27c52845f825f464d4bda90a3b3ee889a52d3adf85bd58c1ca4129e9a450d9241e5904a2ed2a6296f64c77a7757a99edc656886a839d436a86df5ee69b9b2c9e5483ddf4e721b324958771afe95c51bb59d8e32a8ed513ba0c6164fa89d51bbe8e36fcfed9c432d90ad94d55494ab1a6bbf8a9962ae72e9396aeb5960c2a6edb0a21b6a1168e5d462d41ea83d517ba1c6e71fd438808aa53d54a355d416f3b0c6ef3e6a359b6d25973af8dbbac4d99c2051c076a835506b0a31d55a528c13d2a9b551e3932e6a3d01a6d6476d9094615246a88d55b32fd762dc4a20a94d8816550c3d618b53d4689c76e44a70aa80da5c7ca06a0bd496a8ad505ba396422d8d1ae7228b5a4ee4a5bedad14295ca6ac111e5935250dd1e6a455bda889120c1d94f2c1296ad75263c9a2aee7161ef57d5e2004b32d762ff2f74f624470c7b4f37968aeba0562636b45d041eb4452091744840d4088c16ba2136ab933e5cb5e9eb9187bab6942cb4e3eb06758b3a74f473a4c251ae18ae4672feaf42d1fa4b4e4a3e25b703fa03b95b4bc65d7732dafa06f52dea3bd4f7a81f503f0a3cf513ea6749544263a5ce3602e1693e9b0c51bfa27eb343ea81841fa8b38648f7b72ca8df51a7fcffca9e26bfd429841aa83f8544ea2fd459ed0775565841dd4b3e59aaa8fba8d78890bd6d45afabd751e7af9af2c37a4b2aa95425be7771272e8c75d6dc41bd8b7a0ff53eea03d487a88f501fdb4364c97bf913a4642f95765e7d82fad4061c117f3893ac55e14062dbe45e92d1b69384d92e0672916168297e24bbe6692ce169484087094947ce6c3681889c66684b9179ce55ae296a0255b81f67136cd27a17ff0f3c6b1db38773bd3ba2be407d89fa0af535ea29d47f37b3c3891a71cc19b107d5117a2397ea530db9e3d9e778b226e63ce6ec85e3cfcba93b75847a01758ea1847a190d8d86647257eb3ba87036ac58ef0da0e1d0d8a0b1156c14adc8b9ed8f44b96269ecc4a9bab1176c1a07d1986b6dd5eeb0a07144e384c6198d0b1a011a211a57346ea0e521854dc4689070a97b14d078a2f142e38dc647e0f1ee76e212456e29371eda4f7bcfa1c1262aaab142c343834dfb68d4d0a8ab2155dec88e266850ecf5ed995f9a68b4c41bc45f982d5b698bbbef672bdb078d8ed0d9a36e3eb104a64fb31bdd1f3c12e89104b4bb23d8cb81a97f57cfa53e2dd1e8fd929f1118b904498be7277264037428e65172fc2366ec6da0c23a1a7d3406680c55cdc82e466384c638a19e067b369585df9889d85874b087b60fdb4ea131476381061b5b2531312d1a6bdbedabb08206ff9b46238346168d1c2e153b61a57934386bc5049e92686b34415245b91bd228832b8922dd944467a33d4178c8ca9a8ad25e946c0263ace24a6f1a34addc90683a81a4b941738be60ecd3d9a07348f689e7e08a179965b41cd0b9a013575617492a0e12eb71b9b9ccdab1cff346f68467a1da37947939f0f349f7afc41f385e61b4d7ef9a259c1e92a8e6d4dcf5c16e69118006107cdaa5d7725c118595fd3b772ad67683e4fdd99d84b53924d360f0973fb277e4615346bc9b14df74f8d96cd9b3eb1c1bb6e83e14f23f8a39b041ed904222b6ad6758153d140b389664b1fdb9a92b899dcef31cda61a275720343bd4b1e1c8be38aaaef58cc97aa0fd18720afa493892949eb0a303d1b09b433447fad847738c26ff9cdaf457f739d4199a73d99c7e4ccceb2d09210dd5e8b61d1565b3e0cb895ba0b9447385e61ab66c877c3f8526adae20c126836616cd1c9af9a4b0e9229a2534cb68c9362e5a4610225591d1b5ace87884872c8afa5bcb251780324940cb165a1bd9cf0e2eaadd446b6b6990b67668edd13aa07544eb04ca92167f2b8e8cf6c427a13d8fd56ca0da5db4aeb233d4bac9c6ab3392776f7cb4c39e04839260e933b999f53e23dec9d14038108b8765b7d626a3cab21b4d30f0d82790a4a9408fe28a95c4af6d79f9074f72724a78d08ad0ba6b9ad5ad18ad075afcf242eb8dd627a19ed617ad0a5a9ead65cd756a4f2761d9adea2f1998790e6cc4eefa6871787539dfcd3d0cedbd56032d0e9bb3c0973b68498606b47ab21bd6ea4b00c94724b7a533915c951a95d0224e77b486688d74f7fa07cff78696dcbda22c517529684dd482fd9ba235436b8ed602ade5ffc0c3b2426b8d564a441195052a78df2bab553480b619493056a94b9e4932cccd4ee0e9b29369b432e29a5a95e013b67096975b59b47268e5d12ac83d4bda46ad225a25bbdca255a6bca038473b39a1e864edd043dbda6e166d68ac4d78e1923351a847e46feb3feb675d54e82ae5539c24f33e90f38507ecbe2402e634fc0f3c49d084e60f1eb5b9a1ed5461abc339da1bb4b768efd0dea37d40fb98c0d33ea17d860b44ef6a5f2c9952dd8915d69a495c270ac620d2f68e76807688f6156dd618a1cd2731da0fb49f68bfd07ea3fd41fb8b76450e059647b38dc43dbc4dfaebfc7787a6cd267c59efed9a60d3aea34dfd6d4c4162de45a816b8d2dbfc6c837288abb8dd43bb8ff600ed21da2381a73d467b82f654f485f60cedb9ec2cb4179694d45e5acfb7e5c0bc9234c779f69622c7e8ee4d2e38b6d720bb6ea7d1cea09db54f1fed1cda796cf3e2b8ebd5cd63847601ed22da25b4cbd86af1310efbb670d2e32fa87f75948d3c1dcfd550e0b197c37fe121008795841ada44ba5c48f6adfb3f4f1d39073a7e845c08d8b528c819096bf1430b1d838e05f58e17bf38743696a652678bce0e9d24e4113a07c914471960d989233a2774cee85c242a4c63880e475b412744e78ace0d9d0864ee47fe19a3f340e789ce0bd4b9a93274be726d8a4628ed7fd14717e65547c753dd293a55747cd1b2084fa7864e5d6ccf4e437468ea699da608129347a7854e5b48a7d341a78b4e4f10eaf4d119a0c39e8c44fc101b924e67fcd3b9cd961d98e82195f2b370ad0e7f3b43676e071cc8c2463e3a1ced0a9d353afc551a77b69bb1075698955809ab810427fd1cc5a1b593a3cd64e77b74d8930250265b966c96b4853b459b62cd259cd85cd97c5e36caffa8278968dba1a897a3d2df09772914541e814efb3f2faa3f5faa72fe0fb3f41fe908f5281f5d4daa43d78ce2a18a53e85ab98dd875e86e12cdadcaa5d443772b664d7787ee1edd03ba473d4dd9f555ce74dd04dd13ba67742fe806e8861207fbf4b1711e156de74374af7670a5958eee4dfca4494cdd4822e2ad5be8ded1a5b80a849b7d36e892b78e041e0a9b6ea24337cf32c5dd975a3c4429e8be857aba1f74bf42430a66cbda2ae87ae8564529e8fa621255f94e8d64876e1ddd86a5dd4726d66dc922ebb6d1ed887b62a1886e173462ba7d7407e80ee50e5bf4b5a7105dbe3fc6465321e2ea11ff933487c6fe4f6d612ad71fed5136f43e91c400cf7eecfa235173a6a1a53d20c98d388973ca1e9a93b275fdf3c261a13e469cba0b8a1cfb1d0b55795f7497e8aed05debf7588a7ffa2b8f8b1cade672e8a68cb7371e6b4eeb5b0ddd8c25f7ee66f5fd17cf8d8c956bfc3d4397afe6d12da0cb8195340dcc6e193d6d5339f4147a063d2bd7716f5682113d9ee8c10ea9c5f524d556bc41cfd9cb4bae2f7935d51f99494d3cdf7a7cbe456f87de1ebd037a47113c3f787a147235f4cee85da418d61f084272515b0b3c24a35e2817ea7b57f46e620cf522d9e3f1f8e48e5e2c9ba7bd8726437b2c342d9e6ed312c5ded33c3ee8bda4f58f91b3dade5b80b145f43e72fdb3dd94cbc6bd2f7a15f43c73efa25725f59821dff4d16397ea7281b2c73f597f4bcee67b690985f05dd9de11bd367a1d39311bd4cc7927d8fc2f3ca7219e27c9c61d6565cb2774e87547313f7be8f559f4b7c582de8045051ba1aa353b36446f841e7b956c14857c61cafa7f794bb3e8cdf4f481de1cbd057a4bf456e8ad4151dfe32466c4b1af97b51923090b7a290964bc687029c99d8a5e4ee5aaf816d0cba3c7cfa264117991e08af6ccda4ae89565dfb3af93a2d037a2b9f52dfa10858de649dfa1bf1190a8258bae6c12d5e0abea4316f4b77ff0f477024f7f2f45b64abfe81f64e7b4f7b0bd27fa47f44fe25e3a2caa514d92b9950cfa677ccfe85fe4fa6a3fb997db67615537f423f4efe8c7504df65312a150dffb2451c18350eea8ee0e7202d27fe0b0253ce65d35614b05573d6cd95719fda7be79e827596cd335b92e9af81d8a8c99bcecb12521d376b764a2a10f35f4a976d77ef0fc2bff034fe94abaf983a7ffb1db3aa800f72bda7ffe2e90dc25a6d2cb479f4d56d1f7d5ec837e4d7d7be8f3d586ea7670e2789a785dcdfb22372bc62df45938808e4a4f93d82e13fb298ae9d0ef9a57137dfeb66ff3541f1684e76f9ba0d600eddc3e277d24896da852536d6b8d8df358849238ef7d767122d768858672864b9e5a1649aa3f4bf60b64cb00fd39fa0b7b5eb2486c8d1dfbb6447f659bc6f831fa496cc2e0827e4a54927e1afd0cfad9049e1cfaf9049e02fa453be244c7024f6b833e174a591c1cbe270c24a40206641856c298e79f728d647f931d1d2a8a0363df89ef00b1d9b5049bdf75aa9f67a868cc69d94ad825177dc940bd90a4a39f19751efe95a8cc3fc55d84bf421d039bd0cd48407aec451dff8e58f4e6174bb4b4b3f389dc861f380c36186cf5ba87c1cea6f8277b79c0e0a84a199cf37671c180bd3f63c02f81c89e41084a9dc10d83c8cec718dc31883178480086018df695b847553d09bb2d1987c66203ba352a5ff39e1ac94a3493e383c12b615327914683b7c0d33ed31a93253ff850d516ada17112e4065f0c2a1878185431f0ed89edd630a80b3cd4dac13f1ba41e51cf28483ed634f87e138316066db52c60d01184065d0c38c03e06035b7426aa9a0fc738c460a4c79cfd31111227fd01e7642ace5c218739d3638e6b0edf980aa76881c152b059ed65a293f27727047501e6bff0d4c55184a43358fd079b3f787e880a3c9cabd43f23a9f5b399c46cea27768f2478ccb0c9b4eca79177a5d99b8cdd1e31c81aceda20f7473d033e2fe8f40383220625d598625096db8d436a07234168a824360fe1a13e3db492459df050238abab65891dde8a1c3702308f1cbbfed9c3f84d8d0709b941d867b0c0f028f7c39627842e3295b38c3b38037bc601860186278c5f0a64849c3c8168fa42143936b7837630fc358e0193e307c62f8c2902ba00d9355de40fb568d97a21db88b4d5569890b3cdb2ab57035e20f3ff69ec6f02b4e74b9aa8ed8d50a289b29563b450cab76c9da7c5d0f247f2d21df47ffa589fd43ceb639e9a7e12fca3a8609dfcb1ee42a36e1093d29816231e1549c14771f1d4da94448f941f27352e892ff7ff461f2b37bac9d7f55c4f1d741f138e4bcb4306cdb715e7384af89ad3a4ded6bd8b1eb31865d0c7b18f6ad3b6338c07048848c7b9a2da76c84e158829b8947c34cc242b4920052b46a871341887ad88d4d4ce5b399ec84d666b2cd4c848673bc4b182e305c8a541812d73586290c39591955efaa7a4fce4f87590c7318e6312c48d4caba917b848467bc90ac5011e75758962a737d9444611b96c513886b9a4cd26431527af782bbca6dbdecdaae1bd86e6996612451a8e5364bea6d67a110502727d1e706791bce30e2fcbc24cac6c861b4b1ad2a46c2d6888da5323ddafdca0fa48465bd25027ed81178d6b9ffc2131816ed9fa53c24c5aab03eaa89bb58d33a0b45d9fbc366b467a19d9550cff389d1c17c7a181d313a09f58cce185d300a300acd13128a35bdb6398ef3aa5b7c78c3289253c5d11da318a307464f7b5961c431bc31fac8f65438529431a32f4615d90915278283a0622e9a229debf4fb165e1775e035e42c400c8850f4da20903dc0912f205169a694fe58905f8dea460f45d453111835306ada1c5b6f61d4167808fda863eb6561594258597933682600af85958d48c1398cf8a52f9111eb72f7580ae1d18467405513a3a1440b198de0b852bfc98911073bc688fd9962449ce6e46c36623d0b3d7b904761b4c46895943f84846b8549b8cbf748612ade3cb9e21f3ce79e5a39b5bfeb51fde7432a6fb25c46ff4528a12139757dc6fa928419c7688d514aae639d3fd84d15276594c62863ab7c9e1dc553ddbd4bb8d6299fb367048f381559ec23635f274b6e332a517449d4d14a99e6baf99c104c144548752847d794c0ea264e0112efe982b1c658616c30b618035e2c7b5c3f78c6ce962dc83639ade38dc0a3dba2fb7901c65b44bed828f7955d36a946dbe089f10ee33dc607edf35f733bd98941437d6c7cc4f8242af5f88cf145a8671c101e89fda4a97794e436f2be2cd4a31a12569e9a5ed490bde0600258f1c16f14938878ca66d218b363578c6f1847b478f43d56e9c53fd249b019df139c767fd473a829e50936b307ff14495358a8808ca46f6f75f9735295ff52e58ba6fa5b4976ed863feaf9e36fe39826ea3f78c60f8c39d497ae0d317e63fcc1f88b714514b9b167fdb1c4a199fe82dc129bbc9c6d8fab921760bdc521b283d0c405dbf131f625b7dbd49738108a135a9363d0715d424d5311224284a71249e69415b1e1dc35410d70dc16eaa1be446c6e1b9b792462bf2af33bee60dc55ed9ecded25b6eb7d6d877bd56c4b7081302da796e39e3ab1b77d09a1321e483c9b3187304ae0a1067811e3663c11b56d4cb6329168a7e582842e4d389ba28149dda79d96a02254c4e502c550a29a8ca7e218dce377f661662276756e331d1d8e24ab6e3a12dfcf513da11862b3f8c143b444ecef23bd6be8d9532f42b972ddac13158c972c3a571278f8c22210d2d91c344dbdca4a2747327f08fda39e04a1da0f1eb6b1c6980b962b25837156930f8c59f218176cf096631e6fa687a55fae08133670e4ef8b68ace55fcfa1653fc625db3a9927a7ac2c01404bc0445bd219b597fe51e2ffe692eb0986dac14414844f4b54edaa278734a4c51f36142aa3c11f3c141e132556c8a8a8865b9badc35e4c2a8b4e511f7296aaffc46062cded653b066e99c013505d060960e230d9402b52a13d5d29782c4d9f5b8cc9164157e2ad14ee2c6652b7c50d956f2599174be25f77db91e86de72e200534cda692aaae3810a39ba439d9db565ea2156c285ae6ea3cf88327616e020fa77eb5c7e4a0425fbce07345bd2e699c31394af082c989456d427de352a949fee8992f0e59e46c2c26fdafb47e45957f7b6e13fefe8249804988c915931b261126774c389e877da6446f912e36c59f68f2149c0ab461b3d417ac07d11d9a15d28decf4547c4c5e985013dbea6155dc9d271f490fb2ecca4d36caf9ef515ca5265f39b7a6e019b7e51e48596152e11256ed960883765ab5fb9434a41b4c3c4caa52066309b31e0e31f12d17f5a486491d9306264d4c5a36b312b3863266d2c6a423ca37df21f550f7a3764e78b22b0923358b25c05f7b48608cfcbc9bd8ad67b406245378ec4c4faec7aab3edc4d02e498eb4c084d5f625e207e1e92e6d944ff6d938b40126ec0f85d68ad8d89795796719b4f5a522f124c22d292681678cc9445e08b784479912b9df1f3651e61f3cfaff533099fee09961c2c6d88f25262b4cd698a4d48e8b378d4906932c263949ef76256c79dd7136a3258f4940f00a9870b59624aedc937d2ddb9a2353c594acd5c8692331904b8725899bbdec580ac6ee10f5a7a50141b58d065053e35d201286ab897c660ab95fdf2bc966cc545c708ccda9fe580e9b5d4576f3d6df24e94e80e906d32da63b4cf7e653c1f420f04c8f02cff424a4333deb1d19f5e5b79d4395da0e4a985e08d20f1ec186b28dd84c83c4b7a487a9502a1929a65772394c6f66d8901c779529a691b92e30bddbbba7df47c91cf5b888efaec03314a943b6c6799fad58c8bb7e6c4dc8856c6d1a63fac0f489e9ebff0f1ec4fb5ff97957257a794b23c95b8ae91bd30fa65f4c394e0fd32aa63ea6354ceb7679c2b4816953dc0d52158911d4211597059e5e0ad316a69c8e0ee1913dfcc951106a1d6dee23d739520db907ba3d4a28eb1e251e1963598eab090f09483c0b6245a5b63514240809a5f4f7268e3e32b989c8a102e6c9a52a09ece2f2c9016edace5eea5dc4b4679fec6a1fd301a6e4ae134c47988e6da92c1433e5a44ffebb0d3a9d121eb57869d22e2db6f650b48fe90cd339a60bd9fd9b2ea5787551f1bf1b71ba9fae04a16022070a3d4ece1a0faeb9946d34ed332f8bfd71c1943fcca862ed070fe946e6dd948480360d219a6956e8669a63d1e15dfb81f6c31f8ae46c54ff24d6fcadf63b6cfd0f3ca2c8111bc3e9fd5d5e9c1630e580b9b8ca9869cc146606332b99bd6b57d080993989e9b99750e1e27235db48b075f237c233db62b6b3ad90fab46cc44d8ef6b1b2cfae2034db4bca87cfd67e93007cb383d99f2d8d98b6f03439cf6e2ee5de4faf4cdb5e723150f7fb40eed70ff6b29deab5e524cdeb4a9c65a24e2ba410e87e9b6dd96f06b3236627ccce985d2410e738f8c183e718b340efd87a28262dd5362e85041ec9695c8d493d7255ef07cf73241e3fd57ae249d2b4cb5de241b7c1ec4a4d8406b525219ab4adbf92d03b91c0b37efe83275033a248ee32f8296c4237979dfe5ec8d930bb25f0bc308b30bb6316835a5c7daf3735914fbdbedeec653bb5bdc3f199dcf2c9c871b89c88278c8e98b5777af38367c61967456f50decebe98b1762eccb5bd1de5062181794c259ad7ee805e0b6e6a234e59885915335f3214b5cef6bb3214bcb39a79d7f42e8f59dd7e5961436289ee955c816f2a5ae62665448a444d3154a9b3cd9a98f1b38d5947aed8574eb6279939a95051fc882ad54a4b0ea5249b00755c35aac0be6557bfd9d44dd6dfc5ac87595f52de954e4ad808b1196036c46c84d9582df3227836b15ccf53c61627daf7243c7d89622923e62a85d37364f448b66509927872877222c515431b8b8a49d98a915033e6f9fda39ee6482ee56e3d54e6367e1121b238d92f48a847a75b7ab0929d1eef82d904b36982d04c42b74d63aa70b265407808d5a22af07c29b0b5b897121e824478123f9ee4b6c9d3faee07cf1cb403664bcc5698ad314b6196c62c23d7046f5f8912557ec9dec6910fb37ca28745cc684374e4d6d511b6db31afb57d139ebc6c7eeb00b382f5a7aaa0c5ebe544d48bf6bab58ba7041ecf72a602d1b03da2589273fe42d1aa2b821e1530f5cecb557abea6aebf4c71989531d7f2ce7c9a84d330ea59d2dd23e6167360ee30df487c52aad4f3add837f31de67bcc0f26eb637eb4cd2de627eb7fa8524b288f2cec2e83f919f38b6dee64a7a79f15d58ea00ed772ca405b781e087234bc7a0ffe69a2aa9ceb3753d6af611e62ce866eba1ec8e49aad5c81a766fff6484014fe9847125b6ace4a62cc69f45412bba724a70977e8454dd99decfadcacec174453d1aa4fa33f7824e062e2cb58de8bb7c2a98fdd3b8167fec4fc85f91bf30fe65f9b1a62ce363c7151db71a85509b8d5afa34a0da787b96fee4edb1be635bbaec969d02756f5b61df6fe038f6d19cceb3658da36e7a8211bef123773248157e6539bb789951a893da4f8324c2f6b1b831f3c12aea563c53f5b9ff8b2c956e5546dde94cf5ed5aeebaadec1bc85791b737ee962ce2ef5f553fda224613ec07c687b046f24e13e250dcd4c52fe2c8bc0c2b624e498799d301f0b8b1b69355efc156adebdb7d84973cef2540a19207587f9cc560fb8add49735cf315fd8a5d28e502df5ee219318708a5632e9838e7ed7556aa0070bb23885a6b0bb643f1b31fbb3c63c85795a8ee0929dd01f3ce0f2bd657534fb8f76f0a7201021ef0f1e2ea82ce639ccf39817243d43b1843927a5a4398fc795aef86a7155b3ae4dd7f5b02bd1f4e6652cb4a47ca60abe5092812d58c0bcccbb8ef64594ab49ac967256a49b0f3d588a4e797f4ae4825216c1d8aec618956daa2846460b923236898a2a74b0e022fec83ec56723c1c3961dceaa787de61f72d2bc72603be93416cea6bf586c6c3b83c5168b1d167b2c0e581c2521c72ab6dd82792db0386171c6e28245607b05db3cdaba12e5b04d15ff6ccf2b161a3d22eaa89e2c42b18ebd3616572a6fc98e54550ee82e5473ee58dcb088d47b8e05bfc7583c2495f36da4e3a5bd34cc850beb8dc55305178d40e0a19a407844c94ec965e083cf225f1e973f029ad4f465afc165f3d2879a5e05b289f03bdc6309dbd40f1378a8362c3e5870b4152c3c2caa58f858d4c489b0fdb5ec6bfb63574b2cea5870fa9a58b4b0e01838715d7b2f525c63d10338117d09897e2949c06d727012473385c590ab098b11f548bbb47236d3e19f101f470a15d2c136637b6faabe588c25a3ad64a21fd8cf511274ccfa125e6231c1629a44a74e62542f6636cb6ecc2504d58bf3cedad8b715166b494576e793942477a817e45470919604d049e45e29a7c8d6d776d9a65646f384968d9c1d749be2ea65375810e9ac9cc5295692139fd97601bd9a79bd70907476e654b03d3617e92ae727cff10277dbb496a69e5ba85c0f0bb67b52538aa9a6f6afb27110959283b80116453237e16fc14636437ff04ca8e252215aaa3db12f89e81a8de5c2f0aff4fa3f78ca586a2c1596064b2b2925c93496c0d289e74df5609e3d2c37586e41dd66b9c7f2907c1e251b9d67cd6561fd09a7434ee1060f50171fbdb13ce3da30ef00cb8bdad7d4edc09562e3aa7d2cecaa893d645f8bf421ce344b2cc9e222298fa544e75c86585eb1bcc9a55fea23cf99b0d96584e51dcb184b36f1c4f285255bf960f9c5b2825f6edaf742e2b03fd7585625c475fb89b085a52f5944d70ecb9adc79337cfe10c3739d6886cbba1a6ea9b0d0aefa29f1120566d9c0b229165b8ed51ee5be43202b4698f9b2a5fb5c52175dfb48a8f7cfc366391b6d5d69481e71ff86a18f65472faebf9d50d90cedf5b1e47cf69233ec9e04125df605393192d8d6c0f87c81ba1f277f642e052cc7499960f9334b97332ce758f255ced44a6ef9041d2cd7c2d99629b9314a36b5cc6099c53207aa4352584bd1067273419898e684968480866ca3aca282e5d223f514fb920122b3b597907a886e1fcc6b6a2b35d156736f732a63a571bcebe6dd7673e6b593e8759cdcfd46a259ad14564616cadcc7ca4ab46b72b6d506ab2d563bbb80b8a26d95f9d6b48a753bb471566e17d95836e528a568b5acf6581db03a6275c2ea8cd505ab00ab10abab6de4f90e5637e8bab818e8ba2a6bcb89c351ee56ac22acee624ab79f82f18432af0d32cc9452c5b77d3475ed4bc548474fac1e58f1f385d51bab8fa67c5d7db1aa244a9a4b4e10a899557f45f6e888d3cac3aaaa374d3d1a111edd5beb278556032b0e93ec2e8d551d2bfed9347eef473d1aab1656ec4107abae7916b1ea897a46c5c9cde44ac96a00192ddb1e63c5899b82eb7a35c76aa11f19ac9692a371eecb76b5cff1afb05a131e3d2b8962bdfc5a1ad85e56b7e6f672b1c3039a5d55a4a1d7149678bc6395521e2b49ff92a56395b1a5ad6496ebe7b1cacab631ad5a42bfca8987f08abab21163765510a7dff61a2bf6b3a41b29accaaa4b736f6e0f63acb53eddb056581bac2dd600a967bdc17a8bf52e090cdeb454ffd67b9bae607db0690feba38474278f5d9fb03ecb1165736d87455bb88be5b4be601d90b885a7ad43acaf58b3fe08eb3bd6b1ed146929ab7e1aeb07d64f6ad5eab6c7fa85f55bf67b1e33ac3fb22fb7fe0a486bb6e8f11daae0ea50d0a3a1a631b3f2f535c382355ff03585e59abaf52f29f32aa523d65bc7ba817513eb16b858d61db91546320ada72299ed60f79fdba8ff500eba14de7b01e61cd8960d7a72a3dc5914bb224bce5c8e6d921ca8625d60bfdd4ea5994787cdfa164a5f314e75dbb37d64b3bb236e8d3d0c37a655337737b4bc0e5e7d40e8d093bb69b51eb98fa9804736d26d916a9716def12b174bdc63a450b066bce4846839f59ac7376cbe79cbe82c46a6fd5549ddd2842329310a1b2583f298d94d29b016881b908928c37f32b4859dd0c24107dca21b5416aab7759a476ea3b416a8fd401a9a3097b48b192b36a0c91ba603f359f92bd3eed83cf03dbe1c3504f3a1a15a4ae48dd90621377a462a41e483d917a21f546ea83d4576f7ced9d45054ff1658f0869da00a92a6d089dbdca7643cab7f76453c7f68ff6cc1fd790aa23d540aa89540ba9b67d90cf366cb8104a5aae90ea20d5458a5de923c511b23723a4c6487100534c76b26b30ff2235436a8ed402a92552fcd55ab209b46be2459e4a19f73126c0d023a9a9acd651594eb75269708e2e1c4fd6a6d292fef87d94db81b72a5239fde68ce4912a205544aa8454196922a29036324ece45da4a70ffb433a50fd21ba4b7f6d6c196df7748ef913e207de4b0ed7d2383efe5903ee9ec0de933d217a403a4c3a45cf5a681f44d0c7eef48e1a13681d8ffe908e93bd231d20fa49f48bf907e23cdcabf20e591ecd255dba823ed235d439a5f584913e916d26da43b487791ee21dd477a80f410e911d263a427484f6d30457a86f45c7b277b9a0a3d2d6e491f16da3fabfd5dede384b90d47369f457aa93853e915d26b48a2da1cba47497d5e604b69a43348f31dbe9047ba807411e912d26570ed66143206194bd3c7505065808c331483990d325b6476128b3ae00a4821b3a7749573f1fdcd7e6b36caeae649f4bacc019923322764ce8ad225734126402644e68acc0d9908993b3231320f649e9a2664e685cc1b990f325f642ac878c85491f191a9215347a6814c131976a08d4c07992e323d64fac8f087436446c88c91992033456686cc1c994552d8f315326b64524949239341268b4c0e993c3205648ac90b2564cac86a6415b206598b2c9075c86e90dd22bb43760f2a0bd923688067cfc85e900d900d419ae09ac846c8de956c7756844ab2b1ce1e6597e14699ddc7e4a0777539897866d476416b37a19ec9433cf3df33457e9a7d20fb44f685ec1bd90fb25f642bc87ac856413b3c5b43b60eeab5d926b22d64dbc87690ed22db43b6afce0b3b79db666ce2b23d5b7b4b997611d901b2436447e654c2999d1b233b4196b6e708d919b2736417c82e915d21bb4636856c1ad90cb2596473c8e6912d20cb4a4ac89691d3c829e40c7216399871093987dc46cf26c86d91db21b747ee80dc11b9137267e42ec805c885c85d91bb21172177472e46eea1c8c0734fe45ec8bd91fb24e58b5c05390fb92a723e7235e4ea496920d7448eefb791eb20d70515e85c1fb9017243e446c88d916307a6c8cd909b23b7406e89dc0ab9357229e4d2c86590cb2297432e8f5c01b92272ec7919798dbc1239b49043d524ddc546d4eec745028ca0a536d7049eb7a59496041d9e16df0faa2e34ecf314a743e49dc093df20bf457ea7fd89f6d7c8ef913f207f44fe84fc19f90bf281bdc7c88736e8d9cf5a5faac85ff58e3db8211f214fdd2cb6032357cb5221f27c93ad3c917f21ff46fe83fc1779b6e221cf1ffac8d790af23df40be897c4b13b67c1bf90ef25de47bc8f7911f20cfbe8d901f233f417e8afc0cf939f20be497c8af90e74f52c8a791cf808c219f433e8f7c01f922f225e4cb2868b519b2a0a050302c66d443c1a240a592ff75286cd47484c216851d0a7b140e281ccd2cadc8bd0b2745795838a37041214021148c0b57146e2844a02a51885178a0f044e18502ffc597f9ab0a0a1e0a55147c146a28d4516808832d348556a2d20f9e5f903e892e92041e4d985ba125392456b1e4abae4c50a016cf1a3b9634bb396292b7e9a61ab1e12e0a1c431f85010a1c187b3f4681ef4f5198a130476181c21285150a6b1452fabed71129925d4ca39041218b420e853c0a05148a28945028a3a84165a9684c638ba2954c2f4587e20645feb943718fe201c5238a2714cf285e500c500c51bca278433142f18e628ce203c567525e28be41b5b0f845b182a2876215451fc51a8a75141b2836516ca1d846b1836217c51ea8fa1707280e511ca138362b6b5606c5098a53146728ce515ca0b8447185e21ac5148a691433286651cca1984ffe5540b1886209c5324a1a25859251d3bcd450b2a0ce5972286d50daa2b443698fd201a5234a2794ce720a5eba88a411f368f02be2873de94b58ab59e59756965a47d61c3749ba8f014a41925cc0d9a82779dbe75cf859944294ae28dd508a5062a5314a0f949e28bd507adb3abbf241e96ba7b1b639942a2879285551f251aaa154b77776b4815213a5164a6d943a287551eaa1d447892d0e511aa13446698212ab9aa134476991fc8b6589d20aa5b5dabd059e520aa5344a1994b266c47fb1b93c4a05948a2895502aa3ac5156281b942dca40d9a1bc41798bf20ee53dca07948f289f503ea37c413940396451137e5e51be099d952394ef28c7ca66507ea0fc44f985f21be50fca5f942b287b285751f651aea15c47b9817213e516ca6d943b287793d243b98ff200e521ca2394c7284f509ea23c43798ef202e525ca2b94d78997485dce557325e294e80551e29290843cb2d350fcd6eb19714fe90fec682cbed413369cd23187914699bdcca29c43995d2fa05c44b98472d969edb472dad8c6c269ab3b5439de4e3cb79cd31ba7b74eef9cde3b7d70fae8f4c9e9b3d317a703a743b328397d75fae674e4f4dde9d8491eb0a7d32fa759c9c7e96f522a4e7b4e579da6595b73baee74c3e9a6d32d5ab98e8b48779dee39dd777ae0f4d0e991d363a7274e4f9d9e393d779a7d5b3abd727aed74cae9b4d319a7b34ee79cce1315a70b49293acd2e95956b39a59d524e19a7ac5370ca39b5716aebd4cea9bd5307a78e4e9d9c3a3b7571627f864e5d9dba39153975772a76eae1d4d3a997536fa73e4e7d9daa38e5395575ca77aae654dda986534da75a269cc86ef7af4c5f72a84a6b81257bfc5d2029dabaa43b938c62a91cda6ca6ed54c7a9ae533dfdc8c3bbe9095bed3b35706ae8d4c8a9b15313a7a64ecd9c9a3bb5706a49b49d3872ad9d4a3995762a630aaf243670cea9bc5305a78a4e954c9a35979dd1ce28678c33d6d10831ce998d335b6776ce90a705ce1c9c393a734acad9998b337c183a7375e6e64ce4ccdd99d89987334f675ecebc9df9506574a6e28ce74cd519df999a3375671a49693ad372a66dbafcde71a69b949e337d6706eac00a87fc342b7666e4ccd8998933536766cecc5596d52e9c593ab37266ed4cca192af2d450b3cee49ce1aa65e505678ad4ee9d293babffe0b1ca5972cb83b356326e59e7ecc6d9adb33b67f7cef2f9912c4e05e46f67674fea3cd54de32cbf5fa8700b3c6ad6d52b631f0d5b3de87e4db212e5d800492e74f6eae42660e4c89e7cd6153bfb70f6e92c1b7e3bfb71f6eb24b39de76cd559dfd99ab372b5ced9a6131fd1b6b3e4925d67b9c0bba667f9a97afcb3ef649b7ae8ecc8d9b1b31367a7cece9c9d3bbb7076e9248adedad994b36967338e62d0e6cc8cffcd3b49cd5d4c2ef64be25227c9348de4f903922f8e02d34912a59d93c8200727092e4e4e62f55f1c02c106a193c8c43797c44f75e24d1b0a42bb8b59b1b6d8490043423e7049c43762a6ee5f794820f116829310597c5271f0843824c88aef24d644ddc985f4a643cba1ede4ba1b25dcd8a167266b27a77eac73e8c4dd940f274ef6c9674e8ead160ee2d1e8b052a7908b5c17ba7a91ec1a4836a4f5c0d6d995b5045b555bc93f45a83a3b113f530e929674dad19c110d9fca2cf5392a3714e2947a6527bc8cf4cff5cfb5c1e971d251b7718eecde776ec7625603e7f6c9bc448e26fdaa9fcc4bf89f9932d3897347e74ec9bf6ece9dcd78eddc25816ae95ce05cc82766c5b6aecef105d673772e76eee1dc53c076afa4f0c9dbb98f735f7999bf257f7395e4d39356a47236544dca317992f4c4f9d2fa7492f4e4903cbc25e5feafdcfe1576c037aba1731c66ddb98673c4a366165b47c6287fb6858c5cc7b9ae733de738227eb287fcc9c8b9b1736c62faff9a7bb3655775655bf4fd7ec6e15d6177bbbb88fb04b6312e30b82ede901aae30b5c140c4f9f79bc2bd8f316631d6be2bced97bae880c02639052d994a94c2194c01620aef60035f0c8426ad149792c78cae42adfa5ceacfacb6ca0c1e32bd0e4034b2eba18e972b75bef43dc3ce00368016de013e800546b0fe8c3657015b80e5c0e5710164abc81ebc23dc3bdc0bdc2bd29d74fb877b81edc075cdfd939ce866e0ee85f6517d4f7847023b8b173c8e1267053b8cf9a32c77ad6181b759b0dd96c97ee79c12de096b23fba95149084965aa5c1552584a4642e9d0fbe88b7e10ee5bff06a89a7f2117744543b6916fd7c139526a9deecbba6badfb8fa17bd21918f2fbe3a107535772c79730db8c4db944ebe59a52b3389903b876bc225df87a464c1a55a967089f3355c92d516ee0eee1eee01ee11ee096e83675b1a87e036a583f0131ef7036ecb29b6bca5ca9d40ce1d9917ef76678b0c6e9b70e2079232c9ba03b70bb707b78f33c359c1d9a99584cb9485c4dbd9c5f94c30e07cc1f92a5139dfea93a846259274a6a242e52201ab2f06f595af7b08b61aaa482277f66afc8237a2383f24a8671f67ba27fb3e86359c299dd0cf1a757a906a89714e704eeb42a2face27ce74cca510cf79dddf759c5fb2b39f8b2f92aaf0473a973555b5a28ce4892415674d3e2b51c9ea5e55f727597e26013b0f701ee24cf7530954bea16c4e384f70a661af85f30ce739ce26ce0b9c2d9c6d9c9738af78aa28f1456c72b962242426d7ecf8fe327b464ddaf0ed5cee814ee64a25116cc5a189f30ee7bd08a89403ce479ca98e06ce74fda3c6836a6ae3fc897307e72ece3d9cfbb8106c971a214fa12e7351c8b049d17c75b1692da6b016b4275124902e1c17519b40d4020d654f3c64a46a358ae137d12391bc22a55f3f4824fbc1fb625a63efcbc7a98a8b2bc554db1c2932f9738acbf90d642dd01f94487e5c4b72fbee403fbad10ffad9b7bcba69092e1722c92475a6af02eb1ee04e254e972b2e375ceeb8781227624f8e6a7431c025c425c225c6850a49253c17ba9f38cc957082cb4bbe1823784e1fce44659dfa8502289eb891804ab9df51be10b7806f68d499e152e1a272320b178d77d7b80c70a1ca46b8e8b88c71319c13b5990aa523dd3cc7c5c465518b9bb8b76417bed8b82ca54d93e27b1bb46b2d68ba419058a5c5ab899eaaa54cbcae64ef3e3f2466e7e4c7bf445f80d5f0c88b6f845cffeba2445ad45593b7b5c78518dee0b2c565579f1390f1b766476fa2077f2532b35f2461fe956afd9650a59213a99774cfa5aed7fbd26c896e5af7001208d57e90d85caeca45c3e5880b8d9a1b85a77f80e7ad3d97062e4d39c7d321917e880f9fb5224616f5d222efe09ddaef215f794d4cb1dfb2852a13e1d82a6f54dc2c7169f306e9c4272e1d5cbab8f470e9e3ca6a915dde12c455915290cd4ee41823c1f06a3d887e48f03df6d015fab7bea1eefe5f2628fe5220baffea48eb4147eaaa5fe5475f48d427bfa2524b2afee241f6685113ffaeebf225f477095f3afaa6758d1fea3e5433f07e847efe24fc42b2b7c947ae32c18224829c066b59750db92b4dab34b3129e4caaced5fdd6a12bae675c2fb85eff00cfdbb8b93238c595eebfe3ea891d09f381ab8f6b20e7b0df9e1baea1dcad90fcfd2b0928668bbbc34cb9917378640312163d93e2fac435637d0fd71cd717ae05aea5b3a3ba2b39c65c55e9025cb55f25f2473ca25f40ba7c1bc0cb0f0355431549cb701d48d591d25fd7edbfbc254e78ff80e74721df185f7eead31bb3376cb5f8bea9b6486f147fdcfce3b65fe90beccb2f546bcc1ba71acbfac1cb0f3b21cd801c3227121eb275d721ae235c75a94374bc8e7135709dfc84e73df6d4ae410dcf14d719ae735c4d6610968b9a2cb65cd66169bb87ab8deb12d715ae6bc11f3237ca246083427e11377ef235e1b1c1758b2bf51aea4454e211d713ae0d5c9bb87ee0dac2b52dbd80f3f587bdaafbe354d25b947f435f46e6a74e90e036fc4b8edf9dfa0f1af3436f7ec0f02fe8afa2ff1580bfd21f20f995a4ea7c29dc95cb1339164e6a3cb8bc28cdf5dba9a9c7337259a5f6dc6a35eae0dac595827182ad2fe121d7e0c6be3cb7f7d8735364aae7bdcfbc076e349808b61ed390c2bd6d0dcfd6a4180e371737822ee6e606b70b532bdcae048f381d70bbe17607f9d9377adec72dc02dc42dc22d0605dbb754c2737bfe0e9eb702fd0dfd1c097e0ef552f9beccda7f0c3cf2afb7a2ec6a55268166d27393ba12d526fd0736b589bbe5b5de903c5ff2e456e056927193aec18da4aa4ac7fa47dc73d3701be036649d191fc46cad095763c514b711f3ea0f489cd7934251dc74dcc6229cf185859bc19f1727d6957dc40f84e404377a80609fe366e2b6a8f5a651a3423793e65532caf92336ffb5f6fcb46c5f087d0396fc80e7efe97f161ea93aefb196469d73500749aa0c86dcf4cbcd914e5df835f048ed716b5496b8adeae3ba366ed72fc79ae29e5b0dcf6d8b1bc1b3c7ed20b61bd6ba8b5dca2cfa79c4ed5453a3d69e579d8faf20849a62db63ab1cb70fdc48f46d99eb3bc9f8d8c0ed13b70e6e5ddc7ab8f57167b82bd2a0d1d84383041dbfc79bbf81e77752fe72a5de9ef1e5e7b8f263cc788f3aff343cd223781b31720748390818de96930be4d4b975df928eccb976a96b8408121a7ba4ff76939e1bb90677873cb72f78deda73e7dfdab3c75d50042a0e0bb9e2ecd097731a7717777aeaf29e12bd4b059a2a6c71c1fd2ab7d5bb3571bfb119e402c4c7da2975dcefb87bb83f70f7710f7e7acf44f7b06ef6f4cb94fd05a43ff9af3f1dd9af6136fa837dfb55faef93bf82f43f3df65cdefe1e511db1bd64aceae6dfba1e4b1dba47b8c712a17b2c8121ef898253397730c33dc13dc5fdf965dc7e0d4b5dc226c33d97a94be39e9c9bf4e642a7aeffc2bdc0fdbdaf419cf22ac7bdc25d652b572cd7ceab8dbb567f841dc96502c701ee4443e573813bf58b859296b8136663251ee16ee03ec1fdb7f0fcd6b87db964df86ee874ffc2700fe7978de7ef6ba76c4d37a9879ca78f65a6346ba452191d0ebe91ca38edbc6d279bbcfea99b729ee73dc4de7f40dcfaf71cf173c8b3a4d13579a7b716ae14e3ddec67dc9c7c31a9eeb5d988cd9aec849b356b8af71dfb0d115f72dee3ba1135454ca01f723ee27d9ec7b037752af0fdc5b8a47438b4b6849c07e07cf0f25f813fd3af2bfc5fd76defee422ff15a17fc0b8bd0320ab56fab71b1dd7311097164f06d12b090f456cf7763ddb464af3897b47ce8adebbb8f770efb3a6f535a9f386873c37326e1e83a7c85c658e9ccf83c7e1093947e8b94c798f3db3829f4ab953feab0bef0cef02efaab47378377877781ec8e1f37cd61b385b0b5e002f94f3055e2427d9bc58e274ee3956f6ef6acf1ff1fbf6057ef8d93f02c97f1a9edaa5ae431fa92831d9373937f81598d7e1aa9c492ae504929cda51e55cb597c04b458f44ff740e2d7819bcdc596de1bd9cfee79771f30a78253cf2aa9e627e80a732522f4f83378037843772caf6dbb1d6797e82a7c31bf3191564c09b3831dd4a18504d737854d6021e6163c35bc25b4953760fc9b2d5c68d983bff76fcff5691bf81edb72ec3ef3dbddfb818fffd638f551b37d46cbf67dc83fafaba9e31215b57ca80da5bc3dbc02318482d28e424a191dc8ff048bc0d784d674f907cc06bd5f0b4e17dc2ebc023ade83157135a9f4995e8737ae4c1b8566fb78787c2171d3efe546cf0d19e0f0e78387870278ef01078000f178f331e173cae78dcf0b87fbb06eb2f8b4c6dfe39c8ff99fe7d78fe5d71ff43f07c4d25ecc82310dd9344c81dcb931a9e7af1422ce17978783cf0f0f108f008f188b8b2c1239663cf23c123c5e3c9f41bc53d786478e4caf32413951909cb9d373c2f656bc9bd8c19c1503839f8a385478947c51b84878a8786c7008f211e233c743cc6b585b97ccf3c7ec1f33b18fe6d787e3756fd8efe4978ac7a6472eb6068f47e112555e761e031c1638a07097d8e8789078161399f244fdb7149864b3c5678acf120279b74608bc78edf23660d15fbc1558547f4d4fe0dcf415cfafc445a423a7552365736cff869a7749f4eaeca4f473302a6e1b81f7834f1a063abeee3c9f754c7b7f6fc467cff363cff2efdb3f0d075f9f2e2fa7e43285fee3dda787ce2d1c1a38b470f8f3e7c065f718c037c073e872f9c790a1ff05df867d67b097329b35fb926bba54e31e7e4a9a986323d4878d8a2844ffe49c47777f8577eeab2d2648b31331599d97bdae4ab3dfc1b7cfad7834fa14ff0153c7e4dddff4f19b7df89f51f1b7bbe1dee73f6fd7afb2a5f8afbbe5c86e0077279821fc28fe0c7f01369d97c42e5099faee74e3483ff825f2c9f23c76f2b7943a9367c9229fa91eff77c9232d4710f7c82a7121e814c856af007f087fcb863c9cb41293684fc08be0e7f0cdf2078bede08fc059eff7ee3f61f36f6d4deb694803f916fbbe56bef7ae9843f85a8e4b4823f738eae12b4e1cfe19bf017f02df836fc25fc15fc35772ff0374244ac20c0b67c9bf161c19704f08e87a613edeaf73dd79b1893965135a47d47f827de98f27027bf1e6d10720df84df81ff05bf0a9a6cfaf7739b2fdd64f787e3f36fc5f336eff6963cf8f3743e7fc7bc54fbdfac7ef88de0e7e177ecf69d0cf3e02864051d206024769de11700442ae8d384f10b8ccd90971e02b2ebf7feeb7f9bc2fbf24d88ef8ecbdafc17e23765d04670417f95ae10d4f324370e5da18c10d0195e8217838764bb9a508fcbf87e7bf8a6ffe7f1bb7df19b1ff34e3f6fdaf5c01522f3fc2ad5e73a2210814f78820441021881124085267e7237872f2bf820c418ee085a0405022a87815395ac4d7253312bef4e5578209f85879c33344a022a042070886428fc52820e3866044c68d7c3969dc021d01416548af3a984846c9c4c9f7a4ef7733b517f7a73efe2da63fe3f117adfacb837f895bbf6ef877c5fd7f7152c7fa7adf23c3afebd79a1339a3236a78c65f4bc3280a21a509a608a873cf11980816082c0436822582158235820d822d0212ef1ec1815f099e232f9e7c6af084ee39c96f54f705d79fdcae978230fe146e5b8ccf725789a72133f1a5233627bd6b8843e8940fc162be21a56922f840d042d0ae879fbb6c2a8d85c1279dbc1702fc785bfa35cbf9b752fe46e2f7f0fcd2f7ff8fc4fddf0d8f55c363497836ebf7322b041d0484500f411f2143a82074107284022110ba08cf082f08af086f08ef083d840f4e3630f4e562ce66c61385fb23e6cf59f15ea9733f89fb512e3d7442fef14218384ec41b2ac250999b4ee9238c98a09a6284544a2a5f60c8f7513f5ee8e2ed64ff0e8fbf3768ff029ebf0e2abf13f43f0c4ffd0648be2dcdeb458d9ed49ef08930439823244916084ba7f3508e1b84154212a98670807088708450179708e118a1e1540e4f7d25232c277cbae1ea91e9012f8ff594e8b3ede41d91cee5162d6bce6c82748a70262d5b3897bb9fce9a62d44368225c20b410dacafd22b5275cd64b61f0a7a5333f65fd25dfbfd7a17fdbe8fd27c2a3d4fd52930b51bfe059215c23243cb6087708f7080f088f084f081b089b083f10b610b6117e22ec88254168f01675fd2ec21e279f79f4e0de51699d1561bc3ffd0dc57e207702397710f6655aaf9646d8c8a984d70911e363977fea8814440e228e48c87959e956f2f7f4c15ba67f0c777e42f25f6ad57fa13dff5a75fe59e3267ba755c3f3909e1b1d232072119d115d105d11dd10dd117988e82f1f518028441489435fc46336ef71758b284694204af964e1a8094b53ee5fe4d6226e0d8f5c4b7db2c4bdc9f7a41c7da104bcd7209f4d26b778ad78c310ca98691aa227a20c518ee82557d5be177dc9778872b953fd9eea3743cedf5dfc1b8bf747edf93b7ffa3f0c1ef9c8ae2e507b2ff4958bf4a3025189a842a42222a10d100d118d1051ff1e2332104dd8698d68ca668e13ebbcaad8d42747808d3a88ead40c973e7b296cad33bffefcca29a8a039c1c356a41ca6cc2e3e3d399929dcab480ab1e74e6a323d42b470a626224bbeeff97a9f26e46ad0f722cd8bf897f0fc2b847ee7b9fdd4bfff4ccf4d3eb2ae195b49bf80eda4cd8f6c444b442b4484c10611290761b6477440744444d6a8c11773c2860d54a918af1b530d366a8b6d1751939f0ab9935bfe7aefcaf35e86d842f42137cb4d0d11cea402b9901bc95c99cc2e767ef2111934baa78de81311814c05f510f511b37a7de8c4d9cde4f2dd1f0b6e6305b1f345171b3197b3a88f1662511310bb92ea953d5fabb1df8be5def4279bf62fc47d576a627f437fba3f3eff4297bf21ba3fbefe0d36f25d7028df6cc537c4f79a7f0ff103f1dbaaaf110788a9c911e21871e2f031e214f11371863847fc425c202e11578855c41ae28153046c54b249205f78c643f9e1eda8602b262743fd54e6a3ab54d60bd8bece5bcabb07f995884f5c8ee46e428cf3c3522694cd9682bc393da75056b81d660d11eb88a97a03f104f1d491cd9e219e2336112f105b886d67d540bc44bcaa89b8df2026267688f7351d101f119f10d36d4dc41f8809b636e24fc41dc45dc43dc47d244c925c73522f3849949a1c245c2e3bf9814122e4322e8a3712b73e9eeb23e4f22ef9d445ae224aae486eca3d4672af8f1e92477dbc23f1bfaf044842241192b83e49ea635ad31349862447f24252202991544854397b926870a7ca7d816480648864e47cd0b98e648cc4403241320545f7c91c898964c14727ee5169165f5021f67bd2999b95dc12e294f2e380cf0f6cd967c3cc71e8862592d5fbdbd21392b55cc44be48472b335e5ccf7b6dc60c6becaac2bdb23691f920d922d921d923d92039223127ab081a489e403490b495b2ee54988ef0e123ae921e92365b219a982d441ca65ab5221e54ee368eaca2f4cd233d20bd26b4d37a477a970818fd4ab4da25c9c85f451135d0ce472545238a9676db9a48b280d91464863094f9a204de5222fc286ca79af4e4d9f35181ed20c698ef4859404ed7f43f590309025206ce848ba22b5e4f645f70fa425d20aa98a5493f0a403a443a423a43adcd2b16da463a406528ad623a7bb97814e3a453a433a476a22250e2da436d7dbc229c4d9e7d904e912e90ae99a3f6f62a509414c6ef830e62a934903c309e35d25d4dffbb975916ec59123dd499cf66b27cdf8bacf5667a7bcf1c311e99e91818b5c2688d70352ba7242da40da444a575a48db4849ee1da45d674122e821ede3c9f054f074f0e4780a3ca1884f3c5d3ccf785e6abae279937df679c7d3c3f351139df8524064f193dae048d95da451a2ebc9f5e75b0c32806421094552a09b552fba4ba4ce91f249e349350678867892d9b9cb77edf20d6f4d6f83f9b65d6f1b781fe119e399e099e2f9fc85e86286672e89707abef02cf02cf1aceaa3aad85d3c353c07780e253c4f2a47c773ecf46fd2ac3d0d3ce9e214cf19df787293ba86caec1e5b18fc4085cf9d8aa461e2b9906fa89f16370c27394884622ad0166a1df7e0b9c47345aa22377e22ed3127a220d9adf1dcc8846c67e26fcbf32e731afc4a8fedf0dce379c0f388e709cf069e4d3c89f596c30b87d1836d3c09868efcdcf749dcf7f0ec2363a0982b73907164427ed196b9c8cec82ece6cae90d5caaec86ec8488e6b641e91736c217b20f391054a123af61259882c92706631b24476f6b7b8dfe759ad013454bcfb3ea1923d9165c87264affa58d4c752c2905552fa992a07423a661ab201b2617dd46a1ad5e774d4918d6b13578f7f648d3303d4fd2551d53364736426b205320b998d8cf85c21a3566c906d91ed90ed4560f0598aecc047213fee99dc62bd89ecc87bc4de09590319fdfce091c58c8cd35890b5f8da27846a78b236b24f641d99ec695ac9af15b0e6592c5624d62e33621ef478a951108bac87ac8f9c2157903bc8397201f9896b0fb98bfc8cfc82fc8afc86fc8edc43fe40ee230f9087c823e431f204798afc893c439e237f212f9097c82be42a720df900f950b4e9fa08b98e7c8cdc403e413e751654cecc59f844c8e7c84de7f4a9d0b0912f9c45cf696e944faad152bac4985d1399efcc21772b5f215f23df20df22dfc9b512f95ea2921f901febe309790379b3a663fdd7c71742cf408e4f790b791bf9a75c539e779077158bd8a656f7f162782978397871bc44fd09a58bd719af0b5e57bc6e78ddf1f2f86753ce64d250f47ae0e53bd4d25780578857c47b741ee395e0957232e0af275e196fc424f31a9e578ed70baf421ca8f412af4a2688db067c7276ae29df6b4a5b57da33e94ec85dc8d6ec32c14bc58b0a1de035c46b84978ed7182f03af890c8f5f53bc888f395e265e0bbc2cbc6cbc9678adf05ae3b5c16b8bd70eaf3d5e07bc8ea0e0f7d5c0ab89d787e312972dbcda787de2d5c1ab0bc2fed547c15028281c141c05392cf527a4852b3a218a3348dd8b2b8a1b8abb42f6adf0503c50f82802a7754711d614d5a3885aab948e224691a048513c516444f5b216ba9ecb23a9e0db672b5e280a14258a0a1481141a8a811c208b218a110aba7f8cc240314131453143314761a258a0b050d828968a61c98db1d94dbe45939b18676ce6a258918913eb1c72034f2a7c83628b62c70754ce5eac753ea1e1fcbddd5ebe25a5910815075109de9af136d57d7492218d4f4c25d19c9c2096ebe4bc8091af5cc82c1c289a283e50b450b4517c4aa88a0e8a2e8a1e8a3e4a865241e9a0e42885fc14b774519e515e505e51de50de517a281f287d9401ca9048212ccb08658c324199a27ca2cc50e6285f280bb93cac2c5156285594da370d500e518e14ea01a58e728cd270263d941394539433947394264a2ad94249f72c51ae6a5b7a771ad29c4a2ad7ce926ed8280957b6c4d216e5ce59104b7b940790d9284f281b289b283f50b650b6517ea2eca0eca2a4bafaa8182a0595838aa312a8001a57aa33aa8bdcb1346df08f0605304c1d4867babaf27cc3e64b361fa1baa1baa3f2503d50f97cb7629b038f5556ad49c8ef8cf372fb635401aa90bd4e022db6f098ed3924c12a52bc4229f6a862e62872674c77a23c3f64c6e8f3d0219fa74a50a5727556f54495a1ca51bd5015a84a5454a68a4aabbd7efa39403544450ce9a8c6a80c54135453543354735426aa052a0b958d6a896a856a8d6a838a1ab343450c1c6a3aa23aa16ad4d4ac894e3e50b550b5a539ad3e5191f1f1e4e05c7551f5944384aaeff4e750195405aadcee1faa909364aa0bf50cf502f50af506f50ed583fa80ea430da0865023a831d4046a0af50935839a437d412da096502ba82a540d24747508750455873a866a409d409d429d419d8ba5ed349a4ee3838250521aa826d405540baa0d75599fd0c535d40dd42dd41d27f752dd433d38f7afb8a7c7b70f3120e68ec253c480583cf10eb1482d8fb84d36edc96e9f6c3990b34a6a930c1d7fc67c434c7ff0f38994096a8bdf63e6dde51a54b52d01533f9d909ad7e167ed4d50bb507b205dd41834c579f4eb847e9c88bb1d68427e41adb9d0ced02ed0aed06ed0eed03c680f683eb4a0a6105a042d8696404ba13da165521db5bc3ebea015d04a681534159a066d006d086d044d873686667046354ea04da1cda0cda199d016d0ac9a6c684b682b686b681b685b683b687b680768476827a5453734a035a17d406b416bcb4f9fb54f68c47f175a0f5a1f03868182818301c7406000c5e65c5dd77304373657957984812bb6f4ef19830b6b6f31b86270c3e02ec87321e10f1e7219e2c06773f1de665cf05ce7d60183008390bff6721fd6e653dcfadc1af384f38fa792efc8bec9d40e82dc3e9d65501a530ca863c672f98ff8a83378be8830883148d8c5c420c5e089418601d5faaa8f0506250615062a061a06030c888f1106ba4381de608c810132be032a7986c11c032a6481818581ad50df1c2c315861b0c6608301b56a87c1be3ed24f62fe88c14912851a83464d4d0c3e306861d0c6e013830e065d0c7a18f43164182a353918f26f12727383a18be119c34b4d570c6f18de95632155f0e648d774e861f8c0d0c730c030c430c230564e0d0c130c5327d0307c629861983b7a81e18b7ba913d35f745e625861a86248f70c301c6238c250c7708ca121428df74f9cc6ade104c3a9933e58f8fcdaf248583686330ce7ca52e5a39d38520526ef7e38e555784fa164d23bc8777cba6537e263c18b944eb8b766494be6b093398284cc6a931a6cdc6597b9a35e7979e23a716f6148852f315c61b8c67083e156a67dbf84ce6ba29c9e4edae484b117f0c640260601357b87e11ec303864727a2a74e1852a54d27298930fcc0b085611bc34f0c3b187631ec61d8c78861a460e460c43112f597ee2e46678c2e185d31ba6174c7c8c3e881918f51805188515453fc4d094629464f8cb29a728c5e18151895185518a91869180d301a6234c248af8f63a5b7c7c8c06882d114a31946738c4c8c16185918d9182d315a21a647d6186d30da62b4c3881e39285b2af688d1497827feec0846e70d8c9a187d2893097388bd563d25aa4562bf128c386e736a95dae055c2d3360f97dcf39d78c7a68944a87317e443770742dd2f9f435ef83279eab090dbcc5f874c8bea3c901fcc1ab19ec2c79eb224e63e994d557630ea3ae7c0b992b07a82ad7841bebf45ce83e31f84d87155771a2d993ac96b4b7f442db975e7af0f31a1fb498357d0197405ba039d8310947b0eb8d0cfd02fd0afd06fd0efd03de80fe83ef400d42df4087a0c3d819e427f42cfa0e7d05fa01ead97d02be82a740dfa00fa10fa08ba0e7d0cdd803e813e853e833e876e425f40b7a0dbd097d0899335f40df42df41df43df403f423f413f406f426f40fe82de86de89fd03bd0bbd07b040f2368f53ec64c9cf7182b183b0a0db7638eb1909b888c5d8ccfe2b2c4f882f115e31bc67771d4bfe0e1930e9f29ccb9f15580b127419afbfcb195a44d498194439bb753bac131db4a5ff062e3e447ae3d1cb657fa17270d05f13a7e30315696333e14fc63e9e8290f1d8c7dde9e89658271e0f00685061887ce9df88b308ed960c0c98318277c7817fcc57bc4652a8c395f25bc2879d570ee9c6bbb3add73577831c64f27def2a5c34981c619c639c65460a118b6b0a8b5545485b18ab186f100e321c6238c758cc7181b184f309e623cc398ee34315e606c616c634c425949fd1baf31de60bcad69571389f280f111e313c60d8c9b1853bd2da74fc5b631fec4b8837117637ab60f83c1506038fc73c8af3b181c8610f329c79d0f07bc9b31f35c6f19e2c2a0930b8c2b8c1b8c3b0c0fc68393eb61f830021e4c6184f20b2c238211d7da53bd88948ee0cfa158d00389444866865cca8eac4d650a111a84e6fd7a998fc7a30b9b104207664e79ebf546882d35e65932adc0a5c7fc390caaef0923834181fa078c97a4a7c917a6a058cc2888785549ea59a233ad334cd5d499f2d312464971b5b271956e26e335a312ac64a34c3934652ebb18324be27c0d439559ab4c55d80d195ed80f41ee8041348031843182a1c3180b66c03078e0f38f8c6754fb040649610663ee503c6e983016302c18360caa7a05632db5d0d8c0d8d637ef1482c7d8c338f03331738471aa892e3615ea130635b005a30d834aeb38e15620e4cb3e0f1e4ee9f1c18d1f63185d183d187d4c9832d73151943dc7c4c18473ea221321b7e399b82cb240366372911b285feaef7b68907792805d6c9edff9a694c9a76305343cdcfae240c87f901a893be3aacd0fc6f2a9705361438d4f670edb394ec1d536ef9cf920513a57961672d7eaf901931bd70ebc9af27885c91d130f93076fbbfc440e09b1e81391ca13f1d6455916dc3cd474649b062601262126112631260957e798a4ca22e1cf2bddc92617ae117b4f1ebb720377eef25928c61b99a339dc0829326a7c56538ec90b9342a646d566fc3475ee2eb3e9dfd2093e31a99cf2cc8643be7839a4701355ec482e7432c06428157132128b842c87424eda849e1a63626032c1648ac90c13e2cac464810909d4c68444bc52da360f6fbc4bf7af657a8c7dc83f4e78bcb859f2d30e930d265b4c76cadc600b12d15eeec1363908f781c911931326d4f6a67c99fd7167becbcbf722de61ceac21372287225e0a5627547adbc939d7db7cb8e5dda6ec02a32d358c2221b947d8fcc14723563cf93e57aa159f98ecb664930691a3cd79dee7c721d7afc2f7c59e58274174786f884917142d4efa62af917ec869c1c68aa0e2c91a53c6e9c1b9cd2898982a983a20ab301598025317d333a6174cafce73c7e66b7edab3f9c2c99698de6408a30432bbd8622fac01a677418ef5d4c3f481a98f6920130b138da6421bcb3dc8d44aa6ade92ae4ef102af24509a3c175af2c754c43315bcb84a72b7a3cc2342612238dd929a609a6a91273f1dc62fac434c334c7f48569a1240b4c89e70a5315538db72c4c07bc933834426f76829093450d311d710a83a654cb185303d309a6f493303e603a77d28913f4303531a5d22ca607755ed49c5dc6b5636daec907e307ce932edf157cf9e0eb94f787e2ecf1c7c969369cd7801ac65ba4312799f45bd1f976422e839336586592d7c08a35f90bcaf3937488e50d76e9f23d714fda96309304bde48b3da62b4c09098a9689bf2d2b27bc71e3a9c73b86704ade3ecb8ff428969aee30a59b89ef23a6274c1b983679bb8de907a62d4cdb629ff032a04e233878fb8ae927a61d4cbbc2a2b65123fb129e19c34cc1cc118a8b19c74c60066eae78abc2cce596cbdb5b91ca34cd989d31bb384557908330bb8ad918b31b667799abf3a0cbc40a83b5b02e9851990fcc7ccc02cc42cc22cc62cc12cc52cc9e22a12b196639662fde8c9dac23b5c7ee3beb91b31c48ed5137a228312b30a323f1a03ae1807f18fc78513207330db30166c4c088256bb61eb2ce9ef554ccea170a32ef923560798b8d9b5ca3918d1a36160f87b7336e1dd9dc14c796507a3c998add40261b1bb7b9b612b32ed7a8db9a4cec3133788f789d308b6a9af2d9811f468c02e9d90cb33966265ba78e436d5b6066c9a16566b34526771d5912c7f47325339c4529a300764bd25963b6c16c8bd90e332afc80d911b313660dcc9a987df0e0405657e6d21ada82c6801949b92dfdf26823d6aaa0607ef68959478adb24997631eb61d6178eafec633ed3f86e2cd377cc19e68a701499ce9e428db98339c75cc81465a46d6a2873d6e1536ec93677313f637ec1fc8af90df33be61ee60fcc7dcc03cc4350a4398f314fe47c0cd98cdd59a66197f98a15fe912b5b4b36739e62fec49ca2402a27c7fc85395d2c79d955c8d9a3f0635e61aeb22315a589de88393ae6835a7b8c11737d3e9df27b2953916b0a0fa8a0212f2dea6e8ed7e3cd8a7f844ab7e4eb84371f627ae024235b23af41a047510be623e594f17ec23b2e2b6c090f99beaa81b9cee61b117f603ee659c1db8237e620cb3b09f83ee35d4ba63da55e3327e94c319f613e77c23de626e60bcc89631bf325e62bccd72c1a4b78e61b6667986f657abadd84b774a7d860bec37ccffb8ea325624f7591e88f989f48d682ecc9bcc1370ae64d4166333bf0e1836f35b1a4bae8ce16eff5316f8ba1813921d1c1bc4b78cbbc76ab91cc59870b6fef954ffaabc70e4dd0a86932980a4c0764154c0113305d9057665e605e69aca5b14aace9e24d266b5063a14f4460c9cdd89a63f15ac2bcc3f4603ef82ee18b52906d27d5317d98014b87320b880311b595a360bd825d46efdd107d27df2b7987ba156f0df94e53562b9821cc881782970bc598bc49ee753d5c4b2f6ec6f971caf70371fe10fe5626389e54bc0371ff54bc97f2d8c955c2fe8bbd766c9130fb2534934d6e3063a6568c5cea1179104d3efd605b6a70023385f98499c1cc61be6016304b98154c1526713f8039843982a9c31c937113147c9806e399737dc09cc09cc29c9163e6642b098f398769c25cc0b460da304928d41c7a6423b3fe500f1bec78f320ecaeb03fc9df5328b231b7307730f7300fc238ca749d035b26ef99767810c33cc23cc16cc06cc2a4f25b30db303f25606687ad3a30bb307b30fb5830de790835c342916abd70f8a6cff736169c373c2c041660f3213babe23473bc4fdec9f8768485abe81fa25af382ee39538822484ff2aba2bc5f282c2e585ce50af9f58d3f4714766041a20cf996637197695c83bd1c937615effb824732ed84eec8e4611d7ad0abe981858f45402e03c546dcecb1ea8a45c86703a5ad6111611183701a93fa3738198445ca354decef583cb1a0c6e458bcb028b028b1a8b050b1a0a706580cb120ee752cc65818aca5707b2f3c92afe73c5331def1fe85db1f584cc424128c9caba7b8317e24b6a758ccb098636162b1c0c2c28264b4844ccff32904b058f37025272bd754fe068bad1067311d8ad2c56287c55ea1717b4126facc2906581cb1205937149162d1c4826a6c61d1c6e253693cd98cb8ed60d1c5a287455f6af006622204b9e616939974af0c9602cb81c5799fc20955becc9ef84aaf034bc082746e8b3d2c57a6fa28d6cc33d92566ee8c058df787f311acb3a03e6b5dc888f155ca5f5766cbdc41cc0e147dc68a2dcb15967ff2e313d695dc01de15fcb88075837587e5c17ab0670ccbe7db031f55dc7f2a41e894195f005620e31e2b8415b1d7966dc68edf1745c5c853a258daa2a71258292c2a398395c37ac1224e4a58152cba4103b964d610778d375d5823fefa64a70ddf0ed99193d1705e8570fabcb391f0583ae993fcb9bb0a34618d6119b026b0a6b066b0e6322f536e3af188f70ca5d757fa4c0e6013883d49c0540c53cc9fdc5ccb04a66494c81d8f87208fc3b260d9b096ca610b6b056b0d6b038bce77b048ac0758475827580da7220c9a528cf9904a765ea993cd9cc6077f12421ffc448fb460c9e414e27673729521a7e6087b21ce5405b9b84d27269bd693eb06dcb6b8beb5c72218bb624c713b97fb4f583d6e9ea8f172b0212f60de255de1b32d9f6d58917223e7f39db87dc2eac3668282e7c751e447d80a6f79ce79c03fa70ec170fbe0e685774ad8c4e5076c0e5b70ea8636844fc6d7e7a781e3577ce4f3e702b60bfb0cfb02fb0afb06fb0edb83fd80edc30e6087b02327256fd8e1874c864aa9c7b65db9817069f28dcebbcc79653c9f7175cd1b25f5564116cf8e612720b7d87e82862b3b87fd825dc02ec9c1914ee9a09ee7670b116c1d66c9c4d09b5031e6327529917916ab29ec0ab60a5b833d803d843d02854df618b6019baaa01b66b0e7b04dd8d40a4b06ffb60d7b097be5a46771a5e6af616f606f61ef40aa7fa7961e60931c4eb01bb09b20edb75bb0dbb03f6177f82c502820055544616c3d250abb079bc6008b8203b9d5abadf2f8ca562f99d0fb48a8f68535659717053a4e31515a0e964c26a20c0c52612c15515ec54a91a9cbeda1620b279df17947845d2662de0c24424b872519961c4bc1bd8e20ee97e0fe804f0c4e03cfd2c5f28ce505cb2b96372cef587a583eb0f4b10cb00cb18cb08cb14c58399611d2acef8463393faf0e65fee1b582658ae553ec4658522d39962f90a7b42cf9810aacb054b1d4400eee728825dda36339e6f18db775b912b6d19479af8eae98af09212c0d995696ecd27282e514e4412ce7589a58d66f689644b6a21133d48415966b2c37586e456863b9c3728fe501cb2396272c1b5836c5831effc0b285659b2da9f04f2c3b58769994400fcb3e560c24ba24c0cae155dd47579c8503b650b012fce9d7f0ac80958b15fd77c1eacaf813ab1b2f2fe4593bfc538c960e0658ddf9cc6079c5973799bd3da9684425e7042b8f6f1cac1e7cb9e1873b4545326fe2ada5e45d91f498177272991613ac7ce71cf14143998eb0226e42ac22aea73c3d6015639588dcc72a157e8115d59e619563f5c28a7e96728a775531a32b5c4fce2f94a184c7ee118969c906a59c9258a9586958119f43aca80a1dab31df70ac0caca8f6295633ace65891b3d510831b560bfe5990024913b7b53034a56d5c5922a5616c89954d212d5f7d6045e72bacd6586db0da62459cecb1229e8f589db06a60d584bcad85551bab4f909bb0ea62d5c3aa8f3503759db58335e7bea3547445c81d92d76e4d67ac2fdcd3b1be32f2dcd637acef7cdb1585c51f0fac3dace9f886671d601d621d611dcb18fb4cb7269ce2322dc59ae8897586758ef54bd9aeb9d91624dfc91a6b72dba9be929ec2ba02051cca550c3732cdef2462ce95a97d7e103cbd3a65c2464f517d4a2bb7d69ce880f500e4718c43d1a49311d6c4e598fb5dac0dac27584fb19e613de7576a8689f5026b0b6b9bc62dac97f2ab71326eaafa450b83b7a8a92bde57b126ae36586fb1de61bda7f1036baaeb88f509eb06df92bc9a040fcf0d9ecc091eb6d0398df06be2aa85759b274331a59f9f5877b026667a58f7b161e20aa5f709f2cea92312e41bb2d21f0846d2efa2b1536efee56273c6e682cd159b9bf05fd8dcb1f19497c0e6818d8f4d2034ba27c426c226ae29c126c5e6894d864d8e0d3d526053f23b555461a362a339e25cc3b3196033c466848d4e319d401b9bb15c8638da62636033c1668acd0c9bb973ae406eb4fb9461f6708e8d89cd021b0b1b1b9b25c1c3b384c258fe3a2f9f8c9b2f27827834d8029c9ca8cd8a1c3642882717877d60b36606f1b1c1866ad96143ce618b6bc4ee814d88d72336276c1ad834c5dde3cd0e36d4497ddecdc81f757853864d6b2657539c88b11636c433358c6eeb62d3c3a68f2d85cb2d6c156c1d900b4aae5938975b746d5d6ccfa028f843e1a7914c52175a7c721796ad2c36c2ec0bc3c7f60a8a8eb7776c3d6c1f9cdc9c2b9df82217d806e48cc8d9bc6d484e04a731691b611b634b5d908e29b64f6c336c73868808db17b605b625b615b62ab61ab6f4c810e44f6f756cc7d81ad84eb09db23e5d99614b4c9ae2ba72ae176cebc49820eddedad892221b42fbc47605d292e34a86dfdb0db65b6c77d8eeb13d2843fa79740c43e854d609db06b64dd9c5b61fd8b67ec293bd98cc35236482ea912ab69fe211134222e08c06866d5b297acae2931f18b6545d0734ce4fa8961e280cda31ec14ec1cec3876023bb066cc1b67ec5ceccefc18cb70e178e427724cdb0a75dbdd05bb2b6f4e65c4b7bb6147470fbb07763e7681846717621789ea299e63090f8d3dbb18bb04bbd42934be5339ee426b51ccc4fb5ccc37d260ec9ed22aee32ec72ec5ed815d8956232c0ae221bc869b4dfa9d869a461d230eee8fa1034f2eda8e43176f4e004bb29763331fe20c26e8e9d89dd023bbad9c66e59d30a3b2a6783dd16bb9d1851457bec0ed81db13b39830abb0676cdfff5bfffdfffe7ff0329a3611e - - - - - pbnOK - clicked() - PluginGuiBase - pbnOK_clicked() - - - pbnCancel - clicked() - PluginGuiBase - pbnCancel_clicked() - - - - pluginguibase.ui.h - - - pbnOK_clicked() - pbnCancel_clicked() - - - diff --git a/plugins/http_server/pluginguibase.ui.h b/plugins/http_server/pluginguibase.ui.h deleted file mode 100644 index da82f9d777fb..000000000000 --- a/plugins/http_server/pluginguibase.ui.h +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - - -void PluginGuiBase::pbnOK_clicked() -{ - - -} - - -void PluginGuiBase::pbnCancel_clicked() -{ - -} - diff --git a/plugins/imagemap_exporter/COPYING b/plugins/imagemap_exporter/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/imagemap_exporter/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/imagemap_exporter/INSTALL b/plugins/imagemap_exporter/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/imagemap_exporter/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/imagemap_exporter/Makefile.am b/plugins/imagemap_exporter/Makefile.am deleted file mode 100644 index 0f9c126bad69..000000000000 --- a/plugins/imagemap_exporter/Makefile.am +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libImageMapExporter.la - -## qt designer user-interface files -plugin_UI = pluginguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = plugin.moc.cpp plugingui.moc.cpp - - -libImageMapExporter_la_SOURCES = plugin.cpp \ - plugin.h \ - plugingui.cpp \ - plugingui.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libImageMapExporter_la_SOURCES = $(plugin_MOC) - -libImageMapExporter_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CXXFLAGS) $(GDAL_CFLAGS) -libImageMapExporter_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm - - - - - diff --git a/plugins/imagemap_exporter/README b/plugins/imagemap_exporter/README deleted file mode 100644 index e794b646a5e4..000000000000 --- a/plugins/imagemap_exporter/README +++ /dev/null @@ -1,15 +0,0 @@ -############################################## - QGIS PLUGIN TEMPLATE DIRECTORY - - T.Sutton 2004 -############################################## - -Please do not edit the files in this directory -unless you know exactly what you are doing - -these files are used as the basis for creating -new plugins. Altering these files may break -the automated plugin template generation process. - -Please visit: http://mrcc.com/qgiswiki/PluginDevelopersGuide - -For more information on creating plugins. diff --git a/plugins/imagemap_exporter/autogen.sh b/plugins/imagemap_exporter/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/imagemap_exporter/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/imagemap_exporter/configure.ac b/plugins/imagemap_exporter/configure.ac deleted file mode 100644 index e1b24a6bb80e..000000000000 --- a/plugins/imagemap_exporter/configure.ac +++ /dev/null @@ -1,52 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(plugin, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([plugingui.h]) - -AM_INIT_AUTOMAKE(plugin, 0.0) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(QGIS_CFLAGS) -AC_SUBST(QGIS_LDFLAGS) -AC_SUBST(BOOST_PATH) -AC_SUBST(GDAL_CFLAGS) -AC_SUBST(GDAL_LIBS) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/imagemap_exporter/icon.xpm b/plugins/imagemap_exporter/icon.xpm deleted file mode 100644 index 8b7d9c3f54d1..000000000000 --- a/plugins/imagemap_exporter/icon.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static const char * icon[] = { -"22 22 3 1", -" c None", -". c #0000FF", -"+ c #727272", -" ", -" . . . ... ... . ", -" . +.. ..+.+.+.+.+ . ", -". + .+. .+...+...+ . ", -" . .+ +.+.+.+.+++ . ", -" . .+ .+.+.+.+ . + ", -" + + + + + + + ", -" ", -" . ... ... ... . ", -" . +.+.+.+.+.+++. ", -" . + ...+.. +... . ", -" . .+.+.+. .+++. ", -" . .+.+.+.+... . ", -" + + + + + +++ ", -" ", -" . ... ... ... . ", -" . +.+.+.+.+.+++. ", -" . + ...+.. +... . ", -" . .+.+.+. .+++. ", -" . .+.+.+.+... . ", -" + + + + + +++ ", -" "}; diff --git a/plugins/imagemap_exporter/plugin.cpp b/plugins/imagemap_exporter/plugin.cpp deleted file mode 100644 index 8e3e64809f4b..000000000000 --- a/plugins/imagemap_exporter/plugin.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/*************************************************************************** - plugin.cpp - Import tool for various worldmap analysis output files -Functions: - -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// includes - -#include -#include -#include -#include "plugin.h" - - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include - -//the gui subclass -#include "plugingui.h" - -// xpm for creating the toolbar icon -#include "icon.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "ImageMapExporter"; -static const char * const description_ = "Exports imagemaps for webpages"; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -Plugin::Plugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ -} - -Plugin::~Plugin() -{ - -} - -/* - * Initialize the GUI interface for the plugin - */ -void Plugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon),"&Image Map Exporter", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Image Map Exporter", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("Image Map Exporter", QIconSet(icon), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Image Map Exporter"); - toolBarPointer->setLabel("Image Map Exporter"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void Plugin::help() -{ - //implement me! -} - -// Slot called when the buffer menu item is activated -void Plugin::run() -{ - if (qGisInterface->activeLayer() == NULL || - qGisInterface->activeLayer()->type() != QgsMapLayer::VECTOR) { - QMessageBox::critical(qgisMainWindowPointer, "Error", - "You must select a vector layer."); - return; - } - - PluginGui *myPluginGui=new PluginGui(qGisInterface, qgisMainWindowPointer,"Image Map Exporter",true,0); - //listen for when the layer has been made so we can draw it - connect(myPluginGui, SIGNAL(drawRasterLayer(QString)), this, SLOT(drawRasterLayer(QString))); - connect(myPluginGui, SIGNAL(drawVectorLayer(QString,QString,QString)), this, SLOT(drawVectorLayer(QString,QString,QString))); - myPluginGui->show(); -} -//!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating -//layer -void Plugin::drawRasterLayer(QString theQString) -{ - qGisInterface->addRasterLayer(theQString); -} -//!draw a vector layer in the qui - intended to respond to signal sent by diolog when it as finished creating a layer -////needs to be given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); -void Plugin::drawVectorLayer(QString thePathNameQString, QString theBaseNameQString, QString theProviderQString) -{ - qGisInterface->addVectorLayer( thePathNameQString, theBaseNameQString, theProviderQString); -} - -// Unload the plugin by cleaning up the GUI -void Plugin::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new Plugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/imagemap_exporter/plugin.h b/plugins/imagemap_exporter/plugin.h deleted file mode 100644 index 8659ceb780b3..000000000000 --- a/plugins/imagemap_exporter/plugin.h +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - plugin.h - Functions: - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include -#include - -#include - -/** -* \class Plugin -* \brief OpenModeller plugin for QGIS -* -*/ -class Plugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - Plugin(QgisApp * , QgisIface * ); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ Plugin(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawRasterLayer(QString); - //! Add a vector layer given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); - void drawVectorLayer(QString,QString,QString); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/imagemap_exporter/plugingui.cpp b/plugins/imagemap_exporter/plugingui.cpp deleted file mode 100644 index 60b93d998b4b..000000000000 --- a/plugins/imagemap_exporter/plugingui.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "plugingui.h" - -//qt includes -#include -#include -#include -#include -#include -#include - -//standard includes -#include -#include -#include - -#include -#include -#include - - -PluginGui::PluginGui() : PluginGuiBase() -{ - -} - -PluginGui::PluginGui( QgisIface* iFace, QWidget* parent , const char* name , bool modal , WFlags fl ) - : PluginGuiBase( parent, name, modal, fl ), qgisIFace(iFace) -{ - // add the attribute fields to the URL and ALT comboboxes - layer = (QgsVectorLayer*)(qgisIFace->activeLayer()); - cmbSelectALT->insertItem("- No field selected -"); - for (int i = 0; i < layer->fields().size(); ++i) { - cmbSelectURL->insertItem(layer->fields()[i].name()); - cmbSelectALT->insertItem(layer->fields()[i].name()); - } - - // add the available image formats to the format combobox - for (int i = 0; i < QImageIO::outputFormats().count(); i++) { - cmbFormat->insertItem(QImageIO::outputFormats().at(i)); - if (QString(QImageIO::outputFormats().at(i)).compare("PNG") == 0) - cmbFormat->setCurrentItem(i); - } -} - - -PluginGui::~PluginGui() -{ -} - -void PluginGui::pbnOK_clicked() -{ - // everything OK? - if (leSelectHTML->text() == "") { - QMessageBox::critical(this, "Error", "You must choose an output file."); - return; - } - std::ofstream file(leSelectHTML->text()); - if (!file) { - QMessageBox::critical(this, "Error", - QString("Could not write to %1. " - "Please select another file.") - .arg(leSelectHTML->text())); - return; - } - - - // write the image file - QString imageFile = leSelectHTML->text(); - imageFile.replace('.', "_"); - imageFile = imageFile + "." + cmbFormat->currentText().lower(); - qgisIFace->getMapCanvas()->saveAsImage(imageFile, 0, - cmbFormat->currentText()); - - // write the HTML code - QgsCoordinateTransform transform; - transform.setParameters(qgisIFace->getMapCanvas()->mupp(), - qgisIFace->getMapCanvas()->extent().xMin(), - qgisIFace->getMapCanvas()->extent().yMin(), - qgisIFace->getMapCanvas()->height()); - file<<""<"<"<"<getMapCanvas()->extent())); - layer->select(&extentRect, false); - QgsFeature* feature = layer->getFirstFeature(true); - int urlIndex = cmbSelectURL->currentItem(); - int altIndex = cmbSelectALT->currentItem() - 1; - while (feature != 0) { - unsigned char* geometry = feature->getGeometry(); - QString url = feature->attributeMap()[urlIndex].fieldValue(); - QString alt = ""; - if (altIndex != -1) - alt = feature->attributeMap()[altIndex].fieldValue(); - std::cerr<<"geo: "<<(*(int*)(geometry + 1))<<", url: "<value()<<"\" "<<"href=\""<"<"<getNextFeature(true); - } - file<<" "<"<"<setText(filename); -} - - -bool PluginGui::polygonIsHole(double* points, int nPoints) -{ - /* This is how it works: Find the leftmost point, point[i]. Check if the ray - from point[i] that goes through point[i+1] is above the ray from point[i] - that goes through point[i-1] - if it is the polygon is defined clockwise, - otherwise it's counterclockwise. Counterclockwise polygons are holes. - NOTE: point is an array of doubles, not points, but you get the idea. */ - - // find the leftmost point - int leftmost = 0; - for (int i = 1; i < nPoints - 1; ++i) { - if (points[i*2] < points[leftmost*2]) - leftmost = i; - } - - // calculate the angles for the two rays and compare - int h = (leftmost == 0 ? nPoints - 2 : leftmost - 1); - int j = (leftmost == nPoints - 2 ? 0 : leftmost + 1); - double a1 = std::atan((points[j*2+1] - points[leftmost*2+1]) / - (points[j*2] - points[leftmost*2])); - double a2 = std::atan((points[h*2+1] - points[leftmost*2+1]) / - (points[h*2] - points[leftmost*2])); - if (a1 > a2) - return false; - if (a1 < a2) - return true; - // angles are equal - probably two vertical lines - check points instead - else - return (points[h*2] < points[j*2]); -} diff --git a/plugins/imagemap_exporter/plugingui.h b/plugins/imagemap_exporter/plugingui.h deleted file mode 100644 index b3fef0a83346..000000000000 --- a/plugins/imagemap_exporter/plugingui.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef PLUGINGUI_H -#define PLUGINGUI_H - -#include - -#include -#include - - -/** -@author Tim Sutton -*/ -class PluginGui : public PluginGuiBase -{ -Q_OBJECT -public: - PluginGui(); - PluginGui( QgisIface* iFace, QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~PluginGui(); - - void pbnOK_clicked(); - void pbnCancel_clicked(); - void cmbSelectLayer_clicked(); - void pbnSelectHTML_clicked(); - -private: - - bool polygonIsHole(double* points, int nPoints); - -signals: - void drawRasterLayer(QString); - void drawVectorLayer(QString,QString,QString); - -private: - QgisIface* qgisIFace; - QgsVectorLayer* layer; -}; - -#endif diff --git a/plugins/imagemap_exporter/pluginguibase.ui b/plugins/imagemap_exporter/pluginguibase.ui deleted file mode 100644 index 201a71ca732d..000000000000 --- a/plugins/imagemap_exporter/pluginguibase.ui +++ /dev/null @@ -1,295 +0,0 @@ - -PluginGuiBase - - - PluginGuiBase - - - - 0 - 0 - 662 - 360 - - - - - 255 - 255 - 255 - - - - Image map exporter - - - image0 - - - - unnamed - - - - pixmapLabel2 - - - - 7 - 5 - 0 - 0 - - - - - 150 - 32767 - - - - image1 - - - true - - - - - line1 - - - - 2 - 32767 - - - - VLine - - - Sunken - - - Vertical - - - - - layout1 - - - - unnamed - - - - pbnCancel - - - Cancel - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 441 - 21 - - - - - - pbnOK - - - OK - - - - - - - teInstructions - - - - 7 - 7 - 0 - 1 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style="font-size:9pt;font-family:Bitstream Vera Sans"> -<p style="margin-top:16px"><span style="font-size:12pt;font-weight:600">Description</span></p> -<p>If you have selected a point layer that has an URL in one of its attribute fields, this plugin can help you generate an HTML image map of the current view, where you can click on the points from that layer to get to their URLs.</p> -<p> You must select the attribute field that contains the URL, the name of the HTML output file, and the format of the image output file. You can also optionally select another attribute field that will be used for the <span style="font-style:italic">alt</span> description of the links.</p> -</body></html> - - - - WidgetWidth - - - - - groupBox1 - - - Output options - - - - unnamed - - - - pbnSelectHTML - - - ... - - - - - leSelectHTML - - - - - sbSelectRadius - - - 5 - - - - - textLabel2 - - - HTML file: - - - - - textLabel2_2 - - - AREA radius: - - - - - textLabel2_2_2 - - - Image format: - - - - - cmbFormat - - - true - - - - - - - groupBox1_2 - - - Input options - - - - unnamed - - - - cmbSelectALT - - - true - - - - - cmbSelectURL - - - true - - - - - textLabel1_3 - - - ALT field: - - - - - textLabel1_2 - - - URL field: - - - - - - - - - 789c7594c76e23471086ef7a0a4275138cda8e1360f8a09c03a5cd860f1d669433150dbfbb877fb516b04493047a3e564d75e54f0ba3ef07bba3854f73f79330394da37412ee460bf9e1f2f2e5cfbffef87b6e5e57a3e94feb9199ff6d6e7e3c19a5d1def5553705de1e8094f24629f063e150f858b852c254e4952df2a3c2beb0061b1795065f81ad0b0a97d39ab0b745be22fcebfdcbc2756105f6555b780bdc546fef27705b35459ec16930578357c1d915fbb453b8510ef25e7888d743fe00ee7ed93f2c9c95055f837b678bfd93c259b5e06561df177bb85f2be75482fc33d8d8a07ac8915fed6dab1ac823380efec03f5a07774e6bc809fe1863b5cad07f2a1c35ea49c8a7f1de6ab97f17dcb8a4711f1b70673b037f09ef0fca7dd1473d6d657b837a318153a5b4e4eb79ca4e392fef7307aebc17ff18f973a169c51ebf80934b36826fc0d96b27f540bdbdf1c68a3f90fb5c2523f105705f192ff7ef17b656f2773be56ae85723f24de1e11fb17701d695f6626f47b876255fa85f35f49b457d68f2c65ee2ff0e7655eda47fc7e06a904bfca21fabde0937c27567c59f76cab50a5ea39f08fd5adbba2af6970ad70efe91b06fac95feba070f1f27fe5d09b7a6f403faad6e1beb2ae8ef8173a34bbe3cb86fdef2857a36aa71c27c0a36756f657ebe817d93c41ea17e4ddb642bfbe20b38b646f2c117857b23fa2c1cea925fec9726b5da0530faa7c96debc43f0bee5a6fc57fec87a66fb341bf10e2694ddb39e9af5770dd0687fcd00138062dcc3f0b3b8b7925f44f9b83977ea6457037f4a7c47306ee8335f08fc78593917c9d4f39a8d0598957d84665243eec8fe0a32bfd57839b688df88bf90d717050ea87fd14523456e66d63ca51c52cf113e28b2638d1e73be1184b3ef6dfb8cc0ff661745117f9bd70f265de2b7095bc91fe137b75cc5afa55ee8fa92e72f4434c2919c9df59e1aed417f39e4cca5aea85f91bc6bb71922fecc75465a3655fa23e29774a4b7e7f4c39ab1c4aff62df659b73d92fd857d9e5beec13d42bc7ce957c61be73372c44b1e70ab75aeaf315dc7749ee1f4f667f99384ccfffd3e1c889b33ccfd6e18e7b3ee693d93a7cca677cce177cc9577ccd371f75f896eff89e27fcc08ffcc4cffcf25e875f799197867399577895d7defeff8fce3a6ff0e6706ef136eff02eefbdd7e17d3ee0f1701ef2117fe62ffc95bf7dd0f9ce3ff8e7702ad66cd8b2633fe3ae8a6b6eb82526a24091d2471dcad4514fc77442a77446e7743143e792aee89a6ee896eee89e26b3e2a2077aa4277aa6177aa5455aa2e5f73ab442abb446eb78dea04ddaa2ed59b5a01ddac5b947fb7440e3993a8774f4b1c2f3fffc3ef72f81bc28dd - - - 789c4cbdc772f340b3653b3f4ff1c7c1ecc40d3609806e7007b29fbcf71d770080840c45ca5094eb97bf20f7daa90e8db40204ca646565656565fdaffff9cfcdc9e17ffee77ffdd7fca3f878acfe533d14effff99fd1623afdf9dfffdffffb7ffeebbf3b9dde7fb276e73f9d416790ff27fbefffe7bffebbb899fca7fa4fd26e8fcbba27f008a8ea54e02940be02e73b01ea1538cd0123c0c903605c972b70791b60a49fd401f493e31250d72ad87115a0ab97de0728f48e7100bd746b4da0ee50d2d32c40a577f0d93aad877a621440253d3b09305e81ab3b40560f56e0eb22808afe7506c8f9cad779002a5700bad465fb22407f057e4f02e8b3df6900bde3bb03e8f1959fb300fac9cf7900fde4f718d0a7c57e4e03e81d5bbf800195db9a030ac0691a402fddfa0294755be023807aeefc5f00fd64db05ab28c7ef5100f5dc8fab3f72572e00635e7a340820393d6e012c3047c3006ae49fa3006ae49f8300eafdefcb00eafdf3ed006aa0d3bb00aacb557b053a63ffe446b2de69644ce3657104c8e897b51b404ef5b7be01053f39ad02203009a0a4a45bef0178c72760c43b7ef700637ef2b51f4025fd3d00b881be6f02d0408701f48e9fe3008cb97600bdf47d16403d77be1540d57f7d0e40134a92d366ecab9117fa4ada8c393db13800647c767118402fdd7c00e416dc754097829d8c01055ff96e034a0bdd2ea029889e3837a01c3f7b801aa1fbbe0ec0b83d0ca0727c5f0540c66e03d08465009574b61340257df90d80b62c0230d4f703302a3756206bda432fdd7a035860ae6e03f0c40fa0a2e8bfff006e8faf23036a3bdd0b80fabc0d80cad907b881be0e02e82727a3002ad8e54d0055ff773780aaff7d1700e57811409f5d5339f2d0daeb19c012b4f50228a8dc741f50d11e9b156044d13fde02e8272f3f000bee6c37804afabb03f010bbe80690046d9f0450ab6f1f065039b60f02e8a547fd00aadcf6590015ec56135fb76ea30b6fd7036826bcfd05347a4a0d9407505d6eee01037ef2750a28ac935f012545bf2901b60c3ede0330a24e00235a7df6cf80cf7ebc06e027feac15fdd7710075e54915403fb9bc02b8d5bf0e0348e8b64f03e81d47bd006af5efb300aaede57500b5fa69270042a7277a4d0331a2668072acca3d6f032a0fa0dd002ad84d05b01adf1c07509bae5d0650e5364b8085eeeb2400254d02a0c77600f5583f79fb30a0915f6f03a8a457d701d4d9af9300b4e97100b5e9d75e007d76a882f59bbf95a970fab10b28da92d3750d8f7e23a72afaed0f20a5a49fc780012f5d4f01435afd8b97366229d1debc0fa06e586f032ca7cf5b01d4a66be701f4d9976fc0c876502b0012e4a2db4239bd0980c15a06c0b41e036a46c3992b671be67c330086e25e00bd63731400fd711440edb176110075b11f60f5d9d6bdfa76d0aedab5fa650f30eac8a69b4a60064d13aa1c9ffb0154f4cf43806dbab5b3006ac29321c0823b790fa0baccb60330894f01e3b1a4f0280f80ed706940679f1401d484f3af0092d3abab0034d01f406bbb1c1e1e37230346e5fb34808afe7e1380f1f20756ef68252afab069e455c1ca560618b7077aa26bd0515d166ae46123ebd89609a0a4606b2701180db706d465f20618d11e6ba701d40d1f2f011862470124309f0700eb8fef63801be8f4da806ed8de0dc0c8be0bb07a69eb497529daa564ac6a1d03aa76a9270a83ceaae75aa55abde8346bbc55130e2f01697bd5eac92eefe8e41de454e5281a9dac823d6f024a9be73b01a40cd63b000bee4d0df0b8ddfc0352284719a01e33252501d4846f7303caf17a1360d540ad677576d91e76568d5cf63b80b12ad72a9f0175bb2381e919742441a5269ca6453b2ae94266601956df623300d37c0b508d99810a03e463b11b402fbd9d03c64c6b8b2d035e7a750188ea1f079004bd3f1bd01eefd70124304f450095e3a90ca021b6f9f784f4d858c644d5fcad44aaf57a1e60d5b7ad971a50f3442573a36a444a6d3afa032bf968d5a701508efb0612cb64e706d0eda891d755974613323cd679e24f7dee0550032d0c6c7d4e28476329e91d8b7f06c8e9623b0086d10e805159b634e646ed7e476ddafb020cdbab9fb47e1f0085aa7ffa7100a8549716adbe041ab7e50b60a421d64afa01344cab3960accfb650f4a368f5f17e804aad3e0fa0af8c559766fe41f8efaf009d8eba72f30390f293ea0d90b5b18235678fea2142b75807d8dada4c00237c171fb300cc62c78031dd30ff34a02b675b012496b77ea26644dd7e04d0f0d8de09a0de3fdf30a01c4f498055bf24738d9771d3516ac2fa0880ac57ad53838e5a6cf1021823c9f34e0035617d1640dd707f63209ddc1af91deeb9791a409d5dab819a1fb435cf3def197404763f011d84ae3e01a49ae75af8e9c6eeb956f56e203d96fc1b02fa92c2caef484b15acd8d182663c1e58af03eac15823aada0258073d64068ca8873c804aba2603ad6e54ac9af0e703e0497c3233485597ef5dc00885f26fdda0a3774c6f03ac64ac7ade018c69e4cf1740adafb4ee2f0268cc6daf05508b6df92b356dba90fea89b7ed1407e7f0ba0e9f5fed280824de601241faf6700f7dccb7d008db9c98741aaa2df0e012975d99b0790583e740c3a2ac7f40a90e927e520057455d262416d9b495c7aec8e466ed4a7c6dcdd5e008db9e93f804dfc4f1a39f4e93a9f6dc6a0be724dd11b227dfa360bc092e73200237b1140ef28af02e82b67470134d4cbeb0048616ac0d87f7d0a2049fe980650c186abae6c3ab2ab4158aab6cb21a8915df43e03ac7e526ace5e024c85a72ac0aa6049d5058c11dcaf61805539cae7cf00123a0da02540f36fbc026a24e8a12dd02049d0e6c2c0a3e126c04093560ae8a0613e5f03486076be0016a9e9750015ec7762c068783d05641a0d657d00c8195123dab4113a8c895d03bd23f9f703e863a095bf0259a5a217773b02b5f74e9e3700157d7bfb0eb0359e1e01c6c8c7ed570066b137032ca5ad67403d967c1ca501341aca5600cd6265124033d0fd8d012fbdbf0da082bd7c05e8ca32582df09a4e28e8b9e70340950aac8f014861d97a0b201df4ef1b30a6d5bbc700cf2f5feb01b01d1606a97ef25d082c7b465f7907203065fe6940effffc814c75d901584b5de50124b89f59004d8dd50b002dd57aff0820d1de882758d02417013480f22f40ce5c39de0374192fa3f7007ae9f62fa0a7979643bf7420906c3f1ba81b923dfaa5136229edd0a9fb68a95b4adae842e9b18f47c0186df9e62742f55d05d04fcacb007ae9a81b40aaef3d7e82f0cf17012430c96a0fa769e2520d540cdf0115ad5ebe06d0f0e8fa2723c6fec633c022f57d00f0a2a83b12687410f34b06e8d0c85f5b01fad2745f80147531de00647aa27af805e41687f700d21faf270648e1da7d0089f6ed23a0cb3beeae02481cdee7013480f6fb01560d94dcfc00866ac22a39071492b16a32154807b6947869388777de03c8a4ddf90474ac94e886669128a5540c0163e463f212402a47d37c0362369d069096aa5b01d8091804d03b467900c9d8fc2580644c9eab155049679b06aa4b399586c91a138ef9a50d18d1d9d90c30eea0b63a005627c5f02980bed2fb36c04efe5449b3e5ecb0ea97d101a04357ee7d02522ca5dd9f001a0db2601b906138cb325801895492012c74bf8f01345ebe360268566f95802ee3e5f7c980a2af3f0440afef06a03de6801e6aebfa10801fb7e8fe33d0882ac79b8081aa9f5c5f000a097f92df004a4abab70fa8641726fb6700169ac5a1e6ca6cdcc530dad1fc9235822b29c432c8ea94696d41238777e396ce6e541f5b141303b4d4743b80bef2f201f01270f61d40a3613c04585b2669007df6ed3d8044bbdf0d20d17e1d0590d0bd3e0690d0bdcc0dbc587d08a0da7e3c07d0c8fe780ab0aa6d5549f873bbd49297216084483d8d0c58de7fce03a8f7bf4bc01817c167370073e507800154662f06c8c78b4665ee5563f9721240b2febe0074a4fa8a6e16405ff97c3790a24fc65340aaa9a04a8e02ac3e5b3d0d0d2485653e0fa0daf65e011956f0f1b70136ee513c21392d33973467007db7005d2a977d1a30e6ca09a047ab0f0601f4959707030a76e377f4658d27e7f30052b0dd1d03bae1df1a608052c2726c40aa41b87109c0e7985cf9b3a5c67e922700b60692fd73000b896247432c1fdbffb1437bd419723ae3896610e20da40963bcfc6e05d078799f0450efbf5e0720cee03200e3651c802d9bb700cc0d5f0614ece53d800650fb2e80ead26e07906dd951df362b5366e4c51c50697814ed0430a6e7e6dd007266bcf6046c90b4461f01646edc1d0450574e3e0d52a9f19b5f8057e2d33b03e697c53b2065a8d7fe0a066ba9adb425c0fa3cd902e4fc643e0da0827d519710ed854bdaa5b6df7b801e7afd77dd80055ebd1f40ebb9b51ad0c70cec0e03c8409387a401439c5dc91980e9a41cde04d0678f0a40a99226dded00c87a1f50a9e8c94106c05353cd2452dd1403ad38a4c562063a3c040c319c7766000bdd8e54dfdfcefb0edd50e728e9197ddb0c0f8d86e95a0009ff94ce0edfc5fb39c0e6d76b1d8009e708508f25da6fcf0154f4d78b002ad86b15803dadc7002ac7fb5900ecb1d700789c55975edbbe9cd60250629eefac1974185105002764c91ab9175e858b0ac0ec510c240ebde53a69f5c4e55600d9fce303408a3ebd3e3590355e25c7007b04e4a55d02a9cfead1c0d6d63c3760e5891aefd945506ae76c052496f7fb01a42ee619a0c7985bbc059076281e007d8afeea92f6297aeb2880bae1f81f0013bfd51f06d010eb8e0d30bff68e03c80ac6ece9c5101bdf079086390cc052b4df0aa029e96c0628f4d9b2fb07a4c736e700e697e2fd17c09e6792bd0650490f68f514d3bab0048dedebdbe127cd101338a42ecd10638b93a2d725a2fd5a02aab146f61b5d598f46d863e70170fcbf1930c4a63f0154dbdae51833a2924e00fc418b001ab7cfeb0198a3360cec319a023c90af07013490b533b202ec9cb502a8fad5660035e1da5100d5e5f52180867afbd6c02e574d6bfd6625ae21f67c6820d14e9e3f002382396e07012485a75b003b10cf360d58239fbf05d03bdaaa4bdf0babd6c55d808186e9c440eba8a23305e0ed295b2f01d451da5a5c820cfffa2d80bda4f2e1d2206317f01c6075f17e6180d577f51a4023fbceefb0fec8f7004c27559505d0d4a80dff25408fbd3c05d067bbae1c9367f9ba1f00b398265cfee91d8f01300472c080baf49e0d18c88b2c80f4faf33760a8bead0ab7d8104371ff2a80faa5ec000a94e394deefb06593dcfab31846d59394413f65255eeccbdce81759c5d8d778e9ff8d7ddaa35999638e52d26609a83177b80bc830f2e63340c9d87f3f055423ade770743780f162d10eefc6cb2280ac4f572e06f21bdd10a3b2751740a3f2fc37804a3a9905d067cfd70330cddf0750f52ffe7ea282ddfdfd443d7727453f882dacdd5f0304e6640de05dc069dbc0ceae578394088021a0f6e4a9161b783d97cc6e011d6fc55f0490e0b673408a7774760ec07f5a5ed7013447692f7a09b082d305c0432cfd0da0af289269095028476f007c6cc9c32880aa7fe7afb05a2bab678354a312c536f0f2ad189e06507b7c0660109eee0618cafeb834d0c661f9701d406e97ec01d097e994ec9d18d0625fbd00d2749f7f4fb0023e0d20a3a67518401d75bf0118607eb53e0ca8fee02e00eed2cd00525b8376004d05a57b6ea86ea8aabe01364cd50ba0a25fdc00d8e02ea79b0164e4f58b00aacb247e827ccc5c7d6b189d19590134ddc4c0deaffb005239933303ada3922b3f5121da171f0134598cb700f6496f590a47d874978f005c26c51bc29fb289916488658af3af9abe002c304f0cd37444f5ef195119134ef5c850cf3cbfa05006995dbffb8ccaa2697f819b002ad87e0730aa345e0e655b0eea3eeb9719e568d4a794d26c1d50b12a789e03463cf1f219406aab600035da5273f6f711a0796405d8381c84d973d409a0829d1d0450c1cef60348c19e1d06506dcf7f0248c15e5e065049d7ff804afaf92f802ad795240fdb76da1f3e01f027b70e5a0134dfe2818f40bfe2ae08a056effd001cfe72c44f22fce5f823007b387d034faf27003c02652709206b2bbb05b0ab51258706c8587116404f3cdd186492b1fa1e90316e9ffc952c539bb2ce1e2e7d79faac7f62b1ac1f026851743530c0e3fc76124096419503704117dd348036635f0f0c70966797009cd455791740caa09d1960b224feac5749fbd7012463f7a3002a587117407e87dd0b009aaef59d045057761f026805bc380c203b79bd06b0d55a0e6e03485d7c3d07506ddb2e3aee8e62eeae2cd1da3f8b009ac5366600fc1fc5b3bf32c285d42f01565b972f809ad9e31cb14cb1c68bd76100097fba0960b32dd9a5a469aa89af7af6135d79252b66c26136a22e879ac4878d09a76e38dc02f8b44f1b39ad0bfb503600a54db877408542617e19c6d6c0cb2bc05b03b3df0032f2eeb6036888ddbf01c6588e934703bec232611811ccf3f700faecfc230061f3ff00d685ddb901da72fc158050f38b002cab9f0270ee240f40c4cc460094d2660015ec6ecd80a568577376d1b6d7fadf17c013df9e013b01d5e416e0fd7dccaf06e0937ee0a58ee96d9d6c1b10057d7000c0f15fb40b03d4c5f40840fc47f1716b20194ba687808cb082fe18907b93eb358022ccaa1440404839bb306095c46a7e0950f4b300327bc61500bbb0992103e889fb49008da8b18bde43c1deed07505776f3006af5f631c09aae7e0ca0be1dc613040d3cf40348929f5cd2bec67ea988aa15d0ba217f060cb43352ddff01668f8b00aa5c711940a6f5d93f03545fef3e80867aebc140caa01cdc00586896bd3a806cdce2ef09f55cebc400d37a700d70e8caf77e006d1ded9e07d020ac5db942d52f3344bb519ffa6c990660f5ea2708c04c4e5d172cb672e8728c58474d33c098e8c1410b50e3da3ba11b5202a88ad76f030db1e408916a445d9f4db7005dcd0dd5d30fa062543e68ad5e646c2f14cc734563f549e5ecb70175c5de2b83f06fab9506aa5334cce126c0072e0f77003d9fb2f9055468a9e97a00bd743e07d8507c5e0ba07e190f006354df09fa230cc5d66d000ed35e06d04f260f01548e6119408d7cb715406279f71b80a34c5217a58fcc942d8dcaf26fcbe6cb80c0e9c31ad0e1b0423504b01bd9ea5e00bc024e1f0039de9ed91980ed966a5c007a980a3acab4029a4d89eb5b02993de513a02f294c7652c00043f1eed60015dceb06d0a87c3d0ca0eae70b03c6dce439808c9a5bd705077371b21f40cab17e0aa0f17255049072ac4606d4657005b061743008a0ca8ddf0268b13a3c0fa07da0e1c440aaaf18ef07d04f30264a6f1db572579f4d8c6a540450f0c2894b5a61e36e4c0dacc79e02683beefe208096b38bd3001a954fee5b828dcbe71f001370f5f007d42fdd170334fff82a8054df413f8014ca9ddf31c687d24f0cf0073d7500041b172f16cb9a269cdd056010321a520f8fed1f039a70426d5382b08a375a3d2550b87a36c8311409d12c530c92ea9ebe4d6d9e3fad0346722214fb0cd3a259f10a20fc8dea63494cd19ba18d031171688c4d9412456f6c4be22e18d98d96c292fe0aa0ba246dc0189f63be19400df4864835569fbef29805600bfc2c808afe980690967a2d0248608e87067cf6e82a808afef8f784ca71be1640daf2e23980b4e5e579006ccb6900497251069024e32d2ec3b6641056ed92f0a8ed2f80858eb0d72590fa3cd54cb83c76a3baec7502609eb7000e143efe31c052daef01080869f516062c56e7f1048eaa87590015ace597660483b52b031cff2f93006a0f76ef2b87025604d9340b2f9cb2ef9f0134678ffd04db82d5781c408bd5711240bab0f50bb037f07611408bf7b21d40cee1fc1d306047530794574043bd1a04908dbb4801ec02160f0f01a4d8f20f0302522b979490c4e46b12408be6d1b101437d143fc186295cf44261c045f218404afaa70694d285050aa5b28156328b2d81c4f2d522554a9f16e32a80ec539d4b5a01f5fef00c501123505c0550efe72f01a4f9bbe7013003e327f2f456ad78290ee64df78b43df88835d02b54769391d51f45e2b800a36b9067096a79a5c0590b1d93d09a09de6630b0ca1b3c9094297b2166b5dbd05d04c3818023a78048e11dc466bab724f6900bdf4621140f6fa148149091a48b0b61a8015fc9601726cdcce7100660fea92b22f564d69b1662a90d15bfb271c99a974fea553e50cb1822dacaa990aa4500e35e1548d492bd0e189ba40393ed31e7589c665a3ac0a1b77720ff0c6f21743ec4fd17702907ae03000994a0e0210f67a19409f3d6a07907d7a746320455fe281affe4e0d5c0790b36b781b8025f14300698764110027c24f00226565c18e96c758572f6dd5003c9b49a1c96214c1f98b8f009ad5ef9f0c52b67d9e01c4e2274f7e075abb1a0d0d6419b43efd52fbc6cb9b0012ba641f90dba8b935c8d87a2e010473548ffe6cd743ac0520d6a9e8cc0cf0e2b3ac1e3998a3aa3a068e3e7e33c0a623b667649d5c55c30092e4512b80daf469164026ed8e3f4bec4672fc60e029c975196a83bbe8e5006fd7769f031056b019404a29bab24839fdf41640cae0770d40906ff5f81e40f6297bafa30ebb91c9e037807e526606b22dab5901e0e463997f1bd0a6fdbb005239afad009a2b1f2c0e58d2c9c77a00f56dd90da0813cda0d2059af4e02c887727e06c0d84c7a96a011f3fefd5b004dd18bf809aedfcc1de53df1711d404a3afd04f88c55761340bb6f55118092fe01b5e9b3fc30a3d48736dbe706de9ebc3260105e303c52367493ab9e014e15763546b6d78bea38804cb85d3aaa31e0d1fc086e4abc43b2e3aff434cd57d305802daceac9ef18b03fd739092049de47071565a5a971ff12109b5c885433dfe3aa404e2346e01071089b9fe5eca8ae50c1ef7cb61ea3a489955c02298349008c6f8e998c1a252df5891b6a1453c1fb43007cc1eb01983d3602e8b30f7701c862f52f80cad1ff30a01ce54500b5d8681180a3e5df01d8d1148853bec9c323a04338d0d90e20634d88a534f6567cebb36780bb63bf0674094845af8f234e7a500690bddef567eddda8ab00985faf00a2e58adb5e004d8d7743406c5f5f049081966c1868ecb7ae32009bd345751e8011b516800d19bfd4fab49806509b9e2f02c8d81c5c0690b179bf6b90497fd4130007a6caee1f5034433d08c006d5b581155b1e405363e1ba54b8085efb01d4d983cf00d2dad9dc803d9ca21340eaa2e5da8e086dcadf0c68f55e3c615f702f804cb827d76524655012fb35ee70803d492d743ebad37b0c203783929a35ff7abfa15705e0b3c300529f67142c65abb57a7a34605bb0ee0690b7a7bc0f4058f44900199b2324397584eabf5f800ff7ec3f00ba9a3c5b7b8b007a62f70b80e3ae38e41d75869b72823834ba4063ff12290c77e9631b508f3489e30b5e02121b9d0720b1d15d00e9a0a3db00fa6cd10fc036d893016e86f65900b6e2d5d9b537869247adf8e2e07875ff60c06185fb1d00679bcaeb2703d662e39601a25dd7012441d71380cfcf8def0c504a98e7b5f7a28b6e3780b49412a23680ade7a4fe32609a7f7c06f435cf25e7df80214754cfcf03a8b387850162d9bf0d206530889f302a2f7e00055b03e5c2c0fb62a7013036a701a4b626970618578f6f00bb3a3bff0c98e62fee0368203f0c0210fdf3144083f0fa0080c5568cea0092a03c35703cff690045ff5c640154976b97a3c25468f92b585b45eb3980baa1bf6f809bf27a16408d7c710d201543727a1f400b9ade85011df5d50fa0eaf7ff05d074d2b3248ff15b3ec54f08f57a3902d46898ec2300266d3b0013f0388074f2b9544e9dfa986bf6648023e2a26d8063e6fb3a0053411a406dfac4308dddfbfbcd0018bd74549a6a67356137720954d2eb7303fae58a7e49337d36e108e212689ae74c51dd188ab2d7bf5d0e5242249c38ac53877bec0f0d34e68a77bf83e88ed61e6dda188a9a0ada6eb102139fb34d7551957a47aa95785d0f319d26086ea3f9a42daff8496cf8cf1601a4718966a843e3123e57871978d20da097127d5cffb908fa01a4935b3701a493d72f0290a8f62a8086d8e3208046c330de41e5c69f01645d147f4fe0115869bae5aa812dacaf57035b7d9702f6d226ebcf01a46037df006cd69777270042abab871700bd9f8cdf016c8127d538006eca3b033652f7fc134ec7258fad005a6ad443034e1d3ded065023df3f025889b7ae5c30b6b04ac5a0ad008107a981a37f0e03a0d88e0d58bfbcb91c0e6bac67062c56872701d4b7d2632ba04158b8910bb6f42ea780d21b43df06787abb8f01d86dfa174052b83b0ec09ee783814356af0c3249e1c0efe07869a9cdd81590827d3b0d204be97ecf406e97e4da1d35b238bc0760fb7a1e40d5ef3e19584bfd0ba0ced6fab6013e66d2390ba0de6fdd07506dbb16076beddabd6f4371a713404a69f8148053adf47e4a469d329b04c021f2cfc06e6c1ab9596713167d1c40a6e4746e6073e30f68886d7f07407fbc1b6007c9f9b702d2b89d4d00076193f12c80d478f118401af76264c022e02903644850b76540e50e69f5147bacd27ec372ba6100c94e5e020ce7c71d83144fafdbc3071e765cdb1ea11aeb6ef5be2ce96a5603067630af01864c7c33d7a56e134bcb98cb892c2fa67c254e0c3df60063a9f1b2fa03647a46b41b8d2b19fb5a0b40c2a98b0032e11ef300e4e8de0cc026d77700f54b360aa0d160fd11d6f8b86f30e650de7d0015ac1de560d2f278b1bd9e2859762383acb45a8a994823c94af26e401c4af159003226f1fa0240b68262b70674d1da1b1300d94eaa7a64c04afcbb0210e15eeaf4d37259859bf2711140169b12e52fc7020befb50740819be1e72b802428f5670b447b7211402d76fd12400b897f9b000230cb8b7600cd732fa706e8c2fe4d004ea43e032a8ccdd3006cfad5d3007ae2ce9ff504fc390e2023efe12100b9a17a01d42f4aa2b102aa4bf11c4076d0e810c0ee6c727d134043acb56fe09dc4df009a81eea70154f4dc5d89d1dbea7d18609eefb503a82eefad00d2a76bae7eadf8e4e2dfa740ea14a1f2072d01ad7eb01b40b555acc20ac830eadd18a02d2788e5f23b52e3cf06ecbe250f013889b1054871dadfbf03328c8993f5006c706f1b107e7b1e3fa1fa37df007bd094926a05d40df7734097ea8f3e0c98e637720334ffad2bd723f2eff03400c1f9ae2d07c8cadd1703cecf5d7501032f23f70268641f3e065023efd0958d0a9648dd2030293bbcadfdfb00a42f704989b44f7e370432ce0315fb9a2c3a45bf604b8fce2e868574f2fe09a02ca460f77b0623d6849ac53a8d7ed54baff300c47fbc0620db6b1f30466b5f9d0690f17d7516403af991160b9bffa41500ebf32200c74ba70170cbfdbd8318b4ca804dbfe423007afd3280c64bfb3480b617ce3580d2bf588531a04fe8ecfac800cf667d19803b64ce03689a1f0d0c1851690db0c03c9c0108066bfdcc0d1c67300dc0e52533801daaeb8f80d2b11b1f01342ad37b039ca1750920416cd2726d2b6f3fdd02705316592f80ccc08f3580cfac16af01240ec934807a2e790e20cd7fb301f036e9addf4186a1a4bf1d4026ed6011406afcfac120658f4fc3345d9a792b303f0840121eaa9f72dea3fc383640c19ef809673b51cce60a689eeba70108e63804e4540ec3a80194a3a2e71aa5240fc9cf4b004d38f910d06364afd31e69dfa7d23a06a8aded5900929b5c00bca0992701c866716220fbb49a22fc29d9708af3b601e6a8d2ae36604c376c4b29a5193b67855274a56951a050f611eda22e39b3ca4fea0c53f2f007d0230ef69a77d4152ae79a26b4522aef698f46a1c8b4969f7f0524740f0cc2b03e1fef02484eef8f0248196cb602c855b1d10f207d7a7f1c40fdd2b90cc0798f9700d2ebe96b007623f300528ee55f49d5fbd586010dd4be0ea0f6689f045057ca9fdcf4022ec66426359e39d164a223ff2b20d1d691eee57cec85f718d02764f5721330d05aac7a7833609dad5b441ae008d5edd700ec36f9b3589fa5ee075a016e88b93760aedc5d000a9981c5e0c9802879b96d57409abf370220ebd5fd6b00cdd97b7e6999c9bad8705d88642a95e67c0934808acb7842366eb9bf1640437dd107607d96895b6cc46aed7e06c03b5ace2e036877e571db20e528a44b6a67e8d95b00b5fae027800a363b0d20b3e76ccf0053729d8e7216894a01fe2bc09c3d35d0665b723a0174585732452f019b3a5d80f72c307a978000ffd4006df9b969c0c4577d03087e2ac62706aca3d61e03688a7e7f0d209ddc1b18a06075e5d40a30253d07d08cfcb80f60efa438ef18a8e7922b579fbdf9e2f73e80baf260db8046fe7907108495745c0e6bed2dd7859dd572d00b8038ec028684e07dbb6045c6367a05607ba138e1271929db8b7d69a9ac31f2b00bf70210c489ac8709b7bd1e40e2d03937608d3c413b340a16fdf11280ab7cfe0520d5e0df4f38d57a0bb04e2e3a01d0c9270150c1c300aacbc620801a4881a02b208324ab02a82e452f00615a45002994ce4500825a8f02605b8e0cbca5771580584909ff32759ae4745001383055de6e02fa84687e0e0d7010a52d80c33df0c12e53966995a438940690b1beb53632b0c15a074017de0790686fdf004a34ffe3cc00914afd52828e5adf3b800a4df7340b805d580590df72d40790fea47af832602ad8fd3040a128f562039c097cf3d3802d4e258c5901aec03832f041a5d7006a539d8b5e5a635617e300a4e77b37605a1b52b9d8cf9ebc06c03bba6e8087a4ba06383ee8e4d1000b36dd0d20e1cfb3002445dc08c084e3af7488b9da4a01e475aa9e1e0cf03b282e6709507d3ac4ba026a75ddcdb102aadc959f706ce0f43d0093f8009073607beccfe69881793b808afe716480359e6c01ba4ce21f370658b0a9cbe14d8cde5b00ad5f36ba01d00edf00a78478c903483e667d03269cd679003db1353290822df791d394e33fe5863b8a9db372fb2980447be6a2fb70cf68c700b1dc7a0aa065e4d14b00f993afdd628e32d1455f4ba02712e5426ac08838e9fd4100f5cb27633f75a4db13229591e7bb7ae42b59b74d7498b4765ef487eaec7dc64b51d867c04f623a49359de48d792e19bb4e03a85faebb01f809c26ff3bc4ce60108e43a03d49cc1bb3f0c40a6f81b033ebb7e1e8088cc76000de4741640e5a87e034870b3eb00528ec33fa036ad7e0268561f3c06c0a2ef0690688f17012463ada81cfe8ff6b10147445a7a47d741be65eb1bc0a510e5cd07804198e81cce0a60081c079035feec7790cba475f11040ab828f2d006116d5c30280e15cdc5c04d067d7a701b4018161d48de005e5704fff320bead0771a9905cbfa2a80268bfb97009c9d3d0110085ade1d06d0b4569c1ae030c386e9fa58564b9740ae00c7f6ae02a81b2efe191000514c02903f48f67ad7eed252f725ad00177ca60668bad35703396593fe1ec0410353bf836495e5db7100f50be657378206eab700ea97bc134045dfa7b353f69193debd01c6a68eddac804afa41f597f3d80a1cec0490485dba2e390ee6d1118033dec9b1bfd2c5b7f57112006d499b8687f56b10007bfd3880e6eca3ab001cfe42a4c207fb7a6740e57610cbd439bb36da06cacc51eeb909c9d7571e6c0550136ed506aa6d8903a09b7a6359616b2ba0c0a5e3af004442faa578e18ad71f032cfaf5a300faec86bbb2ccf4c4da57003db1e6bead54b0d6ed13c0b92a74f86b0508ce7f06906cae58f34f089c4eb619d95986fdb1cf106b343fa7050f02487d6e33a21abdce2daa7476a3f9d462e8c2256055b01d40eb28b69ebb112172cf400e457f7f6e20459fecec059042d9ae0210fb751c40256d5d076033f62d8006503f0f40baf57900ad1b5e5e02a0e8d70368ec0fbe03c823a02c89e9328ba64aaa18b4b417d991fb35805369e5552b80c6ed93df51e00b563efa34d2482693bf27c8d7d707f874fe531740506bf5f0198033458300aa8bd2253780b08264fbda8058dac7d7006ad3b40ac0454eae1c77b6558f2f01487be682394586929a2de398f04c24bb01b071d551cb0c989275f4c712c892deea07e092d09101fa43d93c970a87a9f1741a404da81b1d970065d02903a872ad0980088052c70896806db0f32480269c9d37039c2ac78f00d22616593f0086f36e00e2d7d701d8daa5d2d02e011ea31e1d95767d186e33805c153fae7e0f5381cdd89ea30892ee5e0072fc6f1810a5a64bec5780f384fd002a183bdebdb46fa3f73e80c6dcc3630035f2783d006b313fe15c6a97cf0134e19c7f0540d1f70c68f55de434e5b44f2bfd31607a4d5d390ef7b44edc62e8f5726b6c90e91d377e47c9da63ee26ac50c1372e18d92c92eb4b404de57489fd0a68b218d1d959495e49dda9d3002725dae72b8d38a24f35bff41a150cd80ca05199d1958d92d2f48a71d5b3922e3eb703e0ed390da0de575ea7068c2b8d97cea7012ab8f31540bb91dd9700dcd1ce78096fcffa59009543b798ad80ea52ad05e010fc5300ae16b80b40ead6d3005cf6f3f71552d92601b863796cc03ea12e826b6c0b8647f5b4088062eb0370dd24bad36f05b4907832187035dae6950111223a9e9e4656d1969212a57dc75d54ba95a90125a2ad1b721be0835b774700a219aac97900146c3f806a7bb1638081b63b0fc03dbcf15207611d03c656c177061c0e3cf64b6b6ca9688fda7afd3e80f6e675f3d7721d8ecfe0eb2d00fe8f03032c4765365e01fde48cafa41c712f36770db0b66e0e0d5834ffdb001089502a31c90ac8eb34a1f753db413833fa8e44285bb300aaadeec05c014de2a7ae4b26455ffef34f485d92ec9401347be822da252002e01b8149c9a754debb2ec42a146c812f813aeac52d664b3a7d0aa092ce8f02a8a4afbb01b4d29ab82ee4d92c46f70648e13c9ea0e81f2e7a9f8edab80ba0a2d77b01386dec4666c7bbdc7a08a025e0d495c31a4faeaf03b0293c01389e3f6544a58c9764dbef28a5715ba73b0134cd6f3f1a48af97bfa300d4250554f8835efc84a3e47f1995e958ef28c6ae2ddb2dad432a97b5994e8ed6016c2c576c4ef7f3114efb439992fdbacfe1e24f04b7d1eb4cd119c09119d3af00d2858b3f80e7bb0b185b059f06606dfa1a80fb3c3f02e00bde09c0fdc8eb0108e6b805d8804fae0dd80376ef3740ba70772380144a791a40f3cbce7e0076bd1e02682a783f0ea071ab4b425780f46bd28503df1a5a293f5d3a8863371f9a0907ce33510e4e0164f52ac7c700df30551c017869a2cc934b807f7d960620c2ec12402046eba20454dc66b2fd1680e39423030cb44537004b8d570346d4450760fffaf82400b722fc3370c8ea04302667f9fcca006d39380ba0debff667c71aea2d14ecc0a11ae59556050307949557098078dce46613e04c9cd5ad01b908881019d8055dceae0ca8edeb5100d5f68bea3b2742a9f49e2b80e37f66809d3cd80b4080cc6300cd95ca25bf04acc4ef5c0ec76eacef0760ef75d700ab8f08a2818339cab40a8047e0d480afecb8a484142547e3004430df19a0e8cb8700dc0b78037022e3d951002c836d031c557b2e079bf5457561c0fc521f062023a8eb429ae2e466dd8038e9abb901b12caf0380e35008e46a80346ea2fb921a80155c5601084d38db0e2005ab6b111b30a291f790d3944346c5cb7900b639a42d07195b3665b26dc0febeee6b6c00f90cca29e250f74a1cdd085d5d9133a3c801237461facf40eab3fcc9006c9316ca12b002dc4e7900a879e9f76e00cd733acbb304d2a7459106d0404eae02a86f7737039053e52400b35816401d35fafb8af4c7f80f484e2fa5c786be3732794b00ceca83e13c740688e27c0cf035f7973b0698b40f4700828e92ad570019da8bf3dc0047843271a67f995abb1b060c8ff600e01089d4e5a82d301f01f48e1b69eda1c35e8bdbae814676951c0052c23d944e6a091851d7b7003685cbf9a1012a67ed2400e1eac700df61a76c7c4bc04e22e1ea4ba0dec7c13cfcf3e33e045003f59200ea17ddcbd3008ccde2ab0c404efb7f01309cbf0d3025273f01b04fe9a8b4e7484837508f13dcf7b47a4aaece72f72d80fae5776140dfb28dbe045c2fff648082d5dd824b90713eaa05f0810725cd5c025a5d3707ae80e67d5d23ba029ae79e10cb507d1f6701348b297978f32f1bedc5fd4300fc85230342898bb7000470af05d0a83cd80770803db9f80ea008804bf70b517b49eedab2262c775c9791fcc9c5a6ebc2ade5e521b29eb1b02a74b2be014cd1e5c9b501f94feffe805a6cedc78035e1470688601f3f914ab44b76458759e6fd4a443b02fd3ed7026811d0db06e0bb4874a7ce0a30cf9501a4b60acad1e85352642c02a81b1e4e01350930be7e03a8f7934b037e52c74f28c7200f20e11fa501548e712f0021123b01f4d9ec2080f4fabb64bdf0d546e5f808403c5da5dbc3d2c2b170e5cd02e00cfedf0f002cc7e27c00209f74ebeac38040f28d5b804f83fdba1c2cde8be7d420e5409dda6399871527c2b101deafdf7f0004a62282b9885885f2238054f0dd450009ccfeaf01479988ea2c52a7d9e8ad07509bf62b0347543d027c4906c7901ae02c892d834c1af73a01f8629a7f2f062c01395f59a45c58586c1e19a03edf02608f4dcf02a8b6a50bd6cbb86a92464eb9f7ad9abe19a0d74fe701a42dffbd1a288f5179b90d70328f76c700374339063856a1f31c402ed783a1818f32b93d86d445b908568065f534807aeeed12e0fc749fe701d4406beb015452e5ec5a027232253340c9fc723f0ea0affcfa1d24e2285ad300dc979406d0148d055b78a3acfc7d0820c5b6e1ea8f68d37fd3004c38168731fdb27e1c40a3f2cbc3a3a6fa1cc98c9cc3c9c69501c6c40cc1cd32ae0f4f10980c3f4c31bc03b083577000a488b88bdfdf00f4dc66004d5a6dc65ca371d4fbb7cf01b414eda601f495743b001e818300684bc66ded8442a3cc808211b25a385830d9476d85cf60f46e808b602f9ec0a46d5d05d04bb3dd004499ec075049b37f013479ea02a5e5ca8391adbb5a970e24545fbb0ea0771cbd03882228d62706ac80cf350897c95d65c1eadabb25f011e6c300846a1870855f892919e95f93ef3b03e4f4fc02400440f9d635e0846eb207200eb6d8a0b61195952601b4062a8e015d6757ef1830d44f5f0c724c381ac8aaaffc745dd8df2f9455740588741b0450130e1f039072e808e0edfcf7e3001a95ef8701d473fb3f0027534f9f0310a4b7668009775204d0137d83c21111e701f495b50d834c5d79f10bf0b1f0077fd6593407e701380c7716809efb178063e1db01a43f0e36019ec46f2c52e4632b3fb703709de9bf009c179b062016ae6d8067737706208a2019be045084d9451d407bd1e71f01a4b63818dcaca7b0e867eeec31f3dcb73f3bc6c3baff09a809f4bbd61aa8b42e2ccf5a009f275cfb0da006faa56059c6e479445db25c4b8d02bd5e66cc84c93f0a96d974623bbfcc994d8b7ddab4180c65167ff2d9467da271d7039087f506e0a49944662c0197c74f0cd0b8ca06dc00b465e2f66894237958bb01345e6a46c39f7d7a1b4052d83931e02bddf7002afa380fa0d934db0f8039ba1d405fe9a9fa954f0a97e34380835b2efe0023fb05e064fb44745791f140970ca7551c207b6b19a02ed6c680da67dea5b6aad8f0df7d02b09d5fe2c8acbc7b5f3d7d06d013ca0eb402e4dd3803589fb67b060ce4b722802a47e45fe5bdf9f23a0016cab97f92b3d31cef20ecb5dcaf0c58685ecd0c181ebbef00fba4df8f00568e1f0701d473c3bf27a4d7c7ff00de246fad19a0d793f500faeca93f3bd0ae46353908a079eed325e5e84e99bad5f10696d5d42023b2dceff046fbbc1d4005e34c40959245b3fc380ca02794c57b0934d44bd2062c81b4d4c20573d0e273c780ca7d6c045067ffb8e77cfc47376c2f01ca60c33ff1ce6ae1af782375bc1d401a77e046c6375ebede065067bfb9d59d444317b0ad807a6e06c8c86394e4d706ac92ce670658061c89688056e2e57706e8201f73bf83b093f2d75fc938bf7fe5777431beff315e326ec92cf6ee0c10edbd3d00a9b1929deb007a691f651051044afbbe021a848f0188559831b2eb5a39884a8ecb35801bd908f758022e937b0c207fe1e0de005df87a1280cbc28a006c5fa701b4bc5792ea155067177f00f5b915009fa3c028ee035ef40085f7c43f00bea5eaab0520ed6aebfa0ce01b51ae8600e7b9eaab9147de46afc820338a0deeab510035e1cf890131f044dc8d6c28560fc701349075f1fb0a482c1ffc0eef676fdc04d00cf4ba61e0e1e1af902fb878b90ea05d0dce9c350b2fae24db9b1b10a3a84bb95780807617ac877678a1c5bc175d955700aee12970334486d452c92a574093789e07e080d061004cc95fc0106bebed2c001ed67e00f6b32700dfe8987d1bd809e982315e4a4ea48ebc7d5de81eef15207df43dc0c97f875f06acd5a73d032cd8f7cb006ae4b905865dc0f2653f80349d321cae804654af008cc9ca73786ec00a98e5db12a881bef3002a07899e46a11cd72d52631fbcd808c0bd6ff10e14db8edbd419316ea56146997355fc7b0374382e77f40ac8f07e1d7f027af82d1780baf42afa0750e1406c239661e4659b001f864bde03e0aaa04d1ba524f9e000c8287c8e9c0918c5a60ee709477102a2751a4052d83a31b0626b0520ffd8bf0044da3f07c04b3b0a805faa0cc0bcaf928ee37ee4eb1160c87d5abd3500d1a5856e3e4fc74eec5c11ff31f609ffb252238f7d00b5fced0550bfe088f8cb194af8cb78991d4a059b0008f6290fd601a9cfab770dd84b6aed0590dfe1ebc5806dc1693f80fa9693d34b209553ef027c3729fb7363abcfe4772b8006218905c63603cbf6308054dffa2480bae1fc08e07de48d6d0037a096772e07fec2e492564fb9d13199e506c4c3bcd373e10dbcb93760f9f644673b56b26cb9a41c542a8baf001a1e3dd7769891ed6400b0a62bdcd9ec011744448cbd075cbe540138e6da0dc0050616070e2996440f36202754e317c02e7135755d485f90d4f3001298af3b033e8b03601caaefcd95b3f3efe05f0075d4b145ca5b8b878b002ad8e80fa8e86b6e0f0286cab95feacdc7af9b002ad8f42e0007c703b0b598505b1b8a556b6e80d7e93533e084cccb18d06913d1cd10cb48469860c334803334849a8f33ce6797bacf7309380171d50fc055a4085db31297c3bd4bcf351a97ebe690f5cc699c485d32ce1c5f68d1ce9c5b6e8d562fca828b7911cb7ac8353c8b5740811a5fbc07d0a85cd02f8da227cff75b00b5d8e30680ddfb8430be7163b06a886d9701a42eae8e03b0343f0758f3974701d816fc0e40aecebf27345e5efc59ebf5f6610055ffee2b8066a0f96300c9d89926f13a2e90de5d0390bdb21c0560357ff9154052383c009071fa94639d9176b57853efd7293113457b0cf01dbae34d009bd3c55606f03591f54e0062e07b00ce48241c54aabd075cee170067bd1ff9b33ecb430ea22550bf9028aef6fe6db39a0ca019398d77605b7e52fdd8aecd7f02a891175b014823b91b807b346f005cb95db299527bffb6e86f06e0223857ce465ea732e02bfba5013e0325cc6dc0c8aebd450092885e02c6beb47ddf80367dbe0058292dd602a83d76de0db8ecf841d3499de1f92eff3d1ba01ca76b01d0631d0314ecd84fd8d7c77cbb0484ac5606546efd2000ee0e24284b7d13fcaf01fab4a4e77296c4c91ad5b742493a34a18dbca43b0da0ea3ff28e7a5caa4d77d70d2a36b9a601b426cc360cb0d886490055ffe91850970ce4070316bcad78a252bf4c9300f850e601b44c1864067cb6751940e3e57855fdaced8899d6f15cc007d8cbdbb5001a95d597013f498601f4c4c515c0b763ebaee715e05ab32d0087598abc0b20bf65b957027abe56e412404048a95b549720e37ec24340f8b68e03c8ead3cde70d204f4dd93b3160fb3af36709f748b65f02a81bf23b03cc9ec951008994b60696928ecb64b06f80b7477bc02ba0167b7549d9152dcedda6e4a52daeddeab8b28ae15500390046eb00b638cba79700ec466600f6b4cae703c0987349b59fa839bdf0e592dafe38ba0ca0ae5c6c04d0570e91a08c74dae5db8501e37662d07124f51380e40449ff20805eaa9c4c0dc8338e874d01d8c9ad2905cbb805b12cfdc410f928688facc888dc390578e253b297ac9d3b1bce0e05ab730ec42ca85c3d64d9a48bf11a50902c5b17392d01d6c5ed2360c425b24aafd5004c85f2e92c8064fd85a237ca80b8be1b838a44602701348bd54701c86156076033b613408aedf030808a3e9b07605f2c336033767819400bbcd16a759275e236f9cd73c0d01996ef018c866ab4051879cc4d02c8dafaf54bbd15afab48b38e9d5de5f518c0ae6871700820e8a8755705e06ad63b006979cbd14f001c88db0618ac671b809c0ddd6407d0c571b7b907f099e67fbd00247b6903c844515cbf19f89cf834003b123461ec57de6e07d0a8d445705927dc50a733835ce5e8fb279c91284ebf0d7cfada5f2188a2b8fa04782771b11d4032769b1b3067ef2780913786ce0c5845df5c01389d5f764601348b7dee0590dadad664d1c91c37ae60b025f0e26cc780b5d8db660089d435b5cdc8f45c7c0e02e8b333042663bd5f5693001a95cab2ba049c027fb909a0e9a4550032c2f7772f0d28fa918bee8453cf085d967b1dd537404ecb6703ccd1b714608fc05b62c029f013e43423f0b1e531973125550f2e986ffbbd7a34c0843b7c15a8bb9ce638444eeb1e39320f918f7a40eaa36b44bbd127ea86af77c0083be8270da0894f61052b201d244f6f03c615439d56b7d953becc02902dfa24809691ba246305f41525975f017c6c1701f4d9e1df3b481f7d1540a6d3f7df673979f06c30c2bb7119403a48f185cbac6774d46d07e0cc3e9fa581fd0e57002fab479b0664d5387a06386c4db7cb2d011e349dbd5f01ce8b9d0750ef2b4c2bfbcb3c79bb01e07697f2ee34004900b7027013ab01c77e8b1717bd276550e99aa6e514cebee9e90f800bfaca9bb3006ad34f9763c071b9de31c05b8bad8101abc6ce4b008ddbae5f8aa6ab467ea9d762ba896439ae89a9517eba1520d1c22200ab936b03ecb1c108e01d3ca56d5e018da8872ea0e61aafccd5279d5435d3b84deda929f7170674e5e89f01f6d898decf3a1ccc397b356007ef73c700b5f5b119408d3ca75fac83ca97610009ff4e06201ca83cd833404e3f2f0c54b0d6a00fe0d2b2aa76c19cc6e9f326803aea250da0af7c331a1ab5a5deffbc057016b0d59b1bb0c3db464e1bc5a69f8c2f024805afd11e457b20efe81ad52fca21d7994a4ba5751f8fd121dd500f507d0b64ac31f2e440dcff0060c2953a3adc80b11767e701d87a7e09c0a4f5144012d43a02a0d8cad9240081b1ed005a25dd7d062007511d405df9fd1280edb8630396801f4900125e4a92b30eeed2d69e26cfcca76b4b65e15d01c9d8fadc0085b2d5012052e5ed3a80b309a562f2560003ed2e00c93b730097db9459db80e0a78d1f0324b947d12344e2a1174032b65b1a301ab607062c4636b600c45a171f2e980fb1160bc0d0b1d6a701d063aeadc5f25f3f801a5929ec9701ef34e1dc257578c3852b47807f31737bb0c02b770b0372116417003b8858246629fbc8e59e7f32629a1f1d00c83b5a9e1f1bf015797a57404fbc5e02c856509c4992b3b0c7b6e8868c5bddcafb1b034665455db29463aec37b03d4c5fbbe01abb52f2a97650e085937a091e73b00e7967be90690ca99b603603ab502e0a47649735cf25fd700e7cc50a87903085a4cee36026820cffc9581acadd6e93fc010b7dce777002e84d904b06f9a1ca4809a95c5f1b60103484efba6a06d4e739c3d009c3d2a41d673ce02163aded1bca26f9b6e6ec065c7ed774025f3abf8fc09c054c0d86f549fbae113496ef41889590f03a8601f8501abc6038698355da238a515900a7ebf0f204dc70a380b9b2edf0820132efd7b4225d535b359648d2c754bf7121094a638a5ec2fe3a332b467b9c3c50a5d16b6021a959715808dc372f306e073059321806c6b858e552c0167bcb1e972074094ca69bf145bbeb2dd37202be0a97fd2d7cab3552d0cb0d8168300ea86f70d038687d21764b953a894379f00bbb206130362256f4e00a5f3d2fe007c93118bf73c9c4c6f7900cdd9590d603a29ff75014ee1763e35a03d7aa70076798aa92be76db0af3a807aee3d9ec87044489fe619d7552693b901bdff3d3160f6c077b1043aa2aa33014b1b87a8f0c5b98193882680d49e093f91129aa0dca52ba09307637fc5d7ba8ff603a8e80f17064c5a5ff706a8ad45cb00bbb0e7cfe604624c6f0d9870dee20932b6dd66004f9ec72ea9f3f6cc7f0228d0af4f23674e6ea2fb2b978038949e3f4bd2cce2dc451f60d2cefc59dfb03d1f030ac4e1f3ce80da6a1fa8015c9a5a3d311a726e33297ee8db3cc7c47f460a7384bf38941d9437cb59a635c66d5d141aa6bfdf808a45e29421d6683a15eca7134043eca30cc0fedc33c0bb80ef750035d01b2dd668292e3ffa09a07e49fe9e90c18ac5b60494a31d40e5988c02e0d92c02c8b3d99f0590fa5426bd15d0f0b81d04e01a8d3400f950f444b753789f501aa6bb4c21bc023a00b202ac3d860628035db4d100ee272c8ee6803e361dce8c06e065d191ee060cacc6c706585bebef063e127108183ad7deba010ea27f39c077825e6e0108dfaf9e0a0306f2a1bfe280655d5eb20478e12e4700072cf70601d440ba0d7a09729574c74ff8a6debd2400175b55068c4ac5f6645def9c15835d035a6cde0dc041b66b0342242ed6009cc12bb241008db9e300f83e7122741d12507eec1860b03ed3ea4be3495a6a2f80be32a4b36d6d1543178c9080f2632b007aec2200bb912e47d7ebdb5f033aea7d2b00ebdbbd0012dc7703ef253d0e0da86d9f6eb0a62b677ec29e89c29f25d02f698d02c830aa9e00befaeaad34c0d8ace8861c1bb7d269d2acdb759a0d25c0c8baf5904b32664861849c7d5401b8bf9206b23d9674e60154d2ee7300b569416dc31e3b3c08800e3a09401cdb5e007d657816002fdc4500159d7dc26e04e8cede0210aede0a404495545fcf67450b5d9bd900afd6b23b808f42ea34c70a681fa8b303f0f19ff6bd013b67fd430053524b813ad9320d1c4934e601d42f27970134035dc54f18ea0735c0d96fe3b35617bb49002222b6039046d2b51df93865174002ae6277124042777d6a80e5987e00486d5376cf0da88b0e8e2f810d01599f4d13b321a30cdc4b40cebfed2b809d4c492b0037d58c0c1873e72f00e71b7fef07505d5e2e036878bc1f0032c6fe94a22fad078dca5b409768861d7fd6eb7d9db358027ce34f2ee98064fbdfb501fdf27519409f55228e1520b6b86380ca69a701341a0afa25f341d897cc00c1ddfb32d00e4d717104287c6cefda80dafebc024a14ecf64b00121c5480ca3b565b01d4400b4d7cbdc630c24174031864647fd904701954b1a3f9b65777383db9c357ea9403ec3b75008d6c77439d716248a9e31b50d91d36038c7076add50134471574942da5e4b90ec0b5bb45005241b503a81b8eaf034829ddf603c830ca2e03704b441940b56d1f04206048a3b2ef6baa5bfbda3be97b17b064e7fd2f639be2b51bd0f3e9eb8700524a7b5dc0c099277f01432c7a45872d01baf08c722ca3f1574f6c5e021c5cab53034be01bfbe60164d1e7bb00b443f5f86480ac2bcd79d68f7db1bd1620c35e3f1d1aa04f9fb300041c5e187856ef01d8d32a5f5a01f459a52c5b01ecb12b40572be062b06dc0d2eb2b0fa039fb79df0017d2eb0ea0c781ed161d9579ab5597962d814654a18bdf9b7f0744bb9cb81cd60e2f7d0357ee06409c4152221fcdc85667bfd3951943aca5e89f152032e3c88048a61902938d8921c1c3dacff1c1560525cdedfd7aa2fa79290d53151a84fd1e7650b14f398a722091daa1a4cd50e7a0123256f70be9f5e907a062b9f2fc1880bb7de601a4e8276dc0a854f59fa7068cec6e3ce17dc23b80dde92f9300d2749fc7015857ba1cbe4e6ca36b50714fd1200069690e037005c63080bc4ea37600aef17a0ea0dec7bb31488932a99ee606c4c02bf5e20aa872bf7d0306f25e0ae062de62cd2f45a45a0f39c081d3fd11a0e4099dc0cc96a9b130bebf0d5804d4db0067c2faf067ed7651eaf80638179272412f0136eea334ee60e9f95f95634c4933e7637b1f1a68d2aa740cba01c44c94f3cc005f8e8eff2c01b3e9eb7900f69129a9877aa168ec25609e7bb803f4589de8a0e31220ebe351007df6f914e014198b7500071d5ba319c0f79abf0c0cb894bbef72702559d27b00d02f49e734004103b7802a9393e9d925f5e57a3f53800330dfbf0c348917b7b4478e5f2a394a02e8896bde9173c2bf522aca6cd04d9d4098a217c5509fdde72b8d3250499fa96d9d172ac7fa0660e44178120087482b800a768ae036c3548eaab33fa0ce2e6f02a80907746533c488313a0c8021701f8040d06900b2abcf02c83298be04e09ac84e0055aea5296918c7e568e4615cbe78700460ce2e6fde0103f26e2854740534808800183abb69eb700cb048651d033ebb3d34701c8adfc19d4ba59266ae800cb4cbef00d230df3f0134bd0e3f01be6f7e7e6be0d81eff84dc50e5d105c0eb06a5f65d02cc8defef009ab476d5fbcbec5172bb6c1e06d04bb7da00df784100c4d09bd3d5c43fe9c85551fc5b0778b7faa80b70f002f130c3d8d479de3360bc4cae000e267dfe0332f25ed70cac0c360368c9f3f40ce8716dd5b36b4b52b352993996806df47f5b00877a5dfe18f8eaef6b032c94f724807abf7802786bf1f9d2c0bb5edb010803ce01e4cb29bf5c5b27bb5df73bd8382cce1e01152fd57d382b806de98239d74d3933c8d9b162006575469c01f291fb98fc052d96fb3ebe36ed510c877a6247ea73d8d81f52283bf701a41d36192f750f3feefd043040195474433d6464dfd37375c1e6d2336d5a971802cf7ea2aaa40b9f270134c46e5d306c98e404498e38a5f22e800a56de06608f8f260cc5f63d0d20c54650c9d0b14ec9e579004961d60a204dd7ff7b87963c5911409fbd941a8f3c57455e00acc7746f53f6974e2abf05a0c78abdcc8025cf4102f07d9ea76b068c7d5d07d4005faca96bee1b404c4db1d703f8ceb6ed00be4d5e0a76990b497b27dd2340cac1add7be0106fcc106c032a66c052b400ed521c05e6b25ba6e40d77bc0a50103e8e30bc0d1d012bfd412707d96cbe1fc85af3d03bfe307c0302dba06ec7b1458c145e66cc0afae2d6a3ce9ee07c011e1afd849fdf119804848b7078b8072fd0e40c298d6a0088053f6c60065b0194fb08585f55934ca8088ee0f03fcda2faecb386313d44d489878eb7c6e4094fcbe9452d1d8891298ce16a083efe2f20990e132b94170f39e33b6f927a4b42b0bc4b28b4d57d6f46daf9d4b5b568780346751441316659f8bcf7e0c06faec0eef68949286e9660af0e65265d06395a44c140d281895f503a0b2a5d4058c58f24c9200eaca1bbfb42e55b9b37900f26b9f1a488f25fda7005c70f107b8f97c3f80344ce73d80348c721faf0097a74d02a072ce02c88d3d9183a8ec0ce817a56dce4a5f9a5a11d856a67decf58d1d03fc63ed5b80b77d2e87068cecf58f005a23b7de019cf56aa56b00c7380f17009facff1c193823466540e8ecb403a8881cd6259059e4532acf5d39b2259578f19780ec40a300faecd76300053fdddf01c6be5ffd1260f36bf3c2c0a7f32585cbe448529ff39681466555d3c8dead2efa470634f2d703c021343d3fe103ca57ef01a42d37e897accb36ba32812f8175a15fca92b8d57b01f87e531d1f5c02eb8fc3002cf07a00b65b8ac116c01ef8e763034ca7995feadbb2a61980cbb14a9d366ec0889f100a58660e35df9903ea0cb7ed9d01564e4a9b3aeaa6957e013a38548fe9973cd3e2ac9553b03ccfd9a0fa063829e2ebd8004777c54f7abd5c256df3936230c474fa0da0973e2174f550da2121eaa6d1786887270650a372f493d11fc03d48df36568e46f669668061e491dd00d9302fc701a4c726486163f648e5dcdc06d068f8bf9ec06deb97a2d892fe2480acadf7dc80cff61f034805a70f01b0944e03100af812409dad1b0cb3caa1d5457713e074c9eb8b0064d4d90d2091ba3e0758297d3d01bc0bf83b088067b3007056b4c57197ca89e24a6a5bf9d066d11e017c02f34393c532d58f9eb8fe34c0dc587f05b0bbd2ea6c001c59ae8b589600fd7160d0f515b14900d5e5bd0cc041a51ad0637a5dfc02fa64ace71852e59d91b2fc0678236471114002a31bea963b16e450c5a46d0059ef59135699efe6d0750d2b400e9173839c0cedd7808a91fdda06f8fc3e8a7e0924fcbb6701344c5f760db0725a2e2909c8cb773fc1f9b972d603d4345022fd5135fa43a392d55a9577729583a8f02aeff295114dd8ed528ed12160887175a829a96aec0f8dec8aba34e6062b607a2e563893228046d46c330051aef44ba30cf48ee787006ac2fb270306f26c2380d4162741ab7a5c4a3b5c9e05601d75674039307baad01f58c1951dbbe5492f80b4e5493f8042017b9b01084d180620718d4b6a4b298d27f86c960490d0e5eb0164089c7f07901472426614975126fb8038acf01900af531fc0a65f8bfdec512883cdeb00e42dde04543e2b9a1860a15c1c00461c713f380170c6aa58bb37207c5f775164239f4d285fd51ea3389ffd59013a16ed560009dd3c0710cd50e4bc3402428e7b002f454fd70df0297d7400b187e327bc169bdd00fa0ee62802701bc11160e07cf43b060cf5e73fc07d6b06433c79c389019aeef5cc00db614e9b2e57967aa21b8070423a7b6981acc09b9bd096e3fcd780973e1f0560c7fbd22067c1fb1d800ca96b00679f7b7537a0d80addf5dcfc4b8c5181a138ca9db27dfdca8046d6dda44b906b9178415736fd44042295cb3394d2dbc280927eb601ecbe1577c87ade539c63ebaa67a09f143844465da70c1953b0ae678f8a06eae539c91929473118a8c5da5f0154d29126e051ddc710a82858a32d38eb7501c0a82947dd008458311a1ab5c5398b7100bde36a3f00971f5d1b605c5dde04d0fcf2760a08c5d60da0cf7eef049085f2f51d409fedad0720fae72080345d7a6f80a6eb4c0348e3def602a0face03a0fad6026844d59300ccfb8f01b8b947fdb24c16a5aed4751e8da5edf340254f446edb8d7f808a4bba0e27001fc73e1f01c88257fe9c066033e508c08e5531bf3420ec55d7ce64cbe437f8727847e63378f34e00cc9e0a609f52760ff0351ae765002d23af5e0c32b6af134037672db60bf07d6b8f0bc0807d42f6b4c63eec54a475006edef03b1cd638f9178070645add312445ed8239cbc8d35e00bd747e6ce09bd0dc623888ca19dd90912d29c93b01d462cf67063ebc711b803071177d84d933df028c894319ba60bea57bda35c0401bc80130cedb2425aa6600e7aa98fe1a509759370021017e224507fdd29579d7db1c9581acad72ec9f1012d0ba3e36c0c736a63df2026d39fc0610f9977c4d0135d577ef2faf965c95639faf1443b9a112dd0f948deb1ea9284f68d3bae20ad0ebbb00cc0d6f8011e6d7e7510066f589818305fd13ccafe2f1320051aed701e4201ad062618fe936c615e01ad1e300eadbd66100ae117d09203da6cb0756800c543706d663b300ea394256c7a1c7c832320e3dc69ef83862ad1faf02a8092fb2004c387f80b8f14e0069ba422badbad3235890142a75daf6665b1fe06b117f8700072c6fa50074612b7f0360d3953f6701e492df7d003865d9c72080da547969b3da3ea5d6be84bf8ef3a60f0108c1fb790940d1db0148fdbc6d40c8d9a805202b4f71bd30608177fb0b207f72329e0750f5b7738053419dbd042097da09a04ba6e7c1838155ce750036a8fc0e9f8a6f1f01f0d1178303802ffb99d30d61f57d7c1b902164fb16e034c56bc7068cfdf906c09bf5f373002753caead5004ba9d47452e7ace6cbb71f4047ba30d9691bf095d93f40dad53b9407ad01c45c257b4706399be46b0124ebef9b00ae872e1f3f0c723aea06c0f2bec0e8ad73768a8a8b2dc000dfd6d8251da1fac6524a75b76dc04bbb7deb537aaecb71b9b24d398afe80683944ca465eb16f30ec4bf8dfb514adeb1e0a85b4344b1544de9e0250a10b757b47b6cc72cee5f10701a40b1fbb01f4d2c75e009691b469ac6f7b5b015417ce672fd338497f9ce40154f4b3b700aa5c711d40eaf3621200ffd873009463fc045d38f80ac0cd3d7f40ce9d878300928f87282936ddc9aaa3f2bf344e6705c0c13eff86005f417eb16e406aced61bc04776154095b7e38ec3ef4fc080ab05faf78021490095d927ffcb52f492001c9624a1cbdb768725e5248012192bcd5703c8bc90d4df0134e13c3c015232506dfc1a70c6aaaa01bea24d294257401d753d07108257e848d50ab0bfdf05f8b082d2e037807dc2c66200603b1403037624aaa9ebe203758a425a02d6ea0ac05c028cde014d989141377976496bcef2ccd70d1c494d67e71eb76b5b06ac3cd7ce001dc6eddbba01c74c5efc934e9785f702c0566b4b77932e81544eeb867ec90bbc5fe35b81a6c150179700aedeac5a1f00ece4b23a16e8a539f704bc027cc4acda078ca84b9bf6b0ca493611a93a27e3e34f0ee89258f1710d80ca29ef69e47ac8a83cbe0294a470fb7a33f03aea3e803c688714acd15292e4ee2480c65cfd68c0b9d79723c0480a25e9bc0660dbf83100fae3013096e5983c8f036844a583001a1e6d177d8c03f1f126803aea8c91dd282589f6d934001b989d0072436de40128fa2480a470701b4075391f0420e5f27a00c9e9e4ce8092f6d3005ce5b31780aca267014829b31f005f4e94b462475325edf8aac9f25f4bc0b78795bafda7019e5e772b40cf67352e026834e44700e7b95a94003bee8e3e01c45c25f77c369223e916d525c0a6dbbd376012bfe41d71859f4e2de691e9a8f87e0ca082e98ac7bc1317f4f5c7066c515cec01ba94f4fa238006e17803e0a33b0f1d00a7288af32c0093e721c0876ade7b0638aa947466a9818822d87e07701d723971c1f0b1350b6103699802f5d9716853d15f0338b7cb96dbb4a6b60a90595a6398b43aeeb2026cc66e1a587dd2b7b90fc4bcfd06d0c89e5e19604bad5f04205276270061f3db80b4cbdeda09c0b97fdebe0d68531d855c02bd2339412c732eb56b5dfaa55d2cc7390293f7a42d9331a29de3726d5dbd1b50f4199d9d0fbad263177e47a1308bd65d0228f989e2c61b30c22cbea74d1b354e3acb2740d1c50c44c68abca7d1b0f60fd0530c6bb14f5716833eb6e59bc1407dbb4f4715c5402df6c013759f047e43daa351c15c41be0b18615bfe6b07e0ace886018b555d37d700a708bdb9094056d1db00faecc3a10193c519d56f341d1a7712807c061b01a4b6947f7d0534f66516af80a4502bad15c0c9b41540faa33f0fa0a2b79f03c8ecd97a0c4022e3cf006ae4b3dd005c8e756c80c1fab0178026d43b52dfa953e9f860be4c05a5caed550047774c8700d6c8adee13806bab12a5a4ca970996d83b290cf039ea56b77c994f89f3fb3706e8a08b1ce05b767fc706ec8c3cf8092f45eb9300ec9b3e05d0d85f24009f3bd17df32bc0e1d11ec0d7f03c6e01866898110d1429dc7ede008e0e9bfc023cc43e6e01636f82ee0650cfbdaf03bc8139d7884abd362db58c5c0136b82f01299b184a08d280cc2774370210c746c1f2bc4b92b7cd009cf4db01747319244723408f40aecf6b40df955b04d04b072e3a0143493530a0a4337f76d0556d75dca5017653d6b458637daafaa363401f6d59d1d98dda624702916a9412c6e62c80863ab6f6329905be0beab2cc42bc2ae901056b74100bbc4100f9b6ba7701b0fa9e024839ee52fd464b4929cdd60390cca36f404abb512f0037e41e01d8ae2deba7005c73ff08b019a86dd215900e5adb0d2039557cd00ac896ba6907e076ca490074d03400698b7e02480795870124c9f77f9f55ab571f01a494aab90196a39c7f2b208d8b95f397a2ebf22a007edcdf005c3ba3ea671ddfc27c24e1cf9c99b454def3fc2f69d5fe08408866d5da058c3843b3796b40cc66de07f8605ff73200697a5a060c42e576c997699c345766d300e44f968c65b1077c7607204953eb95af648cec42c182f95fb6a4af0ac061a7f2f6076067e8965f6a2fdce8db802571de0a4012d153806348c634d032604c9a6e1b3042c33cbd021cd9f523addd687136a71f8606ac3c173472eea13e4d03703e6acd400bde56f90420f42d193e1a90fee4c53fe9b1249e6d07c02efc040cf0c265f3005abc9f2f0043878c6c19a02d272e07d75526b55feaeb2ae77e47d1e53668ad09b32ed95f2addb29b67bd2e3ec7099ddd4c51ecbd6adc2ea36b516c3472b38a2633ba344c561744653dd1c88d52e2c0d42f60a43572e2773480e4e1bb01346ed34dc0183fdde56900992cba1f7905105c2a67d3a9f8fe174082ab34812b401cec5300cdc85f8b00eaa89bbb00329d92930064e4da0b2023efb61b407519dd1aa072eea3602c56efb7036898de6f0540e57c079014ea18419e3b5778b9fe026067b5fc3907103490b4ee01b5af673c32f0b935cd51b977452bdd89912f0f73103eb767c0e2ec660e205aaee8f91d24ed6e1dff02c83b5afcfb317082b63ec059ac749b7c037cfe76fd0dc091bb02ff47eeb3b3a56ec95c0e63bcf81b77009f9c7ede34606b71cb2ff5d98437ea92b31839d5d513cb984e32a33fb60cf8ecf34900f2d4fcff449dc776e3300c453f467b1d17d5657a9cdedb8e6ae97d52bf7e68bf0b647b8f2d5124488220ca1860b94c5e560c641cded70ce8d8d42ced00ecd0fcb6e98023a0b5a34075fab5875a08d1eb9703bd25d041f12ca673d4520be0149d664f00b38f0dd282b39cc36af28fb7e453fd2254a700bbceef687a5168954a946832cb86daa63a6f898b81c0dbd481b682d30307e4aa387220152e47705d879153c902a07df606b8051cdd017a3494bd2d076ae9d91f204be2ab032913dd95038ded319dec0b8a37ddd41e150a5c0012a46c3bc0f07fe84007abf52507ec62fe50f48feb2707daf84eb55ae69eebf7fe06d08e70f3bc3540f59fba059074262d3e0db015e8ae209ba7fa91d0352f0eb48eed7d00f0db0aabdb800207eeafc4813ae8c79e6171f337134030abf52ea061eedfff016e0107404b54c9d509c06ce3cf5ae9f2b9315ccf583280be7ef70ae06e2d745b002ecad2848665d9881df9d300b3f2651590731df77307287868f10f60d52a9eb60d602c577acf08d8f79bb75f807985ef8d1c6818aead610d2bccc787810c778f3780697d8ff68b1e9bd2a37dcbc0396a9068e7b9b9aedc4a2ce301c7e2d56500c8db61400be617516e2563677c8b6df3cdcd9b012edaf71828339924e74b0e2827f6e4409370d871a049f8f1680023c26419d0b3cd8723079a62ed870375e1e9a901b6d72546df1481b0bce7400d0ba70ef05f0f0eb47b2879c50268aa4f0f1c6807ba3972a0d3dacdb103d28ecc1ce86bfb37079a73cae23d072d1132270e08ded0430b0b3f6ebe3a406f29977f015e704c27adc2922286e92dc0f2f65cf00cbbd34ab77b00f7eaa9fc1d22b030e8b789012c13a71f80da520d5e18b08a8ea78080078002d8e7db1ef6d3a37d406bf140f68b1e97b39b918129859cae01c87a3890481599a54ebb5f3380d2fbef0460975ceff469463ec746a9b1e6000fa2490090052fbc3706cce968039063d95ca6a519e69fa6dc0454ac303f4f809ad3c9d3cc01a12acb06721293ac38e0fcf205e8b96cbba2d7f31161265c0b465502b7931b7a2c1fd8e6b7908f2e1b480129ddb2b04baee43673a0a9def3507724ef270e9884fb0ed4630de312a7a926613871c06e7aec808dcf018af3f73a602075c9d79701ec1fdc3417be672fef3b206cefd6813483ecd781a6fa71e9402b6efee240422767b005d030ac6a812d2d6d40f370091838cd2b3bd05c18a6d4e1dd05e0f41c36be01e6d27c7c01b07a8dff3203e8fce1c78055c7fe00584910258a9b03f6ecef3b07b474053070123f90f09776ef11de4f0c20ebbf2dc0eaabb7af06982ffb3b00eca7e1f6d3012aad01927835d91460797bae2f0d7024c66e59ba4fded31fc073671b6081f4cbe70073e0beb6b704766465e658006e68e8f58c20e7e6fd0bd0e364a362c759995bd190610428f48cc09a5c16f458d8a6a5a12eb9e6a0d74328a5f4aa8c4656c64929a1dba5614349f0c6131264ee2f217f067089d19c4d1d503622778067c6ba011cfd46b7000c88a11c3bc052b3e2800e5a3660e7db55001b70d83b742009e20ea7f4796b0365f3367c7d3ad06b933d07e450dd77a05d2cdd71a03dbb3976a0897c71ee407dbaf4f717ada799bab0f244c6bf396040835dd1c7551e92f9b36bc02e0e13c0d422307b07948a3360e971c23720c775b63a00981fdb5a06b094ba5f01d0d86dc21ec0dc6f9f960c98b1bc040c76d0949c567e5ff9390364ccdb29af9d1f3616bfc84f00e4d64f0e0780a5c779dc71a0d1e776a5ca2cc9bdaa4147d073bcc7db250234e9fa1f609046df2af35356e56392129dfe1ae0c67bd639d0b83c7e1b20d67c7aee80cb143a390f9c805bc969557009da3674611c29caac683ba9c2b892f09f699a5671129268f20dd022b8e7970ef8cb9503b4e05380cdb9c32307f818e50ef041a3c7e28c62812d1d48d76ecf1d68beacdd00a82f9654170ed4f4cf6f075cc63e1ae0e479a2b95f4f4839d4040dd43c730b596773404574fec929802bbd50a606f033286a07d8a536005c72a59f1f003292078574cf01a3cfe5743dedecf6ed06d0b3e29eda2f06f4a0779dd5ebb95fd6021c7e022ccfc4334d9fdbb216e0750cc831bbdcbd19c838ce360042dc13e5dd5800ad1f4900584cf3db9201b4beb70d075803ef0096f0e1f7d7001bdf9b35bd918139a403a02599d8bbbdd61c201eae007d4e827afb387359ed2485753c25e27ecbd7e656c5ec8987e6958ec481ebdabaeb062ab16a85a98780142a98368236f08bb1012cac58596adb5f423f72a0670cdb0e187d037dd0c8a97afa1c303d925d079c4efe7e2191fa5e03d80e34de73409aaf5b07d282f3c18136cfc389036d38475307bad35235b50590e9863b8be0e53c12094cf0bbe88f1a60d52abebf1c5000f61260f54e2e5e01766bded85fec6ae0d8fed2e06bbd961b4087b9b376f4e6a3780dc02d29281c7b0e981e8936be30bfa3d1ee311840826e7b80c5bdfebb0098dd923bad90590ee65b7ba84d8feb0cd0a0067ef27159cb5bfe69510af944f72fa92a3c4430c5e4ca5d63c849411d54847a013847bd014cd91cc60e8835e7e30a7b687b04180c48d64319e4b9932c49db0a2198eb0aaf0d4d89d945eb47881388ac3c1da0d7592c6c310cdd30683dddba712071b8e6a19698a4b9e22f43852fdc392d8d52c912fc08680305e80f0ca0b1d9b80c5dd0fab167cf300fc4eb6f001b4e727ae0402ddd3b76405ade5580a9812cf4c18f6fc995034d421c9683cfb970e9405dc84122b84ef7ae2bcec62e425a054a2f0059ac1280e5dd78d79c8b1a3fc529c65f008b9efcd90358ded16406c018daa8204c04254b70ce5b3c3b90c26d1780222a2300859b8342651780689f03076cd15300e5e5d3cf12305880b2cc0c8d79a985fa11605adffd0760c2bcfd1d007609fa7c02c8990df7cb0ef496193d9699cff7fb11c066f6cba10126d0fdaa03c2e5f601950590bd002c99fac79901969c8f0b408ba5f769cb0116b46b40677be53f07bab0c3a9b5c97a6a502d598f911024ec31fa3909419ab57b03f87f74c7001c4242f504b0b08afed681be167523eed8a66ed0eb798d3aaa72621158f88f8a83674d31e1e3b635f79bb82a691ddbd24ad774cd20f9b8e2a171ee4b70af6e1cb01830b671ba4892577303586a3206dbf6ec903f39d062a0a0ef39608b5e1939d059ec7317d0d56cd1a901edd9e168d3007bb6a22816402d4d76003de53c52063bae1f7a46ba6d001df768e4406a719538504bd30d075aa59eef1ca8e997570e346f6d75f0f08ebb3d03acb8c7da805bcf2ba9c2451158be2dced9ad858636cd1bc012901f5f011ad2af9d6c03b8e10d1810dba915e952d1c305c00ec343cd6f2b8c69d8dcd340bac304608699abce81bc4c944e3b829c7c6c99fdc5c2f595926a010812d80194ecc878ffb4f383a47aecdd81d620155d8e80a499413596e780c2abe3138005e31ffe7380097a1dd06a12b64302e8a80fa4c402f3b5c16af96ac969734ff5f30dc8d9c43b3e2ece4a0dc329435958ec0a41136d28e57f1ab634e7da7eac1d396cf50e48a64ec38629f7fb0f74f250b101bf5f036a7c25d76a40c0a872b607e05c19b8f16e7d12ae7f3ad05f56a600dbc40f0f1d50aae5c000dbabb25766f3641e54329a39d08e9c8c1c68dfe7daa7b55d3d39b65fd826aeb0df05d0ac3c3c73a0671c170e9884970ee473a542e759e78a33279c6e4af6db66b70304ee0a684767c53ad2ad574027d14e0f3600563761f3cc80655757af7766fb4cbff84b66e5c48e5b035c82aa026a364fa380b96307605af0c135a0b4f47c0f06d870a61ab92e2724b3ed6f1c502cbd01e0591e121e6a76fea00aca119050b91926804af3255166d20802579c6f3f8086a6dfbe1860f37c7f02b416fe439fe6d4b34896b4cd7751c7d70ab3fd0ea80ae60bafeda2700b309451e92541bde66d374cb16c5ef5000bcc61d9ea8692f3dc9a81c0e5c146ef8048ae434013b46a7753031832cf18a8b8cf51a02f73a0815aff30c06bd7bf1c70065a0274d2b5931b7b2d06d5e46517d0077c266e1cc8abb3ff03ea539489ce66657376e94006a2677be8a0fd3670f68820504dde7f11a81f3538206dd18b0176647c143bbf4c49371d5086472dedb3a9855514006213c2d98b014233948c7001f060fe0730a734d4e2deca5734aad699cd63ef35b3ef570cb0e1bc6e19c08fede5cb817ef1a329d6c7f94298fc198070db945bd13eeabc9aa61c02fa3881a46bab345a04444034aa2410419b91c957d3a32fb8596d556a21eb4beb0f955ac8fa28fc5ab5b778ed3ccf86445b0b4a1f655ddf72d538a04f77010debfafa3700c37fd21f003a3b697d1ac0dcf1f1e080fcfc9706f0ebbbbc00f45203933473203955b9b939403e389af7ee75b3cbb84419238dd3b70389f6c9a503b24759d3ed4ca80adb0b809277e58043e2b90335fde2cc81b693c3bf67a8832e470e34818e260e88e155af0f13ce73cd9eac70835bf1f9fc615aa2d37db400ab4a7df102b074fcb8230f9e6af0701b40406e58dd014c30dc7135308ff156d3979f00a4c16fee961da8a5875f00b34afe6e022ced48b96e802de9ee1fa0e680b7710f08ecb7d7950154b8af5d406be9c53307e4c9b37658dc3c1732732059bfce0df0da42536cc8c73cf4fd9f815c42f74c3b728a960525799b031c1f871230b57853062ac7272f79e7e3722be6723d32c0c7bd7d1828d8e7ac1d9686e581b1cdb95d696f345f868a044b615b3a6edc8074e9d7bc6aaa0f4346b48f6aea4450db1ec53386c0d16bad376066fdd6810e9a4adeb9f038537fac8c0db08c1f7f025acc3f2b130764f2dd027481ccb5d60e2cacc9a5fd050b6bc26dd310dbcee16cdd0053fd70e480a97ee580a97e6880a97eecbfe02dc7b9034df5a3b103dc3c177fc9e721cce450fd044c98b7c7e706c838fddd01ec5663f304c0dd7c585932c043ef0c94e6485e02cc6e795d1bb0e4378700ec9689ea24466067c27fd6b0ced239ac037a76b10f7e915bb4e0075f9b93d9b8791900d6d2eec4817a5da9c11780045c1340c9094785ad22b0e269db3cb41811322387c308262445bcee018d1c53dae459a0ea73b2342f03865c22b5f42b10a60aec0b337a6caef62d7eb1cac745ad4f9bd62eed88f3454d57806104395e26da3c23a86c02d1c97102692b68cf00be57fe338001409e2a11b481ccf91b0ea4c21d1c033a76c2e6c88116a53477c07e6b6fe9a57e254a621e81a95ffb070ef4d0fd43077ae8c985030de5c19903f5d8f78301265075ee4013e8e2d48126d0e11fe02cf6f717ae9fbca5eaa056999ff2f1a4a54cb57c7ae7270fa970e9f71e20c73daada3790e172760d2850bfee7e0035e6c1bb0f406366fd5340ab5f2457eb0072a836d7c100b3f2652c909bb9e3df3ba0d08c0a8a468fa0e4be72e05b727cae4247d3f3960d58c93c22e859e8535a5af69c818656a0e284d32894296e2e43a5b9bfc4d786a24092538128da125c551159007ec1c745ad8fdc0c1da0e2b8b2fbe080abe733401d04d67f018dc548ac003ac4f2e812d0b36a1f670ed41fc396035220302ef34d6a0164e75f003d637ddb8104773d31809c1e1c3960a11f3bc0ef42af9d4c2da40a499ecc0b242d40f30ab050489e319976721a48679a84f3cc25043a5e01c8369f2a883502fcfad29f6f805575db3a0394bc65eb1c5071785fba316092bc0230bfbe3b7b68b0bb68be656e94972497805ec21f3a89d424aeca842204c0d8dcf70b07a4b3fc004c981e29ed88b34193f0e61e90f38c3e734064fd2d809af54d478f15534c04d75a9327e550e0c924299cd48d056c7f09c4855e5f7bb763404e14c912fd11f2825b0d1a16cfeeead35925d08f7a89d40f63dbdb0dafac3df924ce17fca5ae1d483e2e7946dc2c3491cf19b9a10a5c4e1f006a0ecd6b8d01deb2b70f08ec1e6bd70e289261cfc09c9ebc1a603b49c205c0f606a5908da0e72f2763079a51ca9ab000fa7cd95022e0349fe8427701b47b1c9e38d0301c4f1ca06dd9b7f8de70ec00bb941e3afd4bc72f5d6a9e4a9e543f4f00bba179d6604fdde27cf60ab06cd13729a041f8ef7e01b6ae7f4f0096b6b9d39c9b467d1d59cf1d905d9dbf44c145b57e35c0e1bd3b05146839f2bb8880eba766481d68477eb1b754b22826aa95b600facb640f1038cdabfc6f04567547ee621174962c5b4bdfb418d18ecf6b00b92a9a562bdd34be95db153ebf1e0a0dc3a534a5a94bf2da00a8d082779e1da81deb3f80c049fc83a11c5ac97a72fd6500097a7c047435127461005d6affd8811694df0f07124bdd12476072baf5e640b27e70ea40bdbeb9e940c27f3272a0866d5c39d06c389b39504b0fff7ea10de7f0d20006b35fad749967e15dbb04101e966eea5bb22c93635bb37501b02b1b55638ca042826e02a0b195ffd381c26e2eaf011d3999aeb56a6773ad7f01fe9d01cc2ef59d020a5b71af00a5cd06be25af25ebe9781dd0e5d438d496145b4ebce92fdf52045496fa07801378b2a4653cab71294a961e01ad54fc64491368ee77c25f5600194a4dc3b70c25aae4fe1410580bef2a071287846188cba796f18f3b079a62970da0450a655f5f00dc708e1da8e927e7802e508bf3d801a93a4e1ce85bf676013d0fdddb7320e35f7de4409dac7ba07c7e7a97d02981ce1cd08ed9af037dedeecc8184ff60cf811ab6bfef80542e270ed4d2fd230712fefaefa1da5f9e6f1de00c66bdcecadf704afaab6b7ea21d39b7c4ceedb00a208f73b3c15fb2c0e5a3cc5073c06cb8b80398527377eb402b9daa88e41ecad4bc7c1ae0a07993005aceb7775f808e53c18196be3c1f614292b567beee33a35e47000c66cdc73f40a9f9d23ed2b0dcead0a4e706a874a522d40b40f10107ec73af39a0a6619f74501ef42d89bcf62218287d75a2b1cd2dfa3a59e2f3e38ce298b00c20f94dd87e038482482ec9581e0559bfd8d4729147b587f3ed3b20d8e5c135a041b48733073aef7fdc3bd0de70ba0368838e1a97ad037d4bfe08602b483845cf813effa27120e13fa73fcc9e1c96ed2ddc5924a7bb067846bde980b0f03d079a40671b0e345f2e1207120765489dbbe6930470ef1fc0eca79be78092e827b92446607ad0f10ea01e6133b06704a4f0f61ed02074b7b7002ea71b55618ea063bedc5e037ad6f5e71f03d81c6fa5e31651b4a9eaf608c878c6db19c0afaff996f95316e0878645e1d7b77c57809a67b05c1439f9a493fdc1008766959acc8b12df9e20afacbca8bb823b3e1a16cfb7facbf62ba02c2430db2f80aaa0108bb693b801e12bf9c0d746c1554b318844c0b2753005989c5e0480e9dabacf8ea0d33342b6e440678f835d0712dcfd3d000b7d72b6e94042b76b6060079a940ef48bf34f0794223d71a0d157404c5e5a81cf26689a965e8d51959cf3d28aa7c535c081247943bd5e7a01d8871300f91d1a55eccbe73134ba90197f032ca6e8f00760e9d766a7005cab9bbdd2015a4e63002d678f86658345a3d3f4b906b200bfbcc55c9b423105501323510a84081aeea28fed19f87c374aa61e01e10c61e7d0817aec730c18e46fd92815435e1644e707d5068bc0d2055d6b1d8b824c4bbb6d40cdaabda4f952d621e7b0ca408511b361fb09100a6939337aac9ff45a4f77b5cf95c3c4cea6b78029eaf92e6fb1ebebe4960e8a6753ad526bc1813aa8df07707d9d0cb70e90e45d408b4272911a60199ffe027a2de3c9f987033df4fcdb01d92b5701839e91eced38a098dce0407fd93f714002f21b076c055f0e28107cea40e32227acbcf2904c951589c02a806c9c3b9058ce4e00161033d975803bf28301aed22eb54a55f140cb8afb0cb05a14b70d00dda1b96d1d901d3907d480af1a60ba76770168489ca708cc0806a92c41b1e679559827757b0a20a2ac51529139d0430397075561c5f5aa65035ad7db6bed0d556d27cfc32d40ab553b597a020cba244f963409ab28ebe4a65c03648504779b0e8ac2af757d97fe98e7395f808d2900bb65921a3093fcd93aa0414ecf7f006d207eee1fa0ab31a7bf3bd0b73cd3c9a68d37cf0f06b8039e14802160623c7740098c1f0764bd4f1d489277961d70bedd7720492e330748f299030de5cdcc8176e4db2f030aec6b1f743aa9a701a7a3b31380e57679d3d658cf338f6a22df0008850cd900a8599337ce0081dc2e8a5d59004db1c35f006523d2df0780a55051e9cd28d814d64c2e0c6456e46f1b9017facb5001ecf4fa8fd79a3f5df3d4022c0aeba6073458e05f57012dcf786a1ca88396e8b1b815481c90a03ab7da0b2d5d58f505bef89aea759475ceb7cf0ec867c0e7f756444521ee793d948825a7f9dae5f47b19809c2647170690f53d3a28ca29250e18ca280e5a82cbda81b61315c75a00cdb9f6cd819a5e160e90c2dc01c9a2ce0d107772afbf048b256eef9e00011d77290534ba376d55d62c0e13d6f35034004a2c3577ab00cba4b73b011085952edd02fc0c3433c002fba64d3cb8fde3680f3041edb91d0ca0e33ef096dc32733c6e012c01575f024afe527d032ca7fdc597034ce174d0fc3d7acb08c0e2d8dcf02dc59860fcdb0a40ca9080d61701567c056ce7a1247f61b2a4fd36c4a6e223700f284beabee99810a25a4cfa24bef6cf8cbd0f08b55485cb0e60ebe91efd1117183272f1b5512c09936f1d685c942d7a0124b8bb8cfed06bc54d95b9650eb45aa6d59e03cc2e670057150e1d6071fe039a40cdb6032dc11c78830b3f9b67703fb6eb6507a45c96f2ddfc657cfc05d4961fe6188059aeb978047472694e4f6e013ddac5eed880e90eef8081756ccc6bbd08c24d6b80980039d84540746d33d40ed8f8ae00381e347d052810dce509a0cca935d003f0a40ef671c588255899d2f279d480c08f032c791f7c5ce1a99f0f00c86968794b61e9e852adfc4d8961261c6946357593eb2ca6c8e9083a539c5f00831944786d181300a2948711d8417343f3a5316346f22f05b004377b3340cd6ebabbec405bc1254d8fd34333ea7270403acb6b03f8c35c0640536310b901b4351e889d0192ba8fec193da23dfe0312edb7de81447b6cc0a687320a2f809eb1b3e4806a379d03cdcab272a07694a503c9c78ed68f795c011985b528b559cdbaae047e11d835faee08607914efd4c96d3e9214a6cb3c34a7204c73f80d98726a540ef7083272415f7c00725db427ca4a9cb7510a09fc4c011566b927de52344a6b15544e6c0ee42093fc6a918ea392a36c4ae85abf05fc5907b016a6f5a103dca32e0c6022787c02a05ba6450bc02e952a13e71ce82f69f6ed80a4557fbf904744e6cf605757cd9405900ad7bf3a90d08d361d60d91c0c90ba95537497d5230eef678081f3cb9e86a1cb2db5cdc609c09cd16f3a03ecb7ca361f416665555f003907abcd6303b8f02a982502121927e7016079bfee0f011cab9bbe06e06a1e5afb45936bb055a926ef0aced949760598702f565f0248b193dcf0d00265b37d4800e4920f0a60cfbb92321ac9af06aaab5136132e86bada74cb46db5ad734ecc8335edb4f3a2ea769583fedf5965901c87bcdfd5d694add30c2fcb3b20f9810f5bc41d387293778279b8002d76a79ed455099e3d21ba031bbd412a0adb5573e0c0638ef3f3e03ec4aafec0c7006da5d03f4e80ef999015629e5535a00ad52cf06869a58af3f40c3961de81aacb487dabe7f7be28058d13d071aa8f5d48116a53d299bbda7b5528eaad8e503c79567cdca3e1f716faaac8011588e88db470318ed955b3f02dc1bda7e19800ad7dc6d1a402f7cdc069868df6d001a99a15a95278880e29ccdaf358cf37ea2820e795f34b4548eb111f46caff284ccfb122ff9f64e0b5b5f91d53c59e2e3eaa0453a1c3f3bd08c5ad796d4cf1565fde51fa040fb5cd905709a6f1a403b92ab46d8d09eddc70556637b438f45b1947c28b360046d2d23c2780098b299f70e2441a31410dbaa8defd701975c3b0eb48c4f570db09e1eee3b90f0af4e0043a5cdf3c91e3ad424894c1c903dfbc700336ae3d281d6a08d0707d4a2d872401d5eb563eed22c19dbd233e6c5b134b6aa3f970f96ba2455ce8c7ceeb02cb0f206201b5fb3710c3077d3eb0460b517beec2f9efcf7046046a61329ac439171a7f57c01a0ac59a25c04f97cc5917cbcf096a2c3468fc7cc508e11cb138ded50937f2c28dd4704815dfd8367443550bff87c72c02494c00c7195a6ec1dfdd167b6c08e0df46afa6ce400b1d4041a8609cfd8280053e414dd324a032bee1a0d8b4d451cf896b8384ae8460da0afc983161c2c3a399d5c1960dfdf9f389086b2c3c7f9a5f0eeba01d6e4ca7fc15f2ecf1d4885db5d9cd68a798529d2e29d0a645664f8e241c0d3177c5f022a2b43fc0e08b6cd370271afc4ac7f046827d4687f31c02feeaf054aab8aa0229011900122e80ea718d50d3756ba9f2be61ebb5cc8cc002daaf5c3b503a5f79cd030db5fc2de066060187497b40052f20e460ea4c0cbad6001344d27b9038dedcb8e03cddbab0f037a6dab3492c5d88a313497cf021915a642be0d206d51b39d01d892d2558ddcd8126e27674f004be374b82250545680feda00dbc9c31810d4a74159de8b7149f28a4475688a714db460f25b0108870a2af732073949125e007638fb9d3ad05b7e96003debc70a9fdf8f3a8a0ef1b53e4d374a8138e7b4cf5d5c020a6c177705801b8950f1da38e7d41f4f2f0e9873bd038ded19df32982fedce9701768fe9be030df6ce87030df6eddf2fd48eab7f0e747a5568e81c304d55dd65015025ef1c50506ad301f53c174b703c76e7364dd585939cd0d074e31340fda854a97d178013f02fc0fca4dfcf0195ec0ee9f936a0552a97e4a30258398fd9a3403152bd93f09a0272d6e49d2d8192621dc99b8661525b61efb315009e19c90abf98eb9212870b817edce92fb32960dab1ae4f1c48d6ef7601c1b4604de4499420099dee3d22281087c0e70f25a62c39502d004157378040c6d8ba0434b5c09d8196655c4542174002735503ba9a588dce81b69351eb404d7fb6d7f62c4afbf487af52fb970ed0727e1c689a1eee3a60371d3b4043f976a03e95a16a0124b81bfe5ab42d056e2d0037cdc70e34f7d76a0728acfada69d4a46594dd56274fb301e76b79a7cf9d80115cc59a4750127475fa0c20a150983e39c00d47833d9dff493bd00d20935826a7062aae3974275e4c4baafe350f8f004bf0787606b0db848eb754e65b9c1c032a52a676eae469d3482f6c9a7dc050a90b7f78c630e536723533c0b6965c004ab6b5f55b40ab6784f33d03ac74f2548960a0420c733f825aaf55f2ce052066e49f0389d4c9c881444aced70b4089942d07045d9d3ad0aaddbd1840608ecf1cb0cdaf3ba05ec1920349d0f7bd0354164d8f2cca077149d700ab51767404b0024af7fb06f0623cfb005838e5ee14c07d43bab60a30b7b5b72b802535d329a9c8e28eab4b50a5088d8042a3c9c31760e094b40228737664393f1559652e9afbb4b426916058a2a5755db09bd6007c9cc3f9aa012e525586b8c8dccc3068ce65510a4920ac3e9d0758aa1d9f7706b06d5d2680a6e678ff08684d60de019d443b2858720134a38e68989db4d2f1a303fae310e072ba6580f3feeccb012997c70eb46ae7ad03353d1c38d0ae7e7bec8082b8970e285ef2e6409bf8f18703bc7ffca19c2b0f8f1ce8f3e5d5b900baf57ad0b7e439ae5ecded13c043badf000d66a8932540cf9da742a98bbca0246adbf18b2854381baf022a79990499088ab97f14959d6600b39e3ff0d072ac5f0455b58f608297fcd30830e52a5e2177c5dc1f8892a8d261f2ca5c8a1897bcb23b8b5d6917798d374332390290812a59a13fe2364f3502adc9799417adb85f5a3ff2616459672f0044b526dd26a044e8ea0250ab1e5f500a84085ae4f42e77a0bfc8601641afbfa4993da3af55fa3b6b1ca83fcee9e428b81287c70703bce5e4c2818e5e5b7fbf20f46fc901eec8d70e58711f1de8a8b1f3ed8078b1350764797f71a01975b8678025f875df813a79532d2df2290655591423c848433bae018572dda46b5f00ea03a5eb2b002ba4a0dca5c57ce82474c7bf06c829dbf29628c902936700599ac324013464c3f9f76b80d8d98abf549604f0641d6015518eff01cc25e0a807581a058e8045edb9f666801cffc2af2700752393e91a0007ff64ccd746d1a6a2f42010754b89b632b5ce01d13ef2408ca095e698e674a11d57d2e2c481a470faf70b495095017a9e519e3a50d36f0f1c108e6d60d05f92cd0d0752ae3eb71d68a19737e502e8a1729d5d00dc4efe9e8172f5f70c89a5bc291740aac2e59903a90afb63031c8af6fc195cc7e97eae285d4e4f0a80b924bedc002cc9dbf6086039dd8e0e00ada5fb780558818bb77700ae91c997b6c6b2b023cf9324a88c5a1f0edc1aec786ac03afab20508660ca5e935c11b897c1516407dfadc18b043b3d48d32589091f20547d014126d65e12dca1ecd316cf097618c99723700327c37d2092047602697805632160eae1c90ff740dd0a1b0aecf0c704a5275db05d06ce00c54bae17f832e8c52c885eeb203357d6fcb007a616daf1d341b92e76d07ead3ad4707ea53b98b2d8016a5d1bb03d6d3270712dcaa7040ecdbbd031ab663002954d2cc629ea45a87e66df569955b9915e5618dc07c58650a9f6fd03ae1b48f5ac7aa6244aab0620380edb391393d0282e0db875300e56f92b301c06d5368f4f95539c138fc4d4b4bf3f8bfb75f98835dfa04a8b0e59c69a0aa6aca12ac92db71f53449ceee01e6b1ab520b71396d29e2d6d11fbd9548413eaade32a6f4da92aab8384ae7af6b402024b3ae0cb045bfde00386737c9bd01ce0db747004ed1416567164053ecf8dd81b6a4db8901743aa54c8da0a761edc8813ab93b75a01e3b5a71a0a13cdf040c15f7fb8d03fde2f3c50067b1ad3b071adbd99b0374877b07ea8f66e680a298ab0eb46a3fb40e4852bde740f3f6f2d881be65ffca017958d71d10d6b96d408b74f32a19abf31ce1c7e618f74e6e8977f70115d9d5b73200d95fd2d51780a5a2bcfc060cac858792d3ba28b94d38b803d4acebab2dc06e02ca5f00956a92477d7ed446d9d54fa45dd4d5184540759b8ab91b9f64fd97bfd4d47b0df7b901bc6e1e1b40cd65db680268a73c0310cc147eaf8dafee46ac74332de3753fe958fa3494753cde93373018402c516ae6be81125ca5a688a043c6d880e7ce821c79ae1c5041790d602a6d3b764060df9903748773036cd1ab23c0507121d33ac03afa66c0d48d1507c8faab0364fdc5010bfd93035afaf71734943b0724583a77807dcc5b8a26bdbfed807a491b06c8d8b62f30f71e94e54a9e7f45c86bd4e2d3558065063bdc04b0cdb74a5c1381dd237f680d8ad240a296230316eea25c9d11d48ac20a4a47578472447c439b0072c2c354c1308296f8ca2d0d65a84bf4d325fe52b75ca6845f072c282b0ed4a77706ba297579ee01a4a6489433a30801b7f9e4579d1c9a317607a5f72c426fe94f0eb559ccbd0735948a9e8ca035c1a50ba324631c9e1960e95b4b0de0b87455017a4c15ab53004b70f2b9e5409dbc3a76a085ede9c700eac6ecd30162f9ec40237772e280bc5f870ed4f483890356dc53071a97976d07f85dbc1ac0ceff2d099a3b0be283a6c5a0c91bb27a6dac02ac8ed5c59301e463760be8b1299d4ae89a62c46af9f20be811ba5e67c2a626a150e81f1d50416817d072bfbfa3d16f42564ad69fa4c334f1c8432ed7074060cfc6fa35777dd3f2b97a618074b8e7bc258a83cc72637b46c7600feb0ed4ebfda50375f2261d14e543c27fb3ee404d6f5f1c68289f6700bb077ade72a0ed64f6e280c446d65256bab0bced8095eedd0161bf9b0ef4da49e640777c574b0ef471a33f402ee80f0754b8544b5b0b4489ab93c03cc470f18bf5330089bfd3152d9f6d61a5599f5200f94f937dfb85a9b4bb12feb6c4fd259df2d07252ea2fdfa780827c6c8f352070e439fb36c0b54ffd0268d94d97687a6d5e04af0f0016a5907c1ac06b6f83cfaf7b1658a5a589c02a096c4865697bcb6fa9ea0c453b8c1aa2af0f003965889331a0b0f30b0f8dfa29d93d78edd060753ab9318038286df302b0c23c03da4abb47726780b16d27000c00a17b7280c3f2b9038d6dbaeb4072bab90ce859e9364e0cb0236f0c0e343dae7f1ce0e7b802306f1795f25900ae7cdf1d68c57dfa764089d8bf67b0696d39c0d0bdec40334a310173809eac143b0ba0766c9c3ba07a87378c2936e91d48c6a67b0ef084fc75a029b6bcea409f5f8e1ce85bc6bb0eb4df7edbc8e1dbd3bee82f5d5ee856b4d99e022c3cece8103098e2acedb52ba623f206be0328aadba8b055d1c539a786dd6928e3d89354243f0650812c5161de0520e8aa71a06118be0d305fae7601645d49944a7f0ecc03c07e81c924595b364081f159e24022b5adada00b41bb7a1bf8b8a6ab8880d049bceb2d6dc09b36ad2ece4af5face0430e63236a193874c12d434a780821bde9f2b4089a39f024022c03d3bd9a0c7e2bc25a7db36a0554b93cd2507dc26ec1960070afb808e13707ae0406f592b013d3accf93a6028b501ffac1ac017eef79f03c9a96ab72c00976d470e3450476706982f27c70e98eabd0306eac38186f2c35f8bdaf3e2af65465d9e38d0dc1f2d3bd0beaf5a690ba0e513e5aacf2d7f21479eb98fa2467f5be3d217234200945435026a1e34bb5780dcd2041e01ea02f54b02d39763ac1b2a2cb1001afdc77d40ad099428cf7704a140b5de03b468e3573cb4ae2c64b703d88c7a7902b4cc975f1a16c69432ded1aedec7994e2eb50450e0ddb13305545ca3278f801a395da38386605bd2c480d9d85a4063db496580c156698105e0172f0093e461c301d71c3b80ae223dceb501446a2d7320c1ed9e1d507ad39ed173266403ee6d4b0ae841bdd95092a72f80ddaea81469e1fe96e1a37380263d73a0a14c571da80b55cf6201f4da65ff0bf36573dd815ecb1556eff36573cd819c6c2e0f1c68be1cfe01cd97832d07ead3a76707a4849068476d83db6a65d32ae6e95fa5a11cac0188ce4fcfa5a00d85150dd9ab0de0bca0f47c11505d2e5d6e0156c8e9e51fa09f902dba3480c55969bd8ba11c9504180e00f2c2c5af004c739ce3ec2f1c0292ad23001941dbf4c440895a4c4bcbd222962b00b33251b4710483dd896baf8c4b2331cd2aff1b418b6e794b8fd9d618d21f40637b149dec9b96024022186c226bf91cc2880edaa5d78729e6b0d573406d6ef37780a0734313f87c9b84910330ee8461d30022357a0360cb49d626065025c31e80191596ed19d82d93b5a9038ddcf32ac055b83fa05f6099184c414b70041d7c02e14332d8044a71c11b7c02e58d0382377e1c6875f8181c6875281e1c686b7cfc035836bf1d905c7ecd81e6fef7ad03b5f4d53ac8cc944a0c5f8e2c0344aa5271f3d30bea970c66115852e6831b408167c6c611808a5bed237f29a9c599483ee6b345b29e6c5f0288b04b8b3703cca8cd0c4095bb646b175053b54b458623e82c45d73a6050dac4440e54e5a8a63a76b2d403a8fd94c8132102ea02869b6f033a13264ad1154163c1a3370ec8a9d2013a9268dcfc03f453f27e1d0206cd97247c39d0dc1fe8c290e7e8852d8058c0a63910680b0e122b8f02fd486522931ffa34eea6e432a1c7861cabc24e0528b0b09ecf00c1ce1e2b00f38749a60072bb34e91e806096f0cbc8c539c7c973e6400ddbb831c06e7afdeb400dbb60b0a3d6a729f6b9ee4002a31adc73c0c6f7b9e98079bbe680521cfe0c2d28c9ecc98196adaf570778c9bf39d07672963aa0aacaa9034e8d67064c95f45f30b355bc7501b4f17ddf384051f49672b05af97ba826e1c962512ae74977755176a329369e47cf2e7eb15d02cc3b5dd92b23c0a9a4511ee7082825d87ced0814b8ab27ff3601034e5889066a5c728911ee4f00964177edc1404972930450a9324bb2aae9318e8aa23eff9186c539a769fadc031aca575cbf18e0f826bb76390e94ff4d94be31022bddbbf368001ff84d4da0716f4576766a81381bb8287b02541888e4ca13418df55c6534cab19bd4568e1ca08ede3a60d9a2c7a2f04bc664a65c007ddc059f1f455b1ff7b9e20025efcd819a7e911b40d69fd71c30e7361de02f75e8003570d581fc5094fd650164ec3af97b863a797fe6806dedca00dbdac6ad039c7dee1db0df7ad371f34cf71d60ecf2d77221b3fe620033f65de140cf50d5e172eed1ad61f87a00e453e2b41e0156f66ef31230e0077ba47d6e52583cd0c5128018cd54510311340abc48653388a0b5d78e0064e14d5452a89c44254f2adcd318d05286677543a02a65624c120dc3a4e6b6ba6934729396a16c5b2d7d939e22e5cdcf0580d2ac8981618c1d66a734c0362fc5288229c2afb34739cfc2ab55aace011d96ab66d381b6c6f6d981deb2fe6080756cfdc901a1e519c02c682ba70ea4d4ac3f3ba0b004c3f0b7156c18b023cfa6033df4bd70a087e6f70e4858f7f7176d49fb5b0e981e6b0e343d8e5b07ec0daf0ed4b0d3bf679018feafa55c0acf0cb07e8cb71d481c462b0ed474a5285f006eab1b07e4a81a3b58bcb6bd558f4de39187a4220f8089e5a7bb040c2427f8d1049a469d4d6f5106dd08480a90a8667d3977f19624a7ad0165574f367b80c512ab0666398da2adcfaff4b5d3bac5487d7d0aa00468d20d004e5ac92f2d0d235cdf74062aa7fdb495d06d687a4c87aca6742fafb56085d45e3b946661fd0260936e920c60a91787358099b2ea1540878c856d079a736b23075ad7bf7f01f84a261b8d037ddcb3fd62e008a8b09b05d05f9e5e1d48a49e3e0de063f4bcee80d9b0e140bad473ee00cbd59b0352dbec385027675f0e34911559bf00384eff3d54f2b1b7e68002f4770e34a3ae4a07fafcfaafa55afa0e361da80bcb2b07fafc1def0f2c130fad019b51fe2d36a3561d68e446de52d4afd75d075aa5d61f1d50fda776a029a620d672ee03afe2030aca8b80eb96f6660bd0b3e1c8e618b79f11bad4f91b809242cdc91aa034d7a6538055ff39fb037843b5004ba1b29d02065c895f34b3b372a29bf7a4a01d25a94bd2fc10509738507d0302d981aa60808c3ae31f80dd2595eac27995156c5bfca5a2004ad87b06502c2c296947dde08425ab539985968cf5abfc621e4daba97ee940727acb6be3714562b95a021a0ecdab15a0656c533a394e423de33275c015f832c027e13f074cc277039a73e1ad75a029a6a8f8059032a13b8b0550af1f3e3860c35977a0813a5b73a0e97179e440ed984c0da06d7d0f0e34fadf9d0342cb8f1d48f8e5e25dfe85002834b4746ffd461eff656e1975dac719a040d7ce2e003d16e77df5695e60754ae4363f3764e199119e0024a90e0f5a82e38492e52ad5a54e99c7a3b9121bbdd38e9acaa3c9ef09c0ecc91ded30d529b9be7380f0bf1a40dbfad5729187116aa03c54cbbc35679f9934a5bcafc83ff6c36b87115df8730c9860a6d435c7dc2fd64e167cbe053937ec1e79dc813858dd001a361cf9f32f807aeca202742cf4af3b0ef4f967ab809e67ac584bcdb6f5f401b0830427addc6d5b2f2b0e4834f9e3805c7beb0eb4f2bf6c3ac039ffefa1eaf5efc6012e67970e241f93ce0125745a0326dafe50ce0de7fa45915b74dcbeb6c6b977bef475d5cf9e1f44091179fe004c09e8df9b024a9c399e0f001d07cd1b7b462f394d5eb415cc8fc89ac86ffb001c979225fef26764ba0690142029724083145e2e015a33306be92ba2a86b5d5746aeb2e81a095d2b2fa4b2e82bf57ac361a4e86b4a09ee140093b1d90dc08ac8fe68e52fe2314183fd73ee404dff39024ccdfcc343879ca089ef1f40c3a9e0820e8aaa9316c78bc201b7e6df0e2430c91ac074a9b79101cc942fcb809e38bef7d281f6a8d5dc008e6dba3c88609001313c0e0e24741ffe0b7be8ad03d2147f3a20a8f7c981be65fae5400bbd52fd2c80baf065c3810446a9c216409f5fdc3b907c2837d402481c8a3f20815111d905d0b73c0403e8414fde52b682db91032d9f37fb0e74c9a5d4f1e53c71afec41a77a685958719bb347c0944bbfec1ac042df1cac02aca2b45c8923b07cf4e70f8086ca81cac855962539aa92c76300c1d641ee1ee59ce82f1beb8016b7d7658d6d59652813af34ac2e55ed26f93d00908328f9dd7780f9f8d000a5d17abe25ce4a015dfa2d805698f757037628fa027464e492377659f639098467bb805205a5929f5380edc83fb434ee2f4ca01250e101905c016a2c35590e082c4a930b0778633372719ae273b561807d6e79dd01c77bc4616831b9de650690a0bd1500ae09e1fdce81e69cf2a12c0045a9ecb5a67ebd670eb8f47b7480cda030c0a2f4f102401f0b8fbd010e45aa24b000c49dfc01b5f467cd011997be1c48dd902ffe0250dbe7c401d9c48f1c68223f3d3850af3f5f3bd0bce51c55feed73fe0bf6b9777f2d89382ed51ff38cc2c4df26809a1b9ad315c020bff1e441dbc93c5841fb5c3935207148ce8f003d913a6f6a4755e58aaf4cdfb538567543128df7174047ddfb2d096e1588a20833cda8aa2fa895b67503b08a172a255856b107f571c531a056c3d2f2c400c3902f0302b73c2a58380776ebc5d70e6c8de16d07d032d888c31c482c9f0b00913ae1e9de8176c287c481a4f0ebdd01d6c06d405f9134e2c981f686c77b076a58f9e2408ad1dd950375d095fd6590bd305c3d38908cddd70ef48c8f570712a9c7ce001fa784ca0ba0a56ff7d381c2e5764e1ca84fdfbd1d1529544a0712feefe0400d7bdb75a0457afbda01091ea5a1d43965dedafb1e505a0cef00b014f6e7ead33aee1ed4e54900766a3cea00dc6737fbdf809e8bb2a0d1afa34e47216ba9a3751476cce91700d22735f7b4a31ee198f2cb33ea9cdbfb77fb05896a836a0b4650e7ec0df7004a0ba4ef3700b693e641ab76dd046ebd665af9eb9e1cdd61b603281b22a868474fd1b2e4671f6067c21f698eb5a9704d38041498d3c3162020410ad79f036654b301b05c7b2a3bb300eab1fed90087915b7b06b14d090a5a6de172e9893dd42c68cf9d034d8fe7cc016589460ef4daec17d0ab1de9b1fd8249189e4b07d2e8cb5707d2e855ce2382a1248a73c901fbcba3037d7efe6080fd65f7db8166d474c7815c131457b000e43d0f0e0831cb1de0d29c3820adf7be03cd39d6d3da15c5c3bf5fa0176e38d0f47897ac073732718a0e45c9a5dffe8701fc1c318587c2f2d1ab127c19c54533aa5515c4083aae39d635faa11ae9c23fb95e038c4be2c54e00536c2885fd85540c2d4b70a85a6a1c2ed1f438a374f7fa7e0d6848d0f676ec8039f70468957b3045a30fb5054c8d3494214c4af6281edae086d32a3a6e1e3b4ada801d1eda53c72aec68e4c2302255d8ea012033e7fc43404e0ccdea29a0d0fd4bbac2e7cfdd6e24b803a045a95172f93990d0a51b8903347afad45cce5215b18f809bf744e9c5174032f6baee80d8954b07d8b6f8da28fcdce0350ef092bf732081b9af1cb003b506982fd36d077a280a49f00974bae140fad8ce8b037dcb3838d0042a270eb46c3d7ac3f8b88375075ac61ffc5bd880f3bf876ae45e670ef42de1cc007687334950535072aabd7b35c0feb27707b02ccd4a8c16816557cff571cdfcd0b300df35a02bb9e27c0790e83a51dd9539208ca0d660c705b8a4f800eda82ccd79b701a0324b50faf939a026c6b2d6c2a626f74ffa76082835095334faa6ee3199602268c284aba34bc95813bf5f0ecbad16e9a69d4a656914645436ddb4a66a17bfe833d237ae4a7768868976a0468949e6004750bc2a9a816724abfb000c114d7362809396523095f324d56414ee000d62f9bae6809c4c5b062cb360026811fea73b075a948e0c74b6253506ecec71e340a27d3735c0adf9ee07a067717cb5769823e8ddc48156873bfb385303b16e346ea47eb4d7faa1a877a049581d3ba0ec4ced402dad0e1db0a0640e881a681d1035b0eb409bd6cd9e037c376ca0cc69e06eec80d49cdac4db0283597ad5011ae69c327344d05a2e57ed1e71f164d94a00d58429d66902b57581597fef0d80af75fa76042055478203446b1b4e38be050c688e5bfa963690b639a80c71040537235fab0033887c3b203641a59ecab6cfc894363b04e494e05a5517b671f9e0cef3dc013530f9b8a14460b8e19d03321e9c1ac04d6bc51e5a732fb6b1ef400b4a424ba3d6a7d772286acdb4971ede013a362dcc2eadcd86e4d65edb714c987e03cc92f73a38909e3c6b1de06ff900b03350f6e140b3f2eedc01c27fed40edd8b93780f0eff84311feabc2815ecb25a887ee2497870ec84b1b1c48a45477a5f4d09de4fad381fcfa1e25525dee55ee5200b2de3eae007a8e09e7da2c3a4b42dcbc4af9eeca8cdc2ee92da0c7e74a4532ca2e0a3f518b9f002b71a032d573a0e991727cebea89e27092d31f00b5c1d2b71307047fd18eba1b7365f30018b07e3d4b3eba506ae4da7e1bc02929ac6b95ea8609fafa066f31596f9a630364e5593560ca15ee1e5dd4a538565f0002cad57d09684a6223ef012d2285c074b6d027a8819d19a993c700e8d86fb97fe9ccfa952afbed0210077cec40c330a54fedfc92dc4f0db048df300c5170d541578f0e2452087fe7b2ae4cad73c033ceff3990acef6f3ad0547f080eb48caf5d39d09283eed0b92427e70e24c90f6a695ca42ca7bd969cbea8399a9f3f03a8a4d8b6dac4fbd2322cbf6d03a87c9ea8ae570496f84a6533cb78bca398dc7b07c8b0d2b25af6f38a638b5f7c4e00054359dc02aca4d00a4daf39ae046cd27d5de0e1fe7b0a28f1d83dfb04509727392f1c70d41800dd84fb4a8d5c1f46d48ffaa23fe2294023b7c26bfbd23c76b526f7c398657cf50850103fb77ae2403b61b30aa86cc5a53fa2f0ab7e43a0e951f825c9f713075a3e55733a02bbb2992c01ba9271b93440c3d0f97b3376250fa9037d6d71ea40ab659e002c92eb76d381646cfcf70bdc3d9e1ce8e3ae46069075dc3cffe25fb607076a1873bff765fcdbdfa28635c9b5030dc3ed9903f5d870ea409be7fabd01f6ca8d03075c8468460d398a40abd0ae08a8e8d862009887aae8dca0ccd7e5304fc2b49020658088a0a3f8a28a6296436949bc707e8abb3c5eae385f0f2506c4441595cab8cb699aa6396f89f3453affabd6a0b87a529d725b93700856b769a60e1a1a8ea20d06b3a1cd2bbc7e4b007e064da0e95dc5e16ca6a93eccf3f10b1c39d02f881a18e22140579ce1039033946fbc367e2e6958ce0de0d63819012aee0ade4e013566dbd12ba061194770079f1e7bcb00d3e8f7f8b8b86aab0b0f3a07dc24de0306ddbf24f86c0e26eb892ac12f00b2de1a40ffc0b0eb61264dbde8b16a540455886914c93507c4676f8d00567af3fcdd81a4f0fc15d073fbb6ff25509225b1d94f00135262aaf67504531977820ad24590e92a2d55bebe082a32701fdd03ea925a8b4f00f22a246b6f02d594655cd12d115034247d1d0bd4b93282a6af13404922746b7a4d22d2f435035484779cd38eba261dae467f01a4e5bcf702714d564bc75b025d4fececc1a580596a1a25978fa0e26c3a193b908cbd4f01dc5924728e5b00898354a7ea2face2ee0cd0201fef13039a956db30668b9f748571ce87c7b3772a0bdf2f6dc8064bdc919a8380b69e9d8818672e718d023fc57f60b53487405be00da1b5e7b079a95ad3d039525994c1c9064e5da014113fe176e68ee3207eac274ec8025f8c60185577b074ac520ef8e289319d6406d16d53c7a41b3417948e63649c958a364d973403abaa34700a98fd29f37805d1ea84857044389baa1868dab917e913ef08b289514c67b000ca43cfcd5e88f6b2661e81b404199a637fb8549f2f914d0a36b5ffe02c805dd4aa7abc6c1d2e16e2700f29fb64a775a8d1b7ed1b49b809c25e7e50ec069add121b11af753d2e2adee0844f55c03652d8d2b1f2bee11c0b471ddf046107091b8a2e951f8519c53073cf4d80071e2d30280d925791f196017dbde0574d8711552b500e400983850c354d0720e24da4d5638503b6e2f1c6061b5d7f69a95c9d5c481647ddc38e072fac6009b6772e9407dda5a8f0d78522bb46b01f4d0ebdc811e3a7a31400e91c7c4014146b70ed441daa21740afcdfe392011fa9d03a2d24e1d90f3af71c01d5f6b80e522f7bfb05c5cbd3bd072d1ef3ad081f7597bd4a420fb7ec30a33291ab49ce31c60599ab7b4264fca0992fcf901208170db2f012a746d959aac26556ea11903a062511a78465cd62530933700b54943b1e9402bccabc4212a2c2a629fbed2d2ba649a9ef07175c3a9e078cd8166c36407d08e29e0780fe8c65ac637d5eb93168dad51007b043521ee0a23a8265dc73de17806e895a4ba79e76bfb31e98195913c820ca3ac523045404aff66ff00507312dfa54f7b12a3b51d4def39ce36cd1100c7e936e1f3e3cac7ea700ea86c6b3c04b07906dd4844c0c697dcd95fcc7f4cf6d308b03a25251d14e79c1ebafbcf8176f5d133c0e6cbe7af039d923e561de84c98fd732075f463c581148169e9804bf2c281ba705a3990d0956307044dfc38d0a1e8e6af61544479752059af361c90707bcf0093f0f00f28fae95e7bc33cde430bfdfad481bee5401bdf34aa819cb35b408ee628bfcf084a8afbe63b805ab332fdde000c543f9e69e39b56e42d6e964e00d883d257f5d8d4e64bf2931b90c6961c7c3990da335e0690c53b3de2a135759ad3d304d098e5ea00402864d85f3340c8ffc8dad1eba4955e3d3ad0ca3fb6b70c635c23b54a4d43862df8f81250e02df76ebfa859f93fb5264f9b5222d59c6b7f99b6780034ca175c4dbb29cae6097ddad57865cd346fa7fd841a764a091141d0bc6d537a6c98a0180d67000a3a84c36d007727e90a4d9fa709d0f67a05c088905eee032c6eed76c3813a68d6003a145699f5236075683f960d70560ff469dcd6a4c3fcb3bf30e7423d7540c6942d07dc89f70ea4286eb50e34e794867601c8cc9138605bfb7b06c7954b0724377931c05056eb0e3472f995039d2cea65079a51d59a038d6d71e640536c53db4956901fb77db902f498900eb54a655161d555fce3126042eec1df990199b2dae74fc094b4784a12198ffff91465f3d9007687ec11106c8bbe07905e3c7d97c696d5d998679c032aa9a389020de64067d3745a031af63919dd22b00b7f2575afb2864340a3d20255d68fc867303b01504eacb186f559208a7300e4cc97232db0599475d2266e00ca9a7bf512d04ac6c2941e1bb88c0d935f07eae4aba9034dc274e60083d981030a38d263713668fdb81f3b90245ff3b503c1a3ed52ea4013e8df8d0136adcfde8114d66edd0149450607c4bc3f3ad05bfe5d3ad0f438af1c68b9b87a73c096f4e44022956e1b6007521a96ea2f4266f4ed40f3252b1d687ae4de0e66c3bed6c23c0f19a9c2b4c2e44523496e5518afcacb0cf56b74660013b46e792208191bdf09806bf46445732eaf2654dc7acc012567d3c90ba021fbedcb2da02dd85f24da799c0d1a064c26795d98dda10554b454a6ac05c0e77bcd00bb98eaac46c07c49d6ee00d4394b650a8f80f416c17a2c8c0967d80e808caa2a0a0fab722b74de8cbf017c6df32619cb5b8b7d9b6922e7fda4c10a27d1cee338696c157752cdeb48683bb9e0e38686e09eab67032c9f61d3013ef07c9c19334271ec8062508c8b1df092abcc81a67a4dafc7194519f37507b2170e2b0eb4e1bcff38902e95204171ce6937fd5d75a0bffc5e39d05fd291014cae7de7805d2c732095763871a06fd9fc724071bdbf67689a7e2c39d0b7b0bfe4be8b290bef026809beb481b24d2b191c6857aff71d60a4d669ad28c79c5f66cb00ae051bc534475090fae87b05805886a9067b5e2d8a6a040190a15b9e7f1bc05dfdab04e44cd3df5740c1c7d50f0054a7a040fa082a330ef3967a4c2ee8d72b403e26baa500501c2bdc6d03a84195e65f80c01e95e70eb4cf9d2d3b90f6797ae000d7c819a0c53dbba44fe3798e22b25a500abbbd0f276780dc72fd5e3b20a48a8f1b2ab6b5cf67075ad7df2f0101abf5c500b0220813fb0505b6daf75f0086eeb6db03b025853073a0d9f0cf1eca657dfbefca010f5d05d87c795f3120cdb129ce1df08c0b074ca01d07e464fa7620cda0fe7ba8c676f3ef175204f2b1037510b6f1c2f5c29bbfb7e8b0fa6fe440abe58d7f0b1308cdb12c28b9dd6c4d00dc57a61cbce72132eaf5830703643597535a0425d34311761104eee62fb5169695651852dab308304385031d9acb9af204e96b0930ebf93b2d8d072b35ecf01840bdf9a080ba08c852147e74e02d43c9de70a6812a3be21a9315695b65dfb40cc312c0fc4f7fb40395c30853c584964649568f4d78e860471e85aa54a597cfbadd02a08fb558f14b377463812fa3e06211a083cc0ad724e70ea42afcbb36808632d01f514e79cba503cdb9f1aa032dc1bf370e2430bf6b0ed81b460e38f2fc1ac0af4fd12d0b4032c2d48116a5eb370712edb553071a86f5d281368bb5130792f5972507eab1cb6d073a13befdfd454d7fd6a2340f222119905a5ac58384845f55cb23c8713bb9d58caa2acb86f3a286553565ded2b70a908df132b904e4639ce203a01c93b6f90ed0e121b2a581aac2983badb17487aa27097133510755712d243eea0c5063313a5f03046cd28ace8f00d7a6e4ea0ad02252b7db0e64fe795f72202db81a013a6c4a93d4810e67ba595d007ddced8e03c95865afed0bae6ceca13d678f7ac981b6e8f4db81e48355cae34e92e11a40768fa46f1de85bd03e2b17fedf4b074872ed405acecda6015ebb73eb405278b9e500a1db7140afaf3bd0727174ec402acb8d0d94ab2cde528e0972ac8ff232cd10a92f408da1eafb03d06a9a367c6d3d3f062c8032504560b68b6c1b605ebf72f18e7beb84bc5f8a918880a2cbe95be9400355f0d0ba2488040db60e5c2c872dda115a8976ab321a55dd70d06cd060a3eac00dde3f8ddcbc0406fafa2aa0c78e3b963e56f756f76dbcee407e06d734bd0f18aa76e8c261a472ea6179199091170ef5ab8e334a7bf6e4c401f173f617bbe559dd36a08ba166720660a14f4f1f01ad6906f60c9cb092f70b07fa457f0ae0e0dd72e55bdb8c6abfaca5e6f779b4ef4036d8b0e640bdfe750e305bf0e6a7032dd2ebb503d2369f39d059ec66c38174ba6ae240df727ce48020f8d400b74d8a7bade6d52ab4b0a99c7a04986e9afd574083c0bc5c025025939b7bc02055213dd17a1adba36dbebdbd06c4d72c7ef1f50ba829b0553f0230b8a76fb4a3ce54902e551049040517fe2af930076620fa06340a840da74b808e23e09b862104a2399a52c21f9a9106bba95600acdacd9896762d0bfd98677403a0d26c083d7ed24d00c4b3297e39c7064844aa70fd6a1e78c1fdbefd023fd8f4f80ad020a7d8b6825d4fb6dc79ce8196be925e8f822b9152f1b408cc4014d61d90a6f802d0235247bb0e34b6477b0e2452a9358c75bd55268a05d06cf877ee80d3ebad0374981507985c7b07d2947ed71d1074f56e401fd7fe8e1d68cead570e48f276ec402dfdf496329115e9b70012291c31c2df76b2eb007d7ddb01f7b7fe2d48907210554d61334abe4e117453aac9ff334019e22b6d6b4d69f151dfcb804c9330ddfa01a0a1344a3538074c53e5bb88a02703b762f022180800d9e62f1517fec93beda8a6dcefdfef006aea48c8b53a022c2469258dbe89e75b9d4ddf0a00ba54b33a0114a84e03cf0823abf060003f8336d5446eba82557bbc02e8b49d242bfca5af8849dcd803102d981e688f6ae248b2f21f1960e53f0e8040fcfe3805b4dc675763003b61ab10c405a05ec12fa0d72579fb75e1000d65c5408953bc3d0397c4965352e3f3e5e5d5818e4df59e03cd86fec000b2befbee40a2fd7de180bcd633071461ba72a0997db8e540b27eb1eb40539d1b9ac685fff0ef176ad8831ad616995595d5146bcd4dab995d022a0e9aaa341101699c9a5a52d8ceaffd34fa3d80cc82c9157fa947a66d4d0019f54d55276001d094d4856d989057618b7684ccdea2bda18deb3a42b70ce859d74b7d7edb7756f14272da7a62f80bdae1f7c8d75340a3552a5da683e29aaca62f1f3aa026e83ba0432dfe7e7120157ff2e340bbe9d7a50153370e1d481168ef003d32c615676b2a7eb2be69c056cb73071229ec96aded0d41c54a23180aa95f61d98194bc9717079ad91f3f0eb415bcb60ef032d97780acdbb79862743d76a059f9f3e940b2fe983aa0e6813f94feb89d39e010f007889cfe7220a1c339ce6335d289be36eea51c45cfae0183d59fd333ba2a8cb4387e8e01acc9e99bb49cae1e8fb49ebe4d01d311fe63a501bbd3ca01197915fa73031c46f00e9b039c162f0125075e2c359d19fe1bcc2e5d1d706cfbfd06b43a7807eef8ba906ba09aa994deaec9508b15c61841d0cc6e6f786d6bb9a156b4ef77fdb421b49cb7c4eea0d2d50c40b85cab12071194a40b52d299085a2b1a627fb1aa3b7268afe6b11a3adfe209d94599533b56b70096a9e49086c5ad40c370f407241fedbe037dedf72ba06512e264d3f95df4cdb2037d6df9ec409daceca60b4079933d07d4b3b80730f7db76c5001681e2d60185be9e003d6534ba07075ab6da4703a617ee38d0dc3ffc03c49ced3b2087d9950319ff4a6b298b41ab0c320bc0c2f6cf013e136b0ef4d0f6d001a6ac3b07daa2c3b1036dafaad83707ecc8237f0b735fe9c51740edb8597180cfd5aa03894365f2c18d44fba086c51ed5b571ab946511b4947ce06b7b3300b44acf174146a2ebed0a50916af07a0b40018366f7da8134b6632d39fddc2346f2310072e25e3f0a408171e7f90bd092058ffb860874b26895f02102f2b2b49c81fa7a34e6e230036423eee77a40611e55b4a32eb16ed49706c8aba06c27115002235155a6aa8f338c32a2358088c3f65ecb56df4cb0492b7f50d5f75699363f77406e971f007a611be875cb259feed1414325b14c56570de04c9a6e02cc4fbad90504a6c7ea9a0112e8706ceae3590cb0e640f3b6380298b5f8c6da81592eec9f38908cb5ab0ef0609e392006ef02d0e3e857ef3ad05ef9f365c096ad03076a58b3e640dbda91b5144b5e72baee40a782637f06d68d97670027be50ec3a20cff7b70326e18103299b4a46b800c4266c3bd0e2882b60efab4372ea405ba3aacb2d00cbc5a603021d3307b219600ced5d9938dc7080f7cf9e0309cce51f20c7aebf851edb5f77a02578f4e1405d783d72a0c540f53cabf80e021e666340a6d5219d8e00818431471780a6a0ba4b0090cbb57db1670ce4e856e6da39900b4d72cd6b2b2bd3a430d708c69807776f001372642e3f1b208be6f2148065a2bd590270e4493fb5bf0c513d2701c695015db5a64f1d608262f4617f211f6ca39cf6116466643a051463120bd08eba223b61be0b68724a81e970364fc3aa2ecccf00968368c62ffa5a5e0441f53cabc1eaab87ef6f079aa63719a0209ff4fe11a064465dff0358f99bab4b40c31d0ef6a021ea0e24bfd970c03e77e440dac5affda233917a7140ae707ba8d91c89b2194c814f927d07d46ed903306fdbe71d079ab7181106dbc49376d7815edbad39a01ece92035485890349e1daa60375d0fa8a037d3e2e9a831d0292e6afa56c9e6f0698c8edb6037dfec1b2034de4037f0b472f2efd065715da2d07d416fc748003f7be03d29cff01e474312beb51dce6b503656f000ab1a42a761c412b27ce669f5f54232de3cdc90430e5e3861f40866670700b202224f9a801561d6aad0194d2505ae510a9e7a14c3a487c1828b88c7dbd0054ba4d48fead02ac6eb5b289d7a3505bacc6a940d372e1bfd20bf45334fae7a940d4c6c985d40288d24b56d701584793d59903b57497d7ce27bf24790fd03050c932a065474e961c1035b06d80d97064a0636b1c961d48bbd0449e03f6ecfc084095dd56694716403acc67e740335bd9a223c05b3ff9b05fd8359862ce16403acccf9b03cdb9be71a067b43b0ef4daeb8903bd36fb7b0681d2070e8835bf73a061d8b31e33836a7fe440bd7ee1afe540339e39d0f2d93e3820e3d2ab0382d0ce1d5054e6dd818e5ee5b103194395d6aa1e178463372a5917c100d8928c8d4b6a70a7d93e0007bbf661db80f686469a74040dde3f67f7809ee49ddf3cb41ab3576ef197aac2e36ef7126029cabb5f80157effa74e1ed76392797cb5801c07bbd19e012a1afc9e03c8fe1236560066cbb9fd1208191e1113beb629492c50de00828574f3da78b000dc18a086ee34171846e8b80767801cf958a51d83b936ad6e3ac0cdd37e114c633b764015915d003712adf4a005d09930bf06746c27c9af038976b2e2400f6dad1da63877df0e3481922340cfb6b6b1eb40d343aef70ba0af3d3e34c0c1ea894e8e13595df8d11a50205b52ff3aa0425de34052f8f3ee40ed480e1d50d1e0d9014e143307f4e989031d561574557b14563b9c3be0d4b86e40df92669903bcd4361c686b2c8e1ce0fff1e9405228adaff6fa406dbfe780d9609d4c469df6599f3f2f4c436a5f49f23c604acf785c0654199e6ef700ca9827fd58a022de23691e00150aebbf19a0460b5e3b0498b9f443c23fa9c7baa268150bb8003a01bf9e01b211150cbf0ce0caa3ea3f1194d894c21da0e292bce5195da134a3c98a56fe499f37647e9204cdc39034e754703d828cf416034d1f28789a4a2d8e201066b273046890c26117808139c8813b82ce54a76703aceb27070e9840ab00370e170ed41f9bcf0ed4d2eec700af2d2f1c70287a75a0cdf31f1df4375f3207b463c9013977ee1c5012e4c581a67a7ae980c4f03f0e58616e1ce8aea09a39d0c70d7b0e08bc3872c035e9860114b466c78194bca271c014db75a0a12c2452d39292eca94e270b20fbc7690a18389c1d6836cc2397a8717807c8592e940fb69e17b721735c0b68b96b7c3d00743a4735ebc70608935741987a5a4f724a6ff2969a5c26a93cba23c865204abf8f0c58c4e139a0d4657db2df03f0dd08390dab3166240adcaae73575341bbe9f049a1a05ed700d60a6ce8a1e6b10a970c4e7b7965e8bd572da5954fc0a1fd74ff032d9b904345c73c8fd3602c636285d613d8dd354e3a224f7111418cb552dab9e97f2213fee9d032d5b039f1f27b2dad1270e28efba0f60f34c154d1a41831bf0f68e03f5ba1c42e640733fa44b003b57a6bf00db4d27ff003d734e0593e70049ee0a0758ad9f1ca04bd96b11cbb0b2e5403bd0c7b70116a5e0bfe0b532da2f005af0ad034df5eed781063bac3890b9e3b5714075a8bfd76aaa67af0ec8b2fae5808442a5032d06573f0eb4187cfe011d68e4e8b700d4793f754072c64303e80efdb1036a0dbc3bd0b9f2512b6e568e6d6bfc060c19391174ae8c5390b412e11990e329abe2ad1154f47a7b0da8a94dfad2033acacb3f15807ecabcad04ea298ee42a0615414660f0cf0ac0fcd77f355fb2d050fe9705250b56edb7d6f12d6bcce0bec2b7c449a867ac0c80297578ab0b0077278dcabcd5d930a6e4830c991164d8711bbad06665aada0b11d40490cd6a40d0c29674f68b06d16e970c901075830e1a2cebecd196038e80670e34c54a078cbe92002e80647df305601a6cf7e54012b4666fe9ed08181c90f4ffc80177271b8081960efb0eb4b03d3c3ac04afbe34027cf9bdc0141ce070ef4dad7bfbf48637b7973c0b9e1dc0129cbf61c686c55d96901c89a70e640334abe3db58798256f36fab6df3ed40e4836b7ec403a5d7fe2800d78c7015923470ef4f90ffa453eaf35b100cf9a62799c738b671cfedb3780a7cafd95014c8cfbff00530e9afbef0e38893f0172d2aeae9f1b28d8a2f700852c9bedcb04504fd082ed2d817017d9b6e6008fddd90018ac9ca9fa23af479afbedbf0dc0784c71f016d05ac98712d051602bd3229d073354a9e2569d7739d55d66b4231e34d5eb2bd70eb8e1dd0454f21d6d1b8ddcbc2c110e65f4c750b1aeaf3e006afc71371f0176aedcd8712009aaeda10dcf488f0cb0044fbe0184cb25d663436bb3327340ddb77307f24153a5ef39c01a38d8333ae6cbc69e0302c80e0d6095ec6a404f3bf6be1d685cd20b073a24e6c70eb8e67877a0cf4ffd179cb39fac1d249b4bab4d079c70761d68ce714aca6d130fca16bd005a613eae1df02d950335fd6edf016acfb603b5e3d21b86ca52ec38d0b7bccd1cb018f83350d0aa4b075cd7eab545419ae266457f294a4b34a98be579d25502c8669ac84535d635471a524046f0d74e026848f7b1730a40fb6c36b54817f598bcc54a7b16c19483e6d701a0303000aa312e899b809a59b9c96b6b02e9d3b205985156eea611f4192e2334dd4b605cf196a6400a91b1a2ad09959dd0b0de0a6a332b8bdeea13def1b5c3041fd6e21a50602eddb900944ca0af1a401ab8e42b73207d3d3f70a01557176511045c8aca0700419bc9cc5edb32c5cedf1c68274c0f1d70bd4007c549a83eddd877a07dae5b76c00544ef00a3caa50176a0d4fac34276d7b61d68287f1f1cb03a1c38a0847007c038dc3e540ed4f4f2c201bbc78e036e9b9e1c500aeccb80a5e4f6bf304d5fbe1d5065e6d501f376cf01f5f80e1d10deb1ec00e57bc981c6253d71a07179fdfb0b718d7f7fd1c7b98c99915adefa0ba015b7bc336026f9c18136e055495039af0ca85d4c5238bf8f916dab790350dbb87d32d04cd00b0f002d8bc1f133a0a79ada83be655e765613f97b0f402446fb7105201d5d72f402a8e5a1da3ef150af3b3ba51d61642964f9459890eb46a549ea794e7f72436946954d69090d65eb2bfbcc02a5371ce033b10ab0ec84a9fda22133c70d5dd85bd2cc8687c613301afd0460d94d1b9e11b717e99663fb4b65977e6b809a1975b763809d70f5de00b9079572b92ecd2b2bf99a3860b360a0dc63b77c34c034ddfb0570024efad401cfb87180b5870e726bf1fab20392249c39a0f6e4a503ad63c385016c6c8a06abe7692339797e3aa098dc8f011694dd1707ea8fd72f073253fe3d9479fbfaeb404d7ff903a4f75c72a013dfc5b90375d0dd8903192250594a3f2397470e34918be080e2695b0eb428d5260e364daf04aa32976779ca9d45558df0863aa900531c0f0ef94b45bdb5e66c0058b85c97003a2edbee65fb8c0760b28cecec0302b55bb68e00dcce26c79f800e8b5126a1abc2144956ec7d040561d05bb43454661b7f06d885fff53d00bdb04924da71812107b322daebaa1f59099d5b00fa6938d676520d53a4f02b0794b6bdd28e38e7b8a179348097ebccfe12ec1953803b2eed3b6027fc4fd4796c370ec350f463b4d771b7b44cefbd674752529249718a53ecaf1fd9ef023eb39a7b1c9b15044114fbd2c41adb7b7420c1f6f905a886bc46da97da75965b928720c6ac36c0208f46809a834f85574b0f41cc5425620988bddf70a011fbf907c0ee9075ed3b1a92327f470784ec5e3b90b943d5f69600afdf2307ace43503585994726809283ab4ed80e8da07079a97b747071cafe70e74e0dcd60ea88872e14016a3bf1b075a639b2ba0cebd0c1da873ddd201d2f2d28039a5f9af209373b5b46c2fabd4267d068c30421ebd00c6a4b54a3f8040229fca4005f82801b51e41d34c3acc22ada48481ea8c2c4eca0eb9d3a700f26d65dd2340c531dfd3a897a14ffa82db3d408da3ce0edf117b441c7ee6808211db90fc28ebbeeea6616f0b30a2c2767500b094a94c76d9aac554561803c62c87df910376650328789edc7c73403acb7503166f7a6580437c83ced90d38f47e01915da962b665e9f7dbeb0d076ce4b1030df299f5a5c2fef17361c05c13be1d70adbe76a0bdffd83340d81e4774d96e53cded2873402cf1cc004124af378086a7f8b0e740bf323970a099fbda71a0bef4574072ece7cbc088c0cfd281f4c2ab1707646ff876400deea9034d54b9e9403fab4ccf4b403d0b6f297b4e59ac96400265d766df5c24b6b61de85e79a37684823c68f1e61510c9f9378f809a783195ce6bef8c1494cad73e017da227c33360d059f6e54c59ce9640637a2d791a42979be7e71ba04f0c0d3a7f08bc4725959a6c41b2e28b7ca2bdf1e813af5a30a11d7452ec1c00c6bc9c95fb003c7683325f2f00eed91bb7009c39b2fd11808790bcdc722031be6da062f6cb03075442bb73a0a7675496e056dae75b07fad2e7d59f60b63d04b0d6b3fb5b075a5236401e87f374e740a3ae60c9163418eda7b70eb41b5841c18fb5b4ed80efe83a20a866d70189c056404d573eb605c008f9e0dfc129f674e840edf8f9734061892307d4b0fb764080e1a503c478e940dbb438358002bf573950c3a2245d1c4502515444a58ce3ae79116c01b07fa4f704304ffb0df525163d2a3cccdf0003d4d1a236400873590146b826e0ef100bcbe3fcad2d16cb8e1d7cdb805e0727ce608070fdfa1ad0e72135ae010638c62ade6309244f1fc600539c9bbe03cdcbac008ca4f4664f74df52e9c7a35b03bc9d1c31842597a2a4f4c0650c3dbee3ead980aea2d9e00e302809c8e54bc3088fff416d80330a3f8318c7d871377400c776edcba6f4a8a320b6f74a6a3e6e02c6f807353307b8de33627e9afe7601a5bd6a38209bd6ecd000e95ff787806847f48301acc5c5a7037da9b29a2f0115e9ed13891d757162004500e38e8797a6a75b07fa13fcd862439691841d26ba3df965e400256fec00c5d9bec3ecc9ca14bf043cfa3d3b50d39500b4052672064307649cde724096e63707bcac7e3bc00a77ea8020d61d072ccb3d07a4b7b05177d5fac0811af6f3eb4042e9e7c7810ef18b3b07dc4ebce99c517f13071ce2ab4fa82f834f076459f501e2541fbc1830ef3035ac9d487cf1dfd4b064796ad2e413407c76d8d755231585ac4ef9f117a0d2536b9af389b28bb838de040c152d985df2b3a6f4a64906c0169c294f4d0bd083c24c4d4f7144fc2d0f87a9eaf21d0f5adaa9ee9ab5e70f601b687d08883cd96c6a8052431dcda0b0ac160c71d5c86869bb6fb5b3f10c5d9402c3999476982d38db7c0494284697c780c882e98e01a6d2f6771de84fb89a2f4265b5a4f6c70e64b87b9e1be0a964b20f3047d0d197032d8772d781e4d8f8de002b283b00d87e797875c0bbe99b034c265307ec06ebbeed86c3c681167fb770c0e2cf1c50f66ecf81245d71ec8032e6970ea84432714089c78e03994b1ffb0eb88cd878985fb02ab02f81e49862f0caaae810e3ad62502dc01a98f3ca531554328a689f5591d0e954eda6058d057d6b2557edf6c085e60bd057d077dc3a05e0a09b8dd5d22a74b06cee7c027a985c5542b8057d4ae89c4b43a9e2101bca3adfd16a700ac97cbc0794e6d0ce77b4834e4ce21b0077a0a4523e2de04533cd6f0101f56b5e382023d781010e9cfd01c09e3847df80c4fac039aeb2ed916653071a8f370679a5f46e3ad0c29df600352635e5415b02f576e7d400425a55ed974087e7ec0fd0e0b3d9b1a6dbf9527d3bd0061a8d1da8a5ca82b70478ddec3ad0854609c81780c2127f2f0e30a84e1c9024e1d2819654b77020113cbb75c0063a71409295cc0139babdb71cd17b23075c01df1c683ce6d283ea71ea91b659927f11b429a050fb16d4d2c7721ecaeab2c33d4a95255b90b04c284f4d59075315762482eb48e6856c5d0dab5b31ae69582f1da8b78af56a414549d4f501a0c151e74282ad6e48d690cdb60043acf8b36dc0c8163f7d316fb96c7b0d506a6927156358008c2a7b0110380a0634bd21182e4cc70ef489c3084808d8e1a501e4a952fc2d0153c934b48b5fa6ac72cf81be74ca78b48b5f0ddb3a72a065d9df3780081e950e24f91b6b87c557feb3116b8654d9dd76a05f39281d685e3a43076afa68ea80ea7285036a62ac000fa9fea576bed40e74473e7f7440fef543076afa417040c3565fcaf9726100479dfe97032d6d95465b98c7707bdd94bede14a4d6cb714b6aca2ef184276b801e35755e7b06884ba22f4d69c9d54e6680b1a6219e770c902c8ac7c7a6acb06e3c4a3836812cde59ff176081c10792fc4dec32c87b378021cb72ab3450a0176e0012b57d7e6969a24a55b6aed96f6a02a6b2f53120065c57242d5b716aae2b7d807dc7d68603edb9f93a806c6bd9d51600efd2302d00662fec8e1c905a2f012ad67aa770a02f1d38e0e9f9ec1160eea683d201e54c3f1ce8579ede00765854d6395bfc3c1c3676d5483fc901d6e25d077841ff3850d3773f1cb01b9e0c9874b8744069d6ca010e657f0e241d7a370ef00e5b2eed85b2a196c6cf4f40d9c7a4b60f3091b3f127d0ea305aa7c7ef8001bbf2a90244c526a438166855160db21293b460c8f17a5d0278f2cd86bb80824abde90950939c60772810471ce20a1f0c9dd4c5c946654443a7b6124bb3078045c5cbf5be05142e0a63fea419a04b6dd23933fe65b31d0348fed901005378b6f9cf81ac2c2a60d08212b3fecfb3015e464ece0c9087e49a016a770351580ca17b52ffbc38d07828a3700b384ef2626e8077e469e980409401a046aeef9c394065d936c0a21b8c1d68b28b350714817c05d8f6f87833c06151ef3bd0ecab30ef12688b3def38d0973eef3aa05a45702001db9f3be05e9939d0f5be3b76a0eeefe70eb4e7f64b07ec399b4adb738f6b0e243f3ade39e4c7d791036dc2fde840ddef0e1d50b5ebd701e5e60e1ce809fc6ef5a53ca5d944d9bb980a9e068f7c4caf9ab9aed7a1d9d2cf2eeaad49a3574df2167435fbb95e9b5a1008b7fdd4f6e89654640b834740df5284de006a3d93c69fbe40284be498244c37921d3928e4bf05e6f1df7c19b0f3a510a80305e807da2fdd66609b70d3010f3257007a1bfa53c0c8a6a10720083eacd33937cb7dfe002c02e2f70810d8733bfb0e34953fd6b0c8925274dc02d88bf721c01ec915c41abc005b76c8a8fbfde5fe04c0064abf2f06508b73ff041584f4d2bc04384fae00c93baf1cf0d0feec80622eb903a4c39d039eaf3f1d687ba8305ef000c35c47d212687b14eb0e3473b6a456379c0b07bae1dc5e3b90afc286ff0a6ed17349985ed1eb90706a0d5076c89f3c07840e75899f0c60b97aaf0c7057d78b660b1afd49fe4f0bb7575296287f9e012ca5ccd13f038cc77c1f90b4a3d203bfd29e73b8025e03ca40c8ff3380126dd989819a3ff9d334f4620787e5a30cd0a53885c2a043af3df8748addf227c94a81cdf8d21af52bc84eb7005815d67b80a8808798d1f43a5130f9955f69fa1a8f7078630063f98ceeb767251e22bb06b0a02966a405e4bbc836d71ce8ee31bb0090ee34d9a8b78aa2665f25a742cf4de1bf070ed47d3d95b420b1703fbf0d70697eb83340298e3ffb047e3941796a968013e8d0805d4682034ec29903eeea8f0033cbf5670e30a9cd1de01af90eb0c353991617002f82fb53075a41dfc1018f5cfe1d9ca6aa38be04da1efd3f079427b874809fd2d481d6c741e6003f94553b8868ef3b50d3d1507a7e78eefa97221dee7f1da82f476f0e900e2ba099fbbb722041bf5d3b9055e1fcc700172b55ba0afd7120187f27001aae6f9fda1efda2b4836f0350f162359f38c0b4b7ee804270d23efbed7d8e72a627803109636ef99592d2cee94387783f0ce5499d5e4b075a1f67fc6c308feecd3d0325bef85269fb91f438d9ce0ea024f63ed1976a480ac8424baadf74c831d3fb018cb8e1148706b846ce1e0138b665b33d036cf5df0ea0e45eb96e5f1a781793f353e89b3530c8e7aa0556f04319851780243cebc70e74e19dcd0c601b9f583b70b2c947870ed4d2e723075269470610b079e7d5810ecffe9a032d7e39d62f0037ad09a3deb082b2c9a3032d7e55435a00f6edd3a603cddcd387038a754c1df00cd638c0b23971202d78ebd8016534060e786ceb39a0fead0d901b215f1de882771a1d7022570e7457ff67436881f40a540a8345691aed977740e25158f1512d6047c5be76e5a0ec5395fae81730648b4d5e0dd07434c741592a834c50806118042a9f67a32bc098eca69d33400c38511c006a8bc44802158fa05159cec2a0eeb05ff414df020b0c3ebc06541c6b87fc6c43099d70fe0de89b59ff0660a1086b5f00eaf2649b1f000b34f8b76f8037addf63801d8daf74ae09acc2fb0b03c445a3290dcc461f7e9f1c502dab0720cb482ef7ca25d09e5bb7be589df77bbabfa862afa3e0d8017e280cb29b29c77b0ea820647f522b4c2d9b0e1d68b28b4d03bc37fc5d3b20ebfdbe039e16b700e65e898236b067e334bd72a099fbdc774030cba703b554a12a4b20e1b873ee009fab57071cafeb0e2450ba0f0e385e7b0e24618e9e1c1099b2eb40c79a32942d8196c3f68e010bef3873c069ea0db369f0de9a43d9b303323d7bc3cc1f66cf812e128d0f21c7abc27fc270cca8e74a081286ad262d99acd29bed9aec52d8fbfa04d02725f7f93a800ccbe9e308907a3c2e49260fc398820eaa9bd082824c14b7f689a4b782b8f10368a809aa20f8308cbc2367db1d40b4b83509a561d325e3f4a6813e67b66a92b70097e620b7b525d0a2e3145b000a06d92778390bfd6f073a09d726005c35c2ef23c05e02ee2f01783067f7370ed497e7630714a6d906d47810fddb33c05afff874a0ce4d36014c65fafe3580dfc5d3a7036da0b7e4403accb47240cdb615405c1c3a2041fddc013921371ce8ea353e71208dedf6ca018f6dc70e74cc8f0f0c70373d1e3aa058c78b030a18dc3a2015d4b60359371474d54e5b452ddf7d89f15141347aa65a470b4039c2cf0ce0150c370115db63579af4c8ac2c297d19d08193bf5f0306bc451fbe02861dccd88780a8241a1181d202752e1e48bb180552e9c79286851eb5c1be7b00acb471fb0c30d0b371bcfe32400cde2c0758ee63e5b46f81996db75e0df082776eed40c98b4a75bc001887efd701155751a5710aa3d829c921f206b0e87c95220da3d42583ff07ed48786565ebfc4a5d04de2c18b1bac693fa52eb74d48a7529ac27a706f4fe92f5b7012376f6653280e5aadb07b891e9d70029659e2e01056115bfcf8092237aeddd009ac1fd3920f010b2ce10ae8a305d0112d2818bc4c86eaff978d70002e5e5d4012aed0b00e990eb75650948fdbce680a8b41d4043acf9efab81212e89eb0e74475e3b71a03db776ea40fb45191f83471ce6f73f0e749aaa6ac6124873bc5a0135ecf7dd81cecaaf0b03dc3c2f720712e3db990132507d4a77181724238cd712d2e3458ab6e5270e3e017d8eb5e30b4081bfe5f1078007ee5cb91916bba5cf16d3dc8e438f4270aa86d482c86ee8bf014cb9ea6ab2c7b163f184db80016f27db53808563d7f4258d6c3748388eeb0ab7c613beb4dd0d24433e7280c995ef688f46ed97e109a0c753c98c9636e687327b058cc9158e217311722769b9f9e9401375300610261f54576301d0e895e8ba05d10e3e6b872dfe8f0f0316eef205b0488c8f1520fe257780167ce0802d76e6407df9fb70a013683a02d45815eeec3b30ece6a3dc81cc2e6fcc5c83c3509aac3be010df70a05fc9fc13bccebee60e48f3b5e6804c36fe2becb9e2cf81140125775d026d42de0ac67e882ba3f01248a0ecac3e814afbe540bbf272f5b33ac46f7e1ca873bfd70ed4b98f7707647cfc35c021fe294dba68cf5bf5763e050c891a5039d31614568d600b10396f954a6e09f88e4f079ab9ed3d40630aab4ef5459132adc247ade42258eef4c30380ed1795540e45ec620f7a7e07f4486db3fecf0035b837be01a39238cf2f8099c20bbea3227d63b6de15a853c0cd937634f82a64a34f037854cd5e0ce009f94b3bda430bffe41340696b7dea8070b97d803d73bcd352bb0286f71d03bc9d7c751ce08ffb0cc0e49a7e578053ac704084dd9e014cae9b0300115459b6e7804c365f0e70d13c72c0d5ebd98146fd77db816ee26fbb00b3f63cfe3aa0b242668083ef6aec4066869fdc01b9d3d71da08d7f3bd0265439a025c00bfacd0147e3d40171169b0eb879f61d6808e38e0374ed2d07daa647f70e986c1b0fb3e3fefa77709a9e3f38c0f1e0d30156dae440aad3763030464fd6c157169d0e857a8e01e4d7ce5561bb0543f2c26d483896659762835f05a022718db22486b2dd97e4ebe34b43831a78a79696b14bdcebc63ba009badf2a7c30b43751c2f6465a63ed8fe03fb6be056013863dad8fb2ee474ec206304063c3b259b6073016566917653bb5f82a6c38c0e79b76d8460e6b1f063891ffbe0016c7f7f3e840c7fcdf0fc0d25b4cba80c844adbd1940fb7ccb00f6a6f5617f820d364cfc13c80f0c776563b7a4b7d200c68cf75d07940fdf07d8abd7fba703d91d3e2f1c681ae21cc0e119f010597a1d2dc1d3ea132cfe350714a17e70c0738b0d901daf8a5e5802adf5b563079241e31d073a5e47fb0e28b4b1e7406bfdf6d201b92a660ea84ff8e740e72d4e03ab00c3df8903020c4f1ce8003e2f1d5043c67b8b21e2d807c82a5ee8f40845470f215105e85bd0b5e335012c10f633024656aa761b10ec78fd0054383ddfef18901d37e75d3dd80d381ef3b3a555bbf9d6bc84d0a55ef4c51f60d027db3c4d0f433b914f0123aea2db2700abb4b96520a8fb51f90bdbff470c44b7f4257658da371d40972d667d69813af7340698b5e75a731b1215b702bb3254a6166fcaee109a2e996c76f60064570f0a966c011e77e999eeb7eb45a7c7fa8e01453fa5175ada143cd7fe3e18b0a4555f0ea4087cda77945689e4c701af098c98fb7cbf9c03a2eddb29a0628b9d660638f8b6b71d104d7ae2400dcb760135fa7a7ee48040a5430732885cd97834642ad9cb1da008bc38d0886df71d908379c38124ee74ec80f226a70e341e77ab3f9166907e1c60c6fe752059f8dc3340e7d2b7038dba12c387553865983bd0162b579f9040e978e7d00cce1b07920e47ab4f48181c9e3960a28203357d7ce4006397ba1fdbbd8f6fe01380a4aaf1fe135076c862f50568241de2b1da114bae80a956e762e8b22b512563e8511fe874df00f5090f2f0cb01bb8dfb65b8ed7c88700189361f9e0001031541d1c01a8c99571bd8f91cc71d94d3480065b36808144706c76003c608607fb938a80fe4d46acddfbe433d07e696fe60883ab4d404d756ceb5c5d63d7ee689dc6f6ac20411bed68752b1c0ebf0196256073ea40ebf46bcb806548bd07942cdccdb9015cac268c69430dddec75ec40024525521600cfaecf03073cd7fe38c08982f1689509e91f6f8503adb149c780c5241e3b20c78c75ce6ef35ba70e48521d1d485550e8ce1268d17d5bc3cc369e1f3ad0e2bf4d0650cff3630768394f0e74445fcd00c8a0907d3ad072501dbc25c00b7af5273c3f950e88f07f76a021dcee39d0bca8a4e112e8d0ca57403bfb72c381b49cbb4d03bc9a5ffa9fa0e55c784bcd8830772019b4171ca8a527fe2bc8a0b3c6819afe75ea4087f8f1c0819a7eb7e740bb61dba6d24a80ce758aa5a22bfb7abcff02141239f1fec300d5c31ed4b054f671359f48c74da1afc223b9623417807c5bcd27608c3faeaaa8b620f608dc3a023424be3ad835a0ba80d98584746a058a3a77f5ee802a118700dea3f24905a0be58ae94982da0aa5b369f0178e18d1b743fd6fad9a0cc6021a548d93b55b60ea9ea2a79565042f61650603c2a3a3fa49afc96e1ccc058322872496c814c15e18a31ada90b98940da70526faca2ea056bead54d3dba643f8cf06bfd2d8202bdd7a0b70cfce6ca29ac4d27e0b0e70b3181960abaf3ec10ac2f12079d4f30dd3d00a034929656a5d028dfa711f80ba919f170ea4f3630f4ab6d5d3d79f034dc3e3a703ca880607eadcd38603ccd8ab2fd5b23c1f392085fd8b0349a98d1b0784223c1b307f983d076a7aefcc81ae2bf7df0ea44cec150ef01feb3ad0ce5665dae0b1a239c76bb28d9cde8e1ce8e03bbd32c0ecef4b8c57e3864aceaa7712aa5699d08bd5b166bf2a49f414a2d67ae587f8f62920e17dcc736d153b542def97801ede2e6f06fa381ec447033c50ddf1b3d1f2c172e1ada245f80fff0085b237c4f507803f3d4b0655a9a320b4b85e017a01ef0e2dcbaaa66061b85e0344bcb2540e7901f0a456fef550994766b6ce271af30cfddd02e09e1d5498b7050507f0e6af03adc25f86b009ec06e5825e00a28d3f3a80887a7ef468009780f7574042617db97020bbc397fd0951cfe92702ec103f9903cc21e4fddb815a7aec00dd216705350d11217b5d033a6fb3bd8e035dac9a1f075ada5b7f0e285e3277a05d7971e940bbf27adf81e625fd3a2068c27f85cefd4c1c68addf7c3bd0aebccd1cb02bbf1cf0167de680ace6da2ff5e2014640df51b747a3667f7f07806d3cdebf03c65ddca27f00d10a6b6a3ceac0f37552d58c160c2857f95300863a2bf3cb7f804219dae39ab67a1d7bf85ca53160c0832eaeb3754c3ce86e74013c94c5753ad76e20ce976b00c13de142ebb46e8f13699fc58d030c88f6892117ded9bb018b39a3618d5566f9b709b0c09c57c6d4b2bd266461dde0911914f5bc00b2d3851706c88ea44c39ba5b8055325f3b722075e3e7dc00dad6f3990354eb6080f46be7d6307b6d3acf1d68159ed70638913faca524890cf91780fd9254857909b0f5dd3bd0544e0b075433d97020e1a83c024b4071bd5b079c734f0e34ea2a0ab104dce6ff39c09963db003baaf25fc122703273a075daed39d0d2ee3c3bc02cb7ef40ebe36ed78196e5e7a603cddc910f10b9d3b1c0b7e2543b2a729a36660e0bfb870e743bd9ff04841e8f4b3a705a4592fbedaf8463b3b06c6b13d680c08dafee011a15b14f13ad8f562f929613d7f99344def36cf71a509219fdb902e0f9170e35d94dddd5360de52f6084b3b14ac3b7a0a290f58ee6a5694510f7db27035236b3fb63c0c0720eaf01708b4e2a27b604148fff32a0089980417501b07d3262eda145a4ce192052d8fbef19603e8a678c87d9a413cbb2f1048fa73340cde9f13475a0ebca5970a0957c9639c09f7fddc0909cd4270ea45c5d31a6eda1252353f9e3401bf9da86904d985f9e3ba09aeb9a0375aefc7280e977ec40f75bd5a2580292225af76d479df92738a36e7307f85aef3a201dbf379d33ea78ea408a2236d8c67654d85f8abed82948271595d8a8d5d7bab868ca68df82bebe23de46c05887787eb62110067dd994946d6d01a48de7729e6c8155db7b1f030aae2b2a39d5825070249d1990b6955f8e00559f42e7c9001e88652e1031ca46d5c468c150ef4071630ae04e18eeba02a967cfa45b02559f409429e35177300edfac01fab8563ff327ee85341d1920a866f6e10093c92b606c152f5e0085e520b23fb104071f8ca9bb013ff70d608779b904f03014e404be046c0f06c86cc1e9f3dc01c6d0ae013672f50f40c5e0fc64ec406bfd64e440bbd2d687598bf372ee402d9d9e021a692899ee2f4ba0edb17feb401bf9db9ace26ccae2e1d48162a9876093010cd1d68375c1c38505fcaa903f5f672df01efb7ab4ff0623573c0ce0e0e50bf361d203ff61c6825ab467bf480dc7c2f33c088751b0704e67c3ad09edb1e3b90dd4139446277ccb196cd6b40c5fbcbbdd669b7283b5423d098764baaddc4e35700d9c5a2b224b600c7a578a651ef8681167f3cbb00603f8dc79f00eaacb63730404566528555b4a0d6dca6ecde0076875ac2a01bfbd4187abc030c68e99cbec4b1b28ce42fdb80a4f7a8f4465f52c70c33342c51bf3228b55e0b2c216af5245075d9eae7bf0235b1b361879f6d3a18874f4e000372ff28a1500bc8de904d8f015466c936ff0c10f22f0b5a0bc6e46539bd34c097eac0898bc858b5e3f2c2404170b1fd091595c23ffb13c2d3d34f06c0d29b9dce0115c7ebb3fd094a6f5006ff25d05979b906c04a9bdf5e3820b06fc300a7d846e940e371b7ed40e2e2dabadfa8f246567e3b2091e0ba014243f7460eb090e40ed4b993d59f6010d97780ee101d90b1adeb8007991307986db71c68232b1d6eecaed462ebbe6d64e458d737f2d8bf83417efc722039f675ee40bd55eddae8c1c5d9dd8e039dea3bab4f481f7bf18659d4b3779f07cc7d2dcb5ed155bae4b0ff67c09e8e7e00037977a4771d38bd10fb08836f40c220b27d25d0fed3af3c3480412411e935000788b8bf01308bd1fe16a0960366dc34d05842211d6bbd56e995c2faac6dda6b955ee9a7aa8ab00005717cf4b65d2f3a1b54dcb705234c596baf0608ee799f00cc096b73e60003620e407ca6f71707689fff00a147d0b703b68712f82d00e194bf97000bff392901c9b4ad15e068cc006ce4fc64e8406bfdb474a021dc280c98b3601740bad3acd9734030dcbb03e91f8a395b00bc90a6678046223853c1a025504baf0f1d5097c746cc4ef5eb3f07ea2d92aee77bbf9838d0bc5c6d38c0187ae34087f8bf03073861d50e78473e71c0a91e1d60faad1c48185c5c399030507ebad85b09834d0308839bd201be4e5b0ef0ee58dea362bfe89baf640d887ae18dcadb13fbad36aea6e7bb8048e1a257bea34c1ae47856002abc2a4a1d7cfd803a9a5499a505910429571217fdd8d177e40fe7801e6617153a6f01075f569d01863884bc1f1950ceaea86a372d2864b98afbfc6cc47e1a373562fdd4959129a89c470b4a1e7536260622053ff89584b360d8d098f6ab11b58ecee97e45605f50d2ee1698f3d3a9d658bf2e884bcab701d4f40b5f77806419fde86d2b837491f87a0090a22b6c4bf4f51bcb0aa894a92d18580e00baefc10a13fb13327364af0307fad2b7b103a27cef0101c1f6cb44b5f243f717d5e35b02dd6f4fd7003c9267bb4f0e48fdbcee400ada4f30808dedf9ce00716b27d6d2ca14e73f076ae9cb9501bbdf5a3b2c7f50bd6b0085a4890e282d70e0407db938768071f8c201719e361e2694fa6b0ef40995425f02b5f47cc700ae2b57570ed4b0af9903b2688e1d482139291c482139db742019547e3a40c224079230eb470e08b7cd0d205036fb0e34405b3f0e30a91d3aa01289e4d8609c285c84163c283a3d02a6be016382e09ff4a58330d4699affd58092eb7da35f19b4ea3975f0f8d2384228fd0c004985ac6321f93148961550b5afe3a022fd5ab8d05939a8897e0a7b5f0042dcd3cb2300af8ab0ad011a582ee86cf609b0b8f9dd1120f00af8b605e03125e8157009a8e8b806487833bcd87758f5b0ea0d50d9e931744079e87d0752e09fd60db06fe5221157f1b7f9a6034dd4f38501b307d9cf36f8afff9b392013e78903b554b54a9680d8953b072423b486d95a3fdf75801fca8703e2e6bf1d687d0c4b07ba671f771cf0a07bef006dbc72c0cd223890907ef49f456a3f796f2dd98b86b05d3f3d0cbb9ab9a1394f660a306c0145dbc3feaf035d67ef0de05115f6b701edd572f989ae16eed0ca0145655a6c01815bf15c4b6a1802c6aebf1303da2f516f6b71d8dec575122a3abf0543e9b8713c008ca2b4f17d2d8761ea709c3c36803e823e012a4b977ca1f531acc7f65e7901c0bd322850ba05510770c0ca32ac9365a1390754380da8424cbb370af48f199f684a7caec20f206076c9361d5093ebc2014543ce0c702952ce8c0520dfa7ea67b7209a93cd0aa8a528ce0ba043ebe5ce00fbf6f1c701aff74f00caa9670f2f0eb4812e0f0d60927f9c3ac0a579cd014bbb0ba8ac3ad4910126eaf1db8174dceb2b0027617e393780fc78be7440c083f5c542992e6d084dd77eb24fd8463edb70c0be5d77201974f3ea40a758b7724051bb7f0ef4b32a02b9041ab1b7da0129caef1cb0d5930349cb9b2f073af86e0a0778555c3bd056972fed0270126e8f1c504267cf805d78252e46e3aac73bd0dc81a6725f7f326af73ecfb527006ec0617fdf0019a7ef3701e30ea93af89550f6a97d6d20527e4fe9705bd0444df6b5266a14bb66d73e07f4097838380698e27c68a054e5affca904706b4ccf1ad351c559195402a305254955d7e97e5d126e7bb80d48560591eff0f886773ee1b1b3d8b547edded7cedebb03d8de5744d912b04daf1c689d0686b0ddb73c3d0f0d10cea080872560df760089859b660e3074170ed4f4faca8164a1bc3b5a5071dede8c1d68e1de58c3acd0f9fcdc00db43c5e45ac0799b5ffd389094faf7e780b5beee00b7c6170724a8bf376055443e1ce8f9e97e05d48e6cdb8176653739d0bc5cad39503beef61d68cf297a6109d4b09dbe0174cb8b4307921f97070ef0fcd334b4ab8387d4fb1740b060fc640037e07b09a571d13733d42e2010e55b68f6c791429249b59e5b305214785e6f014ad2492909cf02105334dc04e0b21a4b9db7e32ac92e150ef9d99a30822007cc1650613b5bbf06041e52d7af1ce0fd73e9407b4e39aa5a6065776773404529418566c485c788cea8ebb901dc913f2a8005c1efd052cf6e7af207286969ce78b45b8ce8fc1b071a6415805d004ec27a074049c3fcf5db81ec52dfa5033c322f0c509bf4f30c90ecc05977a02dd61c38d0163b2d1c90ffa36bc06267670ef48efcf50ba8d85117e706382b770b07eadccbb5035cbdf60c10a676c454b63b9bd414b70eb4b3cf070eb4b3156cdd8286ca3dd7d70e88f37c75a03ff9a91c200c361ca0f4aefe845c59eb0e2880f2eb40e2e2c906c8c445e79f03b40bff59d4f3f9a503c98ff985031d5ac59b0375ee68f527eadccf87034de566cf01bd7d77403aa91b078452dba2e32d3abdf877f0da74aff128da13597bff513357840e45a8af32409fe727c4d6a2d2a6248ccaacc4c28ed7282fa416f4d90d3c2f14554db4cf483a4cd14e3e1ebb0646967af10860817deb9f06c8e7a82add8b4a4fb218a5970a30b0146e538085119c1b18a1e2cb2fa7056342aaeed60d5869926b40c1c23da1fbb6e742f87520153f3d3a20d26f66c07244bc032a16ddf3950176c3d9d80125856e1ce0def0670033768721747bb2f2d42c81d4af74e740bbf2e7c880bd250d0c58b11f1b64f3ddc057a170df0dd5b2590236d09f03a95f1723030c61e7c9816490f27e2d019e4cd181b6583873a0de86730778994c1d688b293c7d09b4c58e7b0ed497dd4707ac206f29c1a3673b0688d4517d8f5896d82ee296da512edc3996e07b08e8aad6733cd8038448d908a90a651ae1e8f7aa73bfacbaa6397e021a33cca87365ab2871126a90cba643747e304092fbf45e02c6dca3e29a016c9fdc924ab37da63ffad2ae756a2cdb971696806b60800c651f3700eea61986dd45827e4dd4eb8f036db1ed5f031866367307eacb9635cccaff72662f0089d0ff1930f7db5b80c525655f0e90fcef808aedc1ed7501b4604ec70eb0b0da77f05c9b1f1e01ec1ad9a90c7036a84cc21268e1ca6f6b09b4e8cef71ce098f2083023d3fb93030983ebda016958761da8737b3d07289b570ec833b1fa15357ddb5a6abbf23a39505fb6fd4bd9955b770ed4b9bb3d073ca4f61d68571e5d3bd0ec571307da95db4307ea2d572f0f61ceffad7e96d7ea4d03dcf731dd84d18853ec5d2316c29032d5d3774031c093499d0bb1afd7c8389803861175943f5944d42d3f81b2b988a893f2cdf52da46ec401e217d0c7f9e95003142a732b98dc016a1cfd76b4f7839786bfbc040cb118ad4d0163d26cacdf004a4ac37f7f036aeadebf3c18c01b6acaafb4170bdd2bdf9f0db0b315b7b600bc67cfbe1d103540e73cbdf8461f3066239ffe399006fbf2cf004179fb5700d20565bf77065015f0dc09adb8d0346c5bc3789dcd1e6e0c6031c2161cec34cd7facb7588b43637db184a868b0a1ddc8ea5c9a1b60595e9c39d0be554cf312509c33007048cd3e1e1c68adbfde3bc0c1ff9f037275ae3e414aff5f07780e7f3b60ab771d68abc7c281babf3b74a0dec6d2005bfd60c781b6fa967fa96df58e036df52d6f295b7de0dd67ab6f5c39e000de77a0317dda7380805d73201df769f52744f8cf1d900261e640e3a164a6d1c38fd3eb8501f3dbd277b497d31ee2621d90b038df038a2e8e18b98e9318395ea342bb5a904aaa876903c56ac8269ccc002404092ae61263bb80c87ffa021852926cfd1e50953ca668f6633b8224af9818c04a9b3e011cf3d96ccd011e114f8031cbf2f7d6803de9ed1b20800cdd215a128d505d38e0cdd33e6155aab6e60e74cf3eb176949241e1c37ea52440f9d9be2370597dd972a09370776c80bbe9d6af03b54359025a60b7e8db0f076ad8cdc481c4a7aab92e0119fc7f0089c7c7fd7b075ccede1d488ce7ab3f9176916c4c3152e79d47807988741a07da40273d075a4113fbd98a6c27139b5bea45e73b5d072469ea3b20b0efcd0047e3fd2100a194ef0d1d50cae7c101ce1c570eb42b87a70e2494f6fa0ed43085ec2e0136b689032a19d9a89bc8e119cc0383f3cd15d054eeaffe444d3ff4be207294c26d0924720ef61ca82fc3b1039200fe38e0b549f234b587a97c26ee9f1d4833d8d544a592e2cff152bd4d01c7a5845b740a2ced7826c539c53eee0d8706a85215aa0a5004deb4f601b5ec63b9c23b624a5d5632c6f254714487207523d51d92dfbc8d00fd02dbd63ac0448e22965b40dc7cf8e557eaa2a412c914803369a6f48d2da8b9563f6b08932776cefe00045e044caec9527584cbe880d8847f001cda43363560f50919e4561120a03f33c0e3d2a70374a9fc13602f56f9cc8174a9d32d4042162a07c00230c8c13fc1aeccbf1de026feec00dbf8a3011c41ab7307889c17071aa0fad20039dd360c5476917830c0f638be71408dc36d079ab9ca1a66e97079284b664ecf265f0e34406f95036d6445c72d009bf0273a90c455ade725a0dade11c0d49ea3da816461efd801ce60990329359b370e28263777800e3372a0017ab4ce9940510699252031dabd03890b94ef640a4938dd74a05d79ee4d47995086d4b80a3ffefa73404210ed866a1cbb64f65903d45da27cb5a4aa62884051744bac42e410576eb95845cbeaa5ccc62d8848873f9d1e552a954d2ba8c0450b4805152b1d7c55d5d1dd34ae27c02069599e9e03885c4a689f553d2255fadf2fa0945293fd8d0091f438c363402275eb571750213fea0b406d7936670e88bddf019086251c32404d674806ee6b802536526dd20530e3df97017c472ff70043fc616e0f00235c457902af5a91a3f1387e06147866bc3f024acc0caf370ef4890fa6a109384ecf3203f8b2a8f8620ba2d9a47b002cf0998a862c81be4385585a8022909f8d1ce858bbd972a063ede11350b33d92b5d4cce9f88f55eec8c526acccbe9e955f0e0822b1f130cd609239e091ebc681f4a0b34f07dad97f1f0eb8ae0c1c6847fdbd3bd056df5d7d8267b09e032c13fe09330ffe3ae076e27f82aa30bb744035b599031e0fbc2fcc0be10c1e069d1ef5565087447c54a131ad232f45b94a0b2c4e6cbef426038c10b0db6f802a520056dd6f6fe698f6e6ff00bc8c84134d54ddf44a8ef929a08f7ace4dbc05c4024e1360d8d3dc5ecd0de081b831364008e2c43f8146bf317220e178de078c340d21ff3580896093f1b0eb7db6770fa0ca4c20d0a06e7703aec41f06384eb22d80f95a2b49750b2a2c02bd23039ceac596032da9e36b80bd125f1e3bd009743572a0851b6c08cdd07d7f00c0e8965ffe3ad0f6d81d3bd0d2de38734071bd5b07a4d6eb3bd0d2c663a6f6a5bd716ec04eb18e039dfb1b170eb4d6fffc4b5159aa77071ae4d9ea4fd8c8b9035c574e1c9066d49bce85e672ee40bd9d7b6f79f2bdd729b6a86ba5b724e58759c4f9b12c95aa63914452423a5fd35a5f4cbefe44d9925a30c66971f30840c28714d4db56618b381e44c0304ae2be4bf23735e10ce1934fb447121e113aa29b86fa40a17e36602fbc9f801e913a0fd78001799d06ff0c90a4fafa1730b4b0bd070324bd53d68445da1e0e9cef91015e686eb601053addb9030ead2f6b7aa9410e4a4ab400dc5e0fba80c029f63b37c095e7760c883cd9e43b0690a7d5bd03edb966d70169f1ace9a94fcdb6ae032dfed9950136615d3b50e708fd6bfc2d1a5ffc453cb216ffd9af03adf533ebbe5d781fbe1ce87eab6a8cd1e391b3779bb94635b8b3894d43d3e7261e1d70ace50ed4b0bd8103ed7d15c9580232c6be38c07378d781d6ba4fb6edec6fff5276f6da8103f59697a2c64fb1a30b0792c927730754c9fc754086d4d5af68e6b20f039274514f03a913ba2464bfb914683721f1845f80ba2048712a603101499a520b08aa092adfd902c219c2dea7402b7075ac49e96d41c18e92b9b40589b7d749cf01c919a34063cf606734acdda6d8a5ce0c90a935ff0310ab913d3c0306dc2be510b204f86b6f3ad09efb39058cc884f5fbe480108019a060132afea5052582eda5318016dcd05b73c20ad30b079a28f96b2f0047d2f41c105952cd830166bfde762021bdb60f2024331fff1ab0d363e080c3e2da0189590b4085c54829219680a4eedb0e74ac297c700158eb9733073a8174342e81c6a33f77a09676ec67cd027f72eb409dfb3930c00692ed6209d4d2aba1035eceae002e0c6cd44d185c4707bc9a970e7847fe728047e6b10309d8cd6b07eacbdaae0309c7fd4b071ac2f9a1030da12af62d8126fb67cb8069f4db0ed4f443ff157afbe37d61d4472f0e6898ff2cd6f3735b0e96eb37ff70806d7ca905a75658c83e9614af9e16e56e2925782f104a45e8c6220112f6b1772ddcaee5848c724c49ddf654d720a757c09808aafd3120f27236e457123e4671fd1150470a07a8fbddaa8b84b9a1e935797b423e018cf15055cd831694964bfe1610a877b27ee740c7ab9c385b10894796fb6d0b12be2c72696e414d361c390a2f80eec8993c5453b7e959a140bea35d7318aab6010324cccd8b012e9aca12b000727fc96f8780618f840f8d01a4e55aee4012572e230bc0e3810a8eb5807aaf99d29f2c001941558528752d75493ebd37801e340b0e749abe4e0105db637a6780e8da27ebbe5dab8b1d03a80a7fd639ee0d4179e196008bb38d47ea9124a16b801bf0f39a033271ce1da861e11450a108e876b2043871ee382040d986d0ccfa17fe1dec4a95535f02e4c7d001e9f96c806a649002c79780ce9d3b40ebeb1b40853b6603b9603bef389096b3bee34003b475eb00b567f5271a8f9d1550f7bfc70eb0174e1ce041b4fa15c9b19935dde4d85fcf0189042f1d70f53a754058c5950112a4bc58f72d95feaeb67a6f30e8f182a7e5d01bd78052d2a1d70a25d9f92f06008fd1ac0462b7e02afa0cb03a127f9b80b2aba9bc5d37407cf6eeb9014b457900a825e93225a84fbd640eede321609470bfcd0163a5a28c0a886901a9c2c2bd167fafeaf33eb7a769e8d51d92123dd3b956b049a0bc0640c024af279b16443cee76e85c2ba5241d868c8725130baa0dd6821e9ae32dbfd2d0971c41bf08fa2644f5ce01be70370688024ff62743a5e74bdf0500f52be4ef0678f453eda705a07cb802fb5a30e69df06f6c8038cf511760af097ff62b96f8fbe6115092396ee3cb002247a9181680dc0cd7178080a3ce19f3d26a6c442c5be7ec45e2f7d700f2b4630364ead7c5b303c4c5c081f6edc5a3032dfe390ba6154a541cff7480c7dd89017407197796406bfd6717c0d340aec48a4ba0ad7ed573402c606d80820eef9700d7b6ce0da8a46136b972a08992a5770948d373e3809465c101d6d1ae038d7abde74023b6b6e340a26f6df509b4f14307127dbd1307cbbe9c4da70eb07f1c38d07828df56f250fbb3e9b703ac3d170e340d7f1303c8c2c2ff847919ce1d48381ef9103251376b0e789ed478f483555155818b1604e5634bf5072091ba841dd55f38d5e84fd48e7eec48b0c5ed5b0338f92aff587bd9ef282368165f0103daa14c8b2db01c11725b4b8ba06f7dc7b3f4c27eddc507bea4617549e9abf56f032434bc7f308047c44f03a850bf141db700d49d7da6e975adc29a99b2bda645ad677d42b97f5ad02557c57b01e8a1f628bea105165dcb6daddfaa4e1ab1620f30229df60bbdb5f4e2d92703d4ca0f74ed0a800e932b27d30210eff1b506e06931573469f228f0f4726b800ab99ff61dd491089bd6f40a2b7e7a76a0dd303f76a0c57f614de779216cd9afd4ecdbfacf002e12ef3700b67afe7d64c0b6fab5038c4c9f0ed4dbeac30195582b079ab926394016ee3ba02f2b20e1989d3940853b77c0cefe75a09dfdfbec809dfde240d3f0d77120c1565d3ad0ce9edb44d9ce1eaf3b20c1d2c88136f2db9e0396b6f7162382d28db5ca2945cae38d267b10bb24bbfddb008cf470988f734041545a18191853d1600cc0b9366e5d18c0ec2277f53448232a0829a8b70575544bd7f9d9aa1bc9396ca0c7f3e45a04446cb00734bdb26aaeb3ca0045fed6b51c0696f52d2ad9ed02442935b71d8095bcfce5676bb267a7fc15502454851f4049996a255a68412c2914380324828ce47fba045204fe1d021ae985e151e2736029a9b2bf12d0c74debf6de003669d4f3412b3f7838cc1d48ff38a11df6dc921d0c0063b2364d6f015c9b82dc6f5b402c607efe0508a81ba3670792639fd6d2a86d9a2bdfd602a06e44d64793d8622a16b604babd7af7131be86c6880b57e513ad03a7dbd73a075aa145d0b4040eeadfd09622bbffc7140b2869e036dc2d19b036dc233fb0426a45c9939968098a2ae032da9990d9025103ef974803df9c281867072e640edb8fb75a0769c5a3b4c8789b90375ff67dd81666eb7ef40939df9cf7225bedf7720a134f376683ccea63f0ed40e3db427cf2390bff97730d9f353076a074aef307268a5ac6380371ca5066f41852e15b41c86ede58b0b4d040c923c11540cbb052192c748dd1f56780ec7bd6d00899ee2fcd640a29c18bf520f6575cafa9b8006d3cdd78603c92065284bc3f6dc970c52bab125d0fa9057780bfaacc2bb0c3064138e2f01231401455f2f81e4a95230a5a13fc8fc9b03785dc98b5707da0d073d0794fe9e3aa0b4f327205141f9251a40b7fc77eb8054c7df0678e33beb032a5bfcf70eb4c69e761df080796d80057362a066259ff61d10c876e4403ffbb3ef407d19ff39504b8faf0ca04c9c7c00d873b98a2f2e81c6346c1b406c9ddc38d02087d201c53afc4bd12eb253075afcdf7d078536d09703ed869fdc01f53c579fd0d9f0f1e78097b32d03589d944b3e8dca9ee447ca250b47b14fc6c7d377c090225d651f30b24cad3f80b18ea41c2935b2ecfb59a69bc528f5fab89cd506084538d804449919b25106b008dd620c6892fc1c51cf47351b39dbef004aeda8f0efc281f61c8ad1c8f25d645b6b00333334bf0e34848a375d02f5a5d80054645cd2db6b0b1a36f213a0e99296e6f9db000d53cc590b7ad20cf2bb00e8b3e83edf00031492af75c00863e82f4d6fc6a6afdf004ade6f2f98a826b0d6cf3f1d689b3e9e01a8499e2be7ce12688d3dd2fd7623f3003136a015144e371c68e1560950f31da35d0744e83a40e49c7e011a048a1eeb97400bf7fdd6014b6adb81f66d280c98ee70ed409d8b9903c90fa5715a024a5dfb97d2db543950c3fe5e1db04d8f1d2061f61ce804da9938d07814de5bab94b7fa130dd05fd701d1602307eafee38701a6e1ea9f03ac81daeae356ce6b05fdad03cc8defef1680977cc2243f8e94318f4565a0c4ffe30fc05110f72e0049c1817931025805658500a4f1c2c8a869780270e0a45c6b7d5c7792cedba35740577a72505ec916f430fe65062cb2fed8be836a3761e70bd0584c91f6feb89d16cdfe1d9d6baf405422d900a0f466a33e60c4736db7e340e7edfd1e8087a1a04adf0b40e4c1430d286dcf9d0302cbb2691c68f6ebca8116ffc79301dc9131428e2dab46fef001304fa6d39103f5a5d974a0de9efb27508bfb3303a45039b3de26cb66d17540e6968103add35303769bbf4a062cae8045d7d4ecdbc753036cc2ef4303c8c253569069c1f9c39e038d69b36680bd7fbded409d8bfe1decfddfc60139cc5e1cf0e8573bc04debda01b180f70e3440f58f036df5aa72a011fbd970a003e767e8404beaf5db0195f2bca56cf5eb15c0d27beb80bb7a70208fff420a5a11fb380b9eca5e58b4b726b5a33e020c7447ceb32e009780a828ac16b497e4e59f949a86a2eaa12aec6d016aab4ea9d95f84c9f33cb90618535367efc300ed78da04905523e03351d81367d8a32fed1d5906b3b50068f0f847816f01e57f3b5d07ba78f3e25d345dde2b5599a5053df6fee009601ebbf1db00fefcd32bc0c84a93ac1920b3f168e24032f9c9bed4a48372772c818ee8275ada5ee6d5d2cead015c121f4e0025a73a6e272d306f861b075a96d32307da732ae3b50038732826b1058431e6677f0e48323b75a0a58dff47612e23f9a97d4764ad9f741c50ddd686d04d8cef0ea4f50d1e0c102ca992754ba0c72595cd5c000a8c5fff0324f6ed69d701b191470e78a2d871403883cdbec558c9917c0108a53eb903f0887136fd7380bb58ee401b6860edb008888da903321dd9ccd5c8b1cc96658dc8a9bf1da8fb6f3673e63b3ac81ce05c6b5fdae06d7bb1ed40f3d2cc1ca8a5cd8603cabdec3ad000a5640001dbac3b40736c1c68c42e0e1c106c7de3404dc733a370f17975e94063fafbe0404d5799952590dde168d530b5f4e8cc00151d8fff3990fc98950eb491772572cac158bd4daf5a1f6559499988475aa7651cc8b2197774689589bcd6198e4b65b2dc1dcd1b60945830db80c25273da270aa93de9e31c50eb2e167bb423357a9d8d73fb8e064d695db2b06c5527754e75ef5b1089b17a9838d026fcb80410d29d7d3c03909641058253d974d895e36340d782362706c81b784b4b9b1e374f26bb6c069ceaf2935e000c11ca0ab800045c0ecf0004c1679d8e03ade4bd5b0724aa7d008c4c7cf600632dbaa05c042da0f455b6fd6d000bc993b5b4445578b1be94660dbc7080d18d11b37b54966c3c82f9b26406380955ee252d52426081ff76a0fd32fd7040c3ae014483e567f70ef0fd8a0e1aadb14f809929abe8405becd7c6c37ce1ae2e1c68bf5c59e7c8049ec700e0b925ffee3950d3b313077841bf3a20926bc78156e1c32e002995377f0eb4f7552d7c0934eaf99e03ad42e5cc580254eb4307d8726c4999d83a3e7540dcda89039223ed38e0c6f7e640c789125f2d814c7b0ffea503a48316eea26e372f9a9ab94591721e41d700a4f58e653220a37d7adc352003622c4700ac1bf17402c0193d57c4500bccfb676b0be055baa57f84d493f84c9ffb06384eee6b401f3fc7918452a8baa450791d020654827fa26115499ac29e462cb4f77f6d75dca3424da2ebb0f10320c42cffb80054d83e3fae1ce8f0bca173358547b2e1b901c4d6e41860cec6bf3aa342abe44916aa08e402f0da34c8013d3c33547b6101b0277769472b72a805fe6e000df6e61f60648ad121c072206e4d0d90cee1e91610381a9f3a0e340d53fb59dc6ff37303f86e64d1be144d295329e316246e49556380bd7fb7660025ef9a35d64a076de47aea400de36535f873eddbea4fa416a73707b8151c1b40c2dcec3850e78633079adb7969604cb6a431c02e89c966ce6550e180b0f073079a86eb4d079263de74734a431d5d944253f731fe05579ddecf1da03a6d3a90ea54fe38d0785c6e39404a4d1d68801ef61d20a5fc57e8dcdf8d03123b9f3ac0f76bdb8146ecf1c4014179ef0e3054ad3ec165d57b6b697a565faace1dae008beecb8116ffb74d14ee1ee1dd3fa1c3339cac3bd06ef893692fc65e97da1cef0032e7a74aba544c5d0ecf3c03f474ccc7d1116020e7dab8790808ca7f1abb3a4da3bf01efed00026ec0871150252ac2be01eaa4a76795bd5b02bc6dd59758f714809aa3b145b33867e51f00f52b7faf0096a8f653cfd7b1e932621b1f0ea44ccca2019cd24e360d50cde47d08e8a1a0a946fb021050f7bc01e85bfef5dac01823e40b608060fbf8e780344e74ae19ca281b3e6680118ad1fd9b01bcb16f1e006304ca0d93dd1e842478fc34c0927a74c023d7f4cd8176f6a90d50c991f4da71a011f3212c1942cc2e2d40aeffd40eb4b38f1a07888b3b40b068f4e8402a0b06c4e8afd58ad25b002e89a7d6b0c8363db977a0be4cadb7568c61ddda1129677abb05484887ef030308d81b9b7d2eabf968c701f7fd89037c7bc60646bcd05c01ecf67a7ce9400bf7ef9f0369f4eb36a65c8af2c70b8019eef6ee1d687d1c1f39d0cc1d4f1c683760555884b6e9143b5f73806573c781bee3eadb01b907af1d689b5e6e3a4048ff3ad0cc3d9c39c083f9d80156491b7597c9cf0e888fda72803d79dd81c6e3f1c881c4c5e6950375eed17f16217dbdfa529200ae3e4186101f20b4cfe043c895f8ce078899bb369163f6c26d0d504a1d536afa0e74f3549295167415e19f9735a04f35b5cf3d402481ce9e7e36553d3da34725ee6dc150cec6713c3250518ef004404de170af96a6ba8b6ff11e2dad7bb8122b13565a640891187f1a02f043c98a7d40906f6076609f8818ff5e687aab5b1287f30aa8f198996af6532b930982bf34a04fe4830ec034c7eac6002155afd7008bf5dae801f02dceb21f03c8e49b0160c897be6c3ad0e29f46c04829caf3bb6480876595be5a008be2a4b7ad08d6e9f1677f4249e5f03d344055c84beb6dc9f5ed3639c0ade00b102c67e80ec05e12af371c48b04d8e1c107b7fee80ac1a2cba56f4e957543464014c4fbe73c0deff04e05f985fd506b46fcfb85627d371b3a3ca0017dea73707249cb251af39b4ce6e1c68c4de6da2ec7ecbc1974c95ccaebf1c20d8e60eb4e87cb24d8ea900ca1268d15dec38202bb10da109a5f99e038dfad1a1031c740f1cf0ba72ea40633a9e39907418fc3a90ceff71e50031fee24056c99b2707f22298dbe2b7bad5f391036de4d78e031eec6ca2ac102defa6c92ad5847d7da22a98fdc40da78a5c12e3d100609ec3ca6493aad425ffe9f113a047e67cdc2caa546063db3e06240a6d2889c60224c2c20f01d83f32d5f56ac518c909227e9f2d4095cc9f01e58877d339a0e601f3416bbdd535d9fbaf3d40857d6c5201c854920db51caaa6a378b17cf807a0526f3e1c39d0a8dfdd037a64c32124a2055c230f3a0e300fd6803ee6d23fdad1ca3114b42fc008eb79750d2808dbb351f7d425bcdf56a6b1e54f4c434329c130fb6780078807eb6dea7137b59f4dec862a7380d1fed201b270d70176a93d0738d7faaf20e93296834b98a37d03da2f67d39903f206de3b90e87bb411b30befe1a601697df9d527a046ae3f1c3a9074082307d8c64f0dd0fdcba903cd7e76e58052d773039681ea0d8094ca9b1f07ea0b0e43952b57f5cc0199063e1d50ace3c30185ac6d084d6c8de70e34511ba70e488bd77780bb7ae18034f8bf0e34a6578f06b858bd5c3990fcd8d575b61e46fcb6d6f44253870e0bf74f9daba395bc2c07802185f17815ad6318a3e326408539ecec0ad004a22824a5ead4c56fbcda07d85ba3123e2c00ce3ed91360281077a5f52d8c5fda848497d675818d6dcccfd694cbce3f4e0091c08bdf6f40522853364b06e8dcb35650dd901c3a28517e0bbac4f27c1d1be0a2f9f064001d666cdfd143b77cd975c045221940eb7bbb01988499170668a9ea68b660c0bbe9a803b082da0f170062acf2e9ab03aa415780420b377f76c02a3cff73a0315581e005e05e79fa062859da38c7d576370dca3bba00dcb49e5841ed35529bf0c33e61be1bcd0e20a22ae4fb0ed40ee5a45e008c6eb9752ef5b06b5bf7edcdf3efca8126aa5a018d3aefb7b5e5a5cd4b16bfc7691dac3b20e7df8303eacefe38904e37db03f08495c7e88054508f0688c4789d3a90ba71fce64017cd07f6ad9be5eab1032eabd70ed48efd6307124adf5d07442cdbec9b5052ddfb2550f7718faa5d4add9e3820e3e3dc8144cee7d00126933b07da954f570ed4179e27eb95ead43860cf1d1890944a73ff5934d867ef2dd715654a6bb5f346858b72548526f28c9eb281810223c21b80f47cf9583bbb491df53621f917a96de408dabf02d491344edac84dd5c14573ed1ad0c7c6865756d32a4612176f5d00179a4008405305b97aa54902544a80918db4e71abbcfc567adb1a6e910bd506f00ba14d66cb61d60dce14b9bbe695b5d07d84f5f0103d2383d3f03867d12d6ed18181368c000356374878b026029dc8edf0da06d11dfb048a0a3f178ae0db08266f61da5055d4d01c1ca68ec01b889e75c891b7706e33adb7814c51513d5ca0f7d2976cbc6ad4e87d61753ae7c082b1492141d68d44fac616642ba7973c0ae3c04d8c3e1b07080befeeb402376d3001a1423e5c65e02ce863307c489df38503b362f1da81d071b0e34b78ffb0ec8fa76ef80ac6fb70ec8fa766d80019af977203fb6ef1ca8b78fde0ee48792ff2e01f2e3cb81667fea7f4266b01d5b41566269b4bc37549d48b0757ebf0da83ad402df1248662d6e3e01035c68eebb80026be0d11810a5d4e46f3d81f612ad3d171e013519db3203e69e2d7151755ab1ae4d78c8afd496d36d3400045e349f0c248cb21fc70674cce71f6706f893e31f4095242d1f6b006f9ef9c7a901ee5183be407b6d2211fa2da0c782b9be07f4b17cebc9b705f680f933020cd13fbe6887bf02ea75b60563733ada36c01da85e778055f2d18116dd251365c55c92aaaa2c00e54ca7f4b6951ff89f6e18c0b55ac9f75a1058ebd24f178023e92e1ae05970cf3e81fe91db545a58d6d974ee407d5135e825e0447e7240f6ca3b406213eeae0025a7ec4b2dfbedc383039ee2ed4f2a76656d0384b527dfbb76a0a3f1f5de01f7eccc00c6f2d92ea0e61570ebca81ae3c8f2ba0213c3a3580c9b51e3a4041b3d937ab75ba734092d98e03c66305f42b376307eaede19a03649035cc64d0fa960364d08d03a25a93034ad55e3850d38fa2037922ccce1cb0c6360d60fcfb5b9e1e55b75537641c9e4c05222188b9c2c3168f711d995d3ede00e43ece8709606e27b2d355ddd4b71aa943c00085f57e0b40adc57870225051e022e55780b1d48d4caef72d403d8f677c69158906bb3d02d4f23d8f7b1af56e3da434aba2e25b1024e9f2173ed17434b7e16902e8e2ead5640650487e0c0ce8ede90b608402fffc0f604f6957c18166ffedc200b7d72677a09bd6f983012b8c3707149c73b75f0638a2a7df0688d3caae01c1ac2c8f0ed4b0c8ccb5e282f08e9e03ea78db00d933d8dfa503d27adb979a37d4e90d2071ee9f5e3b203d4ee5a094507a376061e18503091439c82c0139bb360115923f3b724066411b0f735e783806d4584836cf1c6867cf0e1ca8fbd11a8661263b59013d846cd8afd4320fe6f2746b811987f74f1ca0d45c38a046fbb503eda8ad15d097ae6d3ad046bedd3620fd23cdde1d4826df4d0d6054f93a72a00bafeec80b40b2a87d7d476f48da91f4ace5b0c86483195ba7692f8e3aeacbfdae0352a66680b2a386a50008445f5f8d01153accb17da2e9c8e22cb7a4aa97ac737a24af7a6dd3a44b8db4f87b7587ca1b77d700e24ea2aaccb4a05fa17fec01cca872f460c03c990e011535523fed3b6aa2af3f69474de58dfc5d1ba8671e00418ee42d20916036680ca0b2e47c69439edeec88ee5b02ae3cbb018cb53ecea66b0e340d2f13073a5f9e1f0d70bd5772f905b0146ee700de92b2e98301ac1b756680bb69b5e5006deb125062ee50ade71604d6fab3f53660545131ca054043996d037868cfead2815a2aa7811624cc94b77b06507b1a165dbbd5356261e8401bf9fbcc81d6e9f1a1018ed77dff04c7ebc997038a964d1ca019b03d5ae920a566f3dc01369443079aa8fac301f620fb157b687f4e0e8890b151b7d7a6acef80aca2f70e483af3cf01c1d6470e4831dc7540bab10d07dab7cacb52798a9dfcc2fa621acad1890346eccd818ee85b9b17cc1de1e5d281fe644d9a523f0cacf2a8c6a3df5e1b64ddd0fb5cd56f6741cf2de30a5054dad92ad6d18298742b281f015c35425e036a4b5c2349d7afbb64d39adf19d02b4fae1a762d206833a0afb7c0ee2fbb80244520ae070395d6fa079d5b9836f5279501b2012b78a35a248cc126fd6040efeaf93b5fda0a1449879d9101aca3ef11d0470b3e7d050cd862a753c0d0d48d7300af3cf9db250085243bf9364098c9f313a0c0b437fa670047bfe71740c90d78e7cd0042fa761310507ae73300e591b2bc74a0957cf76780abd7e92dc09489bd3b031cc04fd67df3a9b1e5d0542a93901fda97f20e945d6c19e8535bf0ca01f7ec0d077a80f8674db73c574f67007be5d93876a03db77fea806b42cf00ead7c196030983b30f4043d34b9b8686117b2a1c60715e017dc76cc78146ac1b1ca873a1eb40a39ef51c487edc9e3950d3776e1c485ccc771da8a53b770eb8f2ac3bc01b6adf0002e570cb8116cce7d880b9344b1f1bb4770fee0d7b80b2a342920a886941548eccfcb80234d250a2e28116b52ae44e98f22ea0aba7e7bc7f0120783422c607691c19b106408ae1881a384891d8d9ce0dc08cf6bfda8483aa2f611073edfd41dd25e44ec991164071f3a1fb0fd0c3a1eceb04302293cd1a0d6b659074a9f50c504906652a75dd022bbcfa7160c0e4d88e031dc077ba592c92cea8e93b3f001e96a35e789700bb430de87322eb75a5054342ddfa7f0648227a750618914780c3a2058ce913f3d2ca20de817e1c90ed84b96d7518fdec64c78045e832c86654c99f1f0cb0b39f4a406069cfada5b14be6a73503bcaccee70e240bf3a9031e971cb0b45597b805dc70b2076bbadd5f364f019525e27871a0962a616e0bea2e2f565706783a52e68525c0a83231403bd2d0017e5b4706b8ad3d586f1bbeb47977a0f5f13476c04bf3d4819a1e3a0ec808bae98008bb15e0b676e0001df7d101419b370e4881b00218ba370c7039bb5c01355d6ff34ba06579fde18017ab2707ba8bddf41c10622629351c582ec67bedb961282494b2fbdc81ae4d6f7f80409cd6da29a0e289e2983f69e5983a775c03a2dda31e01f638fdfa0a3057c08136d0307509873a8e80811a168ff8951482c6f4710088e4d97cd3ce1e56380ac7f91b60aca8b4b8e5000d65c29756f80547d5be6e414241936b530baa4ab7f9352dba615de27faa8a7d2da8a4a0c5f5dc0072ec621d506364fa4806c63c92d70e889efc0034663ee6679b8e246e3ed904f4f042ca1a0315f739e6b65d403cc7bd03065624f4dc00eec8a7df80a13c33a202d95a3042977ab1ef2048319fec1a608d55b90174bac936a0b02208acc2568e91e4edcc00d2124bcdb0156c124aeca8a1bb45e75f80885052558405308d7ee28060967d0356fec6c6d4f20779d3797ecaaea606b869edde02786dcaf72e1d10b3fa093049b771620041ff74ea80d2bd3695f6fc346d1ca0393e03b06ce69d640047bfe715a080f4dc0149126e1d902a6c058803ee39c0627465005356f43f613c9ea3038ad94e1c684c9f2e1d90e4edc500cfa46b9afd5169814a773ad646a1ec50334587e722d50fb9d335a6234bab99141cd882a152fb664d0f50e2dad47f0198537c6fc3815afaa6b361648f4bf95b07c00994dede0ce0e8a774a70b20c34c54cdfa6a54f749dccbae6c0131bce307c040db34847f8011efb71ff62735050b3f3495a376eff3896d03e8412ff609d22765bb5706d8b7932d00a58cf3b72b079aecbb9901cce9db4f06f01c462f6c014fe0bd4303284667978091b97b9c3b50d31538be045a749c0d2dc0d1afeb9f40d2cd99fd56e4e09e3d7040161afb93925d397d3180c548a97eaa9185ba65d32707239dd91380598bb1b07a0ea2a02081052038b0b4f148a6081c3ae000ae1da8b7dc6f471e4c1bac2f15d20113e368f5c03d32607a90ff0957af7556722b5006eacb930314920707dafbf59b03a2c16c0599eaf4b0ee80a8b489032924ecfd918b1cee62abf449e1dec158edf8e70087c38e03cddcbfc2014269f5094db6dca32a4fb09471d3f26c49d9c9ab03899cc76480543f0f5aebe3382ac8f3bd0b18ebb61695607a91582f927c6f00e89383e8a8000c3b0a62aded4fc664e145c51fb71a8a4caebd0f401dd8849274e36a8cfe815c1ffb3b50619f68c87b3e06b4372dfdc9b83650514efd01d04328edd1db7a144857687f526031fac80014a708e908407586b8663fdb48a949137ea5e9e09476fd6e8077b10903d460a80a556600b3cbd91cd0e338996c18402f7cff304048c4350d6b951a493af9902c016556de0c484a4545b5568b044b6ae9d693014b9fb46b403e02f99b7de9109349b56d0049f7b20e18993de81b8094cadf4e0d10ff920e0d5048e1f40260cf605ff6a505ddffda7020e1786a835c220cbeb60c7007fada74a0966606023bfbf4d281466cfe0ba03867ae02f40b60f7b9574062ef9f5b4bcdc779da079862341d3890c849a503eacdb33dfc096b3a7440048475df42bb1eac2f0dca956de41650fde7cb00bd3dff70409eab3707fad2dfd527105b770e90c9b9037220360ea80171ed0001fbea40639afa0e88c01c19c070a73cacd52ad1d3bdd67a117b5d35fdfe1430eef0894340211994dfef00eaae24dd93e6b6485d051a646f07809e6e6bd9e41630e0f95a39ed5b60918ffd2e00dfd12c9680c47ee9ee03887a8e2ae3551555976c6bbc7a15d5084957ea6c28ea8ea454faa4b7754f2b28745e0c28b949dc78040c74178bfb7c693d92d74d1c3706240bb3e30f402490fee301508fb9026ad1150dced7f9f4d900afe6aa3eb800235284ce005d96e564e0409916278f06ac304d32803df97d64c054b86f408f836f8fb96d4f352da96b6bd88065f95b1940973a793140d36f770c8c10b0cc5c2bd8b89cf51ce043627da1b04476f765808241753040bcc78405d34a3a527558e72cdc369c004a0b9a480ec810f2e4801bdf3f03ec8617fb4460abbf7c18e0c6e73367f90c5ede0066a357a5bc2520518bcd2d26f9ac3e73a08b66ba75a0ce6dd8bc5428464f270e080fb3eee3b09cc9e3ae0526b68a530334ec3938d09716670ec809b9e18050fb5d07125b6beb0e3462379f0e4814e7ed40b77c9d39d0441dfe3a506fff8d1ca0a08d1d68d19df9af681ad2efa303e9635fea5c1987b8f1ddab7365ea0a24a57e6ec1007f3aec632d40531afd01ac3cd2e01480876a3e7c71407e871b07eaad72852f80cecaa84adf2db047bf354d65590db4b453f30128945d3d6e3680209b52f643d3ab9a1889533a57f72d5cbf060412d48fa6062a8a302540859fb442ff168034929c400ba04f5cbe0350d0b23f5a5adbf3e4edbe014af9cc7e0d541ac2898ea445b624bd15c8b97601f0fc7bff3480b1ebfddd81949a8b0b401f4f95933f036828d8941600913376a021c4e9a8742fe89bae03f576b20e18f07aafa0de25d0fa78616e1bca8767df9b0e88f1b6860dc950a674a74ba023a966805a9d8ea7c5130338a4bee70e184206b91d636e38d6d20239f6bd6180f1c86e01257e7d53eb3e8f8ff9974d4389bf65ee9f9055328f2ca956852349e493031cfdfe194083ad6dc402d7eaa76340442df65f893dc27fba0e34623ce9952b176f9bfd8419aab975c0b5facd016ae0d801f7b91f03e6c1dc01d89be7ef8d03f24b59f72bbb573e3bd044d52f0eb03bec18602a83b5b446c066fb0e08f9b70563d10bcdab03f27dda7898b28905ad74317ef9ed80f7971d07a409bc77809ff495037cf183034de5dd9d016ec06bfa8e5052eb397b55d3432b603584ef33006e8df1803f490d4113dc91436506e6b711007523befd186023bf0d00440dc4f90b20491f4bacf550d5686cd6d21a1f817873041824ac81c780f19804f5af8032529ce20d90c880d9ef01cc39eee3d1001acaf98503f5f67207805745fea83516cc7932ffd832808236613c4cc98b7beb06b04aae15809e046c76f60ee863857b9f1850e7a22aa22c40854242c32c1b70fe766b0005ed72db00624b795916a042164e0104e3c707fbc408c3fff986038d47637d191304ff350714e666f10428ed6dad76c0af6c38c07afe6380ebbd2af72c002fabca19da8260ce609f06ecaa3171405e6bd687bf68627609f6a299a79e03892df4f5e02f9ac1263b31c8d99e811e59122b07a4a47a77a0f5910a0764af64f1b7520adff3a903ae809901899cb3a9ff498f18de5707e498b1f130ef8ef7b101d2e33cfc026aaaed359f0e7847b6ced953abaa852f813af76fe880cc2d3d075ac9f1d281cefd439bec9a4b91cf7ed3d578148f0e78f3bc33c04dfc71c78144f0df97031e31fe1cc845e2c7f68b79537e8f1de813d30b075adad75a30d15e13f27b40ec2b0179d8dd0354daa60963680bb0f41e3f006a5c45fb3b800695f6587a614c1dddd513cfd73175c9fff17e0fe8cb33342aa56e0b88e688e3574081d2dbaf0196be11a36c4c3549ff7f6958d54393464369819c49c3ee1850cb33348eb43edaae5428350560a0bc4ef9640d40c9988c17de16e00c76e58037cf8d6703950cee577f0073d5b8d05a6f070c174d0cffb1e96aef47256b58808a5a7a4c437b98ea1d68d218203f0cfe852d202fcb15e3d1aaa314a5ba308065627e091854dafbff6e004376c3e9b901b49cc90160c45563d275a0217c9901c626e9760ce03d88c9247a45d8877740291914953a6d0108dd79f902044be37406885d4a811d39d0ae6c9e0cf0263eb596f2c499bd6d1b2032a5797040e2ab3d071ac20deb7e85fcf83770c065f5c2013999ec576a54a7f29f0309a5d735036cf5abc681e45871ee40fbf6b60f6828e3757ae78014d42b809bd6bd019a3ecb1d68a2befd4fe8cb7ccb01994a3a0e50e1b61de0f6bafa526d8f7fa50305807c7d3b40385e3ad02dfadbd6ba85dc3df8971277825136259265e7ef73402408fe9f3661aa70f34c3c2ea5aac20a37d10994ea8e552d6f0c20c66fa7802e3586f0724df5a022d2ef0b30aaa4c30ced4fc63c40ac8d00250e10273f806097d54b0752f2463d00153f239e2ac92a90e52a3ed0026afae5278c476d819fff893a8bedc681208a7e8cf73a31dbcb3039ccd9a95b5298395f3ff2d47d2fb39b7b1ca9d5585d1899c1e6206cafb9b81320caf7e20420f3f53e0d6ba53e746c0b02b8587dac01bac80ecf8f0263bc6ddf0ce2aefefc01e861e6784906b1d147ad816a9e4f2936e96a0530a61d6f3f025c34eff4dac902798b5f0570184276c8ca23d0b9f69fe003df1b03a60b5c78f5f9d358519dd3770142332ed41fca197a7f0d2859d9ef2301d62d4afb794e2602fa4f0192d8ded70514edb36110474124249b030c213f4cdc5662a334c9ab01f1c80b06b19f725666df3c1f04646a3ddf30401df605a8d91d56f60cf0fcbb3420954b63100d3bbb308895fd7964108b704f40f7ca8d33031ca8b60ce24f16170dd8d8ce05d8d8be6e0d621ffbd933c0c7b96380dfd6b641f4c7e1be41d8f8161b038247970c70aebd310841f1c51f47af5ffdb52384ab0fcd3105f72cc6465f4d27a40d38898fabca49485b398aec54555ee017e882abdcc366311d020644c70d4e00a3d8faf2959e5146d98822d2adb700fb7e3aa61df3ddf1ff2f1e7968857b65da9f09a410e196fc8b3a36c78b0d40c2221175de5b90e34e98a2746f35ff176b2ef290b4ff25e1543aae0408613e89d1afdac334c0c63b60180ac4b4dc004615d66ada514f23d8293ff1d03ae187f27d2580b475a0b7c8d7e95440b7e8933d03aa331c1ac46ded600c50e6fcbb9082ab76832526e04100ade4e258804b73a4e96941173543a45c9e83115ac97701c2a007f4697b64c7f298dc0a84c05a3eed09901fe6e218d067f2ffac08e04d79f225403d8ba81d370771002714337340eac51f0195fede312098b66710937ff90080275327aa0fb660d427fdebbe401dbdfea80e1aa3e8befe064ca8201455bae70029f8e95220c6253fa91d72c13bd640c98e7c786880d98705e408ee777590ca78dd6e0264475efc31c048ae91c320935141cf013e350f06a4b1d66b7558eca96159f7ec8941b837608eab7c799fde1b70d19c022a89a39500bacf87178138f7d3b58652f9a4a79a9635bed6879a63b2671f1e18b05b6a5c9a2e16894503f2c39c1990c6fa46808d7e74614010dabe417cedfa910112eca1411c05ebc706e1e4fb7b6210536afcf716f2e26f1a10a5f760c0fd6526c0c5fb2c0481b9d923fae3323aa815e9304ee38554a7ac7496150047e14e64296a41833b320164ed26156b3f73cccf733584ebcac6085086ff472e62aed7d5025533c6bcb622ab68da1902fa24df3bd804e020938eaf016594d128ce6299d635d9a3d226cfa887d4c4584e02ecc98422d4f528139af1019884f22f45eab416a40a43c82d802d389777021c270b7a0b1e884554956d81c68573ae765dc0cf18ecbadd9363011dff01b29d2c09207d3e3072ed5d3df6c228b1340738926f7f19849fd2f28340c5aabc01f4c881387d15a8f066b807906fab58280003ea155c6500c6e98cf57e0ea24fa36cf71cd418a72f00638ef9fd7d01cc6077fab889bc5df42d449316f7df0671394bfa38729716a73f00b4a309dfaf390851616f5980affde90214abb1a8b7e4a8485f3cd406ec52fa7ce5dbba790354ddd8616e760cd0a1e8f32b49b0e70671e0e0a4575b2c3e6301b51b5b7cdced96416ce32bea64c9c9fbccd376dbc211f4d920fa746bdb207a7df3d0205a3a523bb4b1454dbfff201ebaf60762995efba1d8925e351d94c966163dd64c9a2e5147d11fcd54d9b3a31a52358fe9256d731f30267aa107d0a694891969f2648aad9187e629bf4029db822939ed2b0001ecc5534c98a61a139fdd5d04d461e6c869229063b071686f2a34ac699c054295d5c1c3bda98724a81fbe097035dffc0430f93bfb021334795bbf02150bf90650c633ca5e014838d88d69699db5d463e236ba019718311a998d8b5f1ad64a5b24aafd10400e8af4e2ff01469d52807bf6297dda0c197dae6f8d9c5b3a6b070082153aabd7025c9a49d5d1021cec3a2f80095a85a73303841a7a4cae2ba9bc32886debdebf5095eea900b2c3fd085032d7df5705109c7f2e0189f572bb61102a93f19701f1d9b7006526cd5d83d8b51f9e05648bd6436d59cd0238a6a00a6fbc7f3c5e19509d415f5bd3d2eb558318ecf2d48096f6046869756110dbc5f1a3415c4509d7778aae44ac57d3ee1ff18cab4f03c4e22b039288de1960b3c806d1eb69df203eaefc3188a677ee0d624f8e620c732015e3ae412ce41f3f34ba30ffd60661c4f8f55bd882475d835873175a4068aeca281b512f4cea8598fc8b4701a63ddc1b96d70079014bc07a80127f87ce650918458c55b9b11b2021f3e7a844322f883a41965a008c6221e7ea56207e91263c23e3a695fa15001ff8f4b50da8c2bf307527007265e5d411887a8dc5f377806a1886905c098c09cb8ab478739b06eac18b114049ddc386d382060b4d7e0950f7e3069c1f68474dd066e76341202c23696b5320216ed0a7ed6e191326f26bb740ce1ca7f70065b17abc14d05d6c24302241fd58a00ec971e507902b2c454b800ad972b06a10bbc34cbf50cda5e302a07a9eebdd00ad90176beee2cc00751843d99e9db180c2f1600ed83ed7760cc2fe12c95eea790eb3784ba4e49e030ebeb70d409f344e9f7d01d494512bfe3f083968612810569e74ed5fe0ae1e5ab8160c1169c3a9b5050a44b9da312042e6183096067e5540569e3383d883de5973ed3d3b96fae28700ebf6400d530cefd9ad80ea9ca94f299b9936970570b13a7e0094b10775de0a010251464c4b3bea1463039c7cf52d58bccb3153bb1525631bbf5d378889fb501aa02e4d062821d90cdac382ca4eea64ccd79da77d030c211a5b999eeb3f10635b5d1a60ce5f328825566a6c9bd8c78aeb6b0176fe6bff829dff2a19443bd281011bfd9e011bfdb7011bfd9d412810bffd0c7987dd1a100c7769109dec8192caf5d10f65c23cde1bc4aefdf1234062b4c5e8e4ae05d6484bd39ead0bdc9107478011e0f20330c638fdbc0820a1615a7c03d472f41b0994048fc632ed560b1864663ca3a21a527ea66115db78277c37e680a400d3f8fc6e3d0edf9e743a034cb9acee7f01f0ffe81cae08a01e9c4c003936e9f4ab675408bd87fa0549efca7e016888257efe100871b4b312b3b02b5b74f1f22510af2da31a413d4f9d168b706b1dd0c33363af14a0dcdc7702106e5b748f0470be7e2904c2149f23f4af05830a67c12dc0101d6cd4f4fb0f42ec59be17406dfbb0061821b08685e63f40f9b720c0d5fce75b80f3e5e7d720eeb7791b304650bcf836a012fccc80b7089064a578fb36a0f8c0090077a054eb17b2781f31c7daad8fd2bdfa7cf939beeb4f4a2900ba025c131e581eb28917ef2b021c6b3f17801c9b4189fcd16d37b6f0301b7f1ac40e733b338887de6e1bc409d455af13ee52f6d5eb35d7c8534d1839eadcbc1844c36e5e0d2833abf92113b8279d128274be0d627914c70671bc0ed4ebba9a9fbc18449ff6570de22dbd6cf0ff2d07ef5303b289bf1bc412eb750dc85561a0cd71c1808bc483017a87da20ceec0f4d07348a69fa2480a7db66c874bd4411c872630f409dc472e30040605fb9b10398205d44b87e0b4a2eef118a50f77297cbeaf32a8080981c39875b5047b5f01c29765ad01094370b39a837f7fff9ffdaf77d0097b3f2b307e0ea554445d8f6d4a3d84f1abe0270272c4ebb00c941cbdf80111bece29940188672413b6a324f16c7638012b3bee9b5537406cba5003a83ed55813040a445b5a344e87dd29f38d3d1be40986cd28a5a9a7079bf3e07501b2cadfc026a39c55f03a471de8bc3b327f934ad2c0a90b4eae10240c4611109fbe720a27d3a2306bbddc68907fa1608fd4739e90048ef590ebf00b8f2a49f1f811ad79519009d41f1b423a04bc0af41ec967bccd366ca6ab8fd348855f9b06a10e352dc0a10d51a519c7340398f9289eb6a9db76b8084d873fb6dc0e9c1026af7c278ede1ae01599b4e0430d944c2feff2046ae7a16c058ffab61a8d850ee27062833760ca21dd5a980e4c23303d2f31d0b90fda53702b0c19623bd96d8b7222297fe83980e9d070384bc5b0392ce740542c82b077a2dfb69114554e6002ded756d8022a23488d7a61d03c4d15d831897ce8d416c28df7f808bc4b900e5b32efb0674f2b241088a1f4b02e89466b105f753addd724b803cf05fb13cfa99fdb433fc052874e7790d90c3052f8763ec1c4c393dde007216e486d3cf4471a68f1703dca2d701486c295230b517738ab8e5ce10d08f30c632d217b460448994ad07010a39bd6d02ca18ec1495e0e780a287ab7a060af71219b705c885eb1f808ada2da71950c715300d6221f7db1945dae64f408fb0bd9527c0809d6eb70718728a1dd1f45adbc5f19d009b74a4f49f83d8c7d2f78b00af3de1e36abc6e721831e68004187b570025ab5c7e1320d94be4419b838a5d5bcfc8d205d7061863ef0114c9488b438178464eaf026190e99cab8308c62f5e0cc2ad209dfc0af0daf1b541ec74cb4cbaf628881080f5070106ea770ce812d0bf500a70be8c69987c478b9715016517fb35e0173f06a84cce01c436753e9874edb7c581f3b16180ad60dd802be0056088fee3b90fc003a07cdb32a05e12f3a3192b77d8ae8022524f0cb0379c1a841c14e685164c94c8674f80bbc7c39101f6db3b038ab7de00a65cbda61b06f1d073a6652bc0e3fba52e24914ffa5914a803d4ac39e7717ee80064f0bfbf328825b6f86e40ed27354c997d1e560c422cbe1c0ae0477fa32955b16bdfae1a50a878208002a05a3088fd635218a0f9d60caab5d13f1ac43ced5f1a900a5bf30397b394f5b54d687acbaea676831aeafac6803c68950165126a839072228bc47f409cd6c48034b42f06f1f99d8e01d94e0a83f8da8f23038aecdc1ac47418b96174e1dd8501ce2d8f0684002c0ba07344c61d4cb1bd768ea3618372b8408edd1a300ac7837223c4d141525cf45709c89c73b73ca33d1ae32dfd902e063a0973b834b7603809edc6e01180db5a3ae7a13973157d5e0250cb2645298e1690ff237dc6c41d540bd891236bf53c3750d8a3d25e028c224eab8c8c182d98a2b9da33c0c12edf0312f54dbf69587bd5400fb3035089e9bd5884837656c684397902f4327aed6d00bb541166c1ff8074eb3f000a4b14277a283b4cda391520f2e0f40b50923afef50a905099fcf071ed352194e55173ba05d5904af063817091482b9f025c9b9e67002a6f944bf469ad5ae09f34ac59e0aa1145a8e780872e0b7471d59832faadb045a5ef27013e2e6a1cd6ce2b59de1f1920296d0b10def12130503e942c40aebdfea740441b17a7df8021c1815111a5052339b5ae03f02d2e8b4a801a98936583f89689de32c6c5fb7747a0e6f22e208f88692dc0c43de80ba0a83ad49f4c91d8726310e3d29b0a501baccb22b4b3f1db97003afaa800f21fa044e80270284bf5bb007d7ac61cb313c5d9b501e99398630deba5c86b06dc1b2e0414e6ba6c101fd72c0aa83cc121409791bc61c0ad60d500257563c0f6792ec06e795619b03c0e000d49897e2b83e8e491a6a5cc60cf8706d1d2ce9301799d9e0da2d7173e0d382c5e0d382c4a8358841fc70628aa8e0ca24f1fdf0c4819e2874ae1ee76e8b0704b398087e70621f5352b06e40eeb191018acd127cf666a960c622f6c560de238398df9311ce8f4388c893b6cb7b110d0b6bf01c305f2f3ef1984faf86002188555a3b377011813a6361b030831cb397a6ce8340abd0680e6aaf315a7d830130d962e1e01c403a5dd1f010c98e36300395473c96b5ba927d65c3884b4a047bef1ed370006bbe2f210a0c424cf9b004a2ca50d3d7418ced7e5c33960d445b5a75f4cca18fd4bbeb622815f465b3cf4b1f6730340622ba37e540b9a05d2f22e1bc4028ab2eef5b0567ea9a347032253f8969a24a299a53eac27d2b109248e82ad6f819a52b51540152e9f1b83784664e2ace72942a9d27d02a8b19dac7c085458896f014d9c6269e946209202e4177aacbd149166f44e00c7e997258092cebc2c1ac4e4ffbd04f4a485db05f4b1ac623a1a2ae143d19f08906d7ec4c7b54752c852a30301ac91d80ae600ffc20d00468c32124fcc01d784e1874028ddf22773ac3dd6885a3c16904bb31aa64a9b0ffb063172e1f33d07b8efe71aa03c35efea206519b9f802d873477d4a945eda5816a014c7adde9275b3f831e0882e0c22e0e1594329479d2880d2828a2db83a11a01df58d41bc362f18c44cfe610fb245226aa5cd41ecc90718b8ff729756c706716d1a7f0bf0b5fb7e28f7fd6f7532268aa27c32e02d630302949341bc65f422c00d276d187068ed1970bc6e1a9058f1cd203effd90d9336301b50abc4ed605c3e4e0d481af165c06af83508ebdb953f0e91e5eed820265d5919e0497d64109fefb9cec1973f460618530e0c0843fa31888dbed12c5482fa08fcac9d98b5134531ebd174c43d6a3d8ec6517b4651a7e80c30e2488a30937a9464581efc02707c4c0b5b00b2de773ee3681ce91e95be79a8dc818ae71581b825e5080b9f8329d2670813a36a21b40a891bf0a8eaa2a5bdd62f063172e5ed17601c0355460cef3c2f1877a0877b008a8872f909803f5d19b5e2ff83189725bd85e885725dcf40a556fea861acec327c475b50938883cbeaa83d7042fe88a4662de833a50e960003b2149dd402b127977b7c5c3dc480b9bf64c09d70061861ac2fef05b8141d33fab52296f10f9a83d8603b15601a998e727a1360a93f31b6352540d32a23d71e8db19fae6e18c4127b66186a32c725dc1b5a80ce1195eb489e4cc5f71aa026dfc5aa010fbd18001401f1a26734989f96f52d0d5e048315038ec65020ce73ec92ffe3de00bbfab201293268babca1f2f3b10069f15ef4279cb739bd08d438f81f00f0da2b0617025cf0466b06311d360c4a2a5ef0f9ed891cfdf1b06580d7efb700f7fdd1870041f00f9b8001469d95258190723a77ccc2f6548f59e85fc8db763f09e0113162a9b7a77aac97e1a94188709a632d887d6cef464001cafe1352ebbdabc7c6dc1b703a1a39233947d2481eff9da43e9d10a438bd12c0a4776410d3a14c1a7d55d83e5707e92a7abe6510afadfc0b748e975301f4a7b79a0e8913e860df2076edacfec091ab385b304020f133d027cffc0bb44eb71a174c7a07ef0303b4a39706d809bf0418fdfacd8023495d9843e64ff95a80d8b79b5b4045b2cadb5f03eeb72b069ca60f06b1d4ef570598b8076a7a15eb257febb5b5927968c2d40802374f06f86e2c1ae017ac96724d28ae6a8318fda1262ef247bade32886979f36040cebf7b8378cbc7890116ef1583f8fcaf670302514e0da23feefe9e417a9cbe0123d73388a331aa20d6cee39c3a5f06249a1c0a2846228ea4f180bb6919b54aeaf150e9f922934d3d9e963af7e366314e239dfb9b009dfb6c28e3f68a1c3b5d57a0cf6535c2075b803091c2e9790ef0f98ea4332d986016ece91919af8ac841d4821ac9318d01380b969175f63f889b458ad11f570bcca0ee9240dcd6ca6602183094db77025c460e5605c23c59dee8179cc8c5e61b60c4be8ebff6b862532a36e8d36aa2344e5920ea9a17cf6700d247a7c70f80e21a9fb700aae97718d3615c0f68c7ddaf00b782831d017c9c1fb605707d3bfe010c63dd262ccde3b9bcf51f8c5700a4a3eb9c5f02a8b25b5c740d627344e5da025cbcf15518dba579ed4520ec40c5855e4beaa3b44c07c9b49856190625342c1b065b7e7d69754500b768ae1a630717bfbc0b202a6c7e097035bf6335b407305bce32a01ffb477edf16e8a2dca904f0d6c7ef62ac2c349d0b3ebf1984222247229f7a9e4f9a324d7d83f893ed5d03fc83d452dcf88a0ec3d01e8db14c3fee0c624a4df59631a10878b8cf014ecf4702b8598c9974ede119eb76accfc7d12f0dd541dca28be37b80d2f1375b02989eb33e7f4a62b45d567653726b3cdd17605fafcf05380993be252da0ebfb15e0f3f7770c62fbdcdf35c0abe24c80fc52f8c1b660c891a4299539c5ee1b835862cdc020fe24ca99d64e965d76fd0c9255feb2e5d8bff0e7dc8074b80706d1d28b5783d8e9baeac28a7430378f009d84b71f063171ab1d03fc0bf70d70a1e90aa0811fbd1a443bd23a40d7fbfc0728625f1a9025716a10839d341db8cd17e5bb0133b936202473c580cb7b65405eb86cc0f17a6a102d1ddf1b70bcee1a44d31f5f0c50416bb0b959a4e48fc33a5bfab554a4af9e0c62d74ec90083bfbf85e01e2f2025ddc57d7faccb7bfad574686aaec447067159dd8e436bd2cf78439d473b2643ceecd48daf9db457753ccb8f012800ca9d1100ffa0ce4a4ced49398843bc98f50063819830133960169111a39e4845d0e9082440c943e7a9d2feff090ad58983bea3c6503d517ae0ce33af955ebb33d12f784bbef9014c26715d9956003413256104935654a0b4c0b2008e8fd3d88326558f64ea0b3b00e291d3f91e60483106bcc326d538c73370d09d54d384efe817a02125c44a2cd349dd63d2edf3da5aeaf4e333c0604004d52f403edf282226b5f6f5d307011cfc716e99cc4592ffe0270bd4dc2cf40c122aa7a8d83707e4ea1c2c19e080a9a697e80c2e7a020813e70b80c443973b001c86d272618027640da03a655a790334e8d7b7d70442bf9e7668477baae308fa6e1077f548415d4fec08ca126b01d7eae73b012cbcabcb02a80886df06712b40c49fb44b3f3a79e343803c577844cc33b4c78efb35122078e3567f32a05ef4c30c3094b7cb8e410cf65e25406292d35a20d6edc13bc3d04a0671aa7fef19a01b3f30e0d27c68104e0304094c9411347dab8346353976570063cc2dc48bb580d895fad020e6fadb85c090cb3b934e59ac8a477d3e76e4e25e5f3b8da3b11cab0b09a4ef4c5e05983049fd31453173a14e2e39f82e3e0d626c2b0da56a3d9f6503ec95fe05c57d17f596144752aa1e0494bbb46740a623b6be26f3b595be562e45d59e0127f2ae41bcf6534017de6a5b80a3b1be30202cebc8800c10bf02e1ba923f59d90d45ca8b6668400c6fc72066615a3388afe59634f1315f3e1a104bac919316ffe6ce80e816bf4597f7c6802a9933839094bcb22508949f06989eaf0c48bef766101f777363101ae7e75d03aa772c18c4d73e686adbf4bc6c104d3f3d308845f8f66e808ac04d478316c58feae9406714578de99833bb9cc56a984e7009c85f31c7a65339e82e9e0086d2e2bf002a3d23c6655af6f072dd8819344d64792f370e017de27066238022cad225a05aa0d4424817f30cfe214cbc5d03b8dea737dad15eded127df0a902065d40110269fb3408a245e65b50ca8b9bcd785419c0d6e87f2c14658f81c44e8703a88c19e56e80bd3c31d809297c5ce0380db6b495cc1b4f2e8c75d6c5af7d1e4ed7f030688c5274b00e24e326e49d3f6661e7d7ac640d5dae99e3f05884d88a243ff417c4b550990f7eb624f80128f18b8a73517ab74f22840069917b5a324bfc385de92e2199dcf0140998df71a40454e95a5a90081d2f76aba5c78af0e04f8da17b583f2e1f92df6d369b3c08e3b1c087012bebc1970e56179a84e4051d37429a98b6add201af6ba26c0747863f41b99f3233aff3f88337b766980d70d43e92a0079c5207aacb933c07cbd6d40d1b2170194b25713c058570dfdc958a5151f05a80e75c0603793d8d7cb220b7012ee7504380937be045268263e5e01536c5a91ab730eb8ef2f3194edc117b3b03608c56ee6aa31af1310834dc4d0d407df8286924a8a9d9da900f5d63ed8b61a6e27c5efb900fbfa7d6d103db6b46880fa7828a0f4162706441caae964b04bdd67012c561f1a3936c7e257635b7146fd2e1ba0774806719a561a28658d5cde02c86fabfa03ccd34303b2bc5f097049fcd1a4abe33e975fd43025be8a7cf4ff41f44777d720463f5275fc07b11a5ed60c30b467831048ae0a81f8fc83f7be419c7369db20fae3fcca0043fb87418ccbc28241ccb14e63100385e979eacbfbc58141f4e9f7d80045e6b901caf23383d8b57b5a623a6feffd8ce8e472e0d7b25dbc68ff9091fc6edf80f2bf9a634d1d6f894aaced854767f66bdc80cbb1402413abcb89bcc3d6a2c74a9dc89db798526552d2ee8a67240ecfa29f01ba560fa6002bdcd701999b45a49f6f0147745ad816880da573177b61f95775e7102095fc700c904a7ef00048f86c7e6d0170bd2f8b125085d340891345991b8ed7b7e8f5b2228b778a5cbf731076c25cd3f46a403865c1c755438c18535e5be9b21a2997e7018898f43e470009ce55ec85f34a13716b9c9d01fa5cdeb19acf4b4fc46013ce50ce15fbffc1cbb9419c84c31781b845a79ede32a18a59ad674c719cbe5c0168fbbc78122045060930cabf03985eafa9e35dbcf0daf668a4e6f4ab0159acf6015d7cad57f9b8f66e4a718a9e0041df5b3f06b16bdfd2a772f5eae0d955ba44ec4d2540543cd256a993b0733a10605a1ea9e9a3212b6a0130460170be0a987059fd52c370f04f673381b05627ac802d087558b1af5fe05b5c7c9d0b283feeab017512df0dc2e7ea53cf28d9fafa6b06f196dd758368fae79d410c25e92d4a1d9ec5d22f4026dfcb5b8350fe4d2b034c255f025c35c6ea4212c6149ff702c8fc551218c61cdbdd00648eb5a51f036e5adb06312e9d4f031c746f0ce2f07c5d16c026bef40da8b8137e8f04d8f96f660631b6f5a54104287fa83fd03916da0b9b5adae22301c6256f1ac4d7d69a0e728bce9706217f7caae96c4af975c9201a765d1890f07264801fdba201998da706e8c6fd167abdbc37a061ab06d1f4e1ab41f458736b100d1b3f1844c3ca1303c48d0d03c2f54b038ec6a101bed69afcbabd3e7e1a84daa5af61503e7a56761a28d49e80cb349ac6a42bef63934ebebdf60e01d2274706ff3a95bd052a6fc4fc48096fa80e4146292534131b0d4087e76d4ccba4532c2d6c0008b8ec8c7f01137e31ac01997a5ae514504fd80c687a7b76c6d940128df68e84287996004374c15142a70525a3bf7b0b706dc12c402e82fe19007d503a38154824fe7e0734ecb83b7122a7ba17f6ec5c18904265f503d0c766b1b724208f6eda510f23277567760120c361eaef0230e82604f839e0178b06c8a78c5c4d306d3a791020af35090e524d1c5f3a564b2b4a08e767401d2ac6e2e509d0c881ead9009700831acb48ccd379d190b8cf5dd3c9edcca662df2ba08f1afb8767b8c4d2f45c800378e9dd20a6e5c74c20564352273783c8abd0f9625a364312904ff4da2195ae76bf0c629eae5e01465d7ce10602757cfe2713573ece9de1b200b9d3c974342f2b1267e5c6a70009c8374702b8d07c3050edbd92acd52f026c065164e73fc04bfed7209a8e65a405b87b10eed202ac91df0cb66e9ec58dbe85b4899d03035c01bf6f056aeefbac7d672bc8e706218f7dabd7db3914abe1189075a1290c6265a78e41ecebdd430164fe9f55813aa603127d6acf399419b706f8285e0ac8a27964804573dd8022c3bb06f18cfaca8072511706d43666eddb81fbeadd0053ebb541fcc991bad02910960d2865dc31881de69dbdb051dcc957c700b56d6380e3f4b30135ebef0c42b87a5936a0fccd8741b4f4c4cf8891cb9f6e077ddadc18c43c2d8f0de2aa31f66b65f23d37a07a69d7809370d10093af56b6a28ef69201aa5f371d2fc691df8222e2666c8025e04d8039b6e1b750f074e25f20afffb8c7ea30f81fc4a4cb038eb512692b0f924ee4d04ce4d184139988903cd69fdcc6c8e5896e9e048ee7894ef5d93d80a95dceae0d70be8edd214f13e1b6ab254017de852f80b4c5277114e452cae1851540c2ff633605646e8da3b87b645f8987fc89a39f365e005252df5e0164696e2e0099767cd07425c0e87cf0f9d926df1f409fa9fdd307483efd4d0014336929e48ff6028cafe48c86b57b41ecfcdce673d5e74fd463d58830a4af6f80720e7f5e18e096c4b85439c636dde817e8c693e6475553b67b2d76875cf7082320f2606ef0c643841eab09f94fbb8d40d8b33be7fa136ae8a64b5e3bbf69ff07bd470322ca68472b5ec52f5064ce41cca0d3250125fed66b29d592b6f705383c57ee0422fc27112292eb0a77b145fab4594067b03411a06ec22223d7f4e22a5a3cdf0aa0716eb601fd214a37c6b619846931ade917540fcb91a3bb05540feb5c4d0ce24acce6d8025240eeeb1963aaee1ce9176314bbfd0701bc6d17fb0221296552a8641de2f9e3064042a1fcba6e4045b62b812182c00050b2b2ab3b01d59bbf368865dadb1260c21cbf0ad458bdd4309524ebeab52acf78ce66e05494971383505293d030abe476a760a76bcf5bdc5e2f05b8142d7d18c499fda4c1560dbb2b56b60fcf2d7d8bfca5ae970c48e4f364108a2a8258737b6845afbf2c19c484795d34206ff1af01b15e2f0671defefe3d148dd1c800f3d3b5417cfee1b301eefb1a06dd3c4f3b0631d85f07066826160c6218ae970dc899f16680fffadf9f6059fd7b2d8e4bfe5a052a1d1ac4e8d77e0bda9ec72f83b08af62f0c62281fb5c4b88aa6de9a40acec723b4e8faa2f376072ddcccb78c7b1b6164774351c8740526e3d01c88059dec50caac61c38e5d30a40cf200d6d359660f418f3b49ae858fb7c01d4f2b99a09e048be164741352579675aa1e9539d734b213b5425fae4623586a14a5c788bd9c08044f9cf003d63e1d720ba709b96faf09cf12d8ee4da2901ba342fd0f454a264babb0670bc16d30b039232f70c6293de3b064832c03bbdf2018cbf76a564a665d4c2aaff4a3d8df600342c97342c531b2c8df9b84c1a96dc61e4aa0579877d03ba65dc09a37ed43c7b72b867e746bfe897f1f9b78c4ba54be287fe6418732c5feb2dc31287c33e604472c6954300e6da54eaa18900e5c181416cc12723402657e770478093f07a0340171e9059b005e4962b3b004aa216ef34bd56a1e2a32d002af982d0aef611ca9ffc2830208dd3830041579f8b00a27d3289272a4b17d77c4b3da21de4426a418485e7b210902dba0ba0e256e7dc009fab0b355d39aafacc0fe7a83afd340891258adafd07711979637770d9aaa7b1416ce399dda1aee326ded95a03b07da6b5990085585658fbed3d8295cdaa6c7ae81d2e0406689c71f09fd77e8ab76c30939b21b7b5bd6d01acc4d70f02f8193c4d0ca24fc9e8d78211defacb02f4d8daa640b4347347ae9a11c7c9f7aa00939f90ddcacee8573301f40ea76aa9aa54a130ab9481aad363c234133281ffb0e534ca6473a88792f230bf3502aa80ba0e2839a2f7d60ca2c7fa1f02f828dea8834af2e24ff55029dc3f170494948835273b7271c874b0bff6f59741e82eea5703c4d113806ee2077a462d4bf39941ac97c53f10f3e3f507c0c53bbffe1a84b4f5551a44c3facf06217ffc668338b33f8e0ce22d1f5d03ee407f000fd51b83d861464b0631b54ff704247fec1a441776ff7e115f7b3c3388b1fd3933207e6e6810637bba6380ece00ec2e4fbf86d103e8ae3b101b1910702d446ff3d1468a24f31d6d71329983f1e019cfb693d76bada87787707d08dcf2ff79e019cb79de55500669f4e9404a9db8d4ee7ed3280cb7b318b895bb7c76d809d0e40e77e94666d414f56e22b800cba6f19203bf27808e0d25cacdc037ceef32d09b57e313905941896a37e65fd57a48bec62b54ff55abf6894982436835a4afb7263416018f2d8060dcbfd00c5af7ea1b4bc9d902e5a296f1283fdb90f1830713f1b8398a75f170022db8aaf3783384e96cf0448c74fe289f62420e1546d904828c4d856883d09d9e1bf10f31f70d5f82f8084b871258029ad8efda3aebb1545caf9b85a225cd62f8608cea49f6f018727f12ff3fa6201f283011609a6543d1a528a94fe68effb312e6c7dedbc64c7cd8f02c414ddd3c9b256a7d1a6002986dffa808c871991e4b55cbcd3f98f414839e7df029c95fbfa5af2a1240a4bcc410cd468c52024836dfd82ed33dfad1b8412a1a7b7d415c5e3f50bac0969ad2b4090f327b3b0bddf71023d08a0a979be16204e9c34a3ad6040b83e290f6b0902c5f30d40a5e2be5f05708a47e69f673a8e95bdcb76d16e522139ae6d0990f57e536f5190e2f98a000335d66b072aacc986624fb7c98941b4e384815266e3ce0b1346292053ff58808fdbd3e74f25b26c19b0e6d4a73870e7b7678398637d7dfe14379cd1aa410868dca35a30a014077b617beed38e0d83d81dd6d8c69ba4b4896a874a4ddebe1b449f7e1f09c4d6d7397e35a070a21e2a8fee657d7ee69c9baa832a0ecf85be80ca23dd011488725f0a70f09dce0ce26b3fb70d62e4c6eac25a7d3a02e86efa716280097cc700bff1a141f4477f6080aae2c6205e3b7c33c05dbd6740b042c720b6e0a57383e8b1b36f01e5763936882e5cba340851216f19c48459ea1ac4b74cf60c28a07466404bef0cc8e41be3d2f4d9b54bd20535d6197c9d0164cf46746aa470cf0fb17d3652a7276c6b8d35026f02132cdeb33b404231f3c95be42e56ceae0cc21beaab0be078cdef3c632a0965f1093052c0f61b602295fc2780ab79e798b7948ab18adaa42d508cd5e909c03e68fa45232fb598a78de58ff51b80c49eeb1e60aad0ae27835075367c9c4485b4c76ba511c858ac1aa5a0ee7c3500f9c2b1b29b9c59eaeb09c022cc57df80661a9be302bd5ef51037c87f3a2ff71a87e7373dd68a0ad46b7c0470bd2f774bc058b5495705baa46ea51dada8102b6af74680840f677a4642f35de9171842d25a2310a692ce811e4a4448c663b79917bf8a617807901ea743d6ea795273fce96a403f51fc6807a0c8a5abae0029baf0506dc188423d7b00052a35a702f2e7bf1320950b3e794d4d5c522ed58e115a85b72980e09e5c26011cec88df9f0332501d024a8ef92f354c71f353fab4953f4298182c0a10b1fca18691cf317fa96115c6e9ae9e2109052ff979deabe8d38b4d03749f7a8bad4d9702f86b9fad08d0b04bff02bf8b1f7d7e7b31f8ff50f2173635f90b73d49e9c0372cb75d5ebca9ebdc6fc6877e018b9e51f400fc7d8a631201aec412024c7fcba22408eeee55f01020c49733e0764b07b14a03f2ed9721ad20476b4f5d9ab62755100e9e28c29d50cfb9817c680112ebc4f9702e4f9d6e4971345e792b155dc5a713114185084fa5e80ba1aebfab871859e7f1b80a77d7ed9129012527f4272a4e2564d5710dae5004001c76243bf9053fca53e8eec519dc33b01d6dcaffe44eeea878f065cabb70d8880d0d752482151b9a70598d2beef0da2e99b07007417f99da9fde712b0618079a130e09efd6c409a8d7d8398c9f8d2364e55fab26810fd315c3040983833c057f242804bc0cf9341880ae34783e8c2a59e010e767f7f120a1134022e02997f8706b12a8fae05c2f8581efe9761e697040913cf80910c10a70004d6f2fc31c050e2c6fd66001b20a2e8720b900c72a440683b54b7e8590950dab3ee0240824024996d81de727906d07dfff501a0146e9135b205bace3ef32d138ffe7b0005a1a5f10e406f993d0860e23c6e0258dc385b07485571320048dce8f3d052b11a3b8501610443806cf3bd970036956cf1504b285b15c0fa0fba50fa8f7cd3074864f9a0d7ffb2acf28cbf2cab1d0019533a2f344c124a79ad5f107396460c549e12aeffc640b537e2902ea22a420b5840b9dc0ed02efdd8b53ff8b8aac7940aed790b484c52c4e9d18201053e5799a715f334dd9c1bc40c9a7d08507765470f9d84baa3dc6d0cb0f2a81d153e029168610e706b7ce62df5022e9ae7cca0ba8b0ee5f80840def3e26104a0e939a27ce7a0e2f4b8044c7a649ebc024ca521b91620c7cc882e6c458558eae9c98068c1034022adf7d9ae40451ac919404e9cfbbf02b8374441ba39205fcee859a02697eb05a0e65afddb13e0cc3eec1a60186a0470e37b5407355c896f8f0522337a3ad443e55274c940296ebed85d0250e0330d7f0428f5b43432203a9fb16d4ff518fdd5270394c3bcb6e913161ede7273806be4ca8300c7fc98a174f6b9c1b2404d76a0778126e6c7de0a6088fffada86001df4cefed18c384e76bf0d4831dc17c077a3504b9d6c8ec16e658700219f36f312a071880fce059404908dbe99924c7dfd4b80ec0dabccf5a66499eea893a5cc585e34885f8cd5b0527534f5f9251198376b00957ada15c0e3bf735a19e0cfbf2b807d6e8b13c8fefc8bc706b813d602b4b45719901143afad08cdb8614369f0532a763450f8f3e7b7da8068c1be015e151a39fc2e8ace8b01da8da9417c4b6fdd8014e54b06d141bd05831897e58941cc8fee8e417cfe82be45ba8bf19941b4f43719a06688d5d0edeb68dc8fa1ecda8f7eed04c0e7972cb1aed2af95916cbf9557a477b88be5d19dc86adebb00f800be01304fcbd9ad41989e2ff6013af77b03809c1736f50c9dfb6f31b65df92aa42f0109023f53807cf2965700c4bda6a5558035131f804caaf4856f408dd7de365f2b51a198f501ca89b0161b7dd7e7fe80d7fadcef6f00facc8f70be6e8124a588be6e8112d7446a8a16c8f1f17c2a800da7a3d7ea82c7be3e2fcd1a8767f85bb6a0bb40a9eb4b00d95f3a1f0c83eb8ce463c090ccb5714d68c16848d04417308e28acf286b16d8509944c6f00c5f20c98525916894f7ed1ca0e346c04c0bda19cfd02887a4e4faf007266e450a9cdf3a550cde4f80b507312def3f96dfffc5f5107ef0b02540ffbed181043c36bdba54f7e875b835063efeb4ff0d9cc9d9140944829ae04faa84c7619b9569820fcf845208ce4b9544b5593eb895958532f3a8def0422857dea9f0a607ff96699d65c23738474cf41e83f72f56a40ca10f5c7641837adea13a0c08b3dd64b2ba1c4311f0197ff411cafef7a0b052e72ba11e06afea53f21d75ef1a9fe20fcb8f8fc322058520d93fcd153c3e4ef70a681522446efc9208ef9cb738398417b0ca5d2f4a4f31583f8dadd8e0115c8f4275d7cf177694723a13794c3734085877ad520e6d8e3500093efc589002dbdd36b71074aa78b02ca4acc4ed70cd0d4acfe0a2029f5970d62f41f2ac01007ddcfb100e11d831fc0883db97f2e40f98ac99700c3b0be2d401aa71ee74b2ba14407fdeab5cae837ec0be0cdf05b0b0ca96aaf2e1ca352fb1c09d0eb07bb000240d2815e3b615a7e30facd34f6e4b4ae2e544cd1a78681f08efcf10c901cb4c20292c9a658de30884d496754935053eea8d771f12e96f4b5a4e7eb9c7f18609051d309cde8205a771d6771b9045058c5ceba807c374e0c0889e038f9f3ccd834c033e3c500f7ca4783d872ee7a067cdcc02054263b7d03f27c17069438b835c077f4ce20769830c5cf012a93cf150314bba5410cf6c6b74054872aef421aef8d64b3588809d393409243addf02c59a3ff327139d4051e8ab05922e22f540d3b35563d00148cfff7d0cd0117dc25b4a95429fed0064c4d8fa02e898bfbe3208c1397244b4409e909bd70025bbed1f00a488e8c722ec49dce87cd0303b60324f7b1637d65f013ae66f7a005935224d600b243a45dda6ff200ebea846d002b574a2b728c5dfae1a96e5a23905c855e3e1c780688e0b004e479de7d8f97b4adc9bf60e01fadabb2b0322fd26002944f678a8120b941b3d01e23dde4e00d4082923b6a905236224ba7c5c9e302ddf760ce2047a7d11c0f23e564ba7c4ae3c9c0132998d5165f5329263a9b7c855344505c3ff201433ef7b00f9f6ac970671ee371f02d42ba8e8a04a9fffdd3188d3e39ab1ad7409f8b93620f78fc1246c5a7b9f8009a2e42d6bae9ac64c4eb76383b8ef23c2b50035c3b9daa184a835c3505178b5a8560d62a072ec85bd56400ba9af9304222951e7a40268dd9e0c0d885beb0910bbb27103e811aab2c850d603e4a09f07c050050cae0490b6aa1703ca13dc035470ecfe12a01c0023267f4d86f6b4391620aa35dd01922c45bb80cc29367e314045b006c077b478604ad5ba467214cc0b592339ee0820f61cd20e15b24ea7cb06d18ec3a100e2c6d98f41f4e9cb85010593cf015dac2bdcf87ace7078b06d109f8ffea3d78a3d18426602bc76f5c5000719b6f146d56d4fbe0508eadd5d040ce98f512d40fcdce0d00005a23e6e88b16dd500b16797a9dd8c3809777f0c28459a0530728d4e0dd029bd09a053dae5b068652932d95c188418b8311040ec7965bb702581f5250126cccf9641e48858509fca41668df3a5958342dafae9097449e3d40860f47bf32f4826b6cc8662d1897bc3bcd2777461ff480095daf79341881bdbead31c9b63e758834de9efb4b929906345edb34b391076f1c880dcd8ea20aa101503ce4a27345cb814c0ea75b66f10dfb22d8072277fad1b44176e1f18e0baf264404abb0b0372763d185088656c802c756f10bb65d537403e9d0a10b3fabe6410dbd65bd780aa4cdb06247ca80ca816ae39a6189a7c6c10abf2581357e6a7a888d2de5e90a5cab75873fdb1c58de8e4be3546985bfa725d29bb09207d5044b6b500ad537a8ffee8dbed75f609503469f10b900c7354026a4a0a1d550079861e67837008d98923a96f4bd14901902e679376d852b471077072a445018afb2ed30e07d52cac02946762740390e814e1832d90d4872abc9ff8fc62710c90092bfc835aa0289b45fd89d214478de516d08e7c45c36c5c4afa1305b15ebe0024c25dbe03a4a75b5813a08afb7517c0f24817bc25f7a9b677910c4898cb30c8dbb678db1620f37514c899038ab8dd32fa39215cdd1f022a16e12223976947397b1720333ab7d7bec4af72f50020dd67d85eff83b8232f3f0250ff943ff45885ac5d46c9981638a6f95580cfaf9930328395fb4c986a4cd988d9b3003bff3daba1d2b82c4e0114a2cd487dfdaa9e86d6e9a201486bbd14e257bfeee112704bc3ea21f9717f7604488a88a6b75f6b06bd7c0326dc5fa2e4650b14a33964a06a9224e4ea430091256ab7347d05c4a4ada9416c7d833700b90872a9a693bb238d6606b139f6560035d2d6db99001a34ae4df3d2f0b1e3f6d552c5deefc4aedd6f378790608f0d3061cd7a06f1b52b745083af537e7c1118c739777c2580307134150849a944eaeb373d7cad17ce0d70f6f12f68c7fe8741cc8f3dbda54799fb377aac19207caf7e0aa0755ab932881974cff2b0c6e8e45e00f5cf99be96d09db4b668407a0bd69c6a2ee56b357d44a681e99b0032dddaba01ea9f89419c515d06bba19a5a7e1c18c4e7eb7c510e9174d408f016aee6fd668a9d70996dab157b62d2ede85b88e5c9efab0228ee74363425de50cbfa851cecd60f0cf8c59200b7c691860139a85864db6ac51e66f2a60047f468c580181acd8f8cba74632880d0bbac3f91afc2f0d9205abab96f1012caf2af00de831b1a972ae318cbc6d6e023509c770de8c23503ee739a413582e2b540a3fde3dd207e313b372067d7c88096fe01ea7b64036cc02706d18e5aab41f1c81fa7061470f49f20298dfe7e4119e21d831014c385b7f92b1e7f716810327f24ff6def269272768e00ba9aaf9d01c6a818cf63531ad8fa761b3bff4059acf2f51420cd15f686812386deaf00b28b4596b316681bff5a00c80d67f11140944dfe5803288ff369019090b71f233790c2acb3fc011871be6cc6da1f5895b5b06410e7fefb1b4041bd51c0f13fe00eb402a89194a20c4f0bd48ef0fcfbef151d3bcc39fd917a9c4037fc8925a5f0ea6c8104454c9c835652a27ed4af012a824b807299ac2d08e0a9f2a45fc87327f25db440fa31a4be1684dea173f90c5080f2253d26692b1def1a84a26a436fa9895cfae900d41f1b312d07b91bde2e65944869816661ea1a90a8567f4212af34648e29136779370370392bde0e0548b4b0cca4b38d6fc484c928a9cb15e687a5adf546803a9a97f469a596aeee01244baddf097027dc61e42aaed51dbc190695068a6bc2a0220344b9cbe85799cd7187f9515514e6ddd915a026e8d58a40a4d5cc890eaac8f3dd99b1b2db551a637bc8daafbbb248b008eb5edc0a9206aaee855ebbb8db064c467421b350d93c73c57a51b6932222b85b9011bf1ef9b89a3abcb99808c80af86e10bb65bf07d08577e7434095cfb38022a74b019c9e0bbd169d52fe603acc1d0ae344ae04300b9e302e0a54ca3f6c398d6e5ab858b5800d56fb580be2e36e1a01fc6097ee05b0f11d8c0c626c2f760510370e760ce204daa1831af2e5145f03017230ef5d0b20181d77047036de79010c148cbf2f80d08b2fcb1c20f43250cd906deb6e532044c9cef3c020be65f54b806f59fb1068e2aad1fc00461c8d53f5d80827f065fd624cc3fa2b02c885cfea207c37f2a7068a5a58f99119d4681b5f3c304085f46810b793be062ae1b4d8dd3688637e6b03a02d67f66110bfe86b6c49e592bf35c724f6ecac1a4427f7360c421da69dcea5af76f42d356fd9593220639b3e4e1e445f5b06214c8c160db0bebd025cf12219c49f0c4e0c42fed82a0db08b1506d4053c342068e2d180e25847062899960d623aa4be407c7e67bc64100bf9ed4e40f9e8ef0df0ed89860dfb890a0f51f66e9eb657b7e868e9d059abcfef01922eee635c8636e9bdc65130943b726a5e018ad4798a737f68290747bfe144d7ea590d18a384bc9b0274365c4f003ab4b66998bc90caa358b7436b9db6788bc49e1c89595b20a31f92f4708a0b4d875e9f03d2257f029094d2f60b406e49c70940cebf0edbc5d0c5b18e9201c58fae008a8f5ae26b4bc7562f014aca240cf8166b9dc67d805c9a878c8b83aed03b0cff7c9d6a035cdfae0cd07ed15279439511f7da823e87f84107a0b2220da36f59ea566f21eab983d27e68d1e99e6f6925a590c7ee1f012ce472e34200f1eb9d5e57ac57da3b05684a75bb02ecfc78b80ff390721e7be70029ff2e580d592e677bfa13e783cd006903df8e00a4844835533b6bae0f2b0196d8123d56e1da942217630b7409c81d8310bff0fb1c4ab84a8dfe84f592eb0781298a5d3ab99223f9f99201694677041003f11c1e5608ce69f740801eab1ac0842d7877082899ebfe38e669aa19dbbf98f7378062138a35038a95eae3c8c4d939623a5456fdd2c9b59c065ebe00923fdeaf01530abfcf1806393f150f34bdd639971b011444daa56a6a1be748efd9022db1c53b012264661301c27f3aa5413c23ea57fe07b149e75b03c207d50e259e78675ab6071006992d01cc71bd0f0312e7b1f5cd9df0e224640b6ec89f9c221a6c0e908356cf04f082fe61aeb7b2549c731cf32dc008ba752080477714b7f90f78adc080dbc9ae1e4a16bc1429a9e600bdd4c6ae414c98c3118058c0745c1b90e57d53209c8ed2e98641fcc9e9df2fe2f09cb0d3b5b254fcc9da9a80bcd33f0cb0bd2e19605ad4c729a57f7fd58087fe1ae0c0cdaa6c30c517fb1aca096903bed58e29b549af370d42b67c7c1698448f9dea1953745b2b33804aa2eea81d25125bef0f501daa12201fcac609001d7d315a16c07169706610d361ddbf2035c540cf202aadd841bab0e66ae9c4205ada7f37881ebb65eb73ccfbcda74134eca86b808cbb6a1002eb502357cbd55cf34335533e34a574565e3d181092d93788d5705f1884d4b7910da20b3baf06d1f4cdbfb7e04a9c0ce25b362a030ee0a141f4d8c2bb01c9e5970d08951d18c40ef3be62103bcc7d4780a1ec2c19102cb960104dbfd030282fedeb9e003e023f9aa70debe567cd20f4635174b95d718a8a8f40d8663490c26c21ec62a3b164bad40348a6ebc78419d95d1d378b91d5619fcf00575539059478bbacf0164b8e91e4be194d65a189e8daff200492c852f41f84ac7dd4015478321d268033d6f3507b981d5f03a474bb4c062cf57780a48bbe7e213554a4c19f03aed52b19a0d334c79e3c929097ab058064dcc763401fefb0c923400e655143b7050a755bec02d4eb2b8f06a1d6af27009c383b514baf05324f4eee0ca24f07db007698cee40920b9f0fd15a0abc64f611022cbf71450cbd35eeda08261e78b6f719ac0cce83ba150aa0c627e5c188489335d6483b02446347a0b248f757b02d84e2207400ba42deed0b04c42a1b47709509f6e9c0be0eb34d22f74e5415b3cb2a9f5f310e00c104f0218532a7d3ee9c5d3f38b018e4b4700124c17115bdd8cecd876fd0b502842a43b6d81547ba7ccd34a2e7837a70621c0afe819caa239fb12c0309419db6a12a526d32d3d5691e4ad44761855da3f76187d674b3ad733b4081779467b78c41c23f0735477292a73b4096035144b4cba7a30a40eaffe6430267ae15120a37463b0eb319e6e3703c084bbfa931e4a5efc9cde05d05c3dbd01a668036f5f04e442a36f99923ee9990554eb98bf635c6add09677702c49c7dac0308e92e3e7f0d620fda3810907c7a65105f8b243daa157d5d4c05f893a231209a94b7a8845f429733721ddedebb0062e02eaf6d25d838923a850199f3d9a49b1e4b7dfd03d027bcb47b2dc04337f70c62796ced1b447f7c7c03749d5dad0de2aebeb66f109e08a55a4a7282b47d2a10639b76fd0c4cadb8aecc0182118756430c4de740bfa0d860daad04f896839941cc8f8d1d037288e81923a50cd912a8711a50c354b56b7d53a0a6e8a15e3bc1deb0b62ac05b7e1f0c6243f9e2446ea65c8a30b78c14c698d69604b8266cff004af68f0db5a32431c91287562b8e86c07aafc1a64648fe6235a82c51fe66aeab625ffeca0614d565655b3d78f86080b7dca500a6c50d763acb853ab32d17ae6583985291b2fd3f88a5be561950e2f1da001bf0c020e6473d3688feb8fe302017e399412c8fd5bf76c43e56ce0c70c03c3720824a135796d5eb4f8370c2ba704bbb24311f0970594dfe05a9c23a1a7d153018685cdaf7fe07df0f06a1213988af9dbba0c5468f3a6c3c947af0250ebef1587aa9875d807e71790a502e82cc332c4a4e160152755ec4a63496a75bba1b00a4c87c7c00c839ee93b7581cdd7b024862c3c7686c5fb89f0900c9314766c116a8616705400d6b42e81dbb742fae092d9056f20b30c4c01d29325a202d1c5e04e3a9e4b1631a36cd38d81d0f0d42a43d5b03c87f6c5fbf901e6637d47263c9b8c5ea2340c2557306906266e316204fb74d7acc42ef069d6cd3f376095010eb556110ebb6c7d85af74914f8f84ff7c950da056f61d9805c484cba8418584c7a0009ce832d00ee62698d7624ce86624a9ffe8566740192a4d75e010a44b9e6e39c452233b52d38f7e975fbf5f52f0d887b65a02c384f3b0664b2a14f1d6f7a790fd050be3f1b8402f1ebc22024364255c60a512deb1f80073b03e4d5f9ca605b29bb477fb84ce41ef3c332ee7a0d98a295449f3c96d09bb0df8e33368b34b803480aeee94f6c6f78310889be64b02de346f1c5ff20c636332e76277ca1a5d6c1e222d102da71c3326dc5e2b0567ff0b5d2c12664dc39888bc42adb56e5fde3dd20da71c14055d3d84fd3f13e40fd71bd6840de0d464e0e87f9e503a0bd70af2fc0be8ee56cbe37c691844b400bd850960a01c4e20db6ad9a5450052ede2d882a11857abd264964ae9e04f0817f6706d58ab1fa1490b7cbb31ecafc387867f2d7922e701a68410ee9b3930de28ce28237ae1126f2afbe857c4ae970452052b7a6f19700b9c3ae99c9f33a00ff3f0e6bf55881b0f947402e89c4cdcf8f17eaad6d09605ed83e134091b9b16710025af12440be8b1f812ef686931701b4a3c36d01e971d701da8277de0cd05bce04284dd261ff68fa18963799a70a514d5b7b0678eeac1b10a1bb61101f57aba5cabb51dd1ac45c1fea1904e6a4b3550184dec38141fcc9debd01f1b77e0619537e1a80b6e0bd6501cabc1df605e4703832880e5adf32a0c6d02f409691951b0114cc2b6afa848f5bfb1268b8681e0114bc31ec0948a1aa67948cedeab34043a667b68b06bd54b1b26210b3f0f75200d7846f8d8be25e75beb4201aa62dd8a5ae676706b1d4fb6f069435d3b4aca83bbbadf981fb7eb15a0910f0f036112087c85a02e8ccc6e43bb6acbdde1890cce3cd806af23706d152897096b5af1f0cc8eeb16280c0ba6810a2f5fbb201b7820b0332b61d1b50ed664d20e6fac1bb86b289a488e55e74f2c48676e2d527f62f7c7f0748a47d8a764cc6f62fac003a3d7ae700edfcd501401ab4be805c121f0f016ac77948289389d461371b00c9dab306308a8f2ba3f4440b748813c7370721d14701c716487573fc6e106bee7b1320397999863999d8d7aa412c8f999ea1639ee415933fb7c61f0059ce3aa4c79983d07d1e0f00539490db4b00895fe77ced34c90ca6874a7442a899fc49c1cf008ddc551fa03d6834064cf4274f8052ab720b20bf9c2852de02adca65669084dec4456222d56f4205dd02d22513dd3249125916af000e443903e8aa31a4835a9136a40b0cba134bb00b8c9c0cfee5f7c4204485a98045da1b83f0b68d820eff419c40791720a1f7614d80a44444fa4d2cf446dee216a883a28cf97f102721812813c7bf1cad1bc44309fd9b2427ac63a0ac3ebe61cd59c6c5c36c624d6fa2d725f4961bfac520748e65c174c84376dcaf1e80f55210813951d6b7f24aedb0e3c1be00b1801f1d806afadd303f2416179f57061896a706b1f57d7f0128bf577c5d1ac4c14702bf3988915bbe03e8f6ba7c6340416d9647d636febd6840ed167d9cec516f3301644bec7313cbeb584626157eb06554569883383ccb453ab995c6630f22dc76e2d01d14dd13bb48ac5f09a051248dc2c4e2395ab8893c543b078541ec1fa76706217f5caf0a94715bc36366d2caeb7139db1b1b90af8ff552a549e4d8ddd1b7682f3c64979247447e615cfe42a969ba3d22b65605a8b38ace6062a7d65d76dc7a4099b792f552134492c9ee31b1bcfefa091893bc82a44413c9ebf999d3a3d66dfefe0280c8920ece04a87b7f7f0c9084b2fd2c404aeebb2d01bc187fd430a92a96670228aa9a426042de0dd65c2dd5dee68641c874935a205358e21120096559bdaef8ecd954a06243e1190da6a384197d32cf75f41facef19a0c666e45af13c44169db72d88f9f1742e404e15f2d3b50087d45dce5b65d24b38834de65167ffc1ca8100378b2f3a489aef5c6401a4cfcb8900b2f6e5d420f68f5b1661434ec862ef5900e5df655700d17a6366c02fc606d1a7e79b06f1b5fbecfc73c34f880a8b06542ed64325d113f0300768e09341dcf8ce970de25670a0968e31518cdf0d4897fc20a06bc2ba0141f01b06a87e591e0d1b7d5a3d1550512aff827159e1146b24a19c684a4db1cdafb0b1b5f786d84ff74b019222f6fd0bfc50a2d0680b245d0c3e0d62ae0f4e0d48a9db3508dfaf3d4d18ea7b143bfa05025ab13b35880367f8611013269d1990344223a7aa08c34b038a61fb2ddcb4d6d41fca3db8a286a96e42ad895bb3a26e770d629eee5f19c49f747e013ab4b67a06b129555383d83fca6d033c87fb06f171372b022403ea3f1984bbd8a3ff844de9f6c48002c1ab068422683534650cf686265d5311bc1147f4b4af239ad09da96f162797009d8464b09b2a0abc3d990012e0cf5f001566b08b3d80de1259cdff171240b3b90e90a474d2378828dfcb7d805e7bfe6640a69213809aded79ff8482a00ba8c1ced02249fee3d1a440771cc4f753bc99fb18f4de5399ca3ee4a0b7407e2f4985a253fd42fec065c02b46ed79f01be590c0c4242e9f12df643393d0248c63d1e1b50c0f106a0cb4837f6b1a9b323e3eb3407f1967401500735e7006be069a942dc13936e5a3ab1335d28757aaece0da81bd9054820c11c377562c545bad0770f7687a9f4ebb93a03487dbc7c6010c6d8720490c27dc02c4c782274f20240d795f74f8006ea7ac100efe30703241486d2371cb223b780f8a8b54b81b86975ae99dabaf2943f0b06113fc75939f50d67303388760c3f0d70f0ff30a0201dab5277a0f2a76b1083fd7569108e183f7f003ddd5880a62f68a0a433e0623507b1d43b6303ae6f1706a1d7fe523ba466f8fa0548cdf079641083fdca6a70f58e2fc6d6d9a3a63d83d8b57f0534835e160ca2933f983036404cb60ca2833a538368c7379daca221f985b96e37f1333e5f468ce2e3da808a5b2c42dde7da856410c310e54cff835032956a98e618f91ca74ecd4972c639a0c0780dd01c2332650ee2b5eb95004e36490f25e374b97c0fd0a5f9536f91e2eee7d620ac1a0376295957ca7b3af92f38f046409691438378c61373cc2eefd76b0621c271aab7009fcd7b3eae420a4e0f7a0bee1ee52fb3d06e497becc97f39cb8f0d98b87490af80cb8d4174e1ec5b0015d22e6b4e57c074736610b7b55da665a57c28a42b6c01ba8b13269d2c34e98019a4ca2c9dbd8941eca7ab1b02642625d87aea1c112b8b02d4f3fca4e9f692ff280c48bdd831203c9ded53d7c8fc3e312037f6d42084bc0dfd497f18324cfd0e18e169ff2430c132f2f4651097b367a643ad1328fd0810b954de18c4c7dd32a56a84defcfb6d40fae86410e2d73dfb58cd069b7fd5306948de4b01dc2b179f0d62e4ded48e4c9eefe24a00b7a4ad1540453bde9341cc8fe56d03ae2bfa964a818e8c6d5d87fda5586499fae6f9f16b100d7bd7e737d48a278ff35c30005c19203b6c0b7091d879145096b37d0114003fccc2467bf26a63101317ffb139887bd4424780aa2a5802a6ed753676988f458338f8d6df0db801d70671051cad0a70f5ba38368849f7adaf5562c58f2583f8fc99be56a96df0dd982a87592e6a83382b47eb0631505bbb0298c1b439b697e6b8cf1deb2d8a6f181c188470b5c20252cab25c5406d185c335012eab78634f75252e169930cd088be6fa8e0057d18d6d8368e9e99a411c27ab6ad85825ea7f0cb878eba1add0ff1ff4fd277c6d4f43395634c79601d7b7c200cfbf6783f8da935b8338c40f0508d74fe33701ec84972301be76960de24f4eae0d624a6d68c24c655cda378867f4f4f953b40a071aec2991c2dbacb946baada5438318a833f5ba2ede9b1a6c2549d011dd680fca3b06f8d3cd0c621f2b35f9152a3bd074506efde1930145325e046847cd36dea0f92eae6e0da2613b3f06d1c9eb2b023882de7136d860b7511ac443b73a06b1d48fb70c482af26810b3f0e6cb208c6d9f8b06c46adc0b6047ded7b828c1f48f96299107e9db6f09bb69b917bd5ef625271f1e0124d470d32aed83761793ae1c49a4ad62c2947f2e67270009ce97b13c4a57ddb95807f491a47bbc56b7d772e70c4092a672ffd520a49c43fd42822259cee620567614f9fb0f42d83c3c0748503cda31c03ef7661047e37b0f206b020974e680aa5d1300fe6369f918c0d8a65edc81cabfac6f1f00e7e9a5e97ff1b7df0019ec06ab005ddf6633801cdb4e2e00d8923a4719a04b33b1b3a57dd04634cc650136ae01a8b10b36a5d2f6b915fd4212ca324d97975aae2e01d25a2f7700f23fad68692925137e5b7380d59c2e94db5a7e0c2d5c691fb4fe85417cedd300a03bd0e4d620ee73dcd64a27107e3c3188c1aefb064462dc0374ad9e1606216e348f00a561e9eb19630ef1541ac4b99ff40b5dbca7a541ec52077a8bc6f6fa0f90696003201d4a77cd203402bd2f83f8fccb278066b2c6a5058464b21a748bcebffa38591330e9cd41ac97155665b24aeddb001bdf1420e3f4c2ae40d416ccef8c8b2fbcc4349776b06b9852ba01e72fdae17430ea20dd80f3ef264083fdfb6410a7fa372dd5fd365dd40064878cf5ad74644ab56410ce0b156b3fab3669591bc46ded8c69e9ebecf38301775386a1bd9b469a625c24ca4cfdca12e7dad2775322524b9b27df0e047016ecaa1de86053bf34207665d520449647b63e9b16174e04a22e60f9cac4b52be0e585014650d69cb23477cef60052222c560631d7ef4b0194f6c4d094be8a1e1d18443b28173507dc80af0da20b0fd530ed96671b06c4d030615482ab83ef46290366fe513be45f7871278027d3e2ab409405e8cc1828c5e1744e2f0c28b2c3c455604e3a63f465c04c170f02dc5e5f1817df5e3fdf0db0359606b13bcc1839df5e3fdf0ca2a5bb23037c7b38926a7ce132eac139087dd09b1e8a0aba20e1430bb8f0e29852d672699edd0b50fc99bc5f65cde6583ce9b564c12bea6301ca13542b0631a566fac54419421605e26e5a9039bfaca7e4e8bea2d76b45f9fe0e0ce2c0797a16883c7905d1d7659dc821a2d3a34e99382d96984ab2e7e72d006e16c57b47201a960bbdb6ca9475d75b2aeeb74b8cbe23ebf11b6f4188b4e9b72fa0302426bfafc40f13030ac18d0dd0493f1860e33b17a0eccc91a654c315f08767e8169d364602b802127653365d59abdf0430d92c0d0c626c577e04301ba3d82d954f292db05d38f5d1705380eb1b419b657bf30c4191344e653320f46f530d1b7007dafa03b1a1e0295b3ac8684f0fc541374d1e0c28e6b224c0ed75676210af9db217ca3a5b74f550aaa8a6d9508086699752daa2d47b33881e43c5583688c59d8b2b01d483849796739f88006a87d2489ef84fb8459fdc189025e0d7206e492b6a98a43ee22b5b108aff0ed53ae720a460894eedad115dcea1005f7bbe66104389a5680e62e2cef4f972065bee19c4a49be9b5d47d4bdbeaa05237717d4bc994ba1c1a9044f4da8015c5be6ea330b16fa5f23aa5354ddc568889b9ce426eb80414cb7d035c4535fa2aa2d25b35880e5afb166862535a537fe83879d76beb080d2daed4c976151d1bc41eb4d131201deec8205a7a3734883e3daa0ca2e9f9d02014331f7f80146e1f0694bbdd172041fd77f4471a10e35d72e0a481ac6f780ea7018a88fc184399c6aec4ba0690043bd804c8ec73b105b0ed7517a0eb6c37fa34398b377534d3448690fd3780a4bec353806e38d892925d346f170c080e4c06b129918427d98993b4cdc915e98b18dbe43be1f791015924f87ca706e78c4aed9d3016e1a67ea19bc5516110924194426f816e1664ac4f36c69e1e03d485d50820cbea65ac97546aa3df9a005cc4fe09a0f4e224169803560323570ea5feb9033840e81620e3526f0c7002f27540a974a7b4d4aea2ab4c29996bcb5b355dc7eb8aded2c87dae10202cfc8691fbb3f09e1ac4b78c19fdbf92b90f0045c860e06e419c2f9d212df555b43a3140feb83208f914fb5c4ace74d435887b1465bce620de82fb5cf2dd143fe939882556f70c629ebee8e31477727d6d10de2ee34fc04486e59e41382ffc9c1b84da85e8fc94d028965f3d83b0045055362579fee1fe92fe62bd160ce2e29df40c8ded2713d7e6daa26710915c1ffa38ad39f22acc411c5a5db594420ae954bd6e3f5896e95fac1753db7eb014934b7f99498f04e2f428eb4580c229a7ab00f40e2582e21c44d3af184a5f56cffa06b1d15337720ea2931b3d43e6daee8900a5aeaff427633de3c10025353b8cf37e916d6d0ee21e85ac9d74bf4d831b83b837fce86b514494d4c04c76d07d5b3188cf7f61063990edf70fc49578716240c6c78e411caf6f6aba92bb7e69a0748bfe5e328805543e096014e69e9de4d35b504524c9285ceeb029555cbdd264268027d32fabd216dedb9e004934eef87c07d4edcc0ce26b31eacc411c9e08ce4916deb4752f4005d4f56cc0759683cf5ebfb8cfcd413cf4f4ef17313ff6f5162ac474f6d91ced067cb8601082d1c2a940d4b2e9ecea179a4124974f2a86dd41d39b64252e57be0d6211deb36de926de39db32c02fe7480071f4449faf394659c4398880072c1249d9d63aa7fa387bc9b33bf86a4e65b8644b3305935b10b6e88cbf43d25dbd33db07e826fefa6110d7fb8f990129dbbf0c622fa48c79b207f3f38500a537899049b5b45fcf2c31791fa7d57301d5be4686a9b5c16e6f18845d7d794fa0c742e6ccae71a1e92cef0870cf5e7a3120971a13b7ae8949fcd1d74a60fdea18905880b1b5b916c7d839885edf6c0c622809b89c0304673f03c747cc60c906dded0b011c853711261ac6258d9f04a87cde3f14c087953280e92fd7efb741eca7540d4db6f0f66a014a2b4e5e0cc856b026a0bcf8fb0218dbaed9729a01579ec9b50017bcf1b30181c18706f1710b85416c9f5de6ba53c96d9f08e028bcc57a9121b558d5b88c959df0c98038be47831886e1854198d2ce3550ca0bb7cdf268f02149671a17e58759e6c069afa2f12d9a41edad31be76bf32888f9344afb299e96cc92026eeaa3e0e7b65fed64095d8d67635d8a5ccc65f06d44dd01c93f48936700ea2c7d6d452993857ff005978770ca2c7d2b941cc8f2be4e446aadfeb2783d850def4f91441c8771b02436e272b028ceddab2417c4b870da551c6fa6b75a1ee95274f065834370d42a29780e6dc1d37df06b119502423d9a2f9be2b406ce483e67a338861d8d48469a80db6b96d10f7fd1f7d6d13635bee874092fb488ee577084673cb409c954b6380fca5a85394ed17fc10e3926df3ace3d0cab679f64e003a707afa8564986e07a0e3e43a6650b65ff027cfb099b4770cb06c790b90e4f8762f406945bc5cb33d87c9c79665594d57af001de2072f0618851f0c886ba4e97625de7f31886bd3a17e213170a30128d91cca8c39600b7e04e816bdfd644055fb55800c8784b966053a76708ecb53ee2f9db53d8014ff2cb1fc6726bd04c85076ba6f10cf98d185f63ed6c74de5f7c9aaccce7137da04a861435aaa50c8b2b76710af9d4c00b2bdf6f50b6e7c45efda20ac2bd880b35386ac3294be346f2f0034b657cc75d96ff3353de65b748f19f457ab75d720e442fcc7b2afd588f8d9052e280b90ff723077011ab97a2840f2df7b569413938c7b06dc4dd574850020f367ddc4d3e7a3019766bec53771120b649b8d295f3107310cfd6b038248f85adb9129e7917d57af170cc236dfe7f3d3500fed1930f93b06216c3eac1a84b4d530f97d57a73cc11c84f895f70c422cc6e09fedd1ddbf3388bb0795f2b26dd1dd758016f257df20da3165e412d7b7723919c4d73e1e09e0c479a96190787e5b1ac460af0d05a89546da916c5b349acdec20d6321bf016e67af266f00b508eaa575e6b3bf26b631096f769df206e38650120c6bbf3d2352029d137405bf0db8641741009625b108557cb466f91345eac0828d93e33d991b19477cdbade975430cc194d4d1a3406d1a7f58a41d8a2337b9053ca0c2706f8e45d19c43dfb690d20c783317ba1add5644cc999bcd6e53bab212b1cea6d4f00a9efeb13a0cde0e7ce207aecb76b8062a66f10628f4ec2ec849703833870dc85b2acfe3e1be0d2cc4ee780dcd78141b443e74b26836ef9c0d4964777fe5932885ebf65aedbc5fb996fd1f53e2fb25e1c90bbba6f40744bd7208e572aa165173bbebc34e0aaf1f78bb08c7c1e18844e89bc4e591a810e11435961bf1d8237b29dc06f0706b12acfef0c426542f4759629be73521a4427efbd19441752ca383be125d10bd9a6f8d34b83d8a534b65200748ed84f7ddf3f665fafacd87d1720a3dfbbc605dfc0743605c876b2c3ae5de198d2718f5185287fb1a29c5d7d87cfb7e59d58f3398885fcf96140be605683effba8a1b22eef2576c23988a1dc7c1520511cb907b3f207e50ff6425fefbf19865afa752a8eb7c72c1a81376661cd30144f9f0238816be2d6a36108dfcfac06a51cea509cb30543dc6ff5f998168b7b759072741f1f1884d6e9579fefa8e7538338b36f59b735fe740595bf5a801261e25f643282324f6b057f6dac1984a8f0ae1e53a0f49a7e21e5df03f3a3563aedc7d28014d41a06697b48ac98a5aae86c1c1a8422626bd180e28bea7595a99ede1984e50c77e46c7547bd6f40a681194042cdf7be417c3e3954e70063fd95416cd2eb7a4b1703e6f6b9801cb88f0d0840e5e0b376e3e3c7207a4cf27ac34c4e18b8b37ccf73e2d05256d1aca340b1d569b02380b57ab4268032636b661053ea8919a414a169b4248077fafaae005ed0bd65032ccddc70e60971a33f8e0cc85d7a6c8003a600da8d747029808f001550e7207e31f32f7091d842fc6ae44db9bc601013174d4d0b98b8db5c126d79dffe34880befb93e7fda209e6b3ae0ed92b0cde7b9f34af4c78b418c7ef7ca80698960f46702ff03044dcc0cd06e68b0a98694f6d55295cbde2d0de217c32d8350bb3cb06e1bf4fcc5caba4118daf3ae4148c1530da52ab176ef05e8f5464dd7da2fd70cd883f60ca2c73ea702f4986e5a4dd5c4e43fd7c8293cece0d12024478ab7b64065aaf5f9baf2e03d98659bcf1f954104d5bc6b4aa110494bb702e8b6d6d4b0f6dffff38508aaaa2fd1e9680b2039e8e704209be74f4ced6a8041373f448f55d66e9c3f03f0bb48c8a795d51d978700a93b88e29c83907248733e07213b5c08286b75d9352069770720b5cb4b8c4bf567bdff02e8783dd12fa42179bf0168cb4187320764027f02e86b8fa706e4a8ba078cf896e357839060118caa3fa5cab3011a92bf5fe0d0ae5fe82e76b967106f39f8c7d8792db7ae6b6bfa6178ff972d599275a99c03952cfb8e513953f1e91be0085a6b9f7dbabb0aa5f2fca644023f8001602049c4746eed5b0109c40bb9423df9894f080965a9b95338319015cc9f2f06b24680cf5fb7801ecacb5f427599f0e9731650c3e71615d070b6db62203db66e47010d89475ca4f426811e17185d9d3ee78cd253563f9e0ca4c7c607e686ea65e1b34bc3f74d02a1023e1c89d3224b137c3e6e3df464ab7dcc654cd62a78d99e02b20e191659bd2cbc1023542f0befa131802ea1465e7e22791b3d188819cf73055297099f1e65007b4856ac989e73c5c76987efc50b9cdaf7d284b1028afaf72f0311e8b3a680b2327353405999e58889cb2460e3188acbc4db0a90e14a3551c0a7692d15b0195f29a0a6e0732880d77d16e4b5e265890b0a688dc0da67200b205602d843e21c720ca4071b9f14d08a08ee6e843efb2d9ddc5d01e9c10bfd425d7affd16420ab7f168e00f6aff34ef2d0e796d0ef751490a64bf98994f5f84f01afb6bd30e0e1ac3fc830d0b50a6c0c021d6ab4145083e35c19e89ed5a3023e01f383018f3c837346013999eeacc77b694255016f956d2aa08e112f060b756b792ea7800c6cce51c06b039b0ad833113190b1e9e744000ff0d86d1bca6a068fafcd0cc5dd113cee0aa814fee41490c55d2d14d06b7ff20ca49af22d55165039fd5a2aa07814fa0cc443b25a2aa0c44d3f14505b59ac0b9053bd247145be6339238993a5e6b98202aa73076ec465cd84bfb809e09d6dbfb102ea1716b89a8a1f26e0331142f1c3f85928a06ee087442ca06b77fd6f2963d299f80c1550c4d6522c75c5dd5801d9a0674e01bd767157405d96846ba51e53ccc7585b40cdeb810b8cb85dc0973f5bc067a9bd14506f8b374d84e298016f710f431978f32e700b785538775942b663c1ebac8097f1c50af870b5a202ea28f2954206f096ee27b751ba197f5e52406ea89f50016f675808e05302d8bf6e0195c2cb51001d39e4cd25f95281f840100bb893c7555d7d393dce1771ccf8e78302caa8fd510155f521f73ff4d437be702c14d74df07414f0420cf9896cb9e33b2042ddf2bfce0ae0ad6e5d2eb8e2ba0978774b18466283d8f287325770bb2920e3c8db90ec360b9a7cec6405f0fd625736d291747a6f5905d4dd98670464f970572ea7e2cb091c6ed6a23c8de69d12ab1e7de778ba561ecaf3c8587357329249ae675b01df6f7a13c0ab2a5adc66473ce4711357002face7b98230e2cb6d025e0c16ea368276590139cbf91a1e03f808ea17abae2b337831a905f416becb37147707f8c2f55037d2f385eb16f0dae2aa0276002c159095e20d42a11cfd8c2bd7177577f0cdb4167063d115c04b023a120fde151f2c0206d902d5175ea665009f61f6cd1539fea29b9cf1929fe478b50b9fc31ac67936b039494b9e079a93b502b296d344002f91a84ad465815dbbae80977bf4149009eefe0a60c74cbe29408e703b2b203b569598ca629f594d008f80f9d4ea509c08c1a3ab808c74836b54ac273fbd14508179c40ac8edf22b51f762764349d47d5926ee2ae07b5724f9e21198de1590846260ed92a1f4a14bb641b24402abb202de669228a0f676b012c06e869f92023ed48c7b4aea1118c60aa838ac870a48645e051dc652a3d6ae023ec14ee211b11f4646163adee7a33a425d44e1b5155081196d15f076fd8d008abac7c3a648ef8eeb0d19c896cc9ecb405ae43b8df7adb398bec16753467adddc9e6c619417a3c4770d4405693db8e31ce9b1677c074454906dd0a1c74056b87b19052490f7a1809735ca43f596bb2c03d91d17450ca467b0a2921cc912097fc5cf100780cf773d5b40652c0c18c870657e5540358a374d44ba66622a405a53de6a6f0149381e309055157ccf6af47600ec19c8e0bdb456c0575fb1847a454a69a7802256192be0c32b580fdd35e0bd18709172f850e648cf6363bf43a40e00f6e45940a3936a9e81f40cf85e400be8a1bcb52bd2651652e8d445d06d2ba09f0c330af82cc62f06e222e8cf19c8328bde44019f0ec4c5413d0239aa62915e25f81729a09f64e41bba02c061202b003ecb0a28a67c16b4053c04e4e4ebc971c53f06baee62a7802af2a7bc565c0419ce6c7511f0de95e8bd915ea2ae030947013d34c325595766f050d400de40b692874a179faf348cc445e0f1ce470ba822efd83a8847c0dbf61550dd0f270aa82f15fd29a0458b3c7514e9fe063e0cd9026ae6b72705d49aae5d05644f8bf20c99d3e2ae42e4eb2dbb5cb4f504eeed56016554215140569b8f3a8e74bbfef24f011bb69c02ea38ef2562b2c928ce2ba0d43a210371226425ead20bf6720a48643e3cdc025a255fe722e5f38e5487bb5f91ae99c83c14d0335e6cb575bdc3eda0800aae132b203d8a5cc57c7141f315a0d17bef3d9b2d3302e435133e834fd9ae9f53c0c7d1450aa8a3786333ae2b224e9102dee65a52401d01e7a180671239a6010facfc1c14f00c4d4f015f555b64a05347a1021e04fc29a0d7deb60a688077db28e01b94bb0c74dd45ac80d2e2dc159040a1244e2c7fbfa78087c45c2cdf0b313c057c08b1af80cac7a6c2404e3b599f1550e79bd74c44819cd57968292047269f051da913a1e02aa0a8efb866ab1321be29a0de16cf3447ea3370b8395107c06ea6806c9014fe20941d101d05bc285e724e8c52f5a680aafa0b0aa897c39b9c233d5a2fe92ae0b3b238f77521062f4b8af47082ca4e01259f674523d967113cf92dbaee82cf51b480cae9e2a1809648f0add406f0f5bf25562cfc9275289c7c1d78ff440a48205e926800dfe7c93b63233df160705540cdda4f57012f197928a0467c20699106e787cb986ebcf85d0bf8e49f70bee8328b31570f395ddde319bc4817518c160ac8e5ca8710477a9e81b4d97a20fbc553c017f4717d89644c7866e3f8de23c12658c6d94e77a48017e9ed04f018f9c8753fcae5c948b7b946e9f9eb52a42219f26c7f14f03c21774822de4412c465013c27ee71272ff26524feab809659b0d33ed223db579e025e16fd50c0db2ab8c0e8b101cd9a800c1fbfb61220bbf3d702689018bcd84ae9787f0f05bc3930144003de60c7e543c6fbce5104e29b598227bf36964311f9ba06030202e15180dc92c911935d14782c1550ce49bec4d214b45c01116faae1e4eb91ed938d001e124fcb0a488f9c3cf48b2f5ccfb1918ed97decfc714936a379aa844589189f8c0ee95ac705d9c0be1020470fbc04f0c09bd77f4466e0cd67dc89627288f9f422801357e53aa723f1f35d01b751050524d0ac2a80172f0c2205d436b4386f63ee3b80efe38b74f6fe43de22eba5fe3e04c45c4e45313ea23ce0fbe60de07bcd3b92da8057557ce937f874b16c43008f8079c96a24c36a7f2e792b1b0d96dc51d461f5eaa58062fa1009234ead3449ef69f482024afe68a380e7e6770aa85806ae022a96abf74329b31b0ae408fb87029e1a680920ff87c73728c7595d7aef2ae0d3c50e0c74a639cf40478d39057c1edb88810c13dc8502fa862bcf90a9f897bc56dadbdb9081b4a6ec9889f54cb7d21f03693c9f3305d421e1599ef84b26daef330594fc474e01b551e56f06d2bc5e48c238cffb09bd438981ec143eff32904ecde5a98066024e4305f4934399812c2bd8b7155067e2f262207d98f39f02def5ec2aa0676c1b0c64dde78e1a607b3f30df66c2892b48a797b7655940bd4fbe843a2ec80887c76216d04fb67b05d414f06a7d0b783d0cc7b4202794ed39f9859c1c59365340f536fe534015c89788c908271c28a0671c7a0c64a22c230f95be839f574099fd996520de8dd05740de1e3fa7801efa3766202ea475a080dc1d5e5601176d119907bcdedf848194f5ec5801fd24fbfe06252ea829a067b81b017c6bd7afe4ad78aea25001a5f6bbac808c41b450400566b815c0fb6f3f8a0cc4b715c50a28b57ca770acab5d960f05fc964001c574b014c0c7ad7f8281f883ae3505bc33b6a5808fa01e2aa098cef20a683a6efa29806f10e29d8ff1db0bd751406f09a180dfd256408eccd5400175158e1705640c3ea9f31debadc37cb5b305f496f54c01bd25f21590627c12a705dc4fde292063e06e15d06b792d8b05b45f6cdc5140cdda8acb87fa1c79959a05ec40cc29a088ed420594fcf59f026a09cf5b0554f74fdf0aa8fb757a3f83623acd28a0e5d97c98a90514533edb25d6d5507c03aa05d4a5f55b0a28a6ebb902be58e2470149c86e390be8b5732eb8bac46afdab805dd07305d483f59b0a382d925a19cd5f370ab8eeef14f0d1690b055c1b560a78e7f41b50ebc117b15840ad472fa3808ac3544a90b4c8c3bd02aa62939b02aa2fbc92c9023e8874aa802cccb8ab809a026970be79a5bdd713a023beb502be8a23ab80f28537a25840b572565040ae2c5ee11e8b0bdae705edb1ac41f31f1d05d402794f05bc99f60da89c3eba0a4864e7ac80da28efa180cac740b2525a8fd25601c763a4804ae1bdac8053fb52c0f1e82920917feb0a282b7f6b02d838fe5614b031e0ee97bae4ef150514b1674101af64da28a088f1e26b0b58b192028e695f01c574995740a5f057f2a5c89b8bf93ecf5867021eae028ac763a0804f4aeb2ae0b5b41905346ce2a53cb1eeafcc161550f558e614d0ec5b492a90b87fee67059c736cd7654ba6933929e07347e527e211682e14505a1a6f40f932136310f18eb299940f199bf29a9a5896357ad2db2aca1ede78a480ab475101ed6c9bf05bf452cccf87027ac6e24f00ef689fb009d66379c79c5145991aa87e2be0763fab80e2f1915140c561f1a180eeac9f440cc4d1cd271e58409a568b0ae8a1f15801b93baa9c953acbd3c82aa067d443051cb14f05b4eea2ce0557e781f894770b285fda6c0b75776da7a480acf6c79702aa957ff2d0029fccd1610ba3eb4f67ae029e6b6c28e00db902640cc45b65639d5ceac933c495d51b2ba0f12d1f1d6f015f24f9a98063da13c0dd9ebfae02be95a9a3802fa790ac9429ac615601d786ab028e87a3805699fc716dd075b03ce11fcbd546cedf5a0165c307db0f9d17fbce2be09fac1450bec41305348acecb6b6590e86415f026d6580145fdaba48024fcfc554026c7ff5440d31c7ff20ca9c8f9b6021aabb32b3cbd6b816a6549015fc3f352c08a050a282d9983021a137ebf7f426320ef4f01d5b94f96506712f9a4c558f66783f726c43ab5f85d54405e0576eb5b4005e673ae80f4e0f5a71690810dbe15d082a12cd7fdf77c2514b02f67ab804f5bcb29a078f0d91d16f04afbba02eec0f715906262fa3c3e63c68f3c057c58e55d001fa5df668bab13a9d98502aab7bea78014cbce15504cdb9102be19ce51c02b215d05b47329cf0df07b32f643016f998915d043bfca0a385f7e14d0aa9bcf9b003e3581fdc91690c835c939d961d77803ca97fc5201a596fd4116f041a41f0a7819ce5e01799d326f40f351ab86021a8c54a0805ab1829453998beefc29a0aaeee415f0893a0705543e9c9c02be8d71af80ca47fbfd0ceab27cea5b78757aada180525bff154007d7a0cd3648e7c45b3b055460e25f05acfa56011f31fcfe06c534d751c0becfb502f228b6370ac825ff79524003ab4541017558f77d05e4b6dd641590e33f27a995c3081b3b059416e74b011f87bb524051e7d31b2ca0a867a180a29e79ff84ecd86ea880bc927cbfba015c2b6b925a5956d0de2ae0a5091705bcafc053c01bb74e0a28ea9f57055c4ef30af8feca9a021ae144bf0a48f576ac808af6f91d53527ddb514026272fc552f6485463056c935b0aa8c0e4b70a282d8dbd028a7afefd0c529d6f1fb480d3020594969da380968bb5a5aacb428cfc5a019f663154c0ddd19902d2b47e54c013214505d481bf1d149084594f016f62dd2920098f522bf9f45bef5053c0932952a4c461b61b29e0a1d75501457d5352c0a77b6c15f04d577b056c2ed60a78ec7153409dabf3410139994e52927d8e7ae943012f80182be02375b907ab5b66ea1b05543ebe3f14d068edf9a580465a9df74fd85b3c50c087dc1f1550f9c80e15902d5c1615d06ec1725501cf593415d078ff525640769d375e584016a62dada99e5ef9a98097156c14f05904ef9ff02e9b37201fdbea43011f533c574085ae7b52c057c6e414f0551c5305b4b87629d910925336888b0a78cbbfbe85669bbce78f022ab88f8202beaa561227a3c6f558016f65fa53c04b24d60ad8159e574079bbb92ba0bcdd761550555f4101d5b9fa4101e9517d3f94b2f2263d94887dd26ba91e321f555b2be09c5b2920b7cbe25b015f4d1228a0ac2c7e29a0ac5c0f15d06b8f1f0a6808b8771590eab58e02ca39b5fc3cc9e52522101fb1132c351e34c209628d299f5a5d635b287bce9ccb4201a576f352c00d4ea08052eb3b0aa843729a2ae09c7b2aa07506524d7db9e24026427cee6b078f5f05d4ccafde6fa1c1c8816b946e86e38d4a1650172edf554031f51c059c2f5905e4ede95515504c77650514d35d45014d4eefde3fa1c1884c84e88db07cc1672c5bee82ed5101c5f4122b604da1802ddd5a018d5e4b9f0ac88e251505e4c9e3f3602de012d453402ec6e658409e52bb14d5a57beef80a681879c828e059af83025ec6775740227f7f2aa0e270fd5340ed4bafa68063da5640d5b4d6554022ef470a68cd449c55409bad97efa8d3da9ea5682ac384bafe844f35af6be2b8d3fbcd964e162d7a5a4ef5a65e28a0ac3c7d29203d720f05543d366f402b774e59056c83760a781630a3800f547ec7838c74f5a880edbaa380f4883562dcd9fc66bb2ecb2bbd8aa78012f7d55740898b8f0ac86a574f0a78d95a5901c574f97e28e56df2524066ab2ee594871a4e410412cf95966439e89a0f47b28022e6bdbfc167527f28a0b6b298534031d512249bbea543224b4583db5c0195b1e73b625481aeef6f503fa89e17c0d79b2ce51be263cbf714f0ba4f4f01a525f854406949ca0ac86592792aa01ac5070bc4722995773e2920dfd6eefd0d5a42b39f2aa01ac5a7cec6ba0e76bb51c031cd2ba046bcf8a780cdd69702325b32ab21c78b7bd75f05bccb37ab809b82be022a41cff74ff834cff76b6919dfaea9800affd9514043c05e5d01cdadf51a02f86c4abe20d8023606df0aa85323ae0ad94b8cefac0212c87f7f83ebcb4e01cf9c7514f065d84f05bca779a88052eb240ac816562f0aa8fb55ca28e0d48a1e45b1745f0aa8581e24a6e261cdf71570dd771570b1fc53c04b23770aa8f11cbf1450157bfd28a05163afa580322ad92ae03343bf145015ab040aa88abd782ca667c95f4205641dce590554815e13057c33cb87026a81be3c05e4daebb51590f93cbf7fc24752891e32e4a9b514908427c917f105177d057cecd99702ae510505dc858b15f0ed615305d47aa8619321cff543012ff1fe55c05d85aa021af2e4e70af8f0acac02cab9dc1b50a1ab49190b38b57f522c759f675b01cd368d4b0a2871e78502eaf3fb7d05bca966a0804627c787023e9468a8808fa15d2ba0227591aaced788fa9f52b443ba0ed997192bbdf60e50c08bd1f70aa8dbe3f714d0d8747457c0f9925740968eaf48b180f2e5f854406939de14f0454e92fbb25463f4544051cf7c2b2007c0e8a1800abf767a6311b9ab80443e2f155009425e01c7f4ae80ea4b7fa080acd4f1aa804b9002b6a711b762729ea3e72f15506de043222da0b44c3a0ab8c0840aa8228fdf0fe5b4bc9f4133aba39b024acb69a380557f2920e3788914d0b68ae753019531df15c0ab4bfd6f05bcf3f1474086dde96c0ce438079f2f4089f53887db4e0159dc625101bba01d059495ce4d0127ff530125dff51550f2bd8a023e8f7ea580b2f2b455c04b57160aa8eeffcd15902333947cf9648f40288ac9e2fc6b43019f80e92ba0bcf5ca0aa869145b18c86c02de80da97a8a280d3b25640866d7455c06989155056f2adc3165077f4d75540ada9cc030519ceca804d9f9caae1f146470b38b323057c647ba080bc5f7c659d0564d7654d5e20ab074f4b059473c9fb1b945aafaa80529b797f83ef8dd4d7f21a78afa180af489929e043238602684f91174af590a35cce2b0594956ea480aabae72be0290a28e08b3543057c679ba380865eaf9c026ab4c282021af2f87f0a6864e1bf5f4b95709428a0bcfd1a08103d9a0ac8a0785f0a786e5e3495736ac4192a57b504282be0d35f760a48e4714501e9c13bfc2de0ae534d01e911bfbfc177c87c2b203d8277c4f852ee4f0594fc68a980fa5259c9ec1c25dfff1809c8534c3f5c05f49648725f969b5e3a0ad81d765240657d5c55c04de3fb1924722eaf80af6aa92be0b55f3905bce93ba3805a20375440c95f5c14907ffd5554407a2cc528e5b9cfef94145036ac5c05d4c9bb4bf9d03b638b0a7807e6540115fef0a180ab7a560157f585023eadc0534083d5e7b702ae0d8e024e7ea080ba0ae3ba0272edbdf20aa8666fa51216f8bef9f5a7022e74a2a91ca073cc28a0c4c98cb7ee6c3bee15f029bc15053c79d050c0eef4a902ea5b56de806c32decfa03eff5c34fd96823b16402773782b314ab2184c260e65871d9e4b05940de7b3028afaa6a9809d190d059416add93cf4f26b50402297eb0aa8f588af0a783daee49c0cce7e1c0554812e7b055409d7f20c5d5036534036e891554075aedf5540654cd6c2c9d1cf786e1550e2ae0705e43dbf2e14708dfa5640aa272d05d4e08c020594fc9db4b77c56b8c707c4c6b26b31787c29a0faf25c28a08c5a5f14b0bba3a980cf4f5e2be005103b05d458bc3e145063512a28e08e404b0165e50b0ac8189434ea5c0acf7b0594511bc97dbdc5ec57011f6cf4544035ea5e50c083d53f05ec3d6f2920eb204b0183407cc17905947c591d6600ef0495a6514fe0ce2ae0ea112b205b2853f1b213d41b9c145045de1f14d0e4d24bd22223adc55501bd856f758bf50aaedb520169da7d28a021f1e30d7846b3a3801ccccf9502be0cbba2808bc356011587cafbb5d4c5474d019f8722a530caf0165531d23231741b2be04a98574015f970544051df4f145007fef1a9808ae586e3a1d776f3ad7fb11c8d15c8c69c502664f8c04b0bc8aee77f155009921170f821edcb9702cadbea5d012d5e78e61590bff0d75740563b7eff841c8873fd094fa525f25ad98654ca29a0c673fe54405d2799490ce5b482c7b7023206d2710e7940e395a180f296af9db180ca69b4574051972d11a18c5f9655053457e09405f07a982bb784b2dbd8e1ebe5633907defff9564026385c2aa0cc7e9d1450bef0defb58ce30737e0305642d2befb790814d3a0a28eacdf75b680dda78a1808f2c7b09e05ad95829a03a576c2860d53562d42d76c66c4f656f75f0cc28e0fd625040c5f2c753c02ef9a2027ae8afa3800a0c6ff9b7806701df6fa15238cc2ba059c0794101255f5aa090a77d9ca9be851d55f3b502b274e58602b21fb26820ccb283e877a9801cdd132952323124e633e44191377d03d243a6e2656bb9332f2a208fd1fca8808b031490177f7e5240ae8adf5001d9b16b4b01d5ca4146012936d578c8c27aee7ec96173c1130a782be44801a565e628a0b48c970a286f272b0524f2e5a080327bf2504015f92750c0a93d2ba0d4f6ff14906bef267ae47889f76ca6802ae1afc683b70e8fb929d0ddf9a33f05543e263b05bccff3ae80736eaf802cee36504059f9d353407e98754e01e56d6fa6808cd24923c6074c777c0514753e0fc5803ca57624b92fa393e15d01a545334a2697e63b059496d987023e27efa0808fd584027264fef4155046fd7a0aa82f25bb28c28264d4a702ee4b49ce15f8f2f84ffd49961227b31a61214f057728555def9e3c2ba0d48e22056493fb43059c5a4f01a576f6a980dd2e4705640c649f56c8e31767fead800601dda702eaf456246f79eac8798885f9a6031e9dbea4454e5c1ae414f024c61b504c874505bc0d69a380aa47b7af80da86715300b7621ad362865edb97222507c53dca0ae8b583bc02d2a323aaf3c27a7c740564d9384ac4a48b7f3a29e03ecc5301b7fb2505d4566a63c18bd282db590155a0f9560135f3f796023e69515f2ba7ef671450db20db7f429ff3652ce642368f8e4a0ad83aac15705bf952408af5bf1450d42f63057cf2e44801b95c2f5040339a1de99004b25e7baf80a33e109021432f9bd0f49ccdf345011fc0e52ba08c1a2d1550d4a7050564c746b102760e1f14d0bcd8b1ac806af6442216f259d03d7d2d9fa1ea495a423e6773208ac9bed7db1b706dd82a20d5658b99dcff125cdb0ac84acde60a48f57351015ff1280245dccc8b97c5003ebb94bdf87a67ac6cd7973b6383f3b702eed14301e7fe4401af0c3d2ba078341590624e59ac549ce7b7b0d5d6ab6bae7d053c799051c03f392be072ea28a0981e2b0af8be938700ee061e4b0a68dc50bf08e07e90ece333806c906c753380e74d39b3dfc7c19c14504c65db9edea17b180ae0de67a52120cb77e99d15f042f2ae02ce6c2ea7ef43675c05acd85d014f2e250ab8568a62dc717664f76494c9f031b4810272bac966273368e405cb45051c316e5fe4f61fb425a6d90c59a96c2820cb7babd918c8fd404ea7a680c6c87cd88b01398ac7f14b01b540655f002ff5eaf04022925edf2ba3800c6c4d7e92a3dc772a4d01b45eca91bd91512e4bf190ade50650d4a3a202f2291df52d7c0b51f647009dc31abca448c9268168a480dc0c614901ef6e1109f31cd3c65901a5a5d55040f128e405f0f1382f29dadced713a0d05e933dc64ac805e1b9615c4f40d8969810baeecd08d0a7cf8cd97a4968f7f753aec31d2838d649810c97afee0a980cf1cde2b60815c057c8070a080caa94cc844b262a6d212c07dcb8a64e537d9c260a13fa1a2ed0f34a6945190a32922590f23cbd62271b9fa370554d59f550594386fa18013775090234d7f14903d7d0d15f039dfefb750f988c60a38a32a0ab8f194925ca42e4b104c05e4f930f5b9003e50c86757965e7dc587aa5a40df9015aa7a17967f57408993a9b488b7fdbac95c01f5e95eefb750e264262062972b924800776a9258017de35b4a909725131c8a75f07254c6b01410f269f3bf0a28b37303017cd291276fe13e9d9bcc145049ae050ab2f48d8902aa0d9db602befde7a580ca6922a68f1daa683415506aabfa134a6da0f9e2d391ba6e225929fb0a64ae51ef1793c96939d5cba92f1550b194ed5072cc97d31c28e0d3b3dfdfa0ae42fba5806a54a7ab80f245f64745bc6b00723e4c1448b11481820c5f92b1164059e9c8c21403e827b2ca350abef89433318e019d040e4f0a8c6c2f6d0e15f059594d0594fcf24101ef7e6a282093238eee48b622ec1d056c71df0fa5acdcbc01ef7f91bacf1b0d9c4a5b01d9e4fd5c018d2bc53b2a67a9a15555407d87e54a01e5cba3a58014db88a661963acedb93021259167318403fd94b590f496467a731fd2237435e8a54c8e7b12d34a65c81645a50ce74735a6d05f4d0464e0125aeb453c0bb8e1a0a281b1a6f400d5fbbaa80725f15933546bb4f015ca33e34622cf2f6ac8006ef2ba940114f1c36f41901d9e450631af0996e6271233e3a4df6add923ecd2d7cad1367a407df9a880f5b828203db436c8b68ad7fb27a4474dac54cc2568e729a08e515baa474c97753807e908f039797e712b20e4435602057c5498148738e28932565d6ffd2b1d14f0ec4a4901df7b7f554015a8bc57c0471ed61490b99033aa623e02019dad004ecb292fe08becfaac2f802fc6fb881450b1bc71c195f3f9835d460125ffe00ae0e9c9c24d0037166e41809cf927af95ce77fba980f4781d145035edb404f080b7ea2820ffd8b7fe843b8ad14501153abe92cc003e189eaf0f8f63bd69b3aa80f7020602f8b58da502fa46a32e80bb70835000df0b98d187f201f58d8c029e8e7b036a0a1a1231d98fbc1d2be07ed04a01b72f650564943edb02d87c164a0af876caa2002ab8019f066c017d63a8afe5d3f86a123119151c460a487569a362f6c13a1fa27a8efbdad982023ebef15b01358df9a102cab9a27e833b2463470189cc57d45b4046495a4203f8d4c8ae00ae9535798bec58aef714505a2e33013c3d5992d7e639b3eb7f02429e2a8915f0013a22729ecf732cef14b0a6f20ddd6ddc57c0eeb08e029ef7f015502fe722e5b420d75788752870cdee1d14f0b1cd8e02b2da95b202b263b937e043674a0ab8b725f922a393c358010fdeeb0aa868d7bb0af8b2d29e02b2635dd1f49bdd0c2b314adfd41bf78b0b015cb32762e9bef9d68c6c4b0139991a6ce8f562cd5a5f01e5ed76a480d718bd147077e357c0273b227e04b083a83615c0178ff4970a78190e14b00fd65740e534233957e4cb28b34d017cf346430a8c0c35ba5305f48d76560175370eef6f7035ad296027f55c00474c76d9d8bd9029c8bf0165437bac801e7ae01ebd1e44daea2920cb2f3bcaf41ad1a6ab80afc0380a90729a5740439e489a463fa667c82ad7587bf40d053c38fb53c01da3ae02f65c7514901f662bad075fd0e7bb92fb01df3b9b2f29a09c7b2402b802b5470ae8275f621cf9c8d460cf83c4f765a54d051cf5f737a8d049d73a0ec9cbe27725b343be5565f650409d2b575e1bc6bcb6f8ac80dec2e79ec7ef83592b0ad8cd3054c08ecc4001595c595e694f94a616f9a480041a88e98bd816e6f5b56c61a66705548164b5ad3db89952fba980176248ce4594167f5e524085ce113da42bb93c2ba0e4cbda1eb99a1572b48d9c181becdf802cee2eab807b8ebe027263efbe0450c3073909cb002ac989b4a6314db7042b6980e32f3eb6599a9338c75929c521664dab62c762367da3a2025e031f28e0c3f6f5a1ac7ab7a080547f7614f09ef78d023ea6f8aa808af61d0af87aa4f737c8a0cca4931753bef8f397029e8ced2aa0a8d72e0ad821023771dcc47313df4d023709dd247293d84d166eb27493959bacdd6493c2ad9becdc64ef26073739bac9c94dce6e727193c44dae6e727393bb9b3cdce4e9262f3729b949d94d2a6e5275939a9bd4dda4e1264d3769b949db4d3a6ed275939e9bf4dd64e026433771dd64e426633799b8c9340d3337f97193b99bfcbac99f9b7cb8c9a79b64dc24eb265f6e927393bc9b14dce4db4d8a30c3741b9c347869f0d310a4214c439486380d8bf47f97705670d6703670b669d8a46197863d9c039c239c139c339c0b9c04ced518c734dc4d2d80f384f3825382538653815385538353a74055a561fec3e89bbeac09a705a79dea6b5edc117da3146ed3605edf85d383d38733803384e3c219c131d298184ce04ce1cce0fcc099c3f985f307e703ce279c0c9c2c9c2f38393879380538df708af000cf81e7c1f3e105f04278262fa7f06278268f7fe02de1ade0ade1996ccec0dbc233d99c83b7877780776459bd13bcf33b90b2dec50656368297c0bb5a7dbd9bd5d7bba7faeee03de03dd3f0b0c142f3c697d5d72bc12bc3abc0abc2abc1ab9bb6c6eaeb358d0d81d786d781d785d783d78737803784e7c21b994f32346378137853fb326f06cfa4670eef17de1fbc8ff4f333252661591b1cf3c42f78267979780578dff08af06185f61df81e7c1f7e003f841fc18fe12fe02fe1afe0afe16fe06fe1efe0efe11fe01fe19fe09fe15fe027546c8db8acaf7f857f83a9c5fe03fe13fe0b7e097e197e057e157e0d7e1d7e037ed34accc13ca7f55f8295350d7e1b7e270ddd547713cf1efc3efc01fc611acc1f6e0a4dddfa863f82e91ff913f8263e33f83ff0e7f07f4deb6d5a416392e167acf47e16fe17fc1cfc3cfc027cf343a3c9f7ff5a7e1140caef5acb2f02272dbf1102cfea1bf856df20b0fa062102c363040b044bd63758215823d820d822d821d8233820382238213823b82048105c11dc10dc113ca4d8466988adbec1d396dfe085a084a08ca082a08ac0589b2f04c6e0e4113452e12eb6fa5339d5cf7f062dbf6a1ffe9fe5d7886eca6fd044d04260d2deb11620e822e821e8231898d61d818b6084606c0b6f304130b5fa0633043f14a8173047f08be00fc107824f04c6c01921b2084c1a72e9a7f94d2185dfe96711a151ff88d041e821f41106084384469d07c218e102a131dc25842b846b841b845b843b847b840784e68727846784178409c22bc21bc254dfd04a8cf089f0959a05f358f39032c20ac22ac21ac23ac206c226c2561ada083b08bb087b08fbe9e740fe1e4a704d489b161b52324ac318e104e114e10ce10fc239c2df34983ffe5268c287b542e127c20cc22cc22f84393611611e6101e137c2222220721079887c4401a210514421d5378a112d102d11ad10ad116d106d11ed10ed111dacb8d1deca6ae131fd347f9f109d115d10994a6dfeb822ba21baa77f3cacbed113d10b5109511951055115510d511d51035113510b511b51075117510f511fd100d1d05adef099b66fc65e9987b8886c8b87c88409a229a219a21fab6f347feb1bfda6e12f159ac24084eeb1cab66a4ab0bf326fff48e5368ffd4ca5fc4394b1c1fe91b5d0862f6b858cfd8d72888c0e0544df888a8881d8b12d5becd9c62df61107884dbfc0411c218eadb8f142f48d97885788d7d618c51bc45bc43bc47bc407c4c7f4f3608d6f7c427c467c419c20be22be21be237e2036af31ef28212e23ae20ae22ae21ae236e206e226e216e23ee20ee22ee21ee231e201e2276118f108f114f104f11cf10ff209e2336763fe4c6cdd887f80fb111c2fcef276213872cdbdfd834003b6b46e39c4d7f9c475c481ba234c4dfff08451b8c8dd6b0401a9cd42e5fb0f0acb55df8580469f0d3e0a521c422c222c66281c5128b15166b2c366f7d4d586cb1d861b1b7067a71c0e288c5098b3316e6c9e754df458285b17435fbbec50d8b3b160f2ccc2f5f5894b028db3f8ce21656b0a86251c3a28e45038ba6e86bb8f96d3bfda363f55d74b13091ee6331c06288858bc5088b3116132c4c3c6658fc6031c7e2178b3f2c3eb0f8c4228345168baf77ffc1b66f36d8bf17392cf25814b0f8c6a268db37d5d788bb84ed45994f2b740e4be71fc13321edc615b0f4d3cfc0046bbb97be957b196219611963b9b0c9b77f2c5362f80acb35961b2cb758eeb0dc6379b0c66169de75322312abeff2826582e5154bf3db3b960f2c0d7c6159329f3472296359b1fd876515cb1a96e6f70d2c9bb6db608aea3ffb0fcb962dd7cb36961d2cbbb6abb0ec61d9c77280e530fd74b11c6139c672627b6f4bf3cc19963f58ceb1fcc5f20fcb0fdbac2d3fb1344fcbdafec3f20b4ba38849ad49f9379645acf02ebfa6ffb072b0f2b0f2b10ab00ab18ab08ab15a60b5c46a85d51aab8d0da695a73ff89f6ddb43f88fb0da62b54b7fbec7ea60fb06ab235627acce585db8e7bb4aa4379df6a3ed97af589968dcb17a60f5c4ea855509abb219ceb20936466355c5aa86551dab06564dac5a58b5cd270d7b3b58599b656df9aa87551fab81957535c4ca4d3f4d1859b81adb9ed96a82d514ab19563f58cdb1fac5ea2f0d1f587d6295c12a6b4df0ca7cd33c308f55012b138322d6b0eddbdac1dac3dac73ac03ac43ac23ac67a81f512eb15d66bac37581b1bf581f50eeb3dd6e62747ac4f589fb1be609d607dc5fa86f51deb07d64ffb4f1e3efc3bac5f124a1c8ca0f68f32d615acab58d7b0ae63ddc0ba89750bebb60da607653aa9eb0ed65dac7bf6cba4efbacf12af07580f6d295ebb588facfd5d8fb19e603dc5dafcf007eb39d6bf14527dd77f589bc47c629dc13a8bf517d639acf35817b0fe4e3fcddf456c808d838d878d8f4d60e5db84d844d8c46958a46189cd2a0d6b6c36d86cb1d961b3c7e680cd119b1336676c2ed824d85cb1b96173c7e681cd139b1736256ccad854b0a96253c3a69e8606364d6c5ad8b4b1e960d3c5a6874d1f9b0136436c5c6c46d88cb1994898a66196867e1a7eb099ff2bd8ee47db96fdcdd43671a607b9f9b56ddae62f0d1fd87c5a62b8e9bc9b7cda64b031fffb658331119b1c36796c0a69f8c6a6882d6c1778eb60eb59fbbbf5b10d28901333c436c236c67681ed12db15b66b5b66b71bdbc9359fdbad25db1db67bfb8719986d0fd89a079db03d637bc136c1f68aed0ddb3bb60f6c9fd8beb02d615bc6d6bcb88a6d0ddb3ab60d6c9bd8b6b06d63dbc1b68b6d0fdb3eb6036ccdeb5c6c47d88eb19d603bc5769606f3ae39b6bfd8fe61fb81ed27b6196cb3d87e616be296c7b690f6d9d342f72e77e6c96664b8b735d258ea774136b12aa621c60ed83936c93b0f3b1fbb00bb300de68f2825869baf992f2cb15bd92eda6e8ddd06bb2d763becf669386077c4ee84dd19bb8bedb498f1db2ec1ee8addcd7c52fb76e0f26b72de18a0dd1dbb0776a69f649efe4a07cab12dd11696b02b6357c1ae8a5d0dbb3a760dec9ad8b5b06b63d7c1ae8b5d2ffd671f3bf3a621762e7623ecc6d84db09b6237c3ee07bb3976bfd8fd61f781dd277626ea59ecbeb0336fc96357c0ee1bbb22f6c0dec1deb3ffdcfbd807d887d847d8c7d82fb05f62bfc27e8dfd06fb6dfab9c37e9f8603f6c7341bb269114e8bad1da0a6c196dfa62dd7fb93adb2fbb3fdbe29b3f651ebb4f0fea3fcee2fd827d85fb1bfd9bab2bf63ffc0fe89fd0bfb52fa59c6be827d15fb1af675ec1bd837b16f61df369fa9be4697bd095dec7bd8f7b11f603fc4dec5de3c6e9c7e4eb09f623fc3dec4698efd2ff67fd87f606fe264e297c5fe0bfb1cf679ec0b6930721471000e0e0e1e0e3e0e010e210e110e310e0b1c9638ac7058e3b0c1618bc30e873d0e071c8e389c7038e370c121c1e18ac30d877bfacf070e4f1c5e38946ce5389471a8e050c5a186431d87060e4d1bed43cbc6ffd0c6a1834317871e0e7d1c0c19a6c1c56184c3380d131ca638cc70f8c1618ec32f0e7f69f84dc33ce51fe9e7270e191cb2387ce1904b431e87020edf381471048e0e8e1e8e3e8e018e218e118e318e0bf399ea7b5ce2b8c2718de306c72d8e3b1cf7381e703ce2784a3fcf385e5298e078c5f186e31dc7078e4f1c5f3896702ce358c1b18a632d0d751c1b3836716ce1d8c6b1836317c71e8e7d1c07380e7174711ce138c67182e314c7198e3f38ce71fcc5f10fc70f1c3f71cca4218be357facf1c8e791c0b387ee358c4093839387938f9380538853845e91f314e0b9c9638ad705ae3b4c1698bd30ea77d1a0e381d713ae174c6e9825382d335fdda0da73b4e8f343c717ae154c2a98c5305a72a4e359cea3835706ae2d44a3fdb387570eae2d44bffab8fd300a7214e2e4e239cc6384d709a9acf54dfd30ca71f9ce638fde2f487d3074e9f386570ca4a307f7fe194c3298f5301a76f9c8a38036707670f671fe700e710e708e718e705ce4b9c5738af71dee0bcc57987f31ee703ce479c4f389f71bee09ce07cc5f966edeff98ef303e727ce2f9c4b389771aee05cc5b986731de706ce4d9c5b38b771eee0dcc5b987b3f9d500e721ce2ece239cc7e9e704e729ce339c7f709edbb49c7f71369f1f387fe29cc1399b862f9c7369c8e35cc0f91be7222ec0c5b1bf329f367869f071097009718970897159e0b24cc30a97352e1b5cb6b8ec70d9e372c0e588cb0997b3848bf94cf5bd24b85c71b9e172c7e581cb1397172e255ccab854d260fea8e252c3a58e4b0397262e2d5cdab87470e9e2d2c3a58fcb0097212e2e2e235cc6b84c7099e232c3e5071713e95f5cfe70f9c0e513970c2e595cbe70c9e192c7a580cb372e452480195ffa4f241e4cb39e04484224118cf54f164896485648d6483648b648763043f6e480e488e40433464f2e4812245724371bcfe48ee481c43ced65d395949094255438585e45524362bedf40d2fc4768a4c1f0169236920e922e921e923e92411a86485c242398e1bb19cd9b0ebb1964263f48e6487ed3f0673ec93fb9b78319eb7f3adb9637f940f2892483248be42b0dd934e45217bb49581e6614947cc3f4c3afc0d5c1d5c3d5c735c035c435c235c67581eb12d715ae6b5c37b86e71dde1bac7f580eb11d713ae675c2fb826b85e71bde17ac7f581eb13d717ae255ccbb85670ade25a4b431dd706ae4d5c5bd6145edbb87670ed5a8fddb5876bdf7a97ae035c87d62b7275ad87ef3ab28dd5758ceb44dcede274bf4ed3303323083b94f0cc4b7f709de3fafb8ff09706034d0b6ca2f489ab796fd635f977fdc235876b1ed782f57747867ce35ab44eae1b707370f370f329d0bc52db0ec66f41eaa2b6fe5fd71610d6379dc55891971d373bb5611d40b708b718b705eb7b5bfe4bdfdb0ab7f55bdf9bf9fe16b71d6e7bdc0eb81d713be176c6ed825b82db15b71b6effd6f7f6c0edf92f7d6f2fdc4aff5ddf5b19b78af52e99c164b0c4ad6ae269bbeaaaaff56bdf653a23b49ec9ffb7bef334fcd8bfff43df5b0d37139f066e4ddc5a763ee1ad6f1bb70e6e5ddc7a14a8fc2676d46806c7ff43df54dc854c6188beb73e6e03dc8656df9b8bdb08b7316e13dca6b8cd70fb617d6f73dc7e71fbc3ed23d5f713b74caa6f36d5f70bb71c6e79dc0ab87de356c41d56dfbb83bb87bbff0f7dab76c441fade03dc43d6f71ee11ebff5bd2fec489df435ddde7feaabcad214d17d698391d8ce7138a9b7778bfb0af7f5ffaaefb26d9d01ce10f74daa6fedbfeb7b37cfd9e1bec7fd4081f4bdd881f9fd6807ddffa9efea9f5e763b68be9fec28f97ec6fd827b82fbf5adeffdf6d6f77eb7fade1facefdd08f7c2dd0854c6dd6851c5bd66f5bdd7716fe0dec4bd65f5bdb771efa4fa76ff6ffa4626ea3ddcfbd69d7f1ffc4bdffbf03ff5e589b830f514a7c189ff8bbe5c842558b957ff55df74a6f18abb8bfbe85ffa1ae37037ca4cece4c57d4a81e62f22fbb2fb4cf545e0d8018535b86b0da9a3e7cffa77ee3fb89b18fce2fef7d6d7d807a3efdd48f9c9fade33b86771ffc2dde898c7bd80bb7971110fe0e1e0e1e1e1e311e011e211e111e3b1c06369f5f593ff9bbea6031eedf158e1b1c66363bd778fad1597ecefffb40fd632a4e2da69883490bec64a187dadf5f8ffd6f7b1537d5dd396a6fa5af7f7636f1b0053781f07abefe388c78942aaaf79b77999d5d7b3eddbe36c5d108f8b2daa26a21acc3f4df0327824785cf1b8e171677d1f0f3c9e56dfc70b8f121e656b1f1e15abefa38a470d8f3a1e0d3c9a78b4f068e3d149f535efeae1d1c763f0d6776d7e38b4731956dc7febfb70f130ef1adb86e1619231c563667dd08f1f5b728db88f391ebf664ccfed9b1986fd87be8f3f1bbcc97fd197ecc33bac44e28fffa92f1e1faee99fa8bea6f03e3e6de17d18714cdc8c7a390aa9be8fbccdd247c1d623336c7f9850c413e96ce6fcdf2175513e1d3c3d3c7d3c033c433c233c633c17782ef15ce1b9c67383e716cf1d9e7b3c0f781ef13ce179c6f3826762f57d5ef1bc597d9f773c1f783ef17c599bfb2cfd377da5fff02ce359c1b36afb30cf1a9e753c0d6ce269a2649ed9c1b36b1d26cf9ead7fcf7e3ae4bdfc177d69f2cdb6375e6a4036ff12f739483f87169acfab9172c9ed9bd887545f2ebfb6ff600aefd3c57384e718cf099e533c6714527d9f3fd6056c72f539b75ebbe72f9e7f564453904d517d7ed860cb6c1aacb89f7866f0cce2f985a7494f1ecf422ae8379e45bc60ff7e39787978f978057885784578c5782df05ae2b5c26b8dd7c6367146df97f9f2ceba175e7bbc0e781dffbbbe9b365e27bcce785df04af0bae275c3cbfcfc81d713af571a4ad609659a07d3c55cb7d2550d7b3bc1b32ee155c6ab8257d57e9a92742707db04abc416de9d794ecd2a6b4aebab6e3f59e5015e0dbc9a78b5acad7f993874f0eafed33ee0d5c3ab8f97f9e6102f17af115e63bc2614527d5f53bc6678fdd8bc7dcd6d6c5647bc7ed339d4c1bf024dacae8c40e69b262a9f7865f0cae2f585570eaf7cfa59c0eb1bafa295bb04941c943c947c9402944294225b7e4b314a0bab6f6989d20aa5354a1b94b656dfd20ea5fd7fea5b32fc88d209a5334a17941294ae28dd50baa3f4b0dedbd2d306727d39cdd48bd6e1052256df174bbcdadb4f53724b2f2bae2dbc5b944a565c533b770f94ca69a858f34821304930df3771a8a3d4b085f7d5b576b6645edab2fd5fa372c9a4a88352d7fa7c4b3d94fa280d501a9acf54df928b92f9d218a5094a53eb6a8b57d6db5f9ad99a65fac51a6cb6cf51fa41c97c9a67fda1f481d2274a1994b22819bd7228e5512aa064c42da20c941d943d947d94039443942394639417282fad092eaf505ea3bc41798bf20ee53dca075b5affd9be850f948f289f503ea37c413941f98af20de5bb8d67d9fcef13e517ca25eb78a469cd741e335d80f2b2fada39f626bbd8cd1f6a16ca655b728d195c0d50ae70034e41db9b7215e51aca75bbc0a3dc40b9998e2cf256e55bd35ae1720be536ca1d94bb28f750eea36c9e3644d9359fa9bee511ca639427284f519e59ff66f907e539cabf28ffd9a9fff207ca9f1232286751fe423987721ee502cadf281751012a0e2a1e2a3e2a012a212a112a312a0b5496a8ac5059a3b241658bca0e953d2a07548ea89c5039a3724125b1fa56aeff455f0a951b2a77541ea83c5179a15242a58c4a05952a2ae67feba8345069a2d2b2ee56c7f036af413112ff33d8254f3b2beeba8d4ac78a5be95a93bddddac99a4a0f957e3a6b63fe1ea4c190a11d221a712b068eecf8ad92f6c3ae05db4b3303b6ca0495292a33547e5099a3f28bca1f8554dfca072a9fa86450c9daa9a48af97d0e953c2a051b421303038b1cfc29aa40d541d543d54735403544354235467581ea12d515aa6bab6f7583ea16d51daa7b540fa81e513d597dab67542fa826a85e51bda17a47f581eaf3dffafaffa96ff5856a09d532aa1554aba81a5247b5816a13d516aa6deb9eaf7650eda2dab32a3b0d5b9c8dbe56d095ac777aa4ca6651eda33ab0cda029b6d5a19de7ae9a9f8f501da79f6930429b509da03ab55decea0cd51f54e7a8fea2fa67a72fadc479543f50fd443583aa79ec17aa39540d2c50e005e5a8166da80135c7ceef7b1dd43c3b235df353ad73e9eaab0a6a016a216a116a316a0bd4cc1756a8ad51dba0b6456d87da1eb5036a47d44ea89d51bba096a07645ed86da1db587d5b7f644ed855a09b5326ae69955d46aa8d5adbea671ab35fe535f631fcca7e972d59aa8b5506ba366a2d745ad875a1fb58184a115bae6a236426d8cdac44eca90be242b2ddfb3bd82beedbded4ae942af3f5b548db8b5296a33db0f33fd10f38709a4b2e939d47e509bdb5ead1938d47e51fb43ed03b54f2bb129c8b50c6a595b786b5fa8e550cba35640ed9b02ad7a2fa612a72ad781ba83ba87ba6f67ee9609ea411a421b4cd1ae47a8c7a82f505fa2be427d8dfac6aa59dfa2be437d8ffa01f523eaa7f47fcfa85f50370fb9a27e43fd6ef5ad3f507fa2fe42bd847a19f50aea55d46ba8d7516fb0beb7c7dbbfc3fa9a0834516fa1de46bd837a17f59ed5b4de477d6003a96c24ae1be8a23e4adbea175b03636ab94b6b223c4e27124d4a2776dc640be9c80a5a9fa26e3e7fd23f4c98a7e117f53fd43fec947bfd3395726a3feb19d4cde797b5bcf51cea79d40ba87fa35e4403683814445f92b8e1a1e1a311a011a211d9c9bb469c2ecabca44b2b5676766f75476381c6128d151a6b3436686cd1d8d9f2dbd8a37140e3680b72e3640b75e38cc6058d048d2b1a3734cc6f1f683cd178a15142a38c46058d2a1a3534ea56df4683ed03e96b8b708d87188d261a2d34da6874d0e8a2d1b3fa36fa56dfc6c006a3b52dc2267943345c34527dadfd7d58716d7f567ab88d311a13ab6f638ac60c8d1f2b6e639e8a4b41c46dfc5ab91b7f687c58e360f5fde560fe6e9890b1b6c274c81a5934bed0c8a19147a380c63705d27728fa16d1845d9cd274d0f4d0f4edca143b759a4533b0c114e46668ad44334233467381e612cd159a6b3437686ed1dca1b947f390c2239a2734cf685ed04cd0bca27943f38ee603cd279a2f344b6896d1aca05945b386661dcd069a4d345b68b6d3d049ffeea2d943b38fe600cda16d5a9b2e9a235b849b631bed9ae86bfe6e4ed09ca239b38b426de15da536811c371f69f845f3c74223f13a87e61ccd5febd5342314a36cf30fcd0f348d703f76586106e2cd8c1d1c36b356e2a679754e421ecd029ae68d456b2b5a40cb41cbb3f6b7e5a31550f867f92da2155a7d9dc4ea6b4aae5df6b34b1757f9acaf09adc82e0668c5682dd05aa2b5426b6ddb37d3216b6dd0daa2b5b3b6a2b547eb80d611ad135a67b42e6825685dd132bfbda3f540eb89d60bad125a65b42a6855d1aaa155b74361d3ffb5c6a162071ad110ad86f558b69a68b5d06aa3d5412b35be46e2560fadfe3fea9f49d8002df313d70e976c576cf56fdfd887f52db446d627d91a5b7d5b13b4a668cdacbec6d49a0177eb07adb9351acdb99b9824fca2f5876b16ad0fdb7f6819293356d396215f68e56cb9f6cd3ff36815d0322214adbe6d50f8b7bedabeb51d6b134cb135cab63d1bec124158714d07a36d608076682d6c3b423bb69d87f602ed25da86acade2ed0dda5bb47768efd13ea07d44fb84f619ed0bda09da57b46f68dfd17ea0fd44fb857609ed32da15eb42537d4d2fcdfa7a3c1bda55b46ba26f8876dd06fb47232dc245366e46df7613ed16da6d3b94f05ed26d481b376328cc67bbf35ff46d77d1eea19d7618dae62143d6b7eda23db2fd5cd3e13526f83e457b6c3f8dc46df3cda92dc86df3f31fb4e768ffa2fd87f607da9f14fed17fb00541f5cdd8a24acaaab8a4af57433b6b17e4b6bf527d73689b1714d0fe167d8b56f40ed071d0f1d0f1d109d009d13130b6339b9d053a4bd6b7b342678dce069d2d3a3b74f6e81cc43274d23fc838f4d039a27342e78cce059d049d2b3a371be1ce3ded9f7ddb3f3a0f749ee8bcac7db063d1b23511243187749dafd1b75362fb60f48dcc4fcad637649bb2193a156b228c51ee54eddadc4e0d9d3abb174c6b667b0ebfe834ac89303db34ed3c24e0b9db6ed3f74cc93bbe8f4fe435f310e46dc4e1f9d81b5b3b6a8a69a7686e8b81246acefa681ce189d89b5b39da9ed42744ccc7e6c77ad3347c7c4e00f1df3fa4f7432e864d131efcea19347a7808ed1a268d79f7581ae83ae87ae8f6e806e886e846e8cee02dd651a56e9dfeb346cd0dda2bb43776f9727750fe81eed6abbee09dd33ba175b72bb09ba573b1035c37d2abf76cc960ee174a0e1f7d1bdb1bedd3bba0f749f7643c3d53cf3658bb0b112dd12ba65742be856d1ada15b47b7816e13dd16ba6d743bb60bd1edda9e59b767ffe89a679ab79b27b8e88ed01da33ba1c03bf952714d6a6756dfee8f5d50d59ddb3597dddf7730fa1a62ba68c63e74ffd0fd40d744c5bc238bee17ba3974f3e816d0fd46b7881ed073d0f3d0f3d10bd00bd18bd08bd15ba0b7446f65dbb7de1abd0d7a5bf476e8edd13ba07744ef84de19bd8b84731a12f4aee8ddd0bba3f740ef899ef97909bd327a15f4aae8d5d0aba3d740af69079ccb8a5d6efb4f71495ffa34fa5e7fdefaf65ae8b56d23d6eba0d745af875edf76217a035b787b43f45cf446e88dadaca62bd69bbc25ee99afcdd0fb416f8ede2f7a7fe87dfc0f7d8db83674adb8bd4fdb7cf5327639f1ce243bfb8ff095ae0b32d0bc238f5e01bd6ff48ae8037d077d0f7d1ffd00fd10fd08fd18fd05fa4bf457e8afd1dfa0bf453f1d19f74d38a07f44ff84fe19fd0bfa09fa57f46fe8dfd17fa0ff44ff25a124a18c7e05fd2afa35f4ebd601dd6fa0df443f75993ff2bcca7a7db5fe07eb93f4d291db3fc38a3f8d7de8b7d1efd8ce59bf6b57e1f77be8f7d11fa03f44df457f643df7a650f7c7e84fd0377f986ffea03f47ff17fd3ff43fecf620a36cff13fd8c9d0aea67d1ff423f877e1efd02fadf14445f2abc667cdc2fa6c5a18c0164b9d526fd43c2c0c1c0c3c0c720c020c420c220c66081c112831506e60b1b0cb618ec30d86370c0e088c109833306170c120cae18dc30b863f0c0e089c10b831206e675150caa18d430a8a7a1918626062d0cdae96707832e063d0cfad6b130186030b44b1f072e06a3d495fa3f8269cd28d8458b591e199bf66d30fe97be830906533b3d3a9861f063279c06730c7eed02d1c11f061f187c6290c1208bc11706390cf2181430f8b6120f8a56f121307430f430f4310c300cadb8c348f45d55ec568d616c6deb7061c51d2e6d136c7a39a5e93b0c5736f8750cd7186eec0e96e116c31d867bbb806a78c0f088e109c33386170c130caf18de30bc63f8c0f089e10bc31286e6e1150cab189a77994735306c62d8c2b08d6107c32ea245bab72d5d9e1e7f61d8c3b09f86018626922e8623ebde1d8e319c58ffd6706abd07c3591a7e309c5b7f82f765ff6bf7601fa35d36973a21cde7d368914ebf0fff6c0fd7f41c86e6699fd693eb9bffcad860841e6631346fcf6198b7f311c3028646b2225cc075e07a707d5b90dd006e0837821bc35dc05dc25dc15dc3ddc0dd9a4fd1d7ddc1dd8bbe35db441871dd83750a9b60fe302155d9ae94708f704f70cf7623877b81dd9f78b58b32cb2db837b8771b21f701f709f705b704b70cd7bca20ab706b70eb701b709d77cb90db703b70bb707b70f7700776897d4f16e88acec3c49836be233823b863bb16b3bdda99d1f32c3017766177b5f3376df928992fb63a733cc78d7314f9ef3e2c4fae41d8cdceebff575cd433eac27b76422f6698311dacdc0cdc23509c9c135492ec0fd865bb4528e8091839187918f51805188918131460b8c9618ad305aa7e2da90ea3bda60b4b5faaefb18ed6c43519a60b4c7e8902e6d2fdbb6d884dd19a3a3ddb9609ae0d1c99aad9121178c128cae361ea39b757998b1b93155a33b460f8c9e18bd302a6154c6a88251d5ea3baa61643e1b1835316a61d4c6a8835117a31e467dbb027734c068685d04a609b27fbbe9e708a3314613bbe4f069be3fb5f3f30f13c919ae7dab8e29808f9d15da984e3b189b6364a231372aa783e0196b5d32314967e0774f3bfc353d335378477f76f6b76ca2f4c1a16422667806234ace1746395b788db815f3cf3c4605d6d70c2b46df18153106c60ec61ec63ec601059a9f6f5b7dc7e15bdf7164c55da4611cdbb110a96c24f63bd6d1bebbdb6e8dd177bcc07889f1cac6c3f407eb198cd7d6e48f3756dfb179ec0ee33dc6e639478c4f189b9f5c304e30be627cc3f88eb1f9da13e317c6256b1f6db7b4683d031b5895c7651b8cc4e30ac6558c6b18d76d2f6adcc0b889710be3369cb4ffefb8769435eed8dd0946df7197f58d76a42f8700ffd2d7f41cc63dabef7d6b4768e33e07f3b7a98ee301c6260ee6ed238cc7d6329876cc3a797f309ed83ed9788af10ce39f54df39c6bf18ff61fcf1bfe86bfa5ee34fdbcb31857779b7ebdaed86da0a4b6cf718a5c1f47ed61d8c8d88263de62739d6f73ec1388f71c11a7e1bad6f8c8b98001307130f131f93009310930893189305264b4c5698ac31d960b2c56467bd302f63946de5b57f98226c4bee00933d26074c8e989c3039bff59d5c545f5b84a9fc4e1253c06ddd4fcb6cda09fb473026c2e83bb9bef5753f30b9594f79c93cf06e437566ffbe99683f30795a7d272f4c4ad62c4cca98546c30fa4eaa98d4acbea53e26f5b7be9306264d0aa2efa48549fbadefa463c44d377ddbf09f124fd2d5e1a67d9bf430318f36e91f5ae360868c1313951126633baa9998184c319961f283c91c13932af36e93984f4c8c0a594ccc777298e4312960f26d97cedbe9c5860d34c368e4d60d7f9322a6c0d4c1d4b3beaea98f6960cbef34c4adccf6c119601ad9297a33ba4d7276898c19a14de377a055e2aaafb121ad3fd1776c47c07686220de66f9322ab6fdfaec7f9a7bed385d577bac47465f59dae59dfe906d32da63b4cf7ffd6777a607d9ba19d71315df4b4f05a65bdbeddaa5069a773da572beef468adc4f484a9f9bcd8f1e234b15efde915d31ba6774c1f983eed08ddd8b5e90bd312a6264e2642554c6b56dfa9894ac3ea3b6d626a046a63dac1b48b69cf2aeba55e98fb2af5156c781f65641ed5c7d4c837c4d4b5f3f0d311a6634c27984e319da59bca5371a73fb8ba083cbb046967de6b22f69b863f1bece2fbb40b61f49d7e581b627abe53f3f08c5def343551fa92909abba9c99ebcd5d774126c8396677d6df887bed302a6dfa9be45d677060a527eadc4ff2ebfc6f296afffa5fc1a7d670e669ed577e663166016dac1f82cc22cc66c81d912b39575f5cfd6986d30db62b6c3ccbcf28099f9ed0933f3c38bb50fb304b32b6637ccee983d307b5a836bda1f63164cc9b51e99b5dd416942f881d90bb3126665bb9ede745a6715ccaa98d530ab63d6b06677d6b4fd07bb253ac7fa5a4d7f3954073618623e6dffe1d77ad68dbea6fc1ae36bf47d1cb8fcda89e12697dffbceae67207d672ddbb859fb909a88599bed03955fd6372dbfb3cebff50d0bb60b61fa0fd1f73fda37a3884946cf86e78fb509b33e6683f47388998bd908b3316613ccd2b556b3992dc2c650cc7e6c833b9b63f68bd91f66469a4fcc32986531fbc2cce4441eb3026626038af8017e1cfc78f8f1f113e027c44f849fd8b669b6fcaef17f787baf65d7719e6bf762c6394ad9f6a173ce41e1cc39e7ecabdf0392e79addfdf617fe9d56a1589a5a32453d86418004297f29fe4afcb5f83cde8abf137f2ffe41ed66be23fe5167cefd93a64831faa2e7e09f750e8dce19ed6ce2ff26ceef1fa1175c8953a1fc8bda87555bfdb0842fcb5ce236989abb774fa9092e5aba92cdbf8a7fd320d8bfabf040dd86994e18f380fd9bfff81b5fff99c87767942f5ffabf492c9ff0dd8dbf42be0cea2703f15f3a970cb2788bffd185f87e56fc9cf879e5eb17746ed5e70397c42f8b5f11bfaa4b367cb68fb76c88df14bf257e5b7ca2e98adf13bf2f3eab1d8a3f5217c2e7c57c86f0872f5146e21be29b315f4b7c5b7cdec25527a1d9d299f36643e7c7eead2f625df858d3d1affd274e5dc8fd46198990afefa9fd215f3fa5564569e2cb978698ea4ce29a3b122b323b9206db9c163f2381488058444723e95104630926124c956f3093602ec1e26b1f687fbffa4bb8b3f4d73f63f0c6e022717effe82f1d86affeb624584ab092602dc14682ad8e2a053b09f66a1c82830447094e129c557fe7bce54582ab043709eeca37e099a7042f09de127c547f83ac043909f2121424284a5092a02c41457fc8aba2e6b80455096a12d425e0c79bbf7ce927046c4c5b8278f2fc91fb227ef93a0046c50cbaea3c4c7592ed276b241622ce66e519672c323c51c35d5453f0ee49d053c47fd55f5ae1da48dd4dea2981fe95af62edab52ebf14082a10423097c09021dd909d8f28865cc373074c11c8dc3cc95c0d4e022b0747efb8f7f86bf380febbd04b6f60f812301aff72448a9ef19a425c848281242c2b1841309a712ce249c4bb8907029e14ac2b5841be51b6e956fb893702fe141c2a3842709cf125ed426a8b96c497895f026e15dc287844f09f9a9b7841fe51b66d5e0b6ba12e634ada662ebee299f9ae687d116d34ad0c108f36a257285dfcccf71a4c78c9b57555d001c16f41740979931e7d4d7de2c2c4a5892b0acc4c38a4e18afd8c8aa843535025fb8d3587e102b743e6f5dc286844d09d9ecb68e3c849d4462bed4dcd541e152796b551d3c25dc7543dd8644403addaf0b3161453d09fb120e241c4a3892d09790cf134a1849c8569a125aba4023b425240b57424fc2948469093312894490682cd144a2a9443389e6122d245a4ab4d27be9a4ce462d43b4d674b1755da28d8e3f445b897612f1fc413d878ead91db74aee1ec87d71c35218c88e90253a3e920277394c9341a41c7ac934466cd52cce6d586d076534f9717894e3a0dfc9828e8e55589f3a4c6a2a6446755de88d75c554fa39b8a1edc356c4b88470f899e12bd247a4bf4d1c822ca2692e497382ae3bc4439854be5255ccd35fa261afd24d7c77bd9bc3c89786541a2a2442589ca125524aa4a549388cfd99088ad218eb6441d89ba12f524ea4bc4060d251a49e44b14e8fc7c144a14496448c467b024b225722472156bf6a329627454224f2d559492282d51460cf9f235a06305c658830b63a2394bb9d85656e36104ba6baba622a6167f3319fabfb923f9a618535db7de887f04fc94311363ae613d2d9bb11063a9f938c64a8cb5181b1d8aa4f21a5b317631dc472c3162257bd703632f065b751483359cc5b888714d24e66bdc74e0bc2d62dce32c3f4fe1ea06429378f5e2f5bb4464cc8f3d54b58da7182f31de627cc4c88a9113232f46418ca218253178011b5d15830f5f17a321061fa925465b8c8e185d317a62f4c560b386628cc4f0c508c408c588341d6b35d6bc37c310c3d45d85e8cc189618b6188e18ae185ecc970f9c162323a6880955343ae0656a659c10c69f3cad0411bf020d9449993d5e923b92b07e97c51cc783e891c69ce64427d8cda90eef1274c154e23c49bfd3a4ccc55c2847322dbb622e5578902026743db9d2911d732de646ccad983b31f78924eb630f3a6a9e4feb08d92aa7a3d493824c4b3a94a5bbe72459f6f17afdf1a57be3231dc43c6aee937912f32ce645ccabcebc993731ef623ec47c8af912f32de647ccac983931f3ea9f9905318b629694afc987ac885915b326665dcc86ee6e6336c56ca9ad37db6276746a8abf2ab3abe8cd9e98fc14ff6b28e62826eb8b19e86cae4ed5186286df9c30760654613a6d49c675a2c8096896a46cb236431d0f5e49f7801c9391461d3b8f115312b835dec214d3528ea61dc375628911d3ec9a84eb899912332d66462c110b628dc59a2412f36d3a2ae4cbc08c71c4aca136816afb876fb22582152f30dadcc59a8935176b21d652ac95586bb136626dc5da89b517eb20d6512795ad935867b12e625dc5ba89c50f3ec47a8af512eb2dd647acac5839b1f26215c42a8a55d265d4fbb36ebfc5965865ddd582fea25511ab2a564dacba580db19aea9c4447b15a1ad7e884a3adbd5092b044d3992c3b791d5485093141fca724e55a5b2731d9375a6d750fc83119092365ab1367eff6f5242d433d0e22acae583d350bb40354550a0f122b61f595b535106b28d6482c5fac40ac50ac28911fbe96f1cb57b75388f96e4315cbd424e4efae1388d78490af25962d163fe88ae58995122b2d5646f34b6c111b628fc59e883d157b26f65cec85d84bb15762afc5dee828fbbc21f656f9da3bb1f9a983d847656ac7f1f79e579ec5be887d15fba67cedbbd88fbff1b59f3a8f4bb8cd91ee37568cfef0fdb1c22d45dcf8c4eb067e84940b03e54b1bc28e915f0f39926f7fa8419acefd040a97a013e5657846be89e5b55f62bfc5fe889d153ba71a9d6bfd0b5f3b2f762191ff73be7651b707b34b62934545ecaa2644d935b1eb62135953ec96d86db13b6277353fd5ee89dd177b20f65033fbec91d8bed86c44287624b621b629b6a53983b61df37562be972fdf062f76c5f6c44e899d163b238e8803edd0aaa638e3787af12f7cd9fb33067b887adfad1fbe7f95842fc33c2ab8f20d63beb3bff125dcff277c9d8938d3447ef8b273fb4fbe897188f912ee2fdfe554f93a3371e6e22c748a3ee1eb2cc55989b356be9583381b71b65fbeb40fce4e27df9cbd38fcafa3382771cee25c94af73158717dc7547059add11bef6817c9bfcdfc7bff065383049ff4ce88e62fbf077bef78cf2759eff6ff2fd5fda07e5fb8af9be92fcead1976ff7f8eddfe899fde1fbdbbfc9770f4296ce5b9c8f2aa9931527a7a97c4e5e9c82ea6c29cea5748ae29462e265712ae254c5a969dabac3afa1214e53570e397cfeb638aca42b4e4f9cbe3803e5cb109c88e93c38439d6f7546e2f8e2b0dda13891388638a6aed49964749b1b06af2c13be89f74abeb3e93ff96a7a4ee397efff3dfbf09f7c1d4bfb37c7fef2751c715c71782615234efdf0a5d0f9fd2bdf3f2aac4b20fbbf70294faa5e5a9c8cb8222ec41dabf3909f7ff9d29770279aa8ca93a595f66fee54f9ba3371e7e22ec45d8abb12772dee46dcadb83b71f7e21ec43d8a7b12f72cee4537b37259cf4ddcfb2f5ff721ee53dc97b86f713fdaa1fde14bb84974c000eccb37ad7093ac91bff2a50b4117ed3ff9328850beb10bc1feed1f7cffabfe8d7c7990f075b3cad7cd899b8ff9a67ef8cebd2fdf6a57871de2bd8ebe7cd5f9edffae92fe6e9df954be6e415c5228295fb72c6ee56b1f5ca2ac895bfff2751be236c56d89db16b7236e57dc9eb87d7107e2b24d23717d71c92e1437d2d43cd7d0d410229e599ae342beae29ae25ae2d2e5bef8aeb7df932e872533ab8c5f2976f45470ffef0255037fd859bc87ff27533ffcef7abd7a338481b8827ff1d5f0fe28dc59b7cf97ad344fece97c1c5268a37929a7c9d331adf9ffeedc744887833f1e6cad75b88b7146fa5f993b40f34c1de5abc8d785bf176e2ed35478d7cbd837847f14ee29dc5bb887715ef26de5dbc87784ff15ee2bdc5fb889755077cb1d6f55344ece562c7b1281e9bcb7bf1a014f3e5f565e54b6bfbabbf76bc5e7dac6308434bbc8ada07f24d1c065d1d17cb1fbe95e86ffa9bcca491668258e1867aace747e255c5ab89c7a76b68ff46be5e53bc96f66f5efb6b1fbc8e785df17ae2f5c51bfc5d7f195f7843f158912f7343bc40f7503aece33c645e1dc61269c2a167e836379e299ea5f96735dec98e175ff0c011cf559beb79e2a5e2c517fc02d3e26524259282a4c6929a486a2aa999a4e6925a486a29a995a4d69a8392da486aab2668674b6a27a9bd8ed5e502491d247594142f384bea22a9aba46e92baeb8822a3897a55e7faa2b36a5ceaa18adcf524f594d44b66bcc55b529f38a53796d24877652bf93afd511a4a2a2ba99cf6908cd05449d9c8bca40af11aa0a6a68cf038558ccf972455965445525549d52455975443f9a69a9262d9965447525d49f524c5660c24c5ca4789fcd8df3d1fc99754106f79e9eb7c622ad4d99ac13dde96d6d2399b2d7458d65fe89687a948e3b7e24a33245386a44c5dd042beece85296a4c8c8d185442957527ce094a4d292ca485a240d498f253d91f454d23349cf25bd90f452178cf397915ec93d8af70cb87cf795d50d2407baf1687a2de98da4b792de497aaf7e2efd87f441ad64faa893d6054b271ad227499f257d91f4551755052d49df34abb7d68ad37b035561c41a3d7f4afaae99643db6e7a14680711a43e15a3c76ce32bae8b003cfa779e54bd26f497f249d95744ed279f5d5d2054917255d927459d2154957255d93745dd20d493725cd5b27fb13acefea3ca4db3ad5e62f758bcf7d4ea7c7b3795dcddd63733b92eeeac869ba27e9bea407921e4a7a24695fe1a6034987ca3a1d499a7f9a92b6246debe28bb4236957d29ea45392e62d329211c9403263c94c243395cc4c3273c92c24b3d475b9999564d6fa75663692d9aaecf9bf3bc9ec754b95cc413247dd3d68b194cc493267c95c247395cc4d112703086d5b479f337775d168015a3dc93c340725f38c87defb9a55967949e6ad06844e1e4d41326ba99d5857e7267460976dfba8e646ac3c2b999c64f2922948a62899924e1267ca92a948a62a999a64ea926948a629999664da92e948a62b19deb7cf32e69b4996155e759fd10c6f3fd205bea541bc3fe229de7f32a75b7c3ecfba73f59c4feb4b26900c6f13e90843c6908c291942b125e348c6958c27999464c82b135b6cf53c2013297fa06ba266d0ed5c17d05d3d56d0fd0f37d05fc70eba23d901baedd409ba7fd145decd783b9c1be26d3ca0db43bce8fd4acb84aec1cd421730e615712b822e1b2b4217e894d58b78b1b64ab22526a4aa0bb4e7370aa4d6bd9db50f9cfad02ce506a4195bd85a9cc930ff11fed65a52a487d486e69775a15f459fdf068142a7b2e945faf1787b081d7535a0a34d16347ea58bce0f26ef3963d7487f3ed44d72692665be8d775b5fc8981f48c75ba89ebe1b51c61bc550fde2edb8f96fac76807c530ec0efdc06a6c00c98030b6009ac62bf6e0d6cbe7cb155bed8295fec810370044ec05951e2025ca974c04df70f5d3c34d989bad6ea0377e0013c8117f096760a606d592007e8c2464d086bbb4041f6bcb2a8dfc5dd96711a34d08bbc829e2ee2dde2798bb282a682d303697b4005a8aa074621624dc68925e0b3d0da36803ac092cd6b016da00374015e3f02d8b0013004465260553e100021100106cb9ffd53d96b6f03f519e61bc0548e5d5e6701a4a9265307f4742e40b733910eeb25503e0c6be473f21932f1e63650bee331c6138c7930c378ae7cc70b8c9718af305e63bcc1788bf10ee33dc6078c8f189f303e8306b7d6c1f81a6ff9620b9f814496350d705b2d8c6f18df317e60fcc4f885f15b33ec86acf08371166322fea8191df0388f7101e378ca075d19b36125453c4eeb4c876e4f7c978ea19b0a3c77ead5f1530507e332c6158a22fece504cd5278bc7cc30ae625cc3b88e7103e326c66c4f1b63b6b68b714f718ffb180f301e623cc2d8c738c0384c24993f36d5dfdcb6e4c0a78d6223c0878f73e46bacc8a4e86c0a898f2d8a147a18db18b3592ec61ec629504df824ba0b0bf5788cc90fdfc954f94e7830c76481c9129315266b4c36f2f030d962b2c3648fc901932326279d95409f4fdebd3d31396372d1b551f51226574c6e98dc317960c2ff7a61f296fe00938f0c539864359b863ec0a88a490e933c26055d70fddc6aa6de70a8331d2c936d9028f3971adf4f9bce0326454c4a4ab694c6a4ace38dc6ee2ba61b9f7130a9605255cdfdc37752c3a48e4903932626fcb38d490793ee97efa487493f9124bfe4a47ce9991d8ed2e3a5ecaf6d4c86f261bda378b1479bac31a1c449737a3ec424c2c4c0c4c4c4c284d73bca77ac7c254b766c1c4b3e3cdb9d8977f2a7728f319d603ac57486e91cd305a64b4c5798ae415f7bc6e32da63b5da36eb53531a763c97084e91ed303a6474c4f989e31bd607a55bb39bdd1f4617ac7f481e93399d3c5f485e91bd38faeaca47bdbafc5950c757b78f2a553319bc51b6e3fe83c60ca2f86f5e7d4084cf38a785af8228ee1826124f94e4b98f2b8826915d31aa6bc35af6f62dac2b48d6907d32ea63d4cfb980e301d62ca3afd4412ff61abfb791ccec9dc2da6812eed20c7302fa6816948d12561fc533716aaf1e0cb774aa7f2a27ca7bcccfcf29d5affe4cb6f6bca56ba987a98a6304dc77c33f17e4334d763cce8d80fc00ee7dd954751f9ea18f950734756fc767bf2da6036c36c8ed902fc1a662bccd6986d6450c06c8bd98e7c31dbab7715f4313b6076c4eca46398d92a6667ccd8c8b39a1dda5c861e18247c756c28e14b2340bea44c45d6519b5e325b81d915b31b6677cc1e98f1162fccde6a10661fccb298e530cb63c63614697f312b6156c6aca2f677564de4ff17beb31a6675cc1a9835316b295fc6dfe949cc976ded922f663dcc8866a05b5fbd0cd5b545567bb955bf7b7b6336c48c0fe0631660c6d6479819a059eb4df407feff2d5f0b335b4dc4ccc18c673ccc5298f11132f1cb08d8978f319f603ec57c86f91cf305e64bcc5798af597ef797d35961dd6734a4e7ab7ce7877fe14b733c3f6acee15ff882fde1ffc877bec57c07daf4f901f323e627cccf985f30bf82ded2fc8ef943f9ce9fa0656cf6742f9b519970317fd379c0fc837916f31ce679cc0b9817312f615ec6bca2c35deca0688813beffb00f650373f2bd682f47bee8e8b8fb6cfac73efcf24decc31fbec93c71cc57d1cf6b7ff3cfe6f57ff7cfe60dcc9b98b7306fab7f36ef7cfd33eddfc6f7842ffb37cce9a8b123f2c954e1d21ba517014b82aeea3585b678defbe5fb8ffe2de19bf46ff37ecc7780f950f5773ec29c9f0d300f31e767f9fc26e616e636e66c902b262ff0b40b0ae88913379d457e0dac2113bfb3025fbe8bb1f25d4ce2799d94766ec3b5f66fd5d42fdf6cbd7bbb61314d5c087d43c75ff9fef46f095f2c66ba343be1ab13c303f5cc7e2634952ff5f75ff92ee6582c94ef62a97c172be5bb58c7fadbf9d1df3ffe193b996110fb678e6626075d2c3631dc982feaaad7757a692b2cb658ecb0d8637150be8b2316a7af7fb638fffa67e44bff6171c1e28ac54df92eee583c94efe289c50b8b37161fd0142cf890792c0a5814d9a1fd07df587f17252cca6a1f1615b50f0cd31b6dcdb3fbc3d727d01a1675f51fee1e160d350ee3d839a3674fff2cd98e88ceaf0eaec77c5943568308891ebfca4b2ff8478595ef8ce17e57edc3a2a93ec3a2a5f677d1c6a2830511f5b4bb5bf4b118603154fbb0e063fa6a1f16febff9bf8be0affeaf2c8beaffd25dfbf17fbbb775cc57e337e54bff37e13bc16f7cb1e07f118119f3b5b0b0b160fb5c2cf8d8fc3ef8918cbe608921c8728ce504cb2996332ce7582efec2f7ad7c970c9d0758aeb05c63b9c172abfddb72a721066d825755beb41224a54b21dc2f5fc6be8c026816921023f17f93ede04615ed36d997e6eafa0b6070cc208d9ec39fac0646168cdc12c4e4bbdc6379c0f288e509cb339617555856bebc6279fbc617cbbbc617cb87c617cb2796af44e2f86df9d6f86d3c94033ff0f9be5fa43cd2841773fc8d2fc68666befc6c478965f6cb9791c5ffc8779953becb3c9605f0db5a96b02c6359c1b28a650d0c5e970d2c9b58b6b06c63d951be2b1e7475162709de963d2c5992329f6484a52f1d7e3d01fd5f8670bf7c83b1ae4269f35ea1e6f37e6a6a1c508a83b7a96e0085411cc29dffc9d7ea295f0d2e62be8c9293f822e14bff2cf17f9711960696269656ec02b3d9bc97a3feefd2fdfabf4b4f23e3bff9bfbaffe40ecb946e18364cecef3ab10f6a82d5445871badc4a8d2f4dc4cdc1329dd8876f7c9ce69796f9eef2b812b5bf2bc6c663e5bb9a603555fbb09a6135c76a81d512ab15566bac36586db1da61b5c7ea80d511ab135667cd6963ffc3a080322a7ffdb3d5052b5672c3ea8e15ff97b77862f5c2ea1dbbc0fff41fd8bfd195965c39eee2ce6a883fb5ef32827e5d67971f455d8939dce8d8589cd84057e1b78b63e7b6fa48aa8d5516ab9c0611ab3c5605ac8a5895b02a6355c1aa8a550dab3a560dac9a58f11a5edfc1aa8b550fab3ecbe4fd2d7cbc818e932d4eaab30ccf56437d07d674f52b997722dd1b118cb0f2357e9b18627eb00ab00a25ed631561656045a656cc976e4d4ad26ca883154b12496195c62a132fb606d663ac27584fb19ec9ed8ef59c3f6aac171ada7e1a582fb15ee902f5c15376bc6c8df506eb2da80a64bade637dd07158ead7fa88f509eb33d617acaf3a5eb3be092dc19a753eb066e8c18b5fb1f0831facb362f2ee39acf35817b02eaa795d97b02e635dc1ba8a750deb3ad6aca789750beb36d61dac790d9bd7c77a80f510eb11d63ed601d621d611d606d626d616d636d60ed62ed61ecbd83eac53b1a4d5da9ac6777af5d9d18522c9801ea559fb1e54596f4633f0a8d69b313613e5bb992adfcd0c9b39360b6c96ca77b3c2668dcd069b2d363b6cf6d81cb0396273c2e68ccd45f893df5cb1b96173d7e19bcd039b27362fcdca7fd9e2e7b1796b7271c08f7cb0c96293c38627a944fcb3884d291edbae6053c6a6a2d3e65e139baa6e32a44ba85271eacd5ca727dc4c9ce934e3418cf5854d0d9b3a7b366c1ad8f0533c6863d3c1a68b4d2f16b66d80cd503c1e8fb0e1d3058a75136213616360636263a9c1ddd8d838d8b8d878d8a4b049639389df54029631dfed18db09b65335b58b8d54d9f7bdd5fcadea9a4efbda7e17e3127726ee70b6336ce7d82ec4a8b37fa37df8f2a5156687b5a5acbe7cb76b6c37d86eb1dd61bbc7f680ed11db13b6676c59cf15db1bb6776c1fd83eb17d61fb96e610db0fb659a997b1cdc5f3e723e9f2cabc9cfbd816b02d625bc296ff5bc1b68a6d0ddb3ab60d6c9bd8b6b06d63dbc1b68b6d0f5b5e3f889756fd0ab643695b6a403ac23858bf1b2ae9863e03218cb0f5758437c3fa03d05bdd46d81aaabf5b135b0b5b1b5b075b175b0fdb14b6696c33f1c612c06e0cfec87653ec66d8cdb15b60b76419db077d7188682a328d03638a5aeb4bb6d556f3a7b9726d5da740159e2d75415ee685dd0abb35761b8ddf76b4a1a1ca6e87dd1ebb037647758d691f7627ecced8f19a2b7637eceed83db07b62c71aded87db0cb6297c32e8f5d01bb2276254dacd335758ea66a3f879a5536e0c565ec2ad855b1ab6157c7ae815d339616766dec3a5fb8bb2e763decfad80db01b6237c2ce8f975ea6b023afa1963bb6939e3b6f6d6067626761c7763ad8b9095cecbc58f891b422de65e2574502fb31f613eca7d8cf629963bfc07e89fd0afb35f61becb7d8efb0df2bdffd01fb23cb587ff727eccfa00b3175b0bf627f8b770b9e691ca5e9d31ef6ec400ef196c64dec1f32ca63ffc4fe85fd1bfb0ff65930eadbf36401fb22f625eccbd85794f5be8a7d0dfb3af60dec9b3aecbb6f61dfc6be837d17fb1ef67dec07d80fb11f61ef631f88c1a687ba1ad4e49f9126f1e5588981bd89bd85bd8dbda35cf66e2c6c5b0afb34f699788d3c7018eb0e856d1787090e534d394df2218d95eed5c0b264e3309309af9febd8c561a1b1d961a936e1b0525d26eec31a870d0efcdf9d446f1cf6381c7038e270c2e18cc325962b0e371cee383c7078e2f0c281577e70c8e290c3218f438165ccf75054c48752c257a75dd97d576c1ddffbd4d58f21e24319870a0e555d5541be871a0e751c1a38347168e1d0c681adece2c056f67118e030d4814af23d8c70f07108700871887030703071b070e063383810042b4fe190c62183a3683ea42eb5b574d8fd3866a96308c7098e531c6738ce71d46c511c9738ae705ce3b8c1718be34e7bb6e31ec7038e471c4f389ef5a740b2c4ca3acba6ee35523671bce078d5b9bbfe4647908f371cef6a8293feedf888fbb7aaf66f044ddcc7278e2f1cdf387e70cce298c3318f6301c7228e251cf9910a8e6c610dc73a8e0d1cf991168e6d457c8cf79fc4b1a3139afb970611ecdf18441dbb38f670ece338c0718863ec2ab53a6a37d8ef75d9441fc700c710c70847b5bf389a526473c9c5c6d1d170f9e8aa7d387a38a6704ce398d1f7b09ea07c4f639c26384d719ae134c76981d312a795065da7b5ae4a4d5fe839d07fc06923d90a4e5b9c7638ed713ae07454bb793ae174c6e982d35543af3fcec3e986d35df70fe8a734c7d458279e0329d373f8b2a6f4d917d571a2ddafa8f3707aea90cde985d3fb4b9942a53e7dc4e08db26a0a4e399cf26a074e059c8a3895702ae354912e1b53c5a986132b6ce0d4c4a985531ba70ecb64fc21d455bfd99cf66f27deac87531fa7014e439c460afae4e3c4708ed14757bbbe53283402a708274383e0bff26547c7a0e364aa474cbfe264e164e3e4e0e4e24476299c788b8cbeedf60c9cc7384f709ee23cc3798ef3424c9e5feaaa49ba1054b1e10367fea21d9cd7386f70dee2bcc3798f6911e703ce479c4f389fd58612139d87f305e72bce371d2748f60fa0cf30fabb181bd56b4674a93cce779c798b27ce2f9cdf5fffe1f4c1f91397599c73e2f0eebcb280336f5ac2b98c73455d887315e71ace75f528ce0d9c79f716ce6d9c3b387771ee2512eb2ffbe5f340dfe3f4a9a8dbd0ace33cc47984b34ff94e01e8ea325f5d08fa67e7006756ca7b18389b385bba795469ad53c8b515ceb66af1d9d17eefece2ece19cc2398d7346df207c012e635c26b84c7199e132c76581cb1297152e6bfdc55c3632e7c9ad44675c76fa2b7e1e70d9e3c2f288cb09179ebfe072c5e586cb1d97072e4f5c5eb8bc71f9e09255a5a681beb01fe69f794c5fba90eaafd27375a4e25290541d97a28e375e4ab894351ebb5470a9e252c3a51e1ff34c1397162e6d5c3ab87471e9e1c2460e7019e232c2c5c725c025c425c2c5c085f7b570b171711289f95e5c9d10ba78b8a4349468b2d2342e191d04a1dcd389f3108f13a6e55d8c37f4a3368f719de03ad5f1c9eb0cd7b92a2f41675c5c17b82ea5c0ff5de1bac67583eb16d71dae7b5c0fb81e713de17ac6f582eb15d71bae775c638b5f2f89c14f3d717d499a57bec917d70fae595c73b8e6712de0ca0694702de35ac1b58a6b0dd73aae0d5c9bea6c5d5bb8b671ede0dac5b5a70922bab9482c49d648aea94e5b810858551fd781f660095f96d721ae238d2958f258cff83a6d710d700d718d7035703563e153dbb83ab8f2793d5c53b8a671cde8fba76fc06d9c48f2fe8b296e13dca6d278e136c36d8edb02b7256eab58d6b16c70dbe2b6c36d2f6188db01b72318cbddceb85d24e7e176c5eda666819118e33abac3b7076e4fdc58e71bb70f6e59dc72b8e5712be056c4ad845b19b70a6e55dc6ab8d5716be0d6c4ada52b4ce845dcdab87570eb6af475ebe1d6c76d80db10b791c6b237d6cf7bb125116e066e266e166e3618bbdf5cdcd89e1484f74a63c6966754ee22839ebe7c9bd10c4f4a0ef731ee13dca7b8cf709fe3bed05989fb12f7555cae71dfe8d80dfd87fb16f71dee7b75c5ee87588eb89f703fc7672eb85f71bfe17ec7fd81fb13f75722b1fededfb87f7067d5bc651ef702ee45dc4bb8977fa4827b35961aee75dc1bb837716f691c7c6fe3dec1bd8b3b9bdec77d80fb10f711ee3eee01ee21ee11ee06ee26eebcd8c6dd51be7717eccaee29dcd3b867e2b78d4395f431c66382c754d7d9564d3c66da17150c1d547bccf160b9c463a5d1f0638dc746c7071e5b091b78ec7422e7b1c7e3a051d9e3a82b8375b8678a072f3e53f407c1b251d764d692abeb31d94f3e2e785cbfd6f6c11aee783cf078c625bb015ef0c6e38307ff3787475efd8747018fa2ba108f121e653c2a7854f1a8e151c7832d69e2c106b0611d9631df47178f1e1e7d3c06780cf118e1e1e311e011e211c562e0c1a7b5f0b0f170f070f1f0f048e191c623a36f617f02cf319e9358a678cef09ce3b9c07389e70acf359e1b3cb778eef0dc83f6f479c4f384e719cf0b9e573c6f78def17ce0f9c4f385e71bcf8f76fa83aef6fe28e299c53387671ecf029efcb3846719cf0a9e553c6b78d6f16c80bef9b385675b438c6707cf2e9e3ce8e339c07318cb282e7d3c033c433c23f5ed9e069e269e169e369e0e9e2e9e1e9ea958d278667404f2259a73f11ae335c16b8ad70caf395e0b8dd95e4b1d7978adf05ae3b5c16b8bd70eaf3d5e07bc8e2c93f73be5f03ae175c6eb82d7152fd678c7eb81d713af572c6fbc3e7865f1e29579bc0a7815f12ae155c6ab825715af1a5e75bc1a7835f16ae1d5c6ab835717af1e5e7dbc06780df11ae1e5e315e015e215e1c56699785978d9783978b9787978a5f04ae39589df7ccb60dbd7f23dc67b82f714ef19de73bc17782ff15ee1bdc67b83f716ef1dde7bbc0f781ff13ee17dc6fb82f715ef1bdef7581e783f7fca17de6fbc3f7867f1cee19dc7bb00762aef12de65bc2b78577fa486771def06de4dbc5b78b7f1eee0ddc5bb87771fef01de43bc4778b39101de21de11de06de26de16de36de0ecb587fdf2ede1ede29bcd37867f011cd8cf98cf199e0338d6586cf1c9f053e4b7c56f8acf1d9e0b3c56787cf1e9f033e477c4ef89cf1b9e073c5e786cf1d9f073e4f7c5ef8bcf1f9e093c527874f1e9f023e457c4af894418fe553c5a7864f1d9f063e4d7c5af8b4f1e9e0d3c5a7874f1f9f013e437c46f8f8f804f884f844f818f898f858f8d8f838f8b8f878f8a4f049e393415634b3273b467612cb14d9d94f39477681ec12d915b26b6437c86e91dd21bb47f680ec11d9d38f9c91bd207b45f686ec1dd907b24f645fc8be63f9209b059dda6c1ed902b245644bc896416f9d0151b6866c9d65cc37db40b6099aad6c1bd90eb25d647bc8f6911d203b8ccb11b23eb201b221b211b206b226b216b236b20eb22eb21eb22964d3c86690134d59ca8d919b2037456e86dc1cb905724be456c8ad91db20b7456e87dc1eb9037247e44ec89d91bb207745ee86dc1db907724fe45ec8bd91fb2097452e875c1eb9027245e44ac89591ab80a173ae865c1db906e818e45ac8b591eb20d745ae875c1fb9017243e4467199888f5c805c885c849c819c899c859c8d9c839c0b76d4b91472e9b8f462c9c46bb081fc18f909f253e4677139477e81fc12f915f26be437c86f91df21bf47fe80fc11f913cb986ffeacc383f90bf257e46fc8f3f881fc13f917f26fe43fb16491cf219f47be807c11f912f265e42bc85791afe9e6dd055e5347be01dd109e1f6f21df46be837c17f91ef27de407c80f911f21ef231fc8c0413e443e42de40de44de42de469e275de43de453c8a791cfa02028008531e8ed15a628cc5098a3b0406189c20a85350a1b14b628ec50d8a37040e188c20985330a1714ae28dc62b9ff1c3c5078a2f042e10d36b890452187421e85020ac5b82cc57f9651a8c4c755146a28d45168a0d044a185421b850e0a5d147a28f45118a030446184828f42804288420476c80513058b6592bf3352a161a65758705070ff2e1e0a2914d2b1645014f637288e519ca03895f15c77998eb7f0467186e25c5f5dc13354c9e202c52518d415d7286e50dca2b843718fe24123b7e211455e7346f182e215c51b8a7721fde2034576976f145f28be3500ebc40360c50f8a59147328e6d58b62d0552ca0c89b96502ca35841b18a620dc53a8a0d149bf19aca78a1a5aeaff49275ad28b6788c621bc50e8a5d0d2e8a3d14fb280e34082e0e511cc57ffa28067abc62cd218a118a068a268a168a368a4e7ce0a2e8c525db964631c390109aea36466982d23491ff43bea5194a73941628b1b9479456ff2bbea5354a1b94b628ed50daa37440899f3da17446e982d215a51b4a77941eba4bbccf86fe8daf8ed8f61c945e28bd51faa094d5b94586b0a5dc972fe3ae525ee719e77cb6024a45ac6bbf7c9315d976ee2bd103a5920e0c95ca7fe13bfc1bdf52253ef9bfe65baac67c6b28d5516afc177c8723949a5fbea5d62fdf523b46fc2f7cbbb7c12fdfdc49e841977e5e6df3876fa98b520f25367af0c3778812efe5a314a014a214a164fce1ab112df9964c942c946c9d7de8a6745cbc44c4ee7fc7b7e4fdaff87a2de58bda3ff996527fe19b8ecb0cca8232501ea33c41798af20ce539ca0b94974ab6bc4279ad61457983f216e59df22def513efc8d2fca47cd47fadff32d9f503ea37cd1bdfe67af842fca579479a7bb6e3afd0fbee507ca4f9479cd1be50fca59947328e7512ea05c44b9847219e50aca55dde8b59bf917be83cf976fb986725d63ad4d4ba71dcb0de53bf3506e2adf720be5b664f8901d94bb3aee4383106345b99788beb6a683bff125cde3eb9f7c55fec1b7ff17be03948731df11cabe4616e500e510e50865e35ff82a62f22d9b285b0a37913f7c2965fbbfe45b6aa916d3bf21d0b2a39ba633022cbb528df91e7d94f9e42994d32867e2576d0395312a1354a6a8cc5099a3b24065a971446585ca1a958df2ad6c51d969fefe7fc59752d9a372d09c9aca1195d3dff85618b8871a49c788bf7c2b17f245e52ad10d15ca5d93f52a0fe55b79a2f252a0c4ca331486c57afead7c2b1f54b2a8e49466258f4a0115c687212aa5f84cf9cbb75241a5aa7c2b3554ea2c63fb90be262afc3ff0ad345069a2d2fac3179576c217958e50072b5ddd7d5af91645efc4e7e1930f5019a2324285ed0850612322540c5448d04285d53aa8b8ca57ca92e28379a8a45049a3924155d4feee825ffb5005aa635427ecdfc41aa23a457586ea1cfc2e09b7ba4475a57c0f6b54291b54b792ceeb04f361f195ca05e3b226e6a47312f0833be5382ba11a9704aab3153f92f05db1e603aa47544fa89e51bdc4e515d51baa77541fa83e517da1fa46f5836a16d51caa79540b2cbf7c13c4a816bf7c691012be2cab25151eff836fb5fce54bfb409a554a5511df797d4d557b5b45b5ae23c5d506aa4d5459551bd50eaa5d547ba8f6511da04a4623547d54031dc4390aaa21aa914e94550d544d1db14d9f7efd87aa85aa8daa834d533c5645e21eaaa9842caa69ca0fdf8c22ae092d016ae378818a0a59ab095e7d509be876449628c4da14b5196af32fe23f525ba0b6446da5c33735d6b6416d8bda0eb53d6a07d48e4ab97652beb5b3f2ad5d946f8d276fa8dd592adf6473ccbff1ad3d54122dfec35725f5e55b638d2f19f3de6f350edb126a6c31abcec99a8f9447ad805a11359e2fa35641ad8a5a0db53a6a0dd49aa8f1166dd43aa87551eba1d6476d209b00b5216a23d47c8cf959fe19ea409a1e47ea02d70cd44cd42c9dcbb9f0196cc9b05a47e7ca6a2e6a5e2c29854bfb504b8b7188b343d8aa4cb2034f2c50b834cdf5b12ea0d88b6a6e7d82fa544b52e69fb415f5f8a03e477d81fa12f515ea6bd437a86f51dfa1ceff3aa07e8ccf9c503f8bc78f5f50bf2adffa0df53bea0f965fbe8a982a5c67bd2f8548b8f5f7b7ac7fd4e14d70d7b37a5ccfa19e47bd807a9170512fc994979551afa05e45bd867a5d661fd41ba83751e7a7daa87750efa2de43bd8ffa00f521ea23d47dd403d443d423d40d4d52af9baac5753ebcad9317b7b6ee90d567e9a2eea0ced2433d857a1af50c1aa2ab4e1ae3d893fda0314163aa3a4ba08d191a7334163a12d658c6b2fa4a3d4dd742af79dcc4dca0b14683e5168d1d1a7b340ef19f891ce33f4f689cd1b8a07145e386c61d8d870a0d428395b37ca3c1bbf3a63934f26814d028a2514a24595f58fdaa70c2971049b35156b82c1b1534aa3168fe5943a38e46038d261a2d34088e7f76d0e8a2d143a38fc6008d211a23347c340234423422340c344c342c346c341c345c343c345268a4d1c8a029ba32a7394673224313cd299a33963a7fdca4f327baf862b94093b2d4a189e60acd359a1bcddbe57d9b5b34e3cd5be8d8ae3e120cd1dca37940937680d59ee295ed3c794e243ebea80d59b7d0bca27943f38ee603cda7f0c7d17cc553ee894cf5cfe61bcd8fc26d66d1cca19947b3a042a0cd229aa558ca6856d0aca25943b38e6603cd66225fbe09623479cbb6f225c76647e136f900bd58baf19f7d3407aac24db6728426110468866846681a68b27d169a369a0e9a2e9a1e9a2934d36866d0125ddbd41aa335416b8ad64c0633e5db9aa3b5406b89d60aadb5b487686dd0daa2b5438bdd4b5ffc135a07b48e68f1e08cd605adab8edb4ee2956fad1b5a77b41ebaf4d2ea62f556e2ada7447c96a3c672ad970675f48b5bef3891bfa0c734d3ad0f5a7140d1622579b40a6815d12ae194d7ddf76241abac7ffa4fb42a6855d1aaa1c50a1b6835d16aa1d546aba3945b5d3d68f5d0eaa335406ba89925ad512231dfb012bfeafb2923032dff876ff7dff8b2ae202e43b422b478bd899685968d9683968b96a74add4ac5c2c7c8a02dba64ac3d467b82f614ed19da73b417682fd15ea1bd467b83f616ed1d744bfc01da07b48f689fd03ea3ad5bfda27d45fb86f61ded07da4fb45f68bfd1fea09dd560ef92d75502ed9c2644a579415e06251d355fd735d6d08823f68e75954f0bed02da45753696acb38476196db22b29c47655fa6c5e4d29c7a21b7cf30c3db0761ded06da6c096b68a3dd41bb8b760fed3eb4c1adf860a823bf88d01e697254db4fe4cb17ed40d783916f3b443b12b71493652dc63ff97ecf9b685b68db683baac56d176d0fed14da69b4335fbe1d5dc586ce58c8b43341678a0e0fe6e82cd059a2b3d22ce0ce1a9d0d3a5b7476e8ecd139a07344e784ce199d0b3a57ac86e8dce45d42e78ece039d273a2fe98dd179a3f351bfb893a58fa1d90eedb466a91a5b9dc2b03f3a0a41077996523dede4d0c92b50cd2e3debba1f867c9d023a45744a0a71bfd5788165a7acd6b653896d2e0faae8d4d0a9a3c3eb9be8b4d069a3d341a78b4e0f9d3e3a0374860ab73342c74727402744275215ee182ce3f8a2632adf7beacbb76329df8ead403b4e6c7f2b5f734ca341e141c745c74327a596a19356be9d0cba6ac3d11deb79f2e5417782ee14dd19ba737417e82ed15da1bb467783ee16dd1dba7b740fe81ed13da17b96f907dd0bba57c9f8f1dece77c9b7d07da0fb44f785ee1bdd8f0ea76deae812eb50539eba39f531d6fcdf3cba05748b9ab45a65e5255d198101ba65742be856d1ada1cb0f3674a51529779be8b272ea23ffaba31c596a3cb6d633141e578ae876d1ed499a17f7d1656dbc638cb24b09d00dd18dd0359478d744d7d2f187ae8dae83aecb32e6dbf574d3c5011f8350d26084da13f4f0edd988f84bb9fa752aa83efc49f6a6e8cd942fb598407b73f416e82d63b8367aabf8e41abd8dcc7df4b6e8edd0dba37740ef88de49e38bde19bd0b7a57f46ee8ddd163cd4ff45ee8bd35c5b8f7412fab39c853b627875e1ebd027a45f44abad4b85746af825e55a33b9d4fb37497825624a9a29a080ddb1ae8d5d0aba3c783267a2df4dae875d0ebea4acc5e0fbdbe66e7f506e80d3506a39165599e6b54565e69d91b6934dcf3756ca1176862438f27796b2316f3876fa8cacb3f7b167ab626ef247c7bce0fdf9e8b9e871e71a4d1cba02fbaaab63f467f02fe76e8f692697f86fe5c8ffb0bd565dadffe12fd15faeb2f502a6c7f83fe16fddd8fecd13fa07f44ff84fe19fd0bfa57f46fe8dfd167854ff45fe8bfd1ffa09f453f877e1efd82ee2cc210a35f14aa49bf847e19137ebc02dd0a5ce43240bf26fc6afb75d5e27e03fd26faadf83d1453ddc2db5c6067eabc67bfad111d0deeb8a96abbca6bd9ef681a7abfab16833161bf8ffe4046a26118e1b2a4b5ed0fbfc2e3447ffb6c898f7e803e1b16a16f28e5be89be85be1d8b833ec978e813423a7e15e55253fcbef6a19fd1942f23a57bb50ef8931a633051be83a9aa2d3bfac11c8305064be5abfd7e198395f21dac31d828dfc156f90e76bf7c077b0c0e181c31386170c6e082c115831b0677f087327862f0c2e00d1ad04156f90e7218e46559d1ed1af495605d0c0aca775094774d5303d86b0d785fb6a72a7e1a839ad0f80cea18343483a437d52d90c99751498bf53731687df9d22090eca0ad7067bc6947072bd833ac18f82ca5c8aa78af9e06bb03fae6abefd6bdbc91222e6230c06088c108035f9d844180418841a4700746bc0f014f9adab95121267d0c2ccd2cf92b5f4d19aa9775c1eed1c3c0c6c0c1801c799c52833048fff0cde89f44cc4e4f53ad81e118c3494c76ab2a3c9caaf390c0a5b9a0fd1dce309c63b8c07089e14af90ed7186e30dc62b8c3700fba41c32386270ccf185e3064a44e052f6278c33c85e15d71174760ac317c62f8c2f08de107c32c86390cf31816742dbdbe9962aa27a520c118d79ea6f00c8b1a312bcab6221e96f48070674fe5fe786be4c6b07858c6503742c6b0aa64d591a87d3d87614dadf0a986615d5ddd212b69ea08993a0fb1ff306c61d8a62862d56517c30e865d0c7b3a853cecb38cf57738c07088211fc3c73050bec310c348bb32c66c43436d023dffa1f535c143a2e435accec39014d23f7c336043698e47c0688cd104a3a9b816d8bf8fe6182d305a62b4c2688dd106a32d463b8cf6181d303a6274c2e8ac0a3b229a9bbed86e71c7e8aa4bb40a3d8c6ed09ddab3183d307a6ac6d4e825fc318ede187d307dc79b6bf04659dde8bf60ebf0f92887515e07d5d89bd1da122e0f0897ce597529614b3d0a46c07b3ae085af7f16c3c5a8a0fe19cb5151115385e99f31421b953488a00ba15622c4a88c5125762a9a4a79548dfd330323d6508ff3d7e5277fbd6a62d4d034fc5113a31646bcba835157cd2e3577d4fbe53bea6b5f371a807df76884918f51a06637e1cbc862c41b47a01f323263be9638bc86e7f92917230f234249639451fdf545f74bf0c7f027f0a71a5f2cabf067aabcfe1cfe02fe5296257521fc15fc35fc0dfc2d7c2a57970e19fc3dfc03fc2316f5f8255607e54babba33c0a8e40f5f5eec9f639fe1a86bd8fc8b8eb1257cfd2bfc9b0611d4d64ef9ebfffe377cfd3bfc873a64147e19fe0bfe5b8588fd8ff67233b63fab8b2fe8a2c592acbf786ab2e2930f9c83cfbb16e017554fa9bc249bf065ff46be7e492d32f9fa65e5eb57d467f0ab0a9756d8afc1afc36fc0e7fd08a5fdd55fbf039f0fd983df87cfcfb271fcac0f3f801fc28fe09388099f8cdaf06d7de5e54c48565d34dff9eaafefaafefa1ef9aadb30e8ff557fd53854f81da4beb965d45fb50f69e54bb8d45f9604fda3bf6a1fe80ed38efb197d17130d6e10a93520d05151534e13b8897da86fd53e04a2a144a2bf74d4e8fb25fa4b8b144cbefabb7cfd9bfeea8aafb4ae000e6608e60816f1204359f5573bb4b496c112c14af597262258ebf843b041b045b043b0576b101cc05f00bde0e084e08ce082e08ae0a6f637b8237820782278217823f820c822c821c823282060d34b08ca082ad2b134320eaaffe8df6477d6fe2da8c995cda86bffa67bc25cbffd1b43387d9d83a11d1d23bad64da865ecdf160b8dd6d47fa8699950e6191ae5a081808fd042d0d6ae8cdf56d85155a5cffb757ed7bffe6fd041c0b2a7640991f1054d6d10bbc3ecd982816ea8110c118c10f808781cc68b035412be110203012fb510d8087ebcdd04314d0415990e2f5598e7691fd8bf05bc81872085208d208350744f142dc7082708a7086708e708170897085708d7083708b7087708f7080f088f084feaff8667842caf086f42ff3cbc237ca07510fe1ec3a7ae1b5eb510be10be117e106611e6b4070bf3080b088b084bf110c40d74e123565201dde1e8a9ca4b948c2cc21ac23ac206c218b49e61856d1068d845d853b7acceb6f51525bd8570a03adbaa48c47b0d118e10fa6a16c240c986a106116184d0d028233411f24f5bcf870e4217a1873085309d48cc37cc2012dd31261a239a209a8a794134433447b4509ad132fe7385688d68c3f8585fd89df1106d11ed10ed111d101d119d109d115d74d10b1f35ba21ba237a804f3be6f917a237a20fd8ee2887288fa880a888a884a88ca88248879910d5b028e882b7a88ea8a1eb031e155d1f90e4af474d442d21afa88da883a88ba887a88f688068886804dd7ffc89284014228a74dd4f8d8de72398882c4436220791abe3bc11db9f429446948121ba5b8e31863181310503422de7301630966a6d8d158c358c0d187f1b3b187bf513680a8c038ca326fc1a2718678dd98c0b8c2b8c5b22315fe30ee301e309e305e30de303230b23174b5ebc250c82988b3b89e1d2497c4b2d05a308a304a30ca3a2a9ea375657d535434703462d2e4b9afd67d46134603461b460b495afd181d185d183d1873180c1d68f60f83002dd3df2c10ae3354346a4efd4a857e439d0fc7583159a302c18b6866706c5d5f15fc383919274499768196961fc6d6470cec114856bb2ffccc01c6bc9ae8c94cd898236a7788d3548ab3e152edd5b73a62361e65c4d6dbb01c6291d964b982bf576cd35cc0dcc2dcc1dcc3dcc03cca386128cd60ebcd709e619544af30af306f30ef301f3c932e66bbe346a30df303f4ad0ccc2e467f214f16c9805d5e248b742fc1b5fb308b3a48be7e3b45fcdfc5d1c619675d39893a9b8cd0acc2acc1acc3a4cb6b509b305b30db3a3fe83c987e9c1ecc31cc01cc2e413fafa6ebe920333105acf35db17c28c740b43c6cda601937488c6d6417422be9661ba303d986c4c5a18911fd6c2c8d3cc686ab425ca91ee97059cca1a4758e3f8cf8982b6a6b066b0e63a464eb8ad06ac85968cd3686a89957179baa943e69d81060eec4b09d75ac25ac15ac7b25153c0ae8c4257c1e2ffee60ed75dac23ac03ac23ab18cf95a675817f573d98f756c5857dd14ccb3556a6cd6ed6f7cadbbf2ad0b2c56f484f5a2f2ea467394acad6b5aac378e3f7c4f96f2b53eb0b2b072b0f2b00ab08ab04ab0cab02ab0aab078411d56436e3d790f853f49ab098bdf041bddd681b1a2be050d56075617560f561fd60016098e60f9b00258212e45256b453ae56e199a776e99b02c0d1f180177b7ba16a5f9d43f8998badce1057c5256cb067bb0521a2cb06c0fe2adf774f73d854be5ed461af8ae785fa2c828d9a4efb245776d48fc30ba0af618f644d3526b77d853d8b34462bef4c0287fe10b7bae582954de587fe37d3c97b0172acd2e6c1eaf60af7589aceaaff285bd81bdd5f54389fe6e565ffdb577b0f7b00fb0d9ac13ec33ec0b6cdee5069bad79c07ec27ec17eebcbaae87ed81f7dab123d133b0b3bf7d55f3b0fbb00bb08bba4b33bf709ec1ffdb52bb0abb06b5fbed4df71f7cbd7aeabe626fa6b377ef5d76e6a26afdd82dd56b3d01ea83fab83b9caf75779fff0b53b6a0da8bf369fbda7426b60f7610f54b650fdb587b047aabfb61f2baf4a32feb050fbc092de024d2de1fe85e997ac915889b8d3638f6707b043d8116c1e9b3f7cf93cb6f2b575e9376c17365b968af9f2f1327044f74d4bf83a633813385338333873380b384b382b5d5f49fbd01a619bd3f9373f27b412750bce1ace06ce164ebca8d5d9c339e89a16e708e7a4709df3d73e38acfcaaf6c1b9e9e24a6bfc350e761dce5d2db2f380f384f3d231c9fa4e6daef3d6f988464eb1d238b04f3397bff6817e82f3d18105da5c271b23eeaaf2d2e6ea226e4f113b395561270fa7a09657555825e6db68c029c229e9c48f5356be8a72f9f51c8cc22f5fa7a2c2f8d8a9c2e123b1c5fc6c538dafd382d3d6359b4e4757b6385d383d387d38bcf750f93a2330967302b50f4e08278263c47c4d38c467c77c1ddddaa5bf45ddfeeddfca960eefb17fdbe47efb37c7d56df592fecdf1b45b7352707897cc6fffe68ad2a4ce2666819acb0f4dfbdac56d3370c7608fed4ee3d8a10b77a6643b71cf4671e7bffd1b7d5e976796aac2ee4a1153687ce930b86bb81bb85bd565aab0cb2bf7700f708f89c47cdd135c5e7ad1a962f7faaf7c15b17bfbf2e59932afbf2b5ff701f7a99bf7b9af2f5ff7fdcbd7658559b839b879b805b845b825b865b815b855b83535112e2b69c06dc26d295faba5ef46edb77162bbdb703bba5701f9ba44c00afbffe23fb80385dba07795d6836b5d52bd2f5f02a50a5373c997ca4bb854ea266f3ac4aaa531db238e7da9b07fe59bf80fee48cfd36830f0a5ff406f8c2aecfa8a5825801bc28d6259ab2e53855d03ae0986acae9d48327f617d937418535037fff46689f1256e35c757edf76aae1ed0fff5b66a7f95a62329030cab5c17ae2769f6d663dd0e22634a96374ec1e5779e8127ba97a237863781378537833787b700efe2ade0ade16dc03ad9b3793bb5b6d45f2f7e2757b602ef20e93dbc23bc13bc33bc0bbcabee2be0dde0dd75f19b77ffeaaf82fe37fd255f454c2890624aea4d35cde658c3626f00ef01eff9751bfee86fc297a6999d9ef782f786f78197859783978fa5f0f5cf4a7ca8a2aaf31fffcc2bc5ce994accd72b6bce03f9d23e7895d80e94e155d58bf81551b274dd3c46e586c61769135e5d7733daede035744da1d7d4ed28bdd6d75da32fecb5e175547fbd2ebc1ebcbe1a047da421bc113c1f5e002f8417c133e0b1420bd767c257f31f366f9db5da04f488414fd173e0b9ea9f791e3cde28ad69255e26f6cf5c9594a8979682ae5e4b8d919aa84da07160cfa69ddb54714ffbbf7c47f2d5dfd4f4d7f8a6664a999a4bb874d75273a41648f1fc4a1766926c6a8dd406a92d523b45fc7f11f75edb8eebbaa2edc7f05dcdd9d2a373ced96f9d929c73b6bffe02f2a89a61cdb5f7dd27ac530d4da5212b90dd300852242070bf7639bb37d983c91e4df6a44d5c24115f819b3dffd8dfdf7cc550642f2ab1828a18078d366f55afc56e64e5d39bc9de4df6a1cd5af619c5df896938ca4cdb64d56933d9b7c94ad1e5c179939562154db664b26593ad986cd5646b265b37d986c9364db665b27255c764bb825883133ca5ac3d93ed6b9e46e9146507263b34d991c90a38a9f354d7bc5da40033939deb427775d426e6b0d1f64d7e4f97aab66fd9b8ce1ac9269c62d669cae5c96806c951ad84701f0cf50d85d85f69dfa41dcba64c561e943159a1e19aac675c478d6fa7a3f14b5d8c6b8deb1b37d08173d9bef691cd5d1a37fcf12bc4ff7517c695232be3aebff22f7ce7919d15cfecdff0fdf698457f8dbb31ee5603c2b83b0d4e2b0a2bbf62f7203db79fc5c7eed1b827e39e75fcccbd18f76adc9b71efc67d18f769dc9771dfc6fd183767dcbc710bc62d1ab764a427e656cc7266dcaa66f35c5e34fd7b181ab766dcba711bc66d1a51345de25ed54106f1160e52b1b6713b0a5afc33b7abaf87c53f6b08919eaeab3a558ddb57c4ee40117f955a471eaeea9f8992bad178983b8a64acacc55d1b456fe3c52fd2aacd22b873e3c6d40f9b6575f9f6b79721ceaf5806f9358b6d7493c64d4564d35ff92b5fb1bf6e464c8176cf5c113792ecd73ea889703db512f3a5535f1bcfd1d851e2027be86a7931bb8bb9c634f2ac3abfd23ff67ce305c60b8db730ded2782be3c9c91be36d8db733dede780765ed1d8d7732ded978176ddfbcabf16ec6168d77375e9410fc9552bbe13d8df732de5b9757781fe3e574a1bb97375e41e3147a727e49675c6f86c62b9be5d9a9a97150cf6c5c325e45b7d2c590d641c8b65e725c1bb7c6c911abed55f5ed8370ecf6f565a5575311b7b7dcd0b7415edd780de3358dd7325edb781d9d98e3758dd753ca5edf7803e30db5e7e68d8c3736dec47872d5ec2b11df464e8daf748edb53b50095b3ba076201bcb98a9a82ab1ef1628e869a5b6aeb57165271e349b593c6132869e3658c27cf738de7e138e250386fd9010d1bede3043821ce026789a6205be36c70b65176cf3dce01e78873c2393b831ecec56c4738579c9b1397cbef68668027ce0be7ad2b58ee81699dcc49fefc3889318e2e7457b28b85336be3e44daf86537006317d3731ace214d5d40e7b5147ae20feb0be7313e56d8afbfcc6299b40ceafe0c899351d121b8ad991a2d6d1f0f24d9c96682e8edc595c80324e170d3fdcff524633a20fd1b4cc529209ba6a7446944150e4ebffd6156eabab8a19bf38a59d4a7d1d65b5a8e88e48632e8213d36c0cf52c1a6f591cf7249a02288de67e90832e8e28b3a388559f41636cf86888d4108d6ab844357c8d76fbb6e802c83de68006d2389989fc79d6e865ce5b175cd46298cb777e2aba98fc86ae177ea02b45e537ff36812ed1333b79564e27e954e5b43ca6a01105561574c265095336fd31a6a22fdbef5753954baae814e2baa9ef9d8c94ad817879fe444718a6134ceb27345c5c0ad946e71d75d137897da237bee83bc7b1a915301335b55929f91423d643fa4bd2a1973248b1e3687f4625e2abb3cabaa2bcd2c51125955e88e66011296d552a7b95083aea946784af531752d2428bd9f7502d8dc257cb7f9e0f16641b40080b58c20ad6b0812dec600f07382a5f4e70860b5ce106777898c95127e694debfe757c3135ef0860fe4200f0573971b16c5d442299ae7d0803254a00a35a8831c914f5b3ae3bc7931d5bc139307b541d45076baea21cca63af03896937b91f46100c34846308689d94915a40c33989baa9c198b240e0948420ac4d44a1d339005173caca33122edf7fd85c015fd8d9c5f81a3aa2a40457335abdbe66f5aacb642fe2c6fb016eb6303e76314a80db10be793c02eb12be793c2aeb172da16bbc3eeb107ec117bc29eb117ec157bc3de95af7d609fd897a966b1faca475f0397a5301fa71d333ba9e1189bc3e6b1056cf187affc0ca99869135b8a62a27735d471a768f652b732b682adea8cfe9adcbfa633ceab455d975209f4605d8a51c736c4b745bf21019dc6b6be88cd5dbecef1cf50af58de9994aaad537a456d6de7eb782962db8d104b957bd83e76801daa59b023ac147822db5f7c4b3a5b073bd5d42bc251d4f60bf7dff0c5ceb072237946dc1195b2f20cc1214cd35fbed84cf469d6894db12ed6c37734e6a7eaf719dfe2fbe690726243fc003fc45fe02f75c1717585bf12bef8eb3ff335abfb97af291ef037ba8448f8fa5bfc1dfe5e6342b6730aba57d1771375b9a79c763495a1c26d1ccdcec73ffd5a9a220f3d9bca14ff22a6565555c8fa57fc5bb4738f1ab486c0c57f98f81eff89ffd229e9d57a347673c47fe37ff0e5893d5d07506de0e7f10bd2a0e11795af5ffacad7fed6fe912f7e5973dc7c29ff3bbe7ec5f92495af5fc5affd2b5ffc3abe3cbe892f456fe377f0bbf83dfcbeb9088501bed4560a34c69fe04b9d67ff9b7cf1c53108ffccd789093b296a1c3ff145fce5ab0eef2cfe8b6ff237dfafadf847be11d914beb4e71335b842d676d538fc2ff055b8ff86afda073fa316c01782ee6fbee6de8b707ff98aca88dad64db947e0683601b1c98155be814f101084040b8225c18a604db021d83a83fe7fcdf76b1ffe996fb0fb836fb08ff82e4473ffe01b1c0814bada87e0f407dfe0fca3bfba73ff2236b1fd97afda07ff457051be819c96fee11bdcd444fc892fc1fdc73e085cb10fff05df1fe5cdc833cabaffcb4afc856ff0207812c8b3df486baec13ffec437c81314547f83224189a04c5021a822ce5020071b044d8216419ba04320d0e56be8ebcaa17134f1b4bafb4bfb160c0886ca376adf7ef84a6bf6ff83af6908d611c19860f267be0453d39bfef00d6604f31fbedacaf52313a1af82086204717512d46d982b621171c5820441524529ffc9fe0629b5bf41fa97fdd559391fe51b6494afe0fb6ff936e491590237e2eba9fefe23dfd051fd9dac088d7a13a175661b429f30200c0917844b42f9744d28c7b784bbff866fb857bee141231cfff61fc42c085f71a4fe6c1fc2e3bfe7bb34b507e189f0ac7320d52edd092f3f70c3eb8f28e59e0e3264c5431f9a54519bb27fc737bc11cab572dba77a66a2c2ca77f46ff92ad9f025f245fc97564e0dc52fbee1fb87afd887f0439853bea1902d1016956f58222c135608e5841a619db041d8246c11b6093b8452b81e619f70402804478463b512e144fddf88af98881fff2c9cfec157fddfdc0fdfdaee375f6ddffe916f38fbc537309549c4776e0629c25804341ec14d4464c5451b68181d51e188aff6d6c4d50d2e8449a2d7ec6a7943b936ad2288c38c9a88304b284c3c168e6af1e2eb9f8d7bd1da15699da62c8c5adb62a82961ff6c7fbf7cbf88bff6415cdb8565e1b308feccf7fb67e49fc947218b058b258b158b350bb96acb62c762cfe2c0e2c8e2c4e2cce2c2e2cae2c6e2ee0ca46e4fd15f160f11a73dd31892d1fa4d164f162f166f16f269ce2c13ea9fd95ffe59a9cf22affed932c6a2c0a2c8a224aa1a356b3155de4599458545550f2e6a5ffd655167d1f8d1df4553e507b1da87affeb268b168b310b7444a28df6247f996a576bd8878c4576cb11ae5e93fe82f0b29d980c590c588859463c262ea543651d65d213213f962fdb115a5b353144c73165293388b84da5ff1cf1622a9e8789a4586459685cbc263a90be5b49fb1b42c7d9601cb90e582e592e58ae59ae586e596e5ce145c967b0d2aab81ebd1f4168396346e4e3ccef2c0f2c8f2c4f21c2d6b1f21368116cb2bcb9b46e14cc9ce5d712f1fa63f60f944ba619595296559bef5559bee7c447445f64c2ecfb1ccb32cb02caaf15d9658965956588aa25cd41d5ed6a4d133f717cb3acb064bb9b33caecdb2134957cdf1b2c7b2cf72a0e662396429b71db394fd294bb9e734e2bb9c23dff952ea90701af24152faee2a8993d801a7249d37f981cc9dc49e654a8e185728a4cd531865584aa15d3508a2b36f41e9b172f48868f1ca68c76d6559f9ace4cf90d582d592d58ad59ad586d596d58ed59ed581d591d589d599d54513b3c4e3ce60cceacaeac6ea2eac593d583d59bd58bd553d571f5da2d6efb0cab192b67b1791bde94a9a957caae1f67ef477558a9cdfb8fabf1a5a20c5aa8c74a0575556b5e8ddf080559d55835593558b555b1d8955e7e75545428ada65d563d547cf1cb21ab192b2455d8cd59495706cab53bc9ab39223715609564956f2a0e8fd05ab34ab0cab2c2b979527c681f597ef4e1332adb573ab16598f5b27b115d6ac7dd6011a715a0e2e22fd959d25eb95aab31c59af596f586f59cb4df6ac0fac8fac4faccfca777d617d657d53beeb3beb07eb27eb17eb37ebcf4f30f5f8c25cfbac73acf3ce48ee56605d645d625d665d615dd590dcf334eb1aeb7a34f7bfc5bac1baa921bcb71e6bf9b3ad91031af2888ef6d6d65dd63dd67d39c87ac07aa8e364e985994e598f588f594fa21de9319f751b3f9b84a7c6c1b659cf584bad63ace3aaa46ba96392758ab51420c33acbda65edb171b467bc313a16b0b1b28df86e7c36019b90cdc291fef4465ff6b059b159b3115bbc1461b3d5948f2539b873323b367bedad6d0e6c8e6c4e6cceda8bdb5cd85cd9dcd8dc9dd79bcd83cd93cd8b8dec7fd8e4d8e4d914d814d994d894d954d854d9d4d8d4d934d834d9b4d8b4a3c44d25677267d361d365d333813cb1cf66c066c866c466cc66c266ca66c666ce26c626ae4abd49b049b249e9f84f454e4eeb1ca7ef6bcae8c50f9b0c9bac89497d5d1d441f88051f1a61b4f1d83a9ad74b77606ba3ad6f7a29b68178666c43b60bb64b1d1bdbaed4c86ed76c376cb76c776cf7dab3d81ed81ed99ed89ed95ebe12f1dd5ed9ded8ded93e9cbadc452e7e39c54047c0b6ef5ff2d1209eab996cd9e6d8e6d916d816d996d896d505de56d856d9d6d8d695f8b6c1b6f9c377db62db56fddd76d876d9f6d8f6d90ed80e4d461e37623b663b613b652ba59c472985b69adb6d17671b632bdb04db245ba96d9a6d866d96ad8b28e9ce31a2953bc30eb3759d81756a3e3b8b18845df0f3626d5cd59172d94e5eec42760b764b7d83d9ccab7336aeb35b0959f390fbacd96dd86dd9eda2ed9edd81ddd1a4657b6277667761776577637767f760f76427f77cb3fbb0cbb1cbb32bb02bb22bb12b7f25e2bbabb0abb2abb1938735d8351d37ceaec5ae1dd901159d927392839d68db35e7a49ada5def2ffafb8baf73b7ca77d757bebb01bb21bb11bb31e26689b395913f67ece6ec6208c15d825d925d8a5d9a5dc69ca50259cdf991e8ebc2f79dcbce63ef68ba38f17df796bdcf3e601fb25fb05fb25fb15f9b6e99fd86fd563537f562bf63bf677fd019bbc358b4ae6aa83b42b93f657fd4779771b9f0c4feaccb7d1e5d13bfb2bfb097eded4704eefecefec1fec9fecb51f6dfca71ff619f53a67bd92fb02fb22fb1973254d857d9d7d8d7d937641bf1dd37d9b7d8b7d977d877a58933624484efbea78823f9811b930acb39fd3ff8ee07ec87ec473ff6613ffe83ef7ec25e2a33633f672f28c78e34ebfb38fb04fb24fb14fb34fb0cfb2c7b97bdc7c141b3198aeb5dd79c35549d785207320f9683cf21e010725870587258a121a6ef1c3626f5e0b0e5b0337539b837fd21870387238793bea39c3cf435c46ba791877a737d0f246a2b709b399d38d28fe974dd7e4ae11ece1c2ed104865814ddb0a307c5381ce4a31bf22c51d2c343c91e9e1c5e1cde1c3e4af690e390e750e020fb250e650e150e550e35d9467c0f750e0d0e4d0e2d0e6d0e1de1eb54771cba2226ca99e7b8130e3d11c715ab2735ec6b5326f6e130109ace7ba5f6c1f007dfc350f91e46c2d7194a9dc71ce4cf29879949cbe3e61c621ce21c121c04628a439a438643d66c3b9ae7a394d65414d24d3ab81c3c8e8e263a3cc2d172f439061c4323b53d2ec42cfce62bcacb51ca7630dd3ac7d5dff9567ef195e359b9e79ae3c6245c8e5b7def3b939d9d8822d6d7ec11dce39ee381e3514dedf1a466e178e678e178e578e3287f3e5444a905faf1a96ddaf1c5f1cdf1f39588ef31c731cfb1c0b1c8516c4753da379df2e4c5a3f4217195f84753316cacecfcf03d9639563856d5fe7ef5f75853bec7ba1e11be621f8e0d8e4d8e2dd5df639b63876397638fa37c34e038e438e228974c384e39ce38ce8d58a7f9edcbd79948e963bff8c6392622be498e29d396a2a6396694afd8078de92fbf862dc7ac4e7caa9638ba3a31a7ddd419fd4256b4d595c779fa12fe175f9d299d96e76e15ebeb68c401fdf2fd4af6a02f7e4e8e26b03cc1c972f23905da711039859c169c9691ac38ad396dd46d386d55794fbbaffc7bbeb92887f19ff87e11ffc1f7b4ff335f4e87df7c9dbb94e3c8e9c4e9cce9e28c0b9cae9c6e9cee9c1e9c9e9c5e9cde9c3e9c729cf29ce48422a712a732a78a98054d68257cb31de57baa1a71ec84efa9c6a9ce497e6a5ba7b7e5d4fcf2752ac6a93bd2b239c38a91d66f674d456adbd2890d8368eab92016cd8daf7e4f2fe3d4d6779a115f350529294047df51caced74a08dce33ee2dbe5d4e324f51d701a6ac7f724951d739a28eeef7b36bfa8dcad1c99729afd977c4f734e51bc6f4d66e1fde6ab5372be8865a7f827bea7784433f1e5ebbcd3ffc237c9296596524af9ce339cb29c5c4e9e537d717694efd9e81ba2b3e5ec730eccaefd3fe2cb39d4e6ee2c8622c9792994355c4eb7c279154d405ffe4c8314d19dafa316fe0ff89ed79c37eaed9eb79c779cf79c0f9c8f9c4f8afb7c5611b7f77cd13133699ccfb7ff86af39741468c457114770ff908dff6ff99eef7fe17b16553d3bf2f33f3f390bcd37e70f67019a378922e70267d9963897390b8e2ae71ae73ae78606cbf847fb207cc53efce61bd9875f7c9b7fe13baaff2b5f55deefdc9cb4685ffbbfb10fbff93a3de57b6e457cdbff96af8e39484d3bffc4f7dce52c77e9731e70966b46c294f338ca3d16f11575fe2d623a7ef33d4ffe81ef79fa2f7c67ce472a3ce71ce32c774e20eec739c5594e164059ce2e678f8bc3c570e137dfbfb76f17fbc357fc30b1bf179f4ba07c75bb10f9edff9a4e4dfddfd8426795e9dcdec7577fb9847fe6fbbb7d53ac6e82cbe277fba68ddb6519bd7e8ff85e566a1f447f85a31807b11297b5f215e370d968cfe2b255fb70d971d92bdfcbe12bffc2f77254bed9d4dff84affe22be24d70397139ebe0d99ff95e2e7ff07d8cfec2f772e572e372e7f2e0f2e4f2e2f2e6f2e192e322752e28df8bf02a712973a97cf98a8950be17296b8d4b9d4be3cffe83a64a10cf49fc07f1cf2e4db5bf225ffb7b6999ca58edaf742252efbfdadff68f894807a6d3fff255ff4cfc07e17b54b58de640c6fef01f2e6d2e1d2e5d2ebd48612fd1d8588a4b9fcb20223bd426ee32e2223515c453f51ffec2f732e322df438c4b9c4bc2649a7fe79b4e2bd62f5fe3ff85ef2519d1fce1cb25f54f7cd35ca4da592ec2d1e3ea7035caf70a57cbd5e71a700db92eb82eb9ae8c3489eeeb87ef6ffff74f7c85a3f8675cd7cab7b9e7bae1aa9e83d88d6fff42d7adc502f57345792bd14c1c717e85f2d74afce2ab13cb06bff846fed90f5fb1c8dee00fbed71d5779ca41273608c7eb319213d733d70bd72bd79bfa6dd73bd707d7e7bff867d717d73757a9708e6b5e1d5e217b7ba8fd1587216ae27ef595557fc53e187193ffc6f75ae05ae45ae25ad623d70ad72ad71ad73ad706d726d71657296b876b976b8f6b9feb80eb90ab9c3ce63ae13ae53ad390dfadad46520f6e5ce79ac1e95936d2d9b9c6b8c6b9ca83925c535cd35c335cc55f4ee1949c6ea864db658de7f05a683087186a1c84a938bffdb84e7ffad5c5502b91cd7275b97aaca7dc1cb50c37a3f32f6e969bf4652e2a475dafc22de01672931396dab9b8adb8ad23d970db6ab76217752e6e3b6e72f281db91db89db99db45b611dfdb95db8ddb9ddb83dbd3a45adc5ec6a63531961e7feb2221e90edee4eeb2cd7393db15b995b8954d4fca54e156e556e356e7d6e0d6e426776873eb70eb72eb71eb731b701b721b711b739b70935acdb8cdb9c5b8c5b925b825b9a5b8a5b965ccb3e978150d1f57964764b9b926298ff0b83b9a24fd8ece1a912e8cd8a5bba8611d5335f32cf750a3184acb765f705f725f69589cd84aa7e1dcd7988ece9136731376b96fb86fb9efb8efb91fb81fb99fb89fb95f22b972bf4572e7fee0fee4fee2fee6fee19ee39ee75ee05ee45ed2aef0bdccbdc25d766adce5d10dee52b61677796847b611dfbb3cb2c7bdcf7da07ce372cd90fb48e7f30adffbd8c4e41613ee53ee339d247d9f738f396fa95e5cf9de136cae8e5629f917be77e1d53593347711b94a10b8dc3d1e8e26927fc0c3f2f079043c421e0b1e4b1e2b1e6b1e9b28bd5dcb24663cb6ba82655de3b1e3b1e771e0a12f78789c549ca22ecaaec9410d9ac3e3a2411ba4f3b61ef0b8f2b8f1b84770bbba4025f551ca66cee3c1e3c9e3a563928f378f0f8f1c8f3c8f42b453fc25251e657de5f3a8f0909bd714e2a3cea31149534718a43721066157e6d1e2d1e6d189e0767ecb976f8f47f787ef43f6fb3c06e83465cc6aca63f89baf26413719937e2116e021859bf0982adf872863d5796f79cc9d7ba07c1f311e711ef251d26ca532291ed26449a1333ca4c42e0f8fa7c3d3e8d4a7a7e5e9f30c78863c173c973cc5bbcaf05cf3dcf0dc3af115cf1dcf3dcf03cf23cf93112d7b9e795e785e4dc5fe856f22842ecfdb1f7c9f77e312816ef37cf0141d92dbbe78be797e78e678e67574fc598876463c8b919478967956b42bf1acf2ace990a340d49fff89679d67836793678ba7dcb6c3531edae3d9e739e039fc4ac4f73952becf314fb9d1d4aca4da339ef2bc98a830cfb8994bc5123c9346fa1a6ed22027a478a64d4bb61933d8eb80c333cbd3e5e9711868a7eee5f032fa4ef26579f99a2faf3f767a315e01af90d782d792d78ad79ad786d796d78ed79ed781d791d78997b0934f2fbcaebc6ebceebc1ebc9edabf78bd78bdd5268caa3af2704cf1fa68c427e1fbcae9d26cd15ff931bdf2bc0abc8ac254a7c97d95372e8f2bf12af3aaf0aa9aa6ecd778c93d1bbc9abc5acaf707ee2fbeafb63a0caf0eaf2eaf1eafbedad6d780d790971c1ff39af09af29af19af3920ac679257e4bc4f795e425a54cf3caf0caf2727979bc1d4dec260a2b70c502bfe16d75c2fa069d3e3dbf22f6e11d681cb92f5fe925bf43de0bde4be7319683bc57bcd78ef4dcde9b9e58f6f7d6f17d23bee47bc75b3e3d38e31bef23ef13ef33ef0b6fb9a71cb9f37e6856f2dad649be9d6c9bf793f78bf79bf787778e77de486fe85de05d5417ed5d52be8940d32e9562da73dbef7442c9bbac2bdec3954e86b4037d4f213b414dd312eb9ccf0661dc24073abc1bbf9bf45107711ee568d14f5227f88bc4752526ef8af27d5779d778d7d52b10c74bfa0eef06ef26ef96c27d4b213bfad15b2adbe3dde73df84ac4f73de42db788f4f72d2217cc78ff557fdf3155e177dc1857c7d222fd15bebc13621f94ef3bc93b85f8bf3aa216a8d1786778679d99dccde5edf1912feccec7e814c88f35bd1d1f9f4fc027e4b3e0b3e4b3e2b3e6b3e1b3e5b38bd6b665f9ecf91c743596b8cf9f239f139f339f0b9f2b9f9bf6320e7b6dd6a2b865aabf95f51ffafbb92b5f69d67e296fc477656cdfcc127c1e7c9e7c5e7cde7c3e7c726a707527ff4b0ac29a4f918f1c2ff3a9f0a9f2a929c7affe4aa749f4f7d3e0d3e4d3d28f3e6d3e1d3eddbfeaafd8df4f2fdaf6f90c4c561e3934a95eb46a706aa4bbf51969322c69d93e63752aacc367c267ca67f6d3be7de67c627ce27c120af723c54af149f3914b8491cbc723e790333af92667c9f9e4027221b905b925b915b935b90db92db91db93db903b923b913b933b98be3d5c85dc9ddc8ddc93dc83dc9bdc8bdc97dc8e59ce98c5cde34e4260568912bb271c995c895c955c855c9d5d4e0e6eae4c40e14d5a9d8cb9d9b3a3727d7d285eec2513a11fb67b4a8eaa00b804454859fca37d726d721d725d753f72bd727372037d4717469dfa443911be9b0646e4c6e426eaa4d5c6ef695886f6eae70652b7c7331e1eb78595dac1265dd15a6c257b1eeb65fbee4e2e412eaede692e452e4d2e432e4b2e4a4569ef38c69fb9677c81b9d479ab7e47df201f990fc82fc92fc8afc9afc86fc96fc8efc9efc81fc91fc89fc99fc85fc95fc8dfc9dfc83fc93fccb889dcdbfc97fc8e7c8e7c917c817c997c897c957c85731b2ad91af936f085fd3946b9be45b0a34dffe69dff29dc8f8467c9d6886a4f486f25d48ea5a2a2f5af1233b5929468f7c9ffc40ed437e487e447e4c7e427eaa4e587ea688f373e52b70a5439c8fe9b07a3e4e3e413e493e15495ab611df7c867c96bc4bdea3e09854978274d312fa9242275c5d34088117a76035159994b4e053082884141614966270b5712bac28ac296c286c29ec28ec291c281c299c289c295c285c29dc28dc293c283c29bc8c38008537850f851c853c8502852285128532850a85aaf1e448cd1ce46e750a0d0a4d0a2d0a6d0a1d0a52c89e46344c4821fb14061486d1ce88c298c284c2d48816176614e63a83a410d39d82d4224121a9dc0b290a690a199dc350c8ea0bf6829cef09561569368a8ece7310a742a7448e299ac8db2d51449db3a2a5e8530c7440a718aafe16171497145711e22fe5effbf9e29ae286e296e28ee25e5db1e281e291e289e259ed43f142f12aa22b588e31ed6b146faaa1f738c5bb19c8550f8a4f855b94c74837af68a67b8a1f8a72669e6281629162c919ca6965e3ca9f158a558a358a758a0d8a52dc16c536c50ec5aef22df628f6290e280e298e284af5a454538a338a738a318af2682958d2bca492298a698a198a598a2e458f9243c9508292a5e4530a2209292d282d557f4b226b9d985eda50da2a593226297ae3463a3b50d0df7924e254947694f6940e948e944e94ce942e94ae946e94ee941e949e945e94de943e947294f2940a5ff9d57f2b15299528952955285529d528d52935742c38fbd25e46a949a9a549d0c53a1ffac664d50e94da943a66b056152e7529f528f5290d1cf18b857269486944694c69e288d7529a3a81547246694e49ae9523094a494a294a694a194a594a2e258fb243d9e85cffb2a5ec9bcc9d724039a4bca0bca4bcd2f843e2e495d7943794b7947794f76693a67ca07ca47ca27ca67ca17ca57ca32c973f283f29bf28bf297fa40b67fa31cadf95da6335b5e23ff872799e72817211e93796cb942b2ae2b749fb56ae52ae51ae536e449eafec3429b728b72977287729f7d42297fb94079487bf25e25b1e511e539e509e529e519e5396c7c72927282729a728cbb333916429bb943d2a0e15a36b1dc4b7aff84887aa12525950595259515953d950d952d951d9533950395239513953b950b952b951b9537950795279517953f950c951c9532950295229512953a950a952a951a9536950695269516953e950e952e951e95319501952191951f6ca98ca84ca94ca8cca9c4a8c4a9c4a824a924a8a4a9a4a864a968a4bc5a3ea5035ba56a36aa9fa5403aa21d505d525d515d57574506443754b7547754ff540f548f544f54cf542f54af546f54ef541f549f545f54df543354735ff95886fb540b548b544b54cb542b54ab546b54eb541b549b545b54db543b54bb547b54f754075487544754c7542754a7546754e3546354e354135493545354d3543354bd5a5ea5173a8195d7852b3d47c6a01b590da82da92da8ada9ada86da96da8eda1ee9f2d68ed44ed4ced42ed4aed46ed4eed41ed49ed45ed4ded43ed472d4f2d40ad48ad44ad4cad42ad4aad46ad4ead41ad49ad45ad4dad43ad4bad47ad4fad406d486d446d4c6d426d4a6d466d4e6d462d4e2d412d492d452d4d29164a865a9b9d43cea0e75a30b67ea96ba4f3da01e525f505f525f515f53df50df52dffd96886f7d4ffd40fd48fd44fd4cfd42fd4afd46fd4efd41fd49fd45fd4dfd433d473d4fbd40bd48bd44bd4cbd42bd4abd46bd4ebd41bd49bd45bd4dbd43bd4bbd47bd4f7d407d487d447d4c7d427d4a7d467d4e3d463d4e3d413d493d453d4d3d433d4bdda5eed17068185d02d4b0347c1a018d90c682c61271c51a6b1a1b1a5b1a3b1a7b1a071a471a271a671a171a571a371a771a0f1a4f1aaf68fba6f1a191a391a751a051a451a251a651a151a551a351a7d1a0d1a4d18aa44da343a34ba347a34f634063486344634c6342634a6346634e2346234e234123492345234d234323fb95886fc3a5e1d174681a5dcfd4b4347d9a01cd90e682e692e68ae69ae686e696e68ee69ee681e691e609f1ea9b179a579a37c42b6a3e683e69be68be697e68e668e66916681691ce68b34cb342b34ab346b34eb341b349b345b34db363c218cd2ecd1ecd3ecd01cd21cd11cd31cd09cd29cd19cd394d39274e334133493345334d3343334bd3a5e9d17222d16995b42c2d9f56402ba4b588b64b5a2b5a6b5a1b5a5b5a3b5a7b5a075a475a275a675a175a575ab75f72a7f5a0f5a4f5a2f5a6f5a195a395a755a055a455a255a655a155a555a355a7d5a0d5a4d5a2d5a6d5f94ac4b7d5a5d5a3d5a735a035a435a235a635a135a535a335a715a315a795a095a495a295a695a195a5e5d2f28c50683bb48dae2c6b5bda3eed8076487b417b497b457b4d7b437beb0c3ab477b4f7b40fb48fb44fb4cfb42fb4afb46fb4efb41fb49fb45fb4dfb43fb473b4f3b40b9ae235902345da254d1f28c6bd5da65da15da55da35da7dda0dd8cd20fcb235ab4dbb465a7ab734f97d59f59a7ed1eed3eed01ed21ed91c914746224d104bd93947c4c7b427b4a7b467b1e89ecc468c76927682769a768a769676867b5ab261de2b64bdbd3ce5bc7d1ed6b46c7d0818ea5e37f25e2db09e88474167496745674d6743674b611d908aeeceb911d9d3d9d039d239d139d339d8b69ca6302f5c63a57339ed0b969fcc9bedced4ee741e749e745e74de7d3bbc9911c9d3c9d029d229d129d321a015d1e57a553a353a7d3a023c56dd169d3e9d0e9d2e9d1e9d319d019d219d119d3993849b9c394cecc884df0633a31b233a71333d2c407724e9c4e824e924eea67eef477d67427ad5e702743276b927289abeb86c50caed3ea2474bc08714c17b8769d1f91fd76f4b6ad6b90efa26b7590aceb6be7f872d08e7237d021b4d754b98b6bd10de92ee82ee9aebe12f1edae956f7743774b7747774ff740f7a858bf5bdd39d13dd3bda85e77af746fda61ebdee93e8c7c8ddd27dd17dd37dd8f065d1ec7644b374737af7cbb05ba45471aba6ec9ace42665ba15ba55ba35ba75ba52ac26dd16dd36dd0e5da9408f6e9fee80ee90ee88ee98eec4d037d213eb4ae56774e7cab71ba31b17c44e5698ca7e82755fe7a977933f7ca52bf19dfbff5d55217c056e5717047cf9e23f956f371dcd37f5e866feceb79b55be5d575fbc773d7a0e3df3c3f7b4d3555caf393dab0311a2d1c2b7e7d30be885f4165f89f8f696f456f4d6f436f4b6f4e4ca3dbd03bda3ca6fbebd93ea6feffc3fe5eba48c93ce3af129bd8b0933f4aef46ef4eef41ef49eceab46ef45ef4def432f472f4faf40af48af44af4caf42afea64e5772d07e5cc3a3da946d388b9efb5b82f756d45a4bf663610d0fa67af4daf43af4baf172d73edfd2ccc14c4a2ce42bcd7d7785bf797862312dfa33750b2bd21bd51a4c2b3688db694761cc94857baf626f4a63ac82b707b331d3cebcd7f10f7623a90a63b717a097ac9886cea2b5fbe697af280acda879e4bcfa3ef28d9be2a8deea8f27ef9eea2a54b56f9f67de956687cf088af19aeffe03b3dfc457ffb01fdd029c69c51d23c7cfa0bfa4bf5c0fa2bfa6bfa1bfa5bfa72e73d7d3928cf3dd13fd3bfd0bfd29707dd8d33a6ffa0ffa42f777bd3ffd0cfe9c4e97e9e7e817e51757655d161f57e897ed9645dfa15fa555de92a70fbb51fc4a2c2bdbe42efd7355c4e62af4bdad67135b2fd06fd6684781a2d238e642b6593cbdbf43b3af87b7cabe60a5c253bff19a51443f11ae98e742e846fbffb2f7cfb3dfa7dfa03fac35f7c47f4a54a13fa5345fce52b2658dab77fe14b7f467fae7ca553f467be7d297422e22b57a5ccc3d24fd3cfd0cfd297fa7b0c1c677c6560a2e53a9681cf206010325830582277909b0f360cb648177cb0677060706470627036e28a0d2e0ce4f25bb492b84e7852e283bba612cc66183c18e802205d2398ddfd20febd36689666f0d2393b655f8daf901dbc197ca29d5cd4ca894c74d6f420cfa0c0a0a89d341de16dfccc1df9cd77506250d67d413fa8fcf01d54bf12f11dd494efa0fec37720d7c8635a0cdaea2d086581abad5cc45744dc8041f79ff90e7a0cfa662cc8fa3f7c070306f2e0910984c898c184c19481947bce40ce8f339073e49e29065267e192652065f0183a0c4db492dd32f419060c43860b864b862b8d9b336a28dcbff195620c373f7ca51d13be430d1af94b85fb7fe3abeb52c42008d6fc48518ab60e7711e208ee70cff0a0f3fdffb7f80e8f3f7c8727e53b3c33bc30bc32bc31bcff85eff0a1f2af7c874f86af7fe03b14a51838b12c43518db4334a33cc31cc332c302c322c312c33ac30ac32ac319402088e26c3969ae3619b61876197618f619fe180e190e188e198e184e194a13c57bea49b13df0b5f234ef730c6501e9ad0e9398387c9bc35c0c097af68716c1f2d8c1faa8908e5b464641f1aca77bb62988a4c41c43782fb07dfaffe0ed33a31475f5b34fea77c336a7f8742c1d5f64df97a8c9c1fbe23a38110c45113bee257c8766495efc8279736c3ed97af999e18058c42460b23c51a2d7ef88e968c56663767b46624d76e19ed18c9090746474672d599d185d195d18d913ceec1e8c9e8c548aefd30ca31ca332a302a322a312a33aa30aa32aa31aa232a3c6a6afb366a316a8b52eb9b0b652d5775304d72f55f1165e5b95d5daa3978aa0b31ea31ea6bc448e9a38a9f20d6603450ca5fe3206677341451c4a391da5f69df466355e1d1e44f26184653f51fa47d13d5feda5f69df46b3bfdadf7b5f077f478220c628ce28c1484e9242a41965d4da8eb2ca74e446223b1e6347f86a046569dfa4bb3136ca772caef5d5b9079af9621c676c19fb8c03c621e305e325e395f18f8cd78c378cb78c778cf78c0f8ce5a05c7e667c412cf2f8c6f8cef8c1f8c9f8c5f8cdf8c338c738cfb8c0b8c8b8c4b8ccb8822f575519d7a2e46c6b8da3517b683482e6c748e7625c67dc30d9a552ce2e559dc5a3183719b718b775eda0301d771877c55bd0a581df364d7c0671cbc672669ff140d5d924180f198f749c773cd6915fa1fc7d79ac83677287890ea48da78c678ce78c6368f55522be63b93ec938c558486518cbdd5dc69e7abbe28d89c1fd6aee6f11c41307714927a87d9858333d32f199044cc25f7cf9e13b5930593a81ecac98c8c91b265b263b267b5dfa353930916b4f4cce4c2e4cae4c6e4cee4c1e4c9e4c5e4cde4c3e4c724cf24c0a4c8a4c4a4cca4c2a4caaba4868528bb6f5481a4c9a4c5a4cda4c3a4cba4c7a4cfa4c06d176c864c464cc64c264ca64c664ce24c624ce24c124c924156d1391a4996498647585d0c465e23175981a8d63b2bde8db8aa965ea330d54b5a7a1f63ea60ba64ba62ba66ba61ba65bd9467ca73ba403363d2098440da767a617a657a637a6f7a88bfc4ba68f489eba526efa62fa36d2719c7e547f67c679de99e6f4fdfc3da13dba699e69c1d957991699968c917b4ab12a4ce5488d699d69836993698b699b69876997698f699fe980e990e988e998a9947eca541e3d671a631a679a602a0f4d314d33cd30cd465b298f67c447de6f9939a67664669861a42b38b3465ad49965e6330b9885cc16cc961a345dbeb6d98ad99ad9267a4b74d7782f33b9c3c6c46ecc761ae93071500763b667766026b73d313b33bbe8eb8cd995999c7667f6d00928b327b317b337b30f33b9735eb611df5981599159494718666566156672768d599d598359f3974859db9174987599f59ce783595f6701dfe49201b3a1f2dd96f48de76cc44ce8c89d27cca69a9951aa3b1399338b318b339373a43229a4299f65986599b9cc3ce60e73c31ce696b9cf3c601e325f305f325f315f33df30df32df31df333f303f323f313f9b8a5c753152b0f9d5248c46adaf69901de637e677dd0ee34eec1aade5942e465bd315cb1719c6351e5f14319df9434517ba9c357bdbcc352fb9f953e7afcf5f6a97c556ccdfcc3fcc73ccf33a45555abf79411dbb79917989799979857995798d795db611df79837993798b799b7987b994a9a770e77de6835f328cfe1c29dcf998f984f994abe8e3c7b987fac2f89d623e633e57beb78ad107c798c79db5d04938f798b3953f93cce5b434f30cf32c73a99247cc2166a2984196986f56196201b190d882d892d88ad89ad80669a0623b627b62076247622753910bcfc42e08355a88c6c5eec41ec49ec45e1aa15abefbd89bd887582edae68915881589958895895588554d7742ac464c5c9724b186c84f78d4c4ea1bea97589358eb1b928f589b58875897588f583f9201b1a1b687b111b13131b9db94d88cd89c584cb611df589c5882983c20452c4d4c6a9825e6aace2ad6886fcc23ee10371a364910c72d719f7860a46ff6d5df5b9378487c11ad388c54b8245f7b9cf8d2f1c417793bc638fe86f88af89ab8ec6c11b7c9de11ef2a7e207e247e227e267e217e257e437eadf107f127f117f137f10ff11cf13cf1827648e245e225e265e2154d535aea9b459b78d55caac46b68d06c8d3069a4258c374c65a45bfda96932585d631497d2b6d453aecc89b775829a38dd71a9574767ac7e257e8c021f3ac693e35d9329ebaba3788f789ff8405b3fc11d1f6ac498f8485f2fddc2e8a3b14eb3d4b9c02a11dff884f894f88cb83c2c463cae0d5a3ca17ce3c91fd1fd88afaaf69ff84acfea175fe7b1fe83af1c89a722be69e219e73e269e25ee3a0729a247c22161a2d84b96844f222011925890589258915893d890d892d891d823163071247122712671217135979aa6994bdc48dc493c483c8d3325f132a5a2d90ccce34d42e4432217a579d44c84b2e59a7286159de35e779c6ec87da1f1e55a557d9d9cc89328d01ea9248abfa4a431d733059d08ecf4d52e7f0a24ca242a24aa246a1a45ea1b082251d7191409d9699268e932b944fb2b11df448744d7a4a5e852e83e890189218991aa6d62fc23825874393151139190caccd43e24e66a0712b1af7d705e4f127181ebdca349ab890409796acae9ca93d2243224b2245c121e49479a138d1d96b4247de384240392b25d905c925c915c93dc90dc92dc91dc933c903c923c913c93bc90bc529c3852c2e48de45de3af6b9ecd86e62eddf44dd82090ab1e4e3b6bf63ec9a7d3769de6d0a9c749be48be65ab6945a4c114eb9cfc90cc193141e2c369104fa298721d0d582d929413f21a6ddd95821548164996489649564856356c49b2a6512092759d35916c906cea4acfd32a0a51a012f14db64cfa4ab24db283de512ee82bcde480e4f0970c7ecc856cb56222639d16351ba9fd159aa7a3da87445c971bcaf15b458fcb379c9c929c919c938c39b6debbb924a59e099249922992699219e3de496649ca471e298794d1986d294bca2715900a492d482d49ad48ad496d486d49ed48ed4d4d4e3898204bea48ea14c999d485d495d48dd49dd483d493d44bc322a6de6c5db397fb7c34786a65a45dbe548e549e5441e3f769408df14f70390d8a36922e8974ff74097d141f463b23dff825b6af318dc294c6d7082e3fc7e5a0fcc852c568adcbe42b11df5449f9a6caa42aa4aaa46a6a0a36be624dd5493548357f107f1bba548b549b54e7bfe22b2622d525d523d5273570ac001a3a0bc1372235263521352535233527152315279520952495229526952125c85c521e6947839da40d69485bd23ee9807468b673d20bd24bb31989e535a5aae6866dbf49af34564cf5417a4d7af3c3371d859d94fdf40e5d061efb836f5a6e7e207d247dd21e87d7f8e9438be4eaca579cfc3ff3f573a4cf3f6641237e4b77e6f1133726b86a940221a9f18dfe937cd337d2d25865457f956f5aea297596babdd5eca63fa473ca7753249d275d202d3b25d265d215d255d235d275d2529f26e916e936e90ee92ee91ee9be393e3589a92689d5847aa407dad69526662bbf927794d8f8adb9775bd17e36291643f872d8911e6a8818e53bd2a457abc19ff88e7e890e5f10c47e1203d48a3ff18d22be1a733288107ff5f7ff1ddfb1735868fb969e447ca7a467a4450163a4e3a66ad538a4134813914e914e93ce90962352568f8c43c66864c78c25e39309c88464166496cad7bccc3dd46463b585717a2264a40bde26b326b331dba4ae9b3de9ea016dd0ae5b69d904b1347a64b664763a52d19693f7640e5fbebf112b6551deccf19ff98a2988f86ab68bdf7cc59110bee153df27fd47f966a4e9779d95d4f9ace1698309990b992b991b99bb235eb3c0cd3cc83cc9bcc8bcc97cc8e4c8e491b63b532453427ca3529a4c854c954c8d4c9d4c834c934c8b8cea2c998e792645c80814a12c0f1d706eeaa2a27ba8b3afcf555d00b3cd0862ede36586e20e9bcad4f1e4cc91c6aeffc69fb4ad5f5678fc138232bed3c0d4afc30f5fdbff1d9febcbf727be9170ff1ddf488347a5bff27f9f6f664c46804ec9ccc848e74cc8c6c8c4c908d3a4ce5ccfa4147146f065c864c9b8643cb20e59138db758b23ed9806c4876417649764576ad516ab31bb2db1fbed99d2056c9eec91ec81ecdbaeb545cb2a79f34c6b23d57c99e95f835a57e71ec63ea678d4f9bbd98514fe3f7f56b223a8c295835b8dc96ec55530d899b78b8aa9dfdc691d3507df97fe44bf6f6133f4ae05e8fff29bed9bbb3ed937d880a3b5bf953d0bcc8bec97ec8e6c8e6d1e8ec75b245b225b265b215b2c2a2861e94fa37c9b6c8b6c90abe2ed91e59b99b301d921d897dd0c85c59b9ed444594373b35fd2efb9539cbad6646b4555cdd2877b4fed91faa2f9c9d938d314c98ce886cdc0c136435f78222d691e228439674179944495ae43b4e0ac75f7110d3bacda6c426a846ff8edf17de357e9ff03d2dd40467857bea3fc33743364b56b4c973b66d6753c575708d46ca752dae6f96d28ea58cdde006b821e26cba4ba432d2257537e653c1dde2ee70f7b807dc23ee09f78c7bc1bde2de3478df37fda366807c6b92ee55d334f76273350878b7ae799c44d236cac75dd5ee46b7863885ee03a74c7ba89d37f719058c9ae8cb24ffa12296d769e9e8c4976f90fce12b1cdd97f2fdc69f74df7f898f78d9e8ba4e811bc90f5fa77a34d2fb743fb839edb9094437ff7f8aaf937f3af7a178be228e6d3bf78136716e01b7885bc22de30a41812e75ae6bac18b781dbc46de1b6713bb852871e6e1f77802b051be18e7127b8729319ee1c37664ae236c891b8ece0264cc332f5345f69f3e288b7e72675c4529a7b5a662097a74d5fb6723cab9d3757e07aaaa7df644de386a60410c914555e7b3c47e3cb47595954793d0da0ac9359cbe59f951adf8401d2450aee7856e7bb6b440895fffb7c3d1f2f10be8e2e3bfae82884717420c20bf116eaa2794b8d62e2adf0d6781b5395fd2dde0e4f2a76c03be29df0ce7817bc2bde0d4feaf0c07be2bdf0dea657c5fb98a3f4dfc678391df4f1f2ba68d62be015f14ad19be6ade93488e5a224dd2193a6060d5f55b01a1c1cafac1c13ab9fa4998278d457d10c175bcd64ec4a912a7ff0d5519eb646ab16bedf3c2ddfd19f30abef3b84ef69f98338d7fe0ff2fd8af255c1132e35bc3ad25e7b52c9165edb99c8f91dbc2e9eecf4f1067843bc910e077b826f8234d05a87395e0c2f8e973097b6913e88973455c12d0dce82f9c134e5eb1145cbe06535104f63a7d1c0cbf23817cfd3f8e0b59bbe7ef62fd6713463bc704cac3563b18820bea444ac632241f9268bd6b1246a42d63abe7502eb84d659e87a82efda0d3f6d9da57556ca5703751d94f2f6f09fe06b9db592dd0e544479393b2b29dcc63a5bebecacb3b7cec13a47eb9cac73b68ed4f96a9d9bdec57958e7699d9775ded6f95827679dbc750ad691da96ac53b64ec53a55ebd44c3d14b2d6a99b9adcad61a4cf66c5276b59a769ba0d9d3135907bca9f42a7639daec64f1ddc4d5620f694af00d5c46e0795282fb48a3b8f7232f4f53573b2188de0fc0b5fd1e8fd53f86a38c7f0f117be91fca7f8e63eda854bcb6703b1c2d6195a67649db17526d6995a67669db97562d6895b27619da4f311fa5279cd17639dac75e4120ff93e8ca3d1960cd6586b7c6b026b42e6c72f5f537d4acb66cdc29aa5352b6bd6d66c18dcac910b77d6ecad39d82897a7a99f34ab7c3665326f6bce4a737f349dc937a979843592dde2cbd79a8b70b4e6aa648d7cf7beb666e5fc374996ae9d138b217ccd5ddf875e86bfe53fc2d73c84af354f952f5fe97799b3355237399eb3266f4dc19aa271e548c99ab235152b1d3b53b3a66e350f8b506b59d3b646aadab5a667a384b6d60cad66681f6b26eec955a76e6baeeaa9d524b673abd94ae3510ea2a4d56473e24064ac6625727ff8ba4393956fc2fb83ef6fc4bba5d5d41dc60237f377bee6f6e5fb5d92f8075fecff53be1ad73eb08456831b48055696b565a3f6416312eeacc68f3b7ca394580dc973b11a21e26675b9bc94fe695e73ab2b6edf968fd58574794bc1523427d92fb16e5a5db351b13ae7bf66759ab9781272b06575e66cc7ea0cc89ea56feaf2b8c10f5f860a543a69def04f7c172a27395f9959e9ce7df90ad9d850b7be3c77a216e35116a74db9eb2bcfd92fbe9baf285fa7b2653113be96f9dff85a6202d7ea70bad8f88125a988e34992f2e094d511ad8c3887c257fc585df6964bff1e9f14be56ac91b40bf2abde8e359d83fef39dd843f9dac0dad05ad9595abbb2766dedc6daadb53b6bf7d61eac3d5a7bb2f66cedc5daabb53753985a7bb7f661edd3da97b56f6b3fd6e6accd5b5bb0b6686dc9dab2b5156babd6d6acad5bdbb0b6696dcbdab6b51d6bbbd6f6aced5b3bb07668edc85a29d844f557f8ceb2d6ca2366d68aa3168b5458cc50ec375f1d0489f8aa84d91fbe22dab8a973f6c3f71b34e6375f0d489bd88badb3366e6dc2dae885856aab9420a563ea8989ee6c7c6be5a48cb55912f2916bad27b8ac6f74407d5bd6ed3de13c86aabc2f479363c815beef2402a750b77e60fdd0fa0b677db2fed2d9ceacbfb2fedafa1beb6fadbfb3fede195cac7fb0fed1fa72ced94afbee5f9da47c7ab3feddfa0feb3f9df9dcfa2febbfadffb17ece8aee882af945eb97ac5fb67ec5fa55ebd7ac2f4f6c58bf69fd96f5dbd6ef58bf6bfd9ef5fbd61f587f68fd91f5c7d69f587f6afd99260411b2bedc3c66fdb8f513d64f9aa49c9cd2946319b973dafa190d6412e549a63dd324b19a6d68a26bbb5cf934abd37ffce2efe4383ff9719c8c86aa36aec072adefd920eabc89feea687a4bc40626daa21a2d6a67b336f06d10d820b4c1c206cb1fbe11d9487fb1c1ca794c6cb0b6c1c6065b6727b7ddd9606f8383b3ef3bd2fe04471b9c6c70366d63838bd541939a537edbe06645118287f4956df0b4c1cb0672f063839c0df23628d8a048b16e03f9b46c838a0daa36a8d9408e346cd0b48194b36d838e0dba36e8d9a06f83810da4d8231b8c6d20459ada606683b9d9c9cd633688db206183a40d5236482bdc206303a9a06b034f7c091b3afa72287d51273771fc99d49ebdb176bfebe5a4236743a39d8bf6f82796d43ff02d6a86424dc1227cc53c8a29087d1b06d13b37c786f2434eda7061c3e5cf1bcfd6dc862b1bae6db8b1e156adc1b6cc336bc39df3ded9706fc3830d8f363cd9f06cc38bb349d850ee7fb3e1ddd965ac3405e1d3862f1bbe6df8b161ce86791b166c58b461c986651b566c58b561cd8675671fb761c3864d1bb66cd8b661c7865d1bf66cd8b7a1947368c3910dc7369cd8706ac3990da56c311bca55f25029b6d43f6d4379a814cfb5a167178e5d18bb408dd3c2b78bc02e42bb58d8c5d22e5676b1b68b8d3976d8eda5af61175b931cdbc58e2021aafaff91f65ecbaee33adbeec5f05ce5285b87ce39c9513ed30b5b393adb57ff03f298b367afee2fed5d85a1921528f2191008500c7062384921b1dd1f40967c7eda1d43be5c30f7fa154ef65fe82ff375723897e2e3d05ae0167d1e58790bfd9d14fabbfee1bbb56dad291aeaf05db7ef2cb5daf3a97d1a70ee701e709e7697775e70de703e9a7fb13936765a70da703a70ba707a70fa70388b43382338633813385341eccc44319d391c0e8e79bb84b3122be19870d6703670b67076e275387b55e50c1ce058709845094e194e054e154e0d4e1d8e0e87b3d414b28e015783ab640114b6f92ec13dc13dc375e0ba703db83edc006e08379215785979dd186e52cc4b99b00a4b9b592515b21c1f336bb6186efa9dc9006e665f38855cd61ffa4fbe6d43a65a9f70f9739965b9f8f8f627dfa24fc99f7c37702f70af706f329aa5b710be41667f4a70ef70f9614fb82ffbc83fdf5acf84fb81dbd2de4bb86db5e2bb3a8574e1f6e0f6e10ee00ee18ee08ee14ee04ee1cee0cee12e447f5dbe6b059713e1d26ec404bb5bb83badce2cf6700f702db847b8fcac32dc0adc2adc1a5c2eb90eb701b709d780a7c153b26804d7a31ec13b81031ccf81e7c2f3e0f9f0027821bc085e6c47bc93c04be165f07278ec995de049fbe477e147f91a5f0ca315b8b214fadd6eafa49bcf5213eb1cfad284f667fd06efa65522e12b4b34715a7721e83dbe7d1ec43878cf1f13e1bd7efaf2987b786f781f782d78edaf7d80d781d785d783d75707cee500de10de08de581b99f02660e7df9bc19bc35bc05bc25bc1e3e36b78fcb82dbc1d3c4ef660f33be859f08ef04af0caf02af0f8d1357875783abc86720ce1eb35ed1ac332e06bf095ac26c53e884ff04f82d53fc377e0bbf03df83efc007e083f821fc34fe0a7e06ad6cfe15fe05fe1dfe0dfe13fe03fe1bfe0bfed4d15fe077e0b7e5b26058ef8fa8ea0dc2d7f6c427b655b9c5a97e5a7e9bd63c8a882cc96251afec6d7efc1ef6b9323fc01fca13d3bc01fc11fc39fb0af06762afd197c86c23958c05f0a77e6ebafe09bf0d7f037ca2a5c60ae48979cb92dfc1d7cbe80d3b1e073b2258d8dac5f86cfa971be6bf0ebf075f80df80cc240a02190e649f1d0d84b094e08ce081cd1dfc045e0d91bdef1110408420411821841225e73c06feb5e6ac220439023b820b822b821b823782078227821788bfe061f042d046d041d045d047c4b1fc100c11001273e463041304530433047b050f503822582956831bb6b0d7e96f9eb1346b1a6d3f86e1bac40571659718f2bc0e1446a3c19be61890a17f29d7fdd43b096e5b4830d82ad6d726e7608f6080ed29bafe8968ac0e29f088e22acca410941195c6b0555047c635d3a4258a6da734675040d047c8b815043a8648532f66b434278427846e82074117a087d8401c210618430469828af61b34d0c538499dde49d1ce105e115e10de1bd68aef46d8b937d207c227cd9cd31c237c20fc216c236c24e215d843df0fb140e100e118e108eed263f77624755845384338473840b844b842b8426c235c20dc22dd84f0ff7080f60f7313c222c212ccbfa22564306c34c39cd8aa034a4c613a351dd89cc66451faa9af486ff74c57bfb93af36d9d841247c437e3cc3b2d8040be2b08e5067c4081bf6cc2a7e36bf07111a8834444a9676e3802022ed7e42c47246e4803df3c843e4230ac0e62c8a10c58812f05b1665887244174457443744b2fe9b96f2950fb0c314bd10bd11b1d9698a798d5a88da6225a20ea2ae4c43e7fa5a7d237ca31ea23ea281988868886884688c6882688a6886688e688168a9066d442b4426a235a20da22da21d224ef980c8427444c489971155c0e8a31aa23ad8bd891a889a609f32d624a2ab6a123db30ac74a743696d5ecb8c69329416541f48ead6d2406e1d8f35c2d7cb883f4d32ee45ff88ac27ef9c6f4175f5664461c9ff8a0a8737c46ec2076117b887de98d9a0e11078843bb93228e10c7883943bc9f21cec155447c457c437c47fc00c79af10bf11bf107710b711b71077117710f711f319781531b211e239e209e229e219e235e14b244bcb2552cad4221276e225e23de20e612729ef7880f88f925e50c1c1197c0ee5d5c415c455c435c47ac236e20e622184834244ad6fde368312124272467240e12178987c447122009852f8773f548e662d79602970d4272fde1db48788b24929e965fbe1cd0fe93af2613bc2f91c4120dfe83ef8f0ac7a702740949822445922191519c4858ae486e48ee481e489e485e48de483e485a48da4838075d243d247d24032443242324632413245324332473240b244b31280dbea620c85a9c9848d6856c906c91ec90ec911c8a2f753df91f70fd9658488e4838578cf2a0ad39271524552435247524bac4dc490309a76620d5902a594891c3ef94909e909e913a485da41ef84d4a03a421d20869acb205584f99ef762d337ef2fbf7b5b65fbe56b35850faffc4374d7ff8b29e161daabf700b15beb37110becb54f8a699daf35b799259ba0e29d21ce905e915e90de91de903e913e90be91be907690b691b69076917690f691fe900acf2e908e918e904e9d46e71d96648e748b9544b6dbfd2764da42ba4a6dd3491ae916e906ec5b6a63ba47bf958d7e88a27971e905a488f484b02372d23ad20ad0ad6b486b48e5447da40caa919c834644a56a9e47a2b23cdec233b213b237390b9c83c643eb20059882c42c6efbc2d7c0fd6ff962f5771ffc11759a2754f7fe3cb6ec39f7cb3f4375fd168d6df2c13bedba6da16b3a0599cdd1cd905d915d90dd95d2aebec81ec89ec85ec8deca3c673647cb08dac83ac8bac878ccb3640364436423646364136453643c6572ec4ffcd96e20f642b710f3213d91ad906d956228b6820c621dbd9754e708fec80cc427654462a6f43c6392c23ab20ab8ae5cd6ac8eac874bbfe41c6c5692233906bc895fc77735b1a9172427e427e46ee2077917bc8b92ef5a451ed977d401efccd3efc9ed2f69f7c7f46d01dfe3bbe7f1987826f21f5ef887ae4a1bdc8597fbf7c91f3b363e409f21479863c477e417e457e437e47fe40fe44fe42fe46fe41de42de46de41de45de43de473e403e443e42cea59d209f8a92e63341c9af703e47be50363f62897c25a699ab35f61c54dbaef2a34de46be41be45b09d8f21df23df203720b39e7b384bc8cbc82bc8abc869c2fd091379037911bb868b828596bf5025c0897132e675c1c5c5c703076f17109644d69f61ffed77c8ba97cfe956f97d30d0bbe8dff862f2e913ddbe012e392e0928a7d60fb7bc970c971e19d2b2e375ceeb83c7079e2f2c2e58dcb0797162e6d5c3ab8740531d742971e2e7d5c06b80c7119e1329656b4cb0497292e335ce6b8b0ffc4b72f0b772d552b3ebb929f1753d36f52b9b175beac71d948f3e6656b73c575d9e1b2b789491d70b17039e252c2a52ced70970a2e555c6ab87011f8ca86345f5c380503574dab6f7155b2a2ed15b812ae275ccfb83ab8bab87a3f7c1bc95ff59b31b01bd5bfd56fac9557ff7fc1f71ac8f0c172a570c8f41facbff8cac12b5f13e11ae39ae09ada7bd8ad2aae19ae39ae175cafb8de70bde3fac095ff9f2b5c5fb8be71fde0dac2b58d6b07d72eae3d5cfbb6e21406b80e711de13ac6752210af53a538fd9968ee65c628d569c1646dcd5574fa822e1601e792cf4579f9df60c7b631c57581eb12577ea289eb1ad70dae5ce61dae7b5c0fb872ce8fb896702de35ac1b56a37e6b8d670ade3aae3dac0b589ab819b869b9275836fc08d703be17616beb1d859dc9c1ffb5bedfcf61fec34fe4b7fd935e64079b5fb3d82b9a8df2a068718b26a5e95537771f3447f05ee2fbe375fa4f0d2700b700b718b708b6de7c461056e2c296e196e396e17dcaeb8dd70bbe3c6173f717be1f6c6ed835b0bb7366e1ddcbab8f58a9d3e6e03dc86b88da4f3a4aee336163b706313b112cab7296e3321dee4ff16efcf6d39bb28b64bdc56b899b8ad95d3b477fcac0d6e5bdc7685ec713be066e176c4ad845b19b70a6e55dc6ab8d571e30771a19ab81962d3ef1aee0a775bdaeeef0476e4ef67dc1ddc5ddc3ddc7de1bbd817bdd8d7225ccbdd1c99fa3e4abf70a5f76a95dd2d252dc51c435746455f1391826fe7ac352ac59ab13aee32b3c68f65e098ed1ee21eb188d160bd66d7d8e44cc4b827b8a7da63a3d63eee19ee39ee17dcafb8df70bfe3fed01a9ccb27ee2fdcdfb87f702fe0de593a3f88b954aca16c61ef5d9bebbd7b0ff73eee03dc87c5886f2ef088635fdcc76213ee13dca7b8cf709f17b519676c813b1f5fe12efd4e7067d9e0cea9ed70e7bb0eb8f33547dc4bb89771afe05ec5bd867b1d772e6303f726ee061e1a1e4a16b77e000fc2e384c7190f070f170f0f0f1f8f008f50554289328a19c3f188587ea60e67d6bff84a88c1dafd88656c57f959d47232a15ac1b755c32311fbf048f1c8644e0d098b21b3406c1e3f63e6657077a918bc690bdf47ae7d9acc178f0b1e573c6e78dcf178e0f1c4e385c71b8f0f1e2d3cda7874f0e8e2d1c3a32f35fb83ab32c336f6780ca5367f8c8aed188f091e5365e678ccd482cb36c76381c7128f9576ad2a8f8b6de2b1d6567d6dc385dc88957f6cf1d8e1c1491df0b0f038e251c2a38c47058f2a1e5ca83a1e3a1e0d3c9a7818786a782a5927fc093c09cf139e673c1d3c5d3c3d3c7d3c033c433c233c633c133c533c333c737bfdfa31118c58567cbaffccce5eac3150aca1137f71e379b1778b9f66b6628046617f9f573c6f78def17cd80b4ef4291c17fcb0179e6f3c3f78b6f06ce3d9c1b35b6c7b78f6f11ce039c47384e718cf099e533c6778cef15ce0b9c47385a789e7daae701936786ef1dce1b9c7f32076e369e17994f6c367c93603d1be6719cf0a9e553c6b78d6f1d4f1e4b3cd62e5f4a2ae67af965f8ea78197264c5f0a2f5b3ec2bd08af135e67bc1cbc5cbc3cbc7cbc02bc42bc22bc62bc12bc52bc32bc72bc2e785df1bae175c7eb81d7d34e0ad7edf5c2eb2d5ff65e1fbc5a78b5f1eae0d5c5ab8757dff6775f17ad58c92154b3a94c80ff4ba3c58133363fac5b3355befdf454bb2c785bf07d0db46659f8be86788df01a8b07f69ae035c56b86d71caf055e4bbc567899c5768dd706af2d5e3b6dc499e6d21ef0b2f0e2bb4a7895f1aae055c5ab8657dd4e2acae2a2ea7835f06ae265e0ade1adf0b6e5fbe49bc0eeddfb8cb783b78bb787b72f2106ff1bde01dea17c7a784778c7782778a7f669887786778ef705ef2bde37bcef783ff07ee2fdc2fb8df707ef16de6dbc3bc57e17ef1ede7dbc0778f3bd23bcc7784ff09ee23dc37b8ef7426cf77b89f70a6f13ef35de1bbcb778eff0dee3cdd9b06c6fa62a8184181cc59935bc8baf9f7122acbf9ff40bc1bb847719ef8af458052728fd2affe0fbe63bb930fa2fbee61f707ff17d378a6d136f031f4d99848fc2c796cfb81f9230ec73c2e78c8f838f8b8f878f6fb381fb044ae3e3213e113e313e093e293e193e393e177caef8dcf0b9e3f3c0e789cf0b9f373e1f7c5af8b495c55776f0e96a86864f0f9f3e3e037c86f88cf019e3c34f9ce233c3678ecf029f253e2b7c4c7cd6f86cf0d9e2b3c3678fcf011f0b9f233e257ccaf854f0a9e253c3a72e9ff2d8f9fde8f834f069e263a0a5a1a5d0b2e5c3748bd03aa17596118755f5d341eddb8dea2be257c43fd66336854cb73b13efed5c934fcee7a27f2a5a2e5a9ed62cfdf06df93f7c7f1b875680562896a115a115a395a095a295a195a37541eb8ad60dad3b5a0fb49e68bdd07aa3f591169616dfdb468b6feca2d543ab8fd600ad215a23b4c6684dd0e23ccdd09acbd7a0d602ad255a2bb44cb4d6686dd0daa2b5436b8fd6012d0bad235a25b4ca6855c04e21571bad3a5a9ce1065a4db40cb435b495aca2de06da84f609ed33da0eda2eda1eda3eda01da21da11da31da09da29da19da39da17b4af68dfd0bea3fd40fb89f60bed37da1fb45b68b765a1534bffe960f9a5fcc52ded121711de89f8291d5161ef2acd98d52e6fffceb7ddfd8baf98da7ff015c4b1e86fbb87761fed01da43b447688fd19ea03d15beed19da73b4d9fab458d05ea2bd42db447b8df606ed2dda3bb4f7681fd0b6d03ea2cdcf2da35d41bb8a760ded3ada3ada0db4f929063a1a3a4a569def001d42e784ce191d071d171d0f1d1f9d009d109d089d189d049d149d0c9d1c9d0b3a57746ee8dcd179a0f344e785ce1b9d0f3a2d74dae874d0e9a2d343a72fdffc3b037486e88cd019a33341678ace0c9d393a0b7496d22ff8375f41ac7ef8f2f6cbf78bd8ac71ed87c014152ea4e0db59a9c6cd0e5cd1df8e59d887d27fea6f67fdc397a5b311fbd0d9a2b343678fce011d0b1dce62099d323a1574aae8d4d0e1d474741ae834d131d0d5d055e8dab6e94b57902ea17b42f70cf65bba2eba1eba7c3c4037443742374637413715d0dd0cdd1cdd0bba57746f82b87b47f781ee13dd17ba6f743fe8b6d06da3db41b78b6e0fdd3eba037487e88ec016a03b41778aee0cdd39ba0b7497e8aed035d15da3bb41778bee0edd3dba07742d748fe896d02da35b41b78a6e0dddfa4fd7ebfa41646bfea5c855f5237ff095304f06238afc9d6f5747b7f1c3974ded5fcafb77bedd26ba067a1a7a0a3d5b3acdf408bd137a67f41c819b1dd173d1f3d0f335aedc7a8154f43dde89d08bd14bd04bd1cbd0cbd1bba07745ef86de1dbd077a4ff45ec5cebb904f21ad1f11d07c7d1bbd8e80ee75d1eb15d2476f80de10bd117a63f426e84dd19ba137476f81de12bd157a267a6bf436e86dd1dba1b747ef809e851e67b5245f4ed9f9ed95d1aba05745af865e1d3d1dbd067a4df48cff135f69a6f81bdfbe86beb283e02fbe1c62fcc9b76fff8d6f1fe813fa27f4cfe83be8bbe87b02b7efa3cf957e8a7e887e847e2c88fb09fa7c24433f47ff82fe15fd1bfa77f41fe83fd17fa1ff46ff837e0bfd36fa9c7817fd1efafd1f61e2fd81c897787f58c808fd31fa938238a73c457f56c81cfd05fa4bf457e89be8afd1dfa0bf457f87fe1efd03fa16fa47f44be897d1afa05f45bf867e1d7d1dfd06fa4df40d0c340c1406b674b31a1006270cce7ff1fd5a8950fd6585ff691ffe3ff265cbcb70070e062e061e06bef01d041884184418c462197abe7de6530906290699b4790f720c2e185c31b86170c7e081c1138317066f0c3e18b4306817c2297731e861d0c76080c1b0901106e35fac077fb11e4c7e58b3760fa618cc309863b0c06089c10a03138335061b0cb618ec30d86370c0c0c2e08801e7a72c7cf96d185430a86250c3a02e5662a063d0c0a0898181a186a1c2d0966e6c43c2f0f4c397e1b25c6a3f7059d86ffb07df7fd887ffe03b3cff0bdfa1f317dfa12bedbf43cf66ca431fc300c310c3c8cede18c6182618a618f2053986170caf18de30bc63f8c0f089e10b43beec83610bc336861d0cbb18f630ec6338c07088e108c33186130ca70297b7c39908c3fd6ebf947f6c08a739c77081e112c3158626866b0c37186e31dc61b8c7f080a185e111c31286650c2b185631ac6158c750c7900bdbc4d0c048c34861644ba7c0116174c2e88c9183918b9157f0f544aabfaab5af2ffc751e387afee5a2b1472c01f47fd66fffca97fddcdfc6f73ff83e9f18f918051885184518c5182518a5dae18d51068e3846178cae18dd30ba4b9bfae88111dff2c2882ff860c447da187530ea62d4c3a88fd100a32146238cc6184d309a62341361b8a3f98f0cff1081fb4b460b8c9618ad3032315a63b4c1688bd10ea33d46078c2c8c8e1895302a6354c1a88a510da33a463a460d8c9a1819186b182be9d026d3a80163c2f884f11963076317630f635f46bf7c5d609657fc97ffcb71dd17eeef009add4deffa3ff15d25ff1d5f96718071887184718c718271aa31be7186718ef105e32bc6378cef183f307e62cca7de187f306e61dcc6b8837117632e4fbf9001c6438c47188f0b2bc14726184f0b9915322f6481f1f297acfe12463f36315e63bcc1788bf10ee33dc6078c2d8c8f1897302e635cc1b88a710de33ac63ac60d8c9b181bc277a261a284efc496beac13c2e484c91913071317130f135ff8d65ad211edb71d28e2b79fe0a26adba7928ca1fd46ccffe4abca3d4c024c42e13b8930896d73274a3a4930491114336efc21986498e47670c7e482c915931b2677e95a3a7960c277bd307963f2c1a485491b930e265d4cf8117d4c06980c0b196132c66482c914931926734c16982c3159616262b2c66453c8566438fd4f5d66d693dd8ff0cfc91e9303261626474c4a98700e2b985431a96152c7840bd5c084511a986a982a4c6de9133c254c4f989e31753075a5c5976b8ba987a98f698069886984698c6982692ac6b79cfcd8dfdf21c69ff51b5b896549e28b16a796b109965a2e7e14fd4b3c7e70cea2f16b3ebd607ac5f486e9bdd8de8aa9b80a592f456da70f4c9f8ab572fac2f48de907d316a66d4c3b9876a5a7deb487691fd301a6434cf9e718d309a6534c6798ce315dc8f785e912d315a626a66b4c37986e31dd61bac7f480a985e911532e6a19d30aa6554c6b98d631d58508577dbc231679fe4b7f179836306d626a60a661a68a51c4c08c303b6176c6ccc1ccc5ccc3ccc72cc02cc42cc22cc62cc12cc52cc32cc7ec82d915b31b6677cc1e983d317b61f6c6ec83590bb3b6cc0e717faabaabb62b194c1be7f62997b5bfeb16661d1659a7ef47b66ac52152c70e39922cea37adcfee06e786b52cb06f7c75cfbe71ba7dcc06980d5964b5160e4967a342c636bb44b389bde7624c319b6136c76c81d9527b54a46be96c859929b1b23bd42e7ce51ab30d665bcc7698ed6585c7d90133ced611ec65cfca9871ca55cc6a98d531d3316b60d6c4ccc05cc35c616e0bdf393027cc4fb215dc35e1cbca3b3f8b5ecf1dcc5dcc3dcc7d51db798079887984798c7982798a7986798ef905f32be637ccef983f307f62fec2fc8df9475adfe72dccdbf21965dec1bc8b790ff33ee603cc87988f646d337b8bf9f83b758c20b657c2f717e2df7c5539ffcb7b0bb5c2fece272cea98dbe7b7ed36b53767745a086b424d84462c98cf59a4d3ec7c810f177e69a7fcf815e626e66bcc37f69aa17026b8d87bcc0f985b981f6d8fcb59c2bc8c3997810bcfb0ea98eb9837306f626e60a161a1b0b0a5fbfe82b0386171c6c2117c0b571476e161e16311806b5d114fe4cb771109df458c4582458a4586458ec5058b2b16372cee583cb07862f1c2e28dc5078b16166d2c3a5874a5ca5df4b0e863c18f18623112be8b3116132c38cd1916732c16582cb158a9a62563919bb05f4359d84c6fcbb87abda32ac65ff1c52f5f426cb14cf82552f05d9858acb1d860b1c58233bdc7e2808585c5b190d2dfa50c991d3a477251cb0616552c6a58d4b1d0b1e09f4d2c0c2c352c1596b67d9eca67c725b0242c4f589eb174b074b1f4b0f4b10cb00cb18cb08cb14cb04cb1ccb0ccb1bc6079c5f256f867732cef583eb07cfec597f5972d03f35dbe8a0bde587eb06c61d9c6b2836517cb1e967d2c07580eb11c6139c67282e514cb19967cfd02cb25962b2c4d2cd7586eb0dc62c9a9edc54a2c0f585a581ec1f67459c6b2826515cb1ac35539df52c7924bd4b09f2f651403e71abe48c593b9bd2a9eaa70b99ad25cb934785bf05d69aa9960a5b0b265f4c78ab03a29a3614397c1337f17acce5839f2e5cd3c61e562e561e56315601562156115837d8f558a5586558ed505abab8c0b5cddb0ba63f5c0ea89d50bab37561facf8781bab0e565dac7a58f5b11a6035c46a84d558ec03b36313b19a148353821f13b19a8a305c46bc9a898eafe6582db05a62c5474cacd6586db0da62b5c36a8fd5012b0bab235625acca5855b0aa6255035bc9958e5503aba606ceaa015383a964a0b60998042ea07986e9c074617a307d9801cc106604338699c04c6166307316d66e9817994c468684f335d7efb6f01fd2aaaacdb5464da126efbe79837987f980f984f9fa87bc617e6ca76a6ff86c0b661b66076617660f66dffe70b60630873047f2dd2ce02c8e614e604e61ce60ce6172fa4b982b9826cc35cc0dcc2dd85d31397f079816cc23cc92185666679661560a85d585ac5915f94677664d10cb3575d16e5387d980d9944ad234b0d6b056c5074688415f13d6273123eb33d60ed62ed61ed6bea4b60eb00eb18eb0e6b309d629d619d639d81d5a5fb1be617dc7fa61b717583f8b550f07b2d459a583f5cb564b99384d6632e07bdf5f91f9a6d874b06a1752e8effaa3194759cd1425ac5b58b705e2a28235a7d2fdbbf0911ed67dac07580fede54b71d5b41e613dc67a82f514eb19d673ac17f23182fd8df50a6b13eb35d61bacb758efb0de637dc0dac2fa88353fae8c353f8813a9615dc75ac79a7114f51b5bf38d868d12b8acc2ec3cb0daf23ec3ddd8a2dd1b6043a2c59b1336676c1c6c5c6c3c6c7c6c02a1b909b189b0e19d049b54eeda64d8e4d85cb0b96273c3e68ecd03ac289b17366f6c3ed8b4b06963d3c1a68b4d0f9b3e36036c86325f305768a58c059b11d76936dd8a651ff8ecf8b7d8de44c4dfcbe4cd8514fe43f3208b38790775e58c32a68ef6a9ca92c6277edef4b7f04f1154b1996133c766611f2d6c96d870094d6cd6d86cb0d962b34387b3b5c7e6800d5f70c4a6844d59da5036156cf8f61a36756cf867039b263606b61ab60a5b5bc6a36d09db13b667a9bbb60eb62eb69eb4dd7c2b3a46cc7cf9201be8ad8f6d508c620bb1e58b636c136c536c336c736c2fd8f235376cefd83eb07dca3faceb61fbc2f62d88b71f6c5bd8b6b1ed60dbc5b6876d1fdb01b69cfe08db31b6136ca7d8ceb09ddb5c8d6f17d82eb1e51d93c53e1db15d63bb61b15dbe71cbdb626787ed1edb031e9caba27f8956fe08dc12a7c8afe787fd07fbfcb103cee5f16ff21bf499b355c2b68c6d05db2ab6356cebd8ead836b06d626b60a761a7b0b3b163939d6147d89db03b63e760e762e761e763176017621761176397609762c757e676f986dd05bb021f575faca73b3e72c7ee5128ef00bb27762fecde62a3771fb966309256cd5d4beac05d1bbb8eb460ecbad8f5c471def5e55fb5e31b87d88da4ad6ec76727c27737c56e86dd1cbb05764bec56d899f28968b7c66e83dd16bb1d767bec0ed85976a784dd11bbefb66c7395beab60572da4865dbdd8b2e88c5eb4bbd816f6b7c60f6888fdb575ec9ad819ea98a95b2e6e99531629fc33fbd4fa8abaaf6466cfb6060e3ad8f6ed95e23041664b02f684fd09fbb3f6b861ef60ef62ef61ef631f601f621f611f639f609f629f619f637fc1fe8a3d5f7cc7fe61eb1f69eade3fb17fc9bbbf7fcbebbfff60df2a4c842ebacceff86fbefbb6b09366cc17f61d69a864befb2ef63decfbd80fb01f8a1fc2d7ec473f7cf77cd744dacff653ec67d8cfb15f60bf94ffeb9e9f6562cf65d960bfc59e73b2c7fe80bda52c4b6d97c56a1a25457b592db5eec83ce3320ddde697fc4ce9a536159958915de372f85dff8d0b70b4bb5cce12f665ec2bd857ed90b352fb2d76cad9ad8b09deebd837ec073fbb5896812b87bd81838683c2c196e1a507c2e184c3190747fa4306fcd3c5c1c3c1c721c021c421c221c621c121c521c321c7e182c315871b0e771c1e76a78dc31387170e6fa9e2b81e93b6ca7161190abe1cda1d3e38b470e02b3bf23fe0b36c3a0e5db1128c983d8d430f87be5cffe5cbfa7b6019e230c2618cc30407be7e2635de618ec30287250e2b1c4c1cd6386c70d8e2b0c3618fc301074b264ab477f6f32ed21ab1e070c4a18443b9580751847d3896c24de6a757c47f387cbfbf1daa38d470a8e3a0e3d0c0a18983014b83a5fe105bc6e55a04eb04eb0ccb81e5c2f260f9b0025821ac08560c2b8195c2ca60e5b02eb0aeb00a45b6eeb01eb09eb05eb0deb03e9ab381d582d586d581d585d5d3d8f0b119b1fab006d2cbdc1ac21ac11a8bb55d145658e016759435813515c4d64c4c8435978899b59b3d65e66b2d602d61ad609945485d381b621f0ac4d61a163f7a2bfa6bed60ed611d6059b08e62c1ac12ac32ac0aac2aac1aac3a2cce490356139681a356882ab676b18342a8d89e8aed1947074717478fb705dfa38f638063886384638c6382638a6386638ee305c76bb173c3f18ee303c7278e2f1cdf387e706ce1d8c6b1836317c71e8e7d1c073872792cbbcde98c701c6bcf9ef46e3a4e34e214a638ce84f2718ee302c7258e2b1c4df9487e5ccb50a1e306c72d1e7cd90ec73d8e077015ca7c8fc75fca5bf065cb20facb19288989182fa515e258c6b122ca7bace258937e24c73a8e85c966ed3e36706ce268a0a4a1a424cd92cdee124a84d209a5334a8e16f0968f7b5285947c940294429422b0fb554a504ac1ce83488ed205a56b21b742eec5f6516c9f28bd507aa3f4e16dc1b7d442a98d5207a52e4a3d94fa280d501aa23402577ab265991432456986d21ca5054a4b9456289928ad51daa0b4456987d21ea5034a164a47944a289551aa201f481fc85255fa45976a28d551d2516aa0d444c940594359a16ccb6896325026944fc2b77cfee1cb6f375b098e35183157775cef959dc238b4846fd91576bdbdc02d7b28f3d900e510e548f872e8518e8b26a1a9085f39d9a29c88052fa7286728e7285f50bea27cb339def1749cba28dfa5235af981f21365bef28df20765ce5efb977450e6cb7a28f7511efc5d86288f501ea33ce16dc1b73c45798632676581f212e515ca26ca6b9437286f8b2dcbae903dca07942d948f2873d9ca2873a9aa28d750aea3aca3dc40b989b2818a266bcdba1d546c54a0dd8b41421552d15dec72e584ca1915de71c191e588f77db8336504a8b084a844a8c4a824c2b7928a0560e1d79c8d6925432547e5f2c3974d70e58a0a1fbf0be2ca0395272a2f54dea87c846fa5250df695b6341b8d66e0d0a0d245a527f6a1d2476580ca50ec436584ca189589a638f35331c715be986f5fa0c2fb2b544c54d6bf6483ca1695dd2fd9ff92032a9cd41195122a65de167c2b9cad2a2a3554ea76c2a9e8a870705cb54f6f9182907de6623459643fed6b77477b7d503150d550557c2dbbc5dabb8a2aa17a42f58caa83aa8baa87aa8f6a806a886aa47168578d85663541354535433547f582ea15d51baa77541fa83eedb882ea0bd537aa1f545b6282ab6d543ba8760be9a1da47752088ab435447d25e51e56b26a84e519da13a477581ea52f497295757d2e181f97e1133dfaa2926a5ba467583ea16d51daa7b540fa85a3274a07a44b5846a1955ce0697a8866a1d55dd0eaa3273d2be2932e6223464461a917321c4826a53e6cd9ec66a1a7da5e05b35a441bda64122645b191c44756c1ada5f6c3528a3c1821a157242ed8c9a839a8b9a879a5f48609f1ea885a845a8c5a825a8a5e2e870d876dc09af5a865aae6daaca69a27691812bb5abf238cd1b6a776dd9438d6f7faacd4de3f7aef692a9766a6fd43ea8b5506ba3d6418d8ff3657dd406a80d511ba136466d82da14b519d8c5e468825578bc1023505b883161df915598f92e39a9256a2bd44cf920c22e736d2d3687b5b8b6416d8b1a177f8fda01350bb5236a25d4caa871b6b9f835d4eaa8e9a835645af7c959591335f5d5792a92c46aa0c9cfaca5f657358a6defa38e25b5bf7de5bb7e0067baf99baf6d2b8e3250330ab8240d3d5a03750d75a5bd0d76dd98af0dc7261d75dbf63d8935ea60dcda9d506739a17e46dd41dd45dd43dd2fa63fec4366e3ada01ea21e49f7c8c742eb64dae225c35aeab1d6f6b4093f25413db543199c2581499d2547fd82fa15f51bea77d41fa83f517fa1fe46fd837a0bf536ea1dd4bba8f7e443e764837a5faccab8f01fbefa5b1fa03e943e25f5917c6a6223531fa3cecf9da23e437d8efa02f525ea2b7b7d92aec17513f535ea9cd416f51dea7bd40fa85ba81f7ff87a43d4b9d425357ca8bec13f1931ea659937902f38960b151629f4b75ef98b6fbdfa9bafa86abdf6a3bc7ff2add7a515b8aedb61c7665b53e7b336ea32d521ea06740dba826ecb44273a413f416694d5597919ee8f0aeb8ef4edad5da1bbd03d5b79d07de801f4b090087a0c3d819e42cfa0e7d02fd0afd2fd54bf41bf437f886eea4fe82fe86f7054a2b7a0b7a177e4db927ca95b41ef8af3c07c59797ff3d57b85f4a10fa00fc562e823e863e813e853e833e873e80be84be82b2e0d7413fa1afa06fa16faee2fbe4c53df0b5f86cbfafb07df7fd1dfbff1d50fc297e308e15b202e54f8cb57e0167c31e7c84767b8763a962d83e60044b7a01fa197a097a157a057a1d7eca62fe30235ab98bb28d6362e0bf4ba20d67519bba237a4a7bfced00dadeda2a1a1a1e04eeda80cae051a4083d038a17146c341832ff0d0f0d108c00e7c2342234623915e398d543cad4686462e3171e3f2c3b77145e326f6619308dcc61d8d071a4f345e68f0d90f1a2d34da6874d0e8a2d113e5e5b7ad31406388c6088d311a937ff265e320d3057ef9feb60f1c73fd0bdfc6d45ea5c2b7c1ffc083d463c2f7fc77beb53ff82ae1db98a3b160b17399e81e8d251a2bfb5e4583f3b746638306977987c6deae30a0031a9688d7fc22162d6e1ca51335577d8d12eea6f652da55663e2b2833dc8a1c6f70823534ea68e86834d0e0bb0c34353415b8ae6515e360a97942f38ca683a68ba627cac8ae18ff5f9b019a219a91206e16ad68cd443e33375334333473342f68f2a91b9a77341f683ed17ca1f92ee483660bcd369a1d34bb2ae227f6d0ecfff0b5c63f7c7b3bd5dbfec917cd815886c5f02bff27bef51fbecda17c3a62a6cd91fdac0bdf742c7c9b6334276872d96668ced15ca0c90757689ae28735d76872d9b65fc4c2b7b943738fe6014d0bcd632125c5d170b38c66453975a9f49afcb81a9a753475341b68f25d060c0d860257100660108c138c330c07860bc3132bcc8e84e18b67c6c657f4f70af6fc98ef60012314be4604238691c0e0fd0c460ee302832fbbc1b8c378c078c278c178c3f88039325fa3fd275fc8fc967ff0e583ff33dfc23efce26bfc977c8daef065cb10a4c2f7591745deeb307a30fa30063086304630381313185cd4198c398c45c1770d63f9c3d758c130bf88d5b4293188b196212bc606c696f9dac4ce4c086307630fe300c3827184518251865181c139a9c1a8831d1ecea1c1091aa469a429d26cd2c036973422ed54c819933d690e692e691e693e69016921691169316909b61fd252d232d272d22ea45d49bb1157d9da83b4272363e3601fb33ff912bf71de40e40fbeffe63f783af325ed4ddae74fbe5f17ed5bbffd85b8ceb96f91d6fef265151613116f6c87cbc08fec92d65311e7b24fda80342ee188b4b10c64652b56f0951dafc97c499b90369591f38c5877d83b266d46da5c1d3faa76d0fa5ce005694bd256a499a4ad49db90b6256d471a933a9066917624ad445a99b40a6955d26aa4d549d3496b90c6e91ba434528a05db9c942d7d4aa627522045a478e74cca21e51257b06699944f2a20157214442a2695904a4965a4727109963d59ee087d654d1928c3fdcd57968b618b217cafaa51968b2b102dae40f892bad82b4ee58ae983d4cd7ed66cf083efdfc882141f7cfc7c8b03e7e649ea25fbc19dd4bb98aaaf6ffbbe7de2c27c48b548b54975487549f548f5490d480d498dc4ff5613525352acce4b443d75afd8c68ad49cd482d452f4379b91e22326a9b5f0551b6dce19db0a5fb523b527752065913a922a9162229cbd2a297ec5eaa474520d524d7eddd0698baada1abf0064db32119b4d649fc83e93cdc75db23db27d74db24539185644764c7642764a7644b8f08b2592e645fc9be917d27fb41f653f0315c7321648f47d53bfcc8578b7b1b91512c73329695502eab82affd22fb4df687ec166623fbb12d3e6e5684b2cd39e814d2b59562df18fb0ad93dd9f77d811b640c9af7c9ee933d207b48f688ecb1fdd893ac1a3f2559a57c5eac66bd54af32c912c1a6c4c447839d6292454d37246b21ee54836fe7bb0e5af7aaea7ccad29e5d9235b44a248bf154b42d5f50255975a44eb2984083ec26151388924cf669cb6c762092c9d9ce24336fb924d319f9248da4bc1312229281bf091563ef4806755f4846c4de4886163e48066ebd4886dd7c48465fb4497acd77093d55d7189fa8ea8a03b53e6160eb7eb1d3ff4fcab39b3a56be52f0953e9823c2585625bc71ba13c2541df9a9339296d485badd59b092408eb78425c778623dcec5072431d3b0f9ade473f5aa7cb8db1eb5c78ee41bec9aa49d7c4bd8a915178c7d092efc410bb8c6e7539656e2b3d2baa78615b56004256dc5068779950915d6689288bb56c42d3aa65c1876d69a3f7cb96a13fbcaafba740922fe5b5944ecb3b789ce444e21ae180af2887ca28028248a8862a2842825ca8872a20bd195e84674277a103d895e446fa20f518ba86dfb0399c279c046fd28938fb398265187a8fb4b3a225fd68c382c0be2420abed423ea130d889145539596e5735100ad5595ef72b539d1485159d975d58c55c08519134d88a64433d5e07ccc55b54ab4205aaa8873bf223239de205a136d88b6443ba23dd181c8b28311d191a8645b3a5199a842542da466eb7c4b1d0fbe9d4f35d82213311a834e1a9d149d6c9960f1c4004f743ad3c9a1934b278f4e3e9d023a85748ae814d329a1534aa78c4e399d2e74bad2e9c666974e773a3de8f4a4d38b4e6f3a7de8d4c2b543a7369d78dba5538f4e7d3a0de834a4d3884e633a4de834a5135bb38ec469b3ab5dba2937d774d3a648267adf2c65de77967d2e62cd45564331cda7f9570abeac26a7259d56743235ae673a2746ac4d36da3062a1d3ba908d2af13ba2d3694ba75d217b55342c6a061f3cd0c9a2d35163672be31296b4d6914e653a55e854a5538d4e753af1650dadc98c9ac4c6faacd159d1d9963929d9da3f43099d390c71f7a8b1bddaa176a1f389ceecd86e4491cf0e9d5d3a7b74f6e91cd039a47344e798ce099d533a6774cee9ccb75ce97ca3f39dce0f3a3fe9fca2f39bce1f3ab7e8dca67387ce5d3af7e8dcb7d92fbecc9591d8b5329d594327741ed27944e7319d797f4ae7199de774e6472fe9bcd22a9c6153abd5e8bca6f386a558b440e4676afdf54ac4e25bb6dfda8fa5e07bded15916c6a2f381ce96d6f799af1dcdb49ea7aeae9d6f5930ebca54d9dd1b5a5cc26321253a73ce2a74aed2999f5aa7b3ae6e3751f90697aa41e7a6f2f8ac418e468e22c72607c55b7b22e74c0ed73326392e391e393e390139a14c746f67e444aa792727667b6dfbbc9330747252d45372f86c4ece859c2b393772f8ec839c27392f72dee47cc86991d326a7434e979c1e397d720628f15386e48cb03b695644ce989c0939537b6db31d226746ce9c9c05394b7256e470aed6ea3d226743ce969c9de2ba97a5cf69eed575ab22c3ae3be41cc8b1bea2b4358bac3ec7aff29c4d4a47f5d6855d2ec677937324875f587e6459a62878de953e65b85a2f90a9a2c3b79d9554b2c424d09a65722a768ff35725a7464e9d1c9d9c06b1b3e5187c8db8376c5bd212b91ab98a5c9b5cb00d24f744ee995c875c975c8f5c9fdc400b9f5a1a921b0a5f3712156677c28d05ae9b909b16ab706ec8cdd42a223727f742ee95dc1bb97cc183dc27b92f72dfe47ec86d91db26b7436e97dc1eb97d7207e40ed1e65b46e48ec99d305c72a7e4cec89d93bb2077492e3fce24774d2e3f654bee8ef81fe91ec8b5c83d12dbd9729ddcb2ca5f4af105155948eaf156ee558db82cdfb56244f8278b2c7dc4a77aa6bdd8a8fe5028f78bf882dc1ab975fbc84fd2c96dd8fc1fd3a776c0456a6a46cd0e9fcc5710c7eda29b7040ae61f766e469e429f26c996596eb0fefc47cc93b3362f21cf25cf23ce1ebf9e405e4858aeb742f222f262f212f252f232fb79b81d6c9c9bb9077556593c9aac6587b3fc9bb917727ef411eefbfd85680bd7def4dde87bc16796df23ae475c9eb91d7276f40de90bc117963f226e44dc9e3eccdc95b20d9c9bfca7b89f792736638872bf24cf2d6e46dc8db92b7236f4fde813c8bbc237925f2cac4af9d57553e275bd31a7c7d5da54f5999ebd455c34ce4d4b675af802b5bfef9155949a6cc39d19539fd4ac1d76b90d714be9e61c74be6ab19553b9a2b5bb15960b2e46b82387c17568235faa94d0e85522f18bad80a5f916ff305a2f29ea5b59a32af2f7bebf703f927f2cfe43be4bbe47bc49e9c1f901f921f911f939f68fdb6da31f78bdd4e6562128fad7383fc94fc0c3adf9b937f29e6d7e0ebafe4df882d86ff20ff49fe8bfc37f91ff25be4b7c9ef90df55d15b2c80df23bf4f0cc81f923f227f8c13df38217f4afe8cfc39f90bf297e4afc837c95f93bf217f4bfe8efc3df99c674bd6e94b5c95bd55f652c14296e8e2cac39aff16e52c6551a941b1b49463fe257df6ac62d6dcaffc9daf7ffc1b5f685fbe3f12be99f8972ff925d16b3e5220164916fc93555e35f86c59a575f22be457b55197fc1af9fc53279fc1356df6347d83028d0245ec8d0410c7c9bbdae90af73907ca149c283853e050e052e051e073dccc8eb0ddf22908280889dfad20a620a120a520a320a7e042c195821b71d4133c10f29127052f0ade147c286851d0a6a0434197821e057d0a06140c899d99604cc18482290533c57e4254a360ae9250f933957f543017e53d4ffe24fb0762f35fe47fe61bb6d495cbb6f857be76f8b183c096722e459d597f83d5ffc03730295853b0a1604bc10e552ef69e8203051605470a4a32937d854b5ba6a0424195022e649d4d87b4baa5730a740a1a14307783428d4245a12d335eb32f1b9e283c53e850e852e851e853185018da5c0d861185318509852985fc33a7f042e195c21b85770a1fc45a12be88f31c7e842c6b62545392cfb9203eb2876a12a3c85bff0af7ffc8376cdb953d859d9ffaedeaa86a8dc2ee5f88bfca5baf335f0ee8ffc957f66d25f681a352e65be677b322f621ec51d8a77040e190c21185630a27d0b8d8530a6714cee52bdc65a5b8aa0c17142e295c51c8055b53b8a1704be18e42ced8417be4322b87c97759141e292c5158a6b042619542ce2adfae53c80569526850a4b1874a912db38eb3471e9d283a53e450e452e451e4531450145214a9b2ae2e3d957d288a792bcba3269120661311b1f13555defeffcd374afee4ab354b14a55a17e28d3d6f326ea010c64751a6245e6715f6952c44c1c5c8b52e6737ff2ff946178aae14dd28ba53f4a0e849d18ba237455ca416456d99e0b054c67d41518722ae402cdc27b2e2f436476b65674d8a7a14f5291a5034c4989f38a2684cd184a22945338ae614f1bd4b8a56149914ad29da50b4a56847d19e22ce8045d191222e5499a20a4555622310d529d2296aa821678c1f61281ab03510c4ccd7b734a3afc2bd0a772ad88a63c06ec33fa5afff8b0c6652b3f5f65ff9c537d67efcdf5869fdd04e96b2444aa3c688bf2afcf57f35a3fcc397b5586cb1c670bfc2ff09397275b5e65e6bb06733d07aaef08df9df098948e313c5678a1d8a5d8a3d8a7d8a038a438a23184f8a638a391b29c5993ab429ce29be507ca5f846f19de207c57ccd4bd97cef9be20fc52de25727ee50dca5b847719fe201c5438a47148f299e503ca57846f19ce285da8c3583935a52bca2d8a4784df186e22dc53b8af7eace3a6e507cb0d55bf1bbc86a2b700f6c3428b634593b77286bfefe63ab86a900fd8feda2f70fbef151e20b6b417149abdab6c6f1f151a906476b3f2afc14ca6c2e98ef17310720accb7264e87e45e20ed66e0efcfe936f99e28ac67e7c5ca5b846719d629de206c54d8a0d4a344a1425b6ac1a901025274ace943894b8947894f894049484c43a95c4942494a4946494e4945c28b95272a3e44ec9839227252f4ade947c286951d2a6a4434997929eea5728e95332a06448c988923125136dd4a0644ac94ce99cc29c127e0362dbeea8805df88d682e5b649670f7c357d6f41cfce79651b2b6fec71673b10cb29ed7fa577cc17e6bb2a2c4a464ad8db93c1be5a44ad61c88be88590465a3f615e12b4d255dd16e4363a1642bfb7c3c63be074a7658f1c1bdf04d582c4a8eda802196282953c205ae5252a3a44e894e0917b5498941a946a9a2d496e51952a2f444e99952875297528f529fd280381e49234a634a134a534a334a734a2f945e29bd517aa7f441e993d217a56f4a3f94b6b44d9b52960ea55d4a7b94f6291d503aa47444e998d2899a65eace29b3d28db4e35b16a465b3f095bcadaebb82e6bf09d3fc17e9169afb27df7446a7a5cd2e513a67c756303563695b38078cb8687028f0d575a50c11cf1227b751a3d35e33741699a1e335e02a51ba6a6765551a2b76b3d385ed36295d8a0aa72b4a4d4ad7946e58b421ffdc52baa3744fe981528bd223a525b56534652db5b4e8a5c9c10aa5554a6bc5b64ea94e6983524ed3a04ca34c5166cb4219195176a2ec4c9943994b9947994f59405948596427ec510eb5e6cb8ef95f3e545a9bb258a5bee250254bd49d2f4e29cb28cbe96caa4b9fc35f59709d29e77ce58589db1c707bfaff52a47213b2bbaf147cb32bfc91bdbc5276b3ef07ec4bf6b9231dd965ac0be7fe5ec883b267312883775e94bdf908e60be29a377bca4f195b3551465de9738e8fb1725433c57c4e598b32ce6887b22e653dcafa940d281b1632a26c4cd984b22965ec7e3aab5b8d32be6561eb39654b4d71c957859894ad29db50b6a56c47d99eb20365166547e2f0272b5356a1ac4a19df5ea74ca7ac415c316606e5ffafb4336b4e5f47a2f8fb7c8cd1bb2a24ac354f402010b6b084ed4d3eac2190785faae6bbcf6999fc972433f7deb955a754c636b6fc73bbd5b21aa4cda5aae2b65e077095ea9ce01af53a35ef7c84c72a8a64121317a6e80b9471474d26f23e8c664867daeacab4d5bbba715aa496b3fbc3d23adf4f7cdd8dcc793199cbbff20d78d9a9ce4a70b74602b17bb83babbd3309edc78330758fb67c91f7eedb26dcd395b2fb6a7f15931ae70eee19ee05ee1bdc77b8ae79e2c578707db8812da9102e57c67013b8a9363c0e8f590743a23dcfd8b4e2195b70db701fe076e076e13ec2edc1edc31dc01dc21dc17d823b863b813bd56b329dc17d863b87bb80bb34172334d5a358aebb82bb867b03b700f756d55af2ba40e0ced58a87659d8bbac1a3951860c32d1bc3af54943312974a707fb2fcc2b70ab7064f3b7c4c3c05f9ad5f1976f6398a066b74595e9f7b305ac1dba85a59deafcb9a2dbc1da56a45787b133dc33ba81aad9e2b8faa06782ff04ef05ee19de15de0bdc17bb7a50bcf83e7c30be085f02278b13e708744df71530a2fd377dc5358c36b685387d784770faf05af0def015e075e17de23bc1ebc3ebc01bc21bc91a3623d5e295380f7046f0c8f6d1117a67a39235fa37953d7b4df2bdfa2671b2be298c19b99326bcb4b98c35ba88a31d535bc25bc95dc808f78f68ff50bdc0fbede5afeaaaf5090f1378ff7f6a4d3aa8c60ca805b598cd48a76ca8f3a234ad6be201f75c599f1c26e65044074e74ceb269b3bf3aad964f08a966fc9c27db3e22da9c0abc2abc1d762dabe826fe03b3280e06ff463579f4f7a50d423adb367f85bedccf422d1f321d8a5f4f7f00ff08ff05fe09fe0bfc23fc3bfc0e771dee1bbf03df83efc007e083f821feb51590642d78142431d62d5e179e9dc581f5218ebe94a5e89b5ab4e895734839fc2cfe0d7e1374c8d6513fe3d252fd73fdaab3f273b686f75e5eb84ac6e0b7e1bfe034cd3f84d9b0155744a9a10b9261f1ccab3fcf2114f71cd24eb77acba70fa262ec27f14e73bafc2ef992dabd857cf15e1eb0fe093d108fe13fcb19a10d604fe14fe4ccd357ca29cc35fe89b5b5de6c212fe0afe1afe8d560ded706b013ecf75079fa728c12f6bd3d0b71bf815f83c570d810619060681a3d5691cec64b8c78fd5a86e5e2b0836149b38ba603d6b2a372074b5b955fdbdd22b045bd549d4e8c11cee215fdc3b6a21c3680c42820325493a7f1eaea4a33dfcce3738227871922e8213023ecb3ce8d9b0c31ad0756961972b78b37a975f19ce7a5c96ad816be521f089989bc857c6ee7ef01d16c566830041882042102348ac099f557f41a37616e49222c810d4f5b08d80dee05e9fca74175c40d0d42d20e0420b01b73e20e82060651e759358598d3e8201822182118227046304130453bdd2f40fea18306c308cfc82998a3bba32125bd67d45c71a3cabe205c11cc102c112c1cad13cda9a882de81b996af28e352f4892e4dfe16b0605b3e495df22b883b4e04450728a9b1f2e42bc4420326623b26bae4969d63f185db2fea140eec2d7bd3520858a0ac7eaa926fe37a822a821d408154223738d916fafa77a6d19547c7fd0ed1ec28dee8ef5e656ef1c845b49a06816453781de5f10ee10eec1702a3c82e12a1fb8f015e15937ee1072eb1bc277842e420fa18f304018ea73a8274a99ba3abeabe8cc808c8104c3358491f00d63a578d204618a304358372f05845cdfe082ea6df57d196113e1bd6498fd45e7408793cbda6fd89279b29e58bfb6ba4c4cb872a60db36dc8083131850f790ab0a00c3bd08c57d60c306488de5266a327c11c2df7a0ac47ee49fc60a0d61e5488b08bf01161cfb663fcd8b7e2a186e23718b48523844f08c708279a9de6708a7086f05937ab08e762b9e142b70865897085708df0066141ef78f1b73a5b20bc13471116f531d4b7dc5442c84d1584fc7a4df3498ab4ae8f747da8970a91b253473b741aba5542047dfb8c68233d02c60fc10d4d98923ceaee596dda88b632f3aff09d7f15a2dd574922a57ee4bdc965f9467b99d2228e111d101d11bd984d45921fbca36da68e4626262a4bd0169d10bd8ab5466702350ef7bf38a35b92159ad19b917c9908d1bb84195ce36d10b9883c31587ade88571b200ac1c0d37b75c67b443c698228459421aaeb6d490286886aeac61ad13da296d86f078878b50f883a88ba881ef5f3bb1e76f4982ddb16510f515f9fdf110d100db5e13147889e543c653fc25ca08e9e7edeeb89463456310fcb9e6a57b7abea85079c1a6d47cc5603c92e5d5f04ee8392c474f1bf4b710e7ce4c5052f3f9763d664f6a9945c55496a472eeb1f9eab606815f1862c102d11ad2461e7de33bbb228476c1ccbf715d1dafa07c96b4774238869a402d44849c7ed1c9c798d37806b24d8880ae282a35bb1d9e8ee2af1bf3c69d1f2e561cb882a88b8a686582356880d624797eb88a19ff6daf4106f106f11ef10efff986f7c407c44fc82f8a42efcca2be2b3d203c4174abd1610bf217ed73717d56e18d564dc2a8923920369d3ff69bc6cf1c837cc183c207629532d7c2ac5ea79933e95741144dcaee4b2f61b7bcede43ec230e1087ce24d0f47471f4f337c7f9cf8ee96d6bf74e952ea291a7fe81262f4a7e116b9322ceecfa947b22ae93af982a818a5bb0e272dcb06a22be47dc02bb58c754f797881f10771077113f2226d63ee281de93d410f108f193f08dc77aaeb433fdc457cc9f7cf90cc513c453c4333538217e568f465cb0e9485fe362d480b8e7baf2a8fcbebc419ff418b70a5fc60c790e59c7fa84cb19f182c12fe2a5d5ea53c9bb82edf85369a3e0ea35a4eb4439df35e21bc4bc27b78825a1cf99f29a8bf96f8eaf7cd1b1e9ec92c28eb86455fe45152b86bd75bba922bf21d8d69de1400de6886bb62b616d36d1a2f0514d0e6af68244a9fe08899119351320d9c8bcd1779ee40596d648b64876e29acf5013eebcffc97777ccf96a3cfec637392039aad11909f73fa9f603925775ecaa7255f5943a75295de921e10e17246f6adb53781228f2687fb4fb84dbae49b7825dadcd2b92772bf773c93e31b77e29d99f5618e7a5e59b78ec1923f19104d23123e82444123995a1d96dec9f544b2a94393f3b0b5e001f5d866b7db32b7e2a25a3fd3c43c230f322ff2e351cca9a05e38a929a9d90a44239c9acea481a6ac4a8c357f44e4913c93d921692b666d096104a47b7fa60c8983c22218ebed1bc0103244324233deb0b5f6a3efc8d2fbb7cc91392b11a1e914cd4b98c64aaa2848d98a2eb4f58b7672473552869dedd2aefeb42494bd392e1f4244fd6cbdbae690e9780843e35e9995de353f9fdfb49969b7b354c652c63687f5f28a3bfc90ac95ad273921b24e47bebf86fd7dc489bc1e724732477488a26ae980b2b4ad0e54f25f747529189f6aae4426a35e2765e4a48b59a6ccc53ec5c3ca48ae2023f9ad5b37aaa2035481d7d6aeb97a3247da51ba45ba43ba47ba407a45cf982f484f415e919298d6e84f44d376e7ee52b53a87ef0d517eeff8ed455eb895a2f8d6922e5797dfbee9ca70b908632b646b8c721715cf9a6f689e6a3ddaef249a719122bd258a28b7c60e2cbdbf46fdfbbcbb8910c321d6404ef62ff1f1c69a2ce3c41ea8c79a919d23ad2868ee67656c2968e66f23ff6fdc49c7a246bdedf64aae37a292fcd3295c9f56ce9b065981df365b518ca9a6a572ddf4c784ba929e934d5d828394b931fcd652ae5db831a1491deeb177269216d237d40cafa74913e6a2741da43dad77d221e08df7478e5ebf484efacff1bdf94f4c9658c748274aaba7b65b86686f459de845516a6c2fb34575b2343eeec1c1362f22e2f158dbc1727d9dfe0a60b53dae7a36da634fd54e6ef303f972f3cd752f537b972be2b67ce1bbb467a83b460a21b92fac937341f5372b7ad85d674b831e95ea889955d4b21157e538a789ce021e76bea45eaca57f6e1d5de21e59a92ae7387b2a6934d5999fe385821adea4da60d2dba864c2353c88c0e2a0cddf45eebe349f8266b990739ea23833ebbc836c8b6c876c8f6badae2432a2f76b303b223b217c5703e3b89f5a999a8dd94e1867df1aaf1c37581eb29eec0277d734f94c85ed5eee953a92b937c59ed2411e2ba4ce3ed6f55f798cbf2cdce0aace505d91bb27764ac90f783ef754a636bc5f2c80703d994ee0550bafb217efc569ff8e6887ff0a58b9072e120f3e92290059a0e34ed5ba021b2681c2cc6ecc26631b2446f9f3ff8ae243e63fbf63ddf145986ac8eacc1a7185913d93db216321eff416d12c9c2cb09521f70917572fd842b37a02c88b73db2fb2a31d57c817c77bbebf27aa9c707f530565ec6d2c6bfd9cc647306bcc8bae46b0abb5ff95eedf703ae79e16d78344fa1c0ca7a3f65d97d9570b47cc9d17ea5af96be94bff0a5774636509d11b2a1aef3f8230bf4491be70bdff1777c694753643376ea4ca1828cbbf12b0b644bba57642b64dce70659e1ca77e17ec22a405b9dab72b26ca672b5cbb9fdfe05bed5b6be4b75b9cfd2f28d8bd2b5fdca97ee35e74be30d8d6dafa6cec5ff3b7c0937e74bc9cac9fa83efadea3d22bbd3f5b7ffc2b7f83d5f43b2a55ff9ea0a81d26c09ba6af9d650d7395ff5dc465d09df0f57207ceb8658c53b5bfdc6d7c603ff0f5fc2b5b2ff0fb3f67fe5fbc33fc8ef310d1df1d43a87038d9770d91c91afccfb4e4675fc9445f6555ff9a2bec911ff2fbedff887e2f7fe21e75bdfea75599bba3e6c50df7dc7b7f5d37ed548f8da7f5ffcb05c3b14547ce3c2d58a73d73cba27e2bc35fb26bfe423f524cf2cb92ed3ff768f62bf56fffcf7bffef11f813c3ff4 - - - - - pbnOK - clicked() - PluginGuiBase - pbnOK_clicked() - - - pbnCancel - clicked() - PluginGuiBase - pbnCancel_clicked() - - - pbnSelectHTML - clicked() - PluginGuiBase - pbnSelectHTML_clicked() - - - - pluginguibase.ui.h - - - pbnOK_clicked() - pbnCancel_clicked() - cmbSelectLayer_textChanged(const QString&) - pbnSelectHTML_clicked() - - - diff --git a/plugins/launcher/COPYING b/plugins/launcher/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/launcher/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/launcher/INSTALL b/plugins/launcher/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/launcher/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/launcher/Makefile.am b/plugins/launcher/Makefile.am deleted file mode 100644 index 52b41d91d8e0..000000000000 --- a/plugins/launcher/Makefile.am +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - -plugindir = ${pkglibdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libQgsLauncherPlugin.la - -## qt designer user-interface files -plugin_UI = qgslauncherpluginguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = qgslauncherplugin.moc.cpp qgslauncherplugingui.moc.cpp - - -libQgsLauncherPlugin_la_SOURCES = qgslauncherplugin.cpp \ - qgslauncherplugin.h \ - qgslauncherplugingui.cpp \ - qgslauncherplugingui.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libQgsLauncherPlugin_la_SOURCES = $(plugin_MOC) - -libQgsLauncherPlugin_la_CXXFLAGS := $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(GDAL_CFLAGS) $(QGIS_CXXFLAGS) -libQgsLauncherPlugin_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) -lqgis - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm diff --git a/plugins/launcher/README b/plugins/launcher/README deleted file mode 100644 index 702aa1e739bb..000000000000 --- a/plugins/launcher/README +++ /dev/null @@ -1,4 +0,0 @@ -Instructions for building this plugin from CVS: - ./autogen.sh --prefix= - make - make install diff --git a/plugins/launcher/autogen.sh b/plugins/launcher/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/launcher/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/launcher/configure.ac b/plugins/launcher/configure.ac deleted file mode 100644 index 8b5db48d9a54..000000000000 --- a/plugins/launcher/configure.ac +++ /dev/null @@ -1,48 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(qgslauncherplugin, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([qgslauncherplugingui.h]) - -AM_INIT_AUTOMAKE(qgslauncherplugin, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(BOOST_PATH) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/launcher/icon.xpm b/plugins/launcher/icon.xpm deleted file mode 100644 index 6cc3533115a3..000000000000 --- a/plugins/launcher/icon.xpm +++ /dev/null @@ -1,259 +0,0 @@ -/* XPM */ -static const char *icon[]={ -"22 22 234 2", -"Qt c None", -".L c #b40000", -".V c #ba0000", -".B c #bc0000", -"bH c #bc5300", -"br c #bd5400", -".t c #c50000", -".l c #cd0000", -"am c #d26400", -".e c #d60000", -"be c #7c0000", -"bN c #b95000", -"a8 c #7c0000", -"#1 c #840000", -"#0 c #8e0000", -"#N c #970000", -"#y c #9f0000", -"#k c #a80000", -".7 c #b00000", -"aU c #c85c00", -"bq c #7c0000", -"bz c #7c0000", -".W c #ac0000", -"bn c #c35800", -"bM c #b95000", -"ax c #cf6200", -".# c #e00000", -"aw c #7c0000", -"al c #7d0000", -"aa c #830000", -".X c #ac0000", -"bA c #bb5200", -".K c #c00000", -"ab c #7c0000", -"bL c #b85000", -"a9 c #c55a00", -"aJ c #cc5f00", -"#O c #8b0000", -"#z c #930000", -"#l c #9c0000", -".8 c #a50000", -"bG c #bc5300", -"a3 c #7c0000", -"bd c #c65a00", -"#2 c #840000", -"an c #921900", -"bK c #b85000", -"bi c #c25700", -".f c #d80000", -".Y c #ad0000", -".M c #b60000", -"bJ c #b85000", -".C c #bf0000", -"by c #bf5500", -".u c #c70000", -".m c #d00000", -".U c #b70000", -".a c #e30700", -"a7 c #850802", -"a2 c #850a05", -"#Z c #8d0a0c", -"#M c #940a0c", -"bh c #961909", -"#x c #9d0a0c", -"#j c #a50a0c", -".6 c #b30600", -"bI c #b74f00", -".A c #cb0600", -"ay c #d36c0f", -"#3 c #830000", -"aR c #840804", -"aB c #840905", -"aO c #8c201f", -"bp c #951a0d", -"aN c #952f2d", -"aq c #96190b", -"a1 c #9f2c00", -"aC c #a12e16", -"#L c #a38897", -"ar c #a42a10", -"af c #a61707", -"#i c #ac8e9c", -"ao c #ad361c", -"aA c #ad5f5d", -"ac c #ae351a", -"ag c #b22609", -"aZ c #b56d60", -"#w c #b7817c", -"#P c #b8371e", -"#7 c #b91503", -"aP c #b94725", -"#A c #bd3216", -"#8 c #c02202", -".9 c #c2250a", -"#m c #c22e0f", -"#v c #c2c2cf", -"bs c #c76504", -"bF c #c86700", -"#4 c #c9471a", -"#V c #cb1300", -"#W c #cd2103", -"#g c #d1d1da", -".4 c #d1d1db", -"#. c #d45337", -"#h c #d5bdb7", -"aT c #d65d29", -"bo c #d66435", -"aV c #d67809", -".s c #d91700", -".J c #d93c16", -"bm c #d98726", -".5 c #da744c", -"#I c #dd1404", -"a# c #dd8562", -"ak c #dd9881", -".Z c #dd9b9c", -".R c #dddde4", -"aS c #de6025", -"a4 c #de632b", -"bf c #de6833", -"aI c #de7e55", -"av c #de8a6a", -".2 c #dedee5", -".N c #df6e53", -"aK c #df8c23", -".3 c #dfc9c2", -"bE c #e19300", -"bx c #e29415", -".d c #e30600", -".k c #e32300", -".D c #e39b9c", -".g c #e5300b", -".v c #e56646", -"aQ c #e67237", -"bB c #e6a713", -"aY c #e6c8a4", -".1 c #e6e6ec", -".b c #e71700", -"#J c #e74c16", -"#c c #e75006", -"#b c #e78461", -".G c #e7e7ec", -".c c #e81d00", -".n c #e84c1c", -"#a c #e87c54", -"az c #e8b076", -"## c #e97344", -".T c #ea7039", -".Q c #ebc7b4", -"b. c #edac21", -".F c #ededf1", -"#Y c #ee610e", -"bD c #eeac00", -"aE c #ef702a", -".P c #f0c4aa", -".0 c #f0f0f3", -"#X c #f16914", -"#u c #f26b27", -".S c #f2bfa2", -".E c #f3f3f6", -"#d c #f47729", -"#K c #f4792c", -".O c #f4c4a8", -"#t c #f56b1e", -"#e c #f58138", -"#f c #f58844", -".H c #f5c7ad", -"#9 c #f66002", -".h c #f69968", -"a6 c #f7762a", -"aF c #f77b31", -"bg c #f77d37", -"ap c #f78340", -".w c #f7bf9d", -".x c #f7c9ae", -"aM c #f7ead0", -"#H c #f85f08", -"ah c #f86a11", -"#s c #f86c14", -"as c #f87625", -"ae c #f8782d", -"aD c #f88238", -".z c #f8a774", -"bc c #f8d28a", -"#6 c #f96c1a", -".y c #f9c7a8", -".o c #fabe98", -".I c #fabe99", -"#U c #fb6007", -"a. c #fb6c13", -".i c #fbcaaa", -"bC c #fbcb0d", -".p c #fbccae", -".r c #fbd1b7", -".q c #fbd3ba", -"#r c #fc8d48", -".j c #fcdac4", -"aL c #fceebf", -"#G c #fe6302", -"ai c #ff6b0e", -"#T c #ff6d12", -"at c #ff751e", -"#5 c #ff7a26", -"#S c #ff7e2d", -"#F c #ff8031", -"a5 c #ff8132", -"#B c #ff8133", -"#C c #ff8538", -"ad c #ff863a", -"#R c #ff863c", -"#n c #ff8a41", -"#Q c #ff8c47", -"aG c #ff9049", -"#D c #ff904a", -"au c #ff9350", -"#o c #ff9c5e", -"#E c #ff9d5e", -"aH c #ff9d5f", -"#p c #ffaa75", -"aj c #ffaa76", -"#q c #ffbb91", -"bj c #ffda3d", -"bw c #ffdc5d", -"bt c #ffe350", -"bu c #ffe86a", -"bv c #ffe876", -"bk c #ffeb7e", -"aW c #ffed9b", -"b# c #ffee92", -"bl c #fff0ae", -"ba c #fff1a6", -"aX c #fff4b9", -"bb c #fff7cc", -"a0 c #fff7e1", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.d", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.e.f.g.h.i.j.k", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.l.m.n.o.p.q.r.s", -"QtQtQtQtQtQtQtQtQtQtQtQtQt.t.u.v.w.x.y.p.z.A", -"QtQtQtQtQtQtQtQtQtQtQtQt.B.C.D.E.F.G.H.I.J.K", -"QtQtQtQtQtQtQtQtQtQtQt.L.M.N.O.P.Q.R.S.T.U.V", -"QtQtQtQtQtQt.W.X.X.X.X.Y.Z.0.1.2.3.4.5.6.7Qt", -"QtQtQtQtQt.8.9#.###a#b#c#d#e#f#g#h#i#j#kQtQt", -"QtQtQtQt#l#m#n#o#p#q#r#s#t#u#e#v#w#x#yQtQtQt", -"QtQtQt#z#A#B#C#D#E#F#G#H#I#J#K#L#M#NQtQtQtQt", -"QtQt#O#P#Q#R#B#C#S#T#U#V#W#X#Y#Z#0QtQtQtQtQt", -"Qt#1#2#2#2#2#3#4#5#6#7#8#9a.a#aaQtQtQtQtQtQt", -"QtQtQtQtQtabacadaeafagahaiajakalQtQtQtQtQtQt", -"QtQtQtQtamanaoapaqarasatau#pavawQtQtQtQtQtQt", -"QtQtQtaxayazaAaBaCaDaEaFaGaHaIawQtQtQtQtQtQt", -"QtQtaJaKaLaMaNaOaPaQaRaS#C#DaTawQtQtQtQtQtQt", -"QtaUaVaWaXaYaZa0a1a2a3a4a5a6a7a8QtQtQtQtQtQt", -"Qta9b.b#baaXbbbcbdbeawbfbgbha8QtQtQtQtQtQtQt", -"Qtbibjbkb#bablbmbnQtawbobpbqQtQtQtQtQtQtQtQt", -"brbsbtbubvbwbxbyQtQtawaBbzQtQtQtQtQtQtQtQtQt", -"bAbBbCbDbEbFbGbHQtQtbzbzQtQtQtQtQtQtQtQtQtQt", -"bIbJbKbLbMbNQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; diff --git a/plugins/launcher/qgslauncherplugin.cpp b/plugins/launcher/qgslauncherplugin.cpp deleted file mode 100644 index da9619734325..000000000000 --- a/plugins/launcher/qgslauncherplugin.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*************************************************************************** - plugin.cpp - Import tool for various worldmap analysis output files -Functions: - -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// includes - -#include -#include -#include -#include "qgslauncherplugin.h" - - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include - -//the gui subclass -#include "qgslauncherplugingui.h" - -// xpm for creating the toolbar icon -#include "icon.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "QgsLauncherPlugin"; -static const char * const description_ = "Launches a program or script from within QGIS"; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -QgsLauncherPlugin::QgsLauncherPlugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ -} - -QgsLauncherPlugin::~QgsLauncherPlugin() -{ - -} - -/* - * Initialize the GUI interface for the plugin - */ -void QgsLauncherPlugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon),"&Run...", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Launcher", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("Run...", QIconSet(icon), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Launcher"); - toolBarPointer->setLabel("Run..."); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void QgsLauncherPlugin::help() -{ - //implement me! -} - -// Slot called when the buffer menu item is activated -void QgsLauncherPlugin::run() -{ - QgsLauncherPluginGui *myPluginGui=new QgsLauncherPluginGui(qgisMainWindowPointer,"Run...",true,0); - //listen for when the layer has been made so we can draw it - connect(myPluginGui, SIGNAL(drawRasterLayer(QString)), this, SLOT(drawRasterLayer(QString))); - connect(myPluginGui, SIGNAL(drawVectorLayer(QString,QString,QString)), this, SLOT(drawVectorLayer(QString,QString,QString))); - myPluginGui->show(); -} -//!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating -//layer -void QgsLauncherPlugin::drawRasterLayer(QString theQString) -{ - qGisInterface->addRasterLayer(theQString); -} -//!draw a vector layer in the qui - intended to respond to signal sent by diolog when it as finished creating a layer -////needs to be given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); -void QgsLauncherPlugin::drawVectorLayer(QString thePathNameQString, QString theBaseNameQString, QString theProviderQString) -{ - qGisInterface->addVectorLayer( thePathNameQString, theBaseNameQString, theProviderQString); -} - -// Unload the plugin by cleaning up the GUI -void QgsLauncherPlugin::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new QgsLauncherPlugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/launcher/qgslauncherplugin.h b/plugins/launcher/qgslauncherplugin.h deleted file mode 100644 index 5b0554b0e3a8..000000000000 --- a/plugins/launcher/qgslauncherplugin.h +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - plugin.h - Functions: - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include -#include - -#include - -/** -* \class QgsLauncherPlugin -* \brief OpenModeller plugin for QGIS -* -*/ -class QgsLauncherPlugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - QgsLauncherPlugin(QgisApp * , QgisIface * ); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ QgsLauncherPlugin(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawRasterLayer(QString); - //! Add a vector layer given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); - void drawVectorLayer(QString,QString,QString); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/launcher/qgslauncherplugingui.cpp b/plugins/launcher/qgslauncherplugingui.cpp deleted file mode 100644 index 072204f5b87f..000000000000 --- a/plugins/launcher/qgslauncherplugingui.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/*************************************************************************** - qgslauncherplugingui.cpp - GUI for the launcher plugin - -------------------------------------- - Date : 09-Apr-2004 - Copyright : (C) 2004 by Gary E.Sherman - Email : sherman at mrcc.com -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -#include "qgslauncherplugingui.h" -#include -//qt includes -#include -#include -#include -#include -#include -#include -#include - -QgsLauncherPluginGui::QgsLauncherPluginGui( QWidget* parent , - const char* name , bool modal , WFlags fl ) - : QgsLauncherPluginGuiBase( parent, name, modal, fl ) -{ - // populate the combobox from the settings file - QSettings settings; - int count = settings.readNumEntry("/qgis/launcher_plugin/command_count"); - QString commandNum; - for(int i=0; i < count; i++) - { - std::cerr << "Reading key " - << "/qgis/launcher_plugin/" << commandNum.setNum(i) << std::endl; - cmbCommands->insertItem(settings.readEntry("/qgis/launcher_plugin/command" - + commandNum.setNum(i))); - } - // Set flag to indicate first run is pending - firstRun = true; -} -QgsLauncherPluginGui::~QgsLauncherPluginGui() -{ - // delete the QProcess object - //delete proc; -} - -void QgsLauncherPluginGui::chooseProgram() -{ - QString program = QFileDialog::getOpenFileName(); - if(program != QString::null) - { - cmbCommands->setCurrentText(program); - } -} -void QgsLauncherPluginGui::runProgram() -{ - QStringList args = QStringList::split(" ", cmbCommands->currentText()); - if(args.size() != 0) - { - txtOutput->setText(""); - proc = new QProcess(this); - connect( proc, SIGNAL(readyReadStdout()), - this, SLOT(readFromStdout()) ); - connect( proc, SIGNAL(readyReadStderr()), - this, SLOT(readFromStderr()) ); - connect( proc, SIGNAL(processExited()), - this, SLOT(processFinished()) ); - for(int i=0; i < args.size(); i++) - { - proc->addArgument(args[i]); - } - // If the command fails to start, throw up a critical error msg - if(! proc->start()) - { - QMessageBox::critical(this, "Unable to Launch", "Unable to start " + args[0] + ".\n" + - "Check to make sure it is executable and you have permissions."); - }else - { - // add the program to the combo list - //cmbCommands->insertItem(cmbCommands->currentText(), 0); - // If this is first time around, remove the default tab - if(firstRun) - { - tabOutput->removePage(tabOutput->currentPage()); - firstRun = false; - } - // create the tab and textedit box for this process - QTextEdit *te = new QTextEdit(); - // set textedit properties - te->setReadOnly(true); - te->setFamily("Bitstream Vera Sans Mono"); - te->setPointSize(11); - te->setWordWrap(QTextEdit::NoWrap); - // Create the tab page containing the textedit box. The - // tab title is the first argument (program name) - tabOutput->insertTab(te, args[0], 0); - // set the current output to be the new tab - tabOutput->setCurrentPage(0); - // point the output stream to the new tab - textOutput = te; - // Show the command in the textedit box for future reference - textOutput->append("COMMAND: " + cmbCommands->currentText()); - } - - }else - { - QMessageBox::warning(this, - "Nothing to execute","Please specify the name of a program or script to execute"); - } - -} -void QgsLauncherPluginGui::readFromStdout() -{ - if(proc->canReadLineStdout()) - { - QString line; - while((line = proc->readLineStdout()) != QString::null) - { - textOutput->append(line); - } - } -} -void QgsLauncherPluginGui::readFromStderr() -{ - if(proc->canReadLineStderr()) - { - QString line; - while((line = proc->readLineStderr()) != QString::null) - { - textOutput->append(line); - } - } -} -void QgsLauncherPluginGui::processFinished() -{ - delete proc; - // scroll the output to the top - textOutput->setCursorPosition(0, 0); -} - -void QgsLauncherPluginGui::cleanUp() -{ - // Write out the command list to the settings file and then exit - QSettings settings; - - settings.writeEntry("/qgis/launcher_plugin/command_count", - cmbCommands->count()); - // write the commands in the combo box to the settings file (~/.qt/qgisrc) - for(int i = 0; i < cmbCommands->count(); i++) - { - QString commandNumber; - settings.writeEntry("/qgis/launcher_plugin/command" - + commandNumber.setNum(i), cmbCommands->text(i)); - } - reject(); -} diff --git a/plugins/launcher/qgslauncherplugingui.h b/plugins/launcher/qgslauncherplugingui.h deleted file mode 100644 index c21d0cb2bb64..000000000000 --- a/plugins/launcher/qgslauncherplugingui.h +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2004 by Gary E. Sherman - * sherman at mrcc dot com - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef PLUGINGUI_H -#define PLUGINGUI_H - -#include -#include -class QTextEdit; -class QProcess; -/** - \class QgsLauncherPluginGui - \brief Launches external programs from QGIS. - - The GUI handles the starting of processes and display of output from - stdout and stderr - -@author Gary Sherman -*/ -class QgsLauncherPluginGui : public QgsLauncherPluginGuiBase -{ -Q_OBJECT -public: - //! Default constructor - //QgsLauncherPluginGui(); - QgsLauncherPluginGui( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~QgsLauncherPluginGui(); -public slots: - //! Run the program specified in the command combo box - void runProgram(); - //! Choose a program to run by browsing the file system - void chooseProgram(); - //! Slot to read program output from stdout - void readFromStdout(); - //! Slot to read program output from stderr - void readFromStderr(); - //! Slot to delete the QProcess object after the program has exited - void processFinished(); - //! Slot to save the previous command list and close the dialog - void cleanUp(); - -private: - //! QProcess object used to launch a program - QProcess *proc; - //! Pointer to current text output widget - QTextEdit *textOutput; - //! Flag to indicate if this is the first run - bool firstRun; -signals: - void drawRasterLayer(QString); - void drawVectorrLayer(QString,QString,QString); -}; - -#endif diff --git a/plugins/launcher/qgslauncherpluginguibase.ui b/plugins/launcher/qgslauncherpluginguibase.ui deleted file mode 100644 index d9d381ed9193..000000000000 --- a/plugins/launcher/qgslauncherpluginguibase.ui +++ /dev/null @@ -1,264 +0,0 @@ - -QgsLauncherPluginGuiBase - - - QgsLauncherPluginGuiBase - - - - 0 - 0 - 592 - 294 - - - - - 255 - 255 - 255 - - - - QGIS Launcher - - - image0 - - - - unnamed - - - 0 - - - 0 - - - - layout2 - - - - unnamed - - - - textLabel2 - - - Command - - - - - cmbCommands - - - - 7 - 0 - 17 - 0 - - - - true - - - - - btnSelectProgram - - - - 22 - 22 - - - - ... - - - Select program tor execute - - - Select the program to execute by browsing the file system - - - - - btnRun - - - - 26 - 26 - - - - - - - image0 - - - true - - - Run the selected program/command - - - Run the selected program/command and display the output - - - - - - - textLabel1 - - - - 0 - 5 - 0 - 0 - - - - - 340 - 0 - - - - <h2>Run an External Command or Program</h2> - - - - - spacer2 - - - Horizontal - - - Fixed - - - - 130 - 21 - - - - - - pbnCancel - - - - 62 - 25 - - - - &Close - - - Alt+C - - - - - tabOutput - - - - 7 - 7 - 0 - 0 - - - - - tab - - - Output - - - - unnamed - - - - txtOutput - - - - Bitstream Vera Sans Mono - 11 - - - - AutoText - - - NoWrap - - - true - - - - - - - - - - 789c85d5594fe3481405e0777e05eafbd61add8e1ddbb1359a07084bd8f775340f37b643584208847534ff7d2a754e197aba99c648f0c9c7e5bab5f9dbd7f9d3ddadf9afdfe61ea636bd2ce7cba1ddcf7fad1e47a3d73ffffae3efb92f713cef7ea38efbf3e5b7b92f7bd3f9727e7b7c5bcf203d07e9f45beec7fb6de6bcdd38a6737ae2fd9e7fa5f3563eb3f5e1b81579cb60e62269f27734f3b20747a1fd83c668cfe0b88c8b9935f12e9bf66a3ae447705ce2beeecf6ccdfbb54d87f76fc051c2f60ee1388f60e6e3921ec3795124bebd4deff7feacc1ed84f547705aa5e6f3319c5745e9bd3273ffbd7f7b74e8cf261c27ac6f174e589f5dc35995f9c9950acea34edfb7e7e7a75f35fd5b829b7a2fe0768bf5ddd3ecbf957092c478df3a9cb23debd229fbef9f2fd3e67dcb701cea3ba0598fa674c9fa9ee1d09e8de9825e8233de971276135ef9f6fc78944dbdfa42877a1fe128f4ef090efd93053809f397c369c5fb677016b13f3b74a8df8f7fd5d4af8770da6a473e3fa02bac67d985c3f3b6188cbc9cd315c7e702ee141cbf08eed77dacc71db88a2bbfbfd5ef8faa6efa3381c3fceb32dce6fa36e6b388f37ddbd8f7d71ee902fdd355ba4afdfa53d45377d2c4af77e9d0bc6f0b709ea27d590de6fa3da58b0ccf1774c53ceaab8b226ffbf76d05733f6dc3a5db72de6b7055d799b7cc5c67cd78181dc6a30f37e3730537eb7700bb0312eb6304271c3f3d85c3fed007384b13cc7f0577228edf091ceab76db808eb6b8d4ed9fe1bcd7a6d0336de37f6b734c37ae8c2eec27af0fba5aea3703edec0aeffa8e70576eb1b4ee10ee75f3782dbf05130ead3633accf7166c35ebb90be67cb6e07edcc17cf6e032e37a5e84eb7ae0e74ffc7939c8c2fe9367bae0f9658dd1ff7e30dea7677027e5febba50b3a0be67e7da22bced7399cb37ed90f66fd2dbaa02fe082eb59a770bfe67a5d0fe67c2dc16566b8ff481b6c02d756617d2fc08398e3e3e7733048795ec835dc8cd736cdf343b682397e425774b731f2c77027a58f82399f8b34c75bd61b63bca67438ff8670cefd204963dcbfa453aeb78ce6f8ca035dd1da18e7c7155c44f44930cfab0e1dbecf584f034bb91e73dae802ee1bbfff233acc27d6cb20cc9f6dd2c6f37a18ccf9bda56be6393e559ce3fb7d17ccfd306eecbf77f6421bc7e73218e79ff5e81af5d9325cc7dc9f2bb4617dda6a30eab5d7c6be3f36a16bd46fc3c6e8bf06b37ff7f020c6fab6b7c6c8b3bf6e0720ff108cefb9dd04e3fcde9bfeea5251d3be966abfce6ba5b50ef442877aa957bfcaebb5cbdfe8486f75ac773af9ffbcdebbeb41a7faa84fee89677df9bfbcbebaeb4d177451bbbae4deb1acf79fe775c55dab2eb7a43d5dd375dd707efd6f5e373f5c5baeedaecb6eeb8eeeea9eaeec4dbfcfebbe1ee8a11ee9b19ee8a99ee9b9b65c36d258dbba394b7ccc6ba2a966dad15c0b511131e9ebb9945249ad0932ef7919c8850ce552aeb4e3fe5ecb8d4e6424b732963b198436435e26722f0f2e3d7b62eadabe964779926779915799bcf7187979fb702dc8a27465499665c53db72a6f1fc7e3fb7aa5276baefd75d9904dd9926dcd65477a9fe56557f65c7e5f0ee4508ee4584e5cfef4b3bc9cc9b9b4249258da92482a99afbcf3f3bce452989a9859df4aab24b67a365636f8595e72bbb0a15dda955ddb8d8ddc3b7a762b433d9bfdf763dec6766713bb774f3c9893abbb678ff6e42af92edde49fedc55efd136fb660e3d948d9e28f69e4ad6b4bb66c2bb66a3d5bb32e4736fe31cdfcba6dd8a66dd9b6edb8ffd799ff499af9dd590ad7677ba7c9fff3fbdcbf83cca7d0 - - - - - pbnCancel - clicked() - QgsLauncherPluginGuiBase - cleanUp() - - - btnSelectProgram - clicked() - QgsLauncherPluginGuiBase - chooseProgram() - - - btnRun - clicked() - QgsLauncherPluginGuiBase - runProgram() - - - - cmbCommands - btnSelectProgram - btnRun - pbnCancel - txtOutput - tabOutput - - - qgslauncherpluginguibase.ui.h - - - cleanUp() - chooseProgram() - runProgram() - - - diff --git a/plugins/launcher/qgslauncherpluginguibase.ui.h b/plugins/launcher/qgslauncherpluginguibase.ui.h deleted file mode 100644 index 47d0ee79464a..000000000000 --- a/plugins/launcher/qgslauncherpluginguibase.ui.h +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - - - -void QgsLauncherPluginGuiBase::cleanUp() -{ - -} - - -void QgsLauncherPluginGuiBase::chooseProgram() -{ - -} - - -void QgsLauncherPluginGuiBase::runProgram() -{ - -} diff --git a/plugins/mapcanvas_demo/COPYING b/plugins/mapcanvas_demo/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/mapcanvas_demo/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/mapcanvas_demo/INSTALL b/plugins/mapcanvas_demo/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/mapcanvas_demo/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/mapcanvas_demo/Makefile.am b/plugins/mapcanvas_demo/Makefile.am deleted file mode 100644 index f49e166256a0..000000000000 --- a/plugins/mapcanvas_demo/Makefile.am +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libMapCanvasDemo.la - -## qt designer user-interface files -plugin_UI = pluginguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = plugin.moc.cpp plugingui.moc.cpp - - -libMapCanvasDemo_la_SOURCES = plugin.cpp \ - plugin.h \ - plugingui.cpp \ - plugingui.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libMapCanvasDemo_la_SOURCES = $(plugin_MOC) - -libMapCanvasDemo_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CXXFLAGS) $(GDAL_CFLAGS) -libMapCanvasDemo_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm - - - - - diff --git a/plugins/mapcanvas_demo/README b/plugins/mapcanvas_demo/README deleted file mode 100644 index e794b646a5e4..000000000000 --- a/plugins/mapcanvas_demo/README +++ /dev/null @@ -1,15 +0,0 @@ -############################################## - QGIS PLUGIN TEMPLATE DIRECTORY - - T.Sutton 2004 -############################################## - -Please do not edit the files in this directory -unless you know exactly what you are doing - -these files are used as the basis for creating -new plugins. Altering these files may break -the automated plugin template generation process. - -Please visit: http://mrcc.com/qgiswiki/PluginDevelopersGuide - -For more information on creating plugins. diff --git a/plugins/mapcanvas_demo/autogen.sh b/plugins/mapcanvas_demo/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/mapcanvas_demo/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/mapcanvas_demo/configure.ac b/plugins/mapcanvas_demo/configure.ac deleted file mode 100644 index fc53de02df28..000000000000 --- a/plugins/mapcanvas_demo/configure.ac +++ /dev/null @@ -1,54 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(plugin, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([plugingui.h]) - -AM_INIT_AUTOMAKE(plugin, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - - - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(QGIS_CFLAGS) -AC_SUBST(QGIS_LDFLAGS) -AC_SUBST(BOOST_PATH) -AC_SUBST(GDAL_CFLAGS) -AC_SUBST(GDAL_LIBS) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/mapcanvas_demo/icon.xpm b/plugins/mapcanvas_demo/icon.xpm deleted file mode 100644 index db43e7ec2764..000000000000 --- a/plugins/mapcanvas_demo/icon.xpm +++ /dev/null @@ -1,273 +0,0 @@ -/* XPM */ -static const char *icon[]={ -"22 22 248 2", -"Qt c None", -".j c #7d8074", -"bY c #404d2e", -"#. c #5c5c4c", -".H c #5c6050", -"a0 c #767672", -".V c #5a5c4c", -".c c #6b6e61", -".d c #296414", -".W c #9ea155", -".i c #6c6f62", -"bS c #99a454", -".I c #c6ca57", -".k c #505e25", -"bO c #164c0d", -"#w c #666a47", -"aa c #6b6d4a", -"#P c #15710a", -"#C c #18730d", -"aO c #7c7e3d", -"bc c #2d591e", -".9 c #525241", -".G c #535746", -"#e c #17630d", -"bZ c #283715", -".U c #525443", -".b c #636658", -".e c #215e0a", -".X c #b5b94d", -"#B c #54654c", -"a1 c #1c620d", -".l c #295b10", -".# c #3f6117", -"bC c #295519", -"bI c #a7b43e", -"bX c #68695b", -"bT c #aab445", -"#K c #616541", -"aN c #63635f", -"#Y c #666944", -".q c #48561b", -"#Q c #126f07", -"bD c #1c4d13", -"bb c #7a8348", -"#2 c #9ba434", -"#O c #9fac30", -"#o c #696a55", -"aP c #7d892b", -"b1 c #374023", -"## c #979a48", -"aB c #acb236", -"#v c #7d8156", -".w c #827f32", -".a c #3f6119", -"ba c #6f774b", -"bE c #10480b", -"bn c #9e9a2b", -"aZ c #6f754e", -"#3 c #066901", -".J c #c4c851", -".8 c #41462b", -"bd c #135c08", -"b0 c #353f21", -"aU c #615d2a", -"bR c #2d4821", -".f c #0c6802", -"#k c #a7b424", -"#A c #929a3a", -"bo c #848b42", -"bv c #1f4119", -"a2 c #24690c", -"bH c #27491e", -"aA c #717454", -"#d c #73774d", -"bN c #787b52", -"b# c #7a7e40", -"bW c #8e934c", -".m c #145a06", -"bJ c #b3bd39", -"#j c #8f9d2b", -"ao c #b4c224", -"bP c #104606", -"#J c #81864e", -".x c #90902e", -"bw c #b0bd36", -".A c #92a329", -"#7 c #4e5b2e", -".r c #2a580f", -"#x c #b1c11f", -"an c #787b4a", -"bp c #7c8547", -"ab c #b8c421", -".B c #4f8317", -"bQ c #26481b", -"aH c #63673c", -"bU c #b2bb40", -"#n c #909640", -".g c #115b06", -"a# c #7f833f", -"#X c #858c46", -".y c #9fa32a", -".z c #a3b02e", -".2 c #696f48", -"aj c #767d35", -"#p c #096301", -"aM c #95a03a", -"#a c #a5a943", -"aC c #b0b72f", -"#L c #b9c921", -"#Z c #bcc520", -"ae c #829131", -"bV c #9da446", -".K c #a7ac32", -".7 c #354623", -".T c #1f4413", -"#6 c #154612", -"#u c #b2bb2b", -"be c #0c5e03", -"aY c #7c8444", -".h c #15530a", -"af c #5a881e", -"#f c #046501", -"a7 c #7f8038", -".N c #878f3c", -"#8 c #8e9536", -"ak c #979f2a", -"bq c #255315", -".1 c #77774c", -"bG c #1f4a16", -".O c #6d8f26", -".n c #076401", -".Y c #c8cd4a", -".M c #898b3c", -".L c #999d33", -"bM c #949746", -"az c #aab32d", -"ai c #607a26", -"bF c #0a4c03", -"bu c #154710", -"#c c #959b45", -"aw c #99a131", -"ax c #a7b223", -"aV c #a7ad1d", -"#I c #bac329", -".P c #428112", -"#U c #8b9242", -"bB c #8c914a", -"am c #b3ba28", -"av c #8e9c2e", -"#l c #abb823", -"bx c #bdc82e", -".S c #174310", -"aI c #a5b229", -"a. c #b8c024", -"#W c #bbc527", -".3 c #4b7e20", -".0 c #9ca237", -"#q c #035a00", -"#D c #056401", -".o c #0a5804", -".p c #0d4f07", -".v c #0f4d09", -"bj c #898d3e", -"ar c #8a9a2c", -"bi c #8d9944", -"a8 c #a5a223", -".F c #104408", -"#4 c #056900", -"br c #194a10", -"au c #859d23", -"as c #6d8c22", -".Z c #b1b933", -".C c #046501", -".6 c #2a491c", -"#i c #7d9125", -"ap c #b3c024", -"#G c #6e7d29", -"bK c #bec636", -"bh c #507126", -"bk c #a39d2a", -"#y c #b7c71c", -".Q c #016000", -".R c #10470d", -"#T c #2b4c19", -"bA c #a1a23a", -"#E c #065204", -"al c #d1db15", -"#9 c #d7e115", -"ag c #4b900b", -"bg c #235d10", -"ay c #c3ce1c", -"#V c #d6e318", -"#t c #b4c11b", -"#F c #1f550e", -"bl c #aea11e", -".D c #035002", -"bL c #a4a83f", -"#H c #cbd718", -"bf c #006100", -"#R c #006500", -"#5 c #024b01", -".5 c #025700", -".t c #025f01", -"bt c #035301", -"#g c #055d00", -".u c #075604", -".E c #094804", -"#S c #0b4a09", -"#h c #0d4500", -".s c #0d5a05", -"bs c #0e460b", -"#r c #145b05", -"aG c #153908", -".4 c #31790d", -"a3 c #3b7a0c", -"#s c #4c6816", -"aT c #546528", -"ah c #578413", -"at c #598a0f", -"a4 c #6b9012", -"aF c #6f8619", -"a6 c #758238", -"a5 c #798f21", -"aQ c #809918", -"aS c #98a61c", -"#1 c #9ba433", -"#N c #9fac2f", -"ad c #a3ad2c", -"aL c #a3b230", -"bm c #a6941d", -"b. c #a9a71e", -"aE c #acba20", -"aq c #aeb923", -"#z c #b0bd26", -"aR c #b0c016", -"a9 c #b1ad1b", -"aX c #b5c620", -"aW c #b6c01b", -"bz c #b9b729", -"ac c #bbc820", -"aJ c #bccc24", -"aK c #bcce26", -"aD c #c2cd16", -"#m c #c3ce26", -"#M c #c7d91d", -"#0 c #c9d31b", -"#b c #dbe435", -"by c #dee41a", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.cQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.e.f.g.h.i.jQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.k.l.m.n.o.pQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.q.r.s.t.u.vQtQtQtQt", -"QtQtQtQtQtQtQtQt.w.x.y.z.A.B.C.D.E.F.G.HQtQt", -"QtQtQtQtQtQt.I.J.K.L.M.N.O.P.Q.R.S.T.U.VQtQt", -"QtQtQtQtQt.W.X.Y.Z.0.1.2.3.4.5.6.7.8.9#.QtQt", -"QtQtQtQtQt###a#b#c#dQt#e#f#g#h#i#jQtQtQtQtQt", -"QtQtQtQtQt#k#l#m#n#oQt#p#q#r#s#t#u#vQtQtQtQt", -"QtQtQtQt#w#x#y#z#A#B#C#D#E#F#G#H#I#JQtQtQtQt", -"QtQtQtQt#K#L#M#N#O#P#Q#R#S#T#U#V#W#XQtQtQtQt", -"QtQtQtQt#Y#Z#0#1#2#3#4#5#6#7#8#9a.a#QtQtQtQt", -"QtQtQtQtaaabacadaeafagahaiajakalamanQtQtQtQt", -"QtQtQtQtQtaoapaqarasatauavawaxayazaAQtQtQtQt", -"QtQtQtQtQtaBaCaDaEaFaGaHaIaJaKaLaMaNQtQtQtQt", -"QtQtQtQtQtaOaPaQaRaSaTaUaVaWaXaYaZa0QtQtQtQt", -"QtQtQtQtQta1a2a3a4a5a6a7a8a9b.b#babbQtQtQtQt", -"QtQtQtQtbcbdbebfbgbhbibjbkblbmbnbobpQtQtQtQt", -"QtQtQtQtbqbrbsbtbubvQtQtbwbxbybzbAbBQtQtQtQt", -"QtQtQtQtbCbDbEbFbGbHQtQtbIbJbKbLbMbNQtQtQtQt", -"QtQtQtQtQtQtbObPbQbRQtQtbSbTbUbVbWbXQtQtQtQt", -"QtQtQtQtQtQtbYbZb0b1QtQtQtQtQtQtQtQtQtQtQtQt"}; diff --git a/plugins/mapcanvas_demo/plugin.cpp b/plugins/mapcanvas_demo/plugin.cpp deleted file mode 100644 index 4c59eb36c2d6..000000000000 --- a/plugins/mapcanvas_demo/plugin.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/*************************************************************************** - plugin.cpp - Import tool for various worldmap analysis output files -Functions: - -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// includes - -#include -#include -#include -#include -#include "plugin.h" - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//non qt includes -#include - -//the gui subclass -#include "plugingui.h" - -// xpm for creating the toolbar icon -#include "icon.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "MapCanvasDemo"; -static const char * const description_ = "This is a simple plugin to demonstrate how the mapcanvas can be manipulated through the plugin interface."; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -Plugin::Plugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ -} - -Plugin::~Plugin() -{ - -} - -/* - * Initialize the GUI interface for the plugin - */ -void Plugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon),"&Mapcanvas Test", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Demo", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("Mapcanvas Test", QIconSet(icon), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // This deomstrates how to perform an action everytime the cnavas has drawn itself - connect(qGisInterface->getMapCanvas(), SIGNAL(renderComplete()), this, SLOT(renderCopyRight())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Demo"); - toolBarPointer->setLabel("Mapcanvas Test"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void Plugin::help() -{ - //implement me! -} - -// Slot called when the buffer menu item is activated -void Plugin::run() -{ - PluginGui *myPluginGui=new PluginGui(qgisMainWindowPointer,"Mapcanvas Test",true,0); - //listen for when the layer has been made so we can draw it - connect(myPluginGui, SIGNAL(drawRasterLayer(QString)), this, SLOT(drawRasterLayer(QString))); - connect(myPluginGui, SIGNAL(drawVectorLayer(QString,QString,QString)), this, SLOT(drawVectorLayer(QString,QString,QString))); - connect(myPluginGui, SIGNAL(refreshCanvas()), this, SLOT(refreshCanvas())); - myPluginGui->show(); -} -//!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating -//layer -void Plugin::drawRasterLayer(QString theQString) -{ - qGisInterface->addRasterLayer(theQString); -} -//!draw a vector layer in the qui - intended to respond to signal sent by diolog when it as finished creating a layer -////needs to be given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); -void Plugin::drawVectorLayer(QString thePathNameQString, QString theBaseNameQString, QString theProviderQString) -{ - qGisInterface->addVectorLayer( thePathNameQString, theBaseNameQString, theProviderQString); -} - -//! Refresh the map display using the mapcanvas exported via the plugin interface -void Plugin::refreshCanvas() -{ - qGisInterface->getMapCanvas()->refresh(); -} - -void Plugin::renderCopyRight() -{ - QPixmap * myQPixmap = qGisInterface->getMapCanvas()->canvasPixmap(); - // Draw a text alabel onto the pixmap - // - QPainter myQPainter(myQPixmap); - myQPainter.rotate(-45); - //could use somthing like next line to draw a pic instead of text - //myQPainter.drawImage(-70, 0, myQImage); - myQPainter.rotate(45); - QFont myQFont("time", 18, QFont::Bold); - myQPainter.setFont(myQFont); - myQPainter.setPen(Qt::white); - myQPainter.drawText(15, 50, QString("Hello world!")); - -} -// Unload the plugin by cleaning up the GUI -void Plugin::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new Plugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/mapcanvas_demo/plugin.h b/plugins/mapcanvas_demo/plugin.h deleted file mode 100644 index 64ffbaed83e6..000000000000 --- a/plugins/mapcanvas_demo/plugin.h +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - plugin.h - Functions: - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include -#include - -#include - -/** -* \class Plugin -* \brief OpenModeller plugin for QGIS -* -*/ -class Plugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - Plugin(QgisApp * , QgisIface * ); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ Plugin(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawRasterLayer(QString); - //! Add a vector layer given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); - void drawVectorLayer(QString,QString,QString); - // draw some arbitary text to the screen - void renderCopyRight(); - //! Refresh the map display using the mapcanvas exported via the plugin interface - void refreshCanvas(); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/mapcanvas_demo/plugingui.cpp b/plugins/mapcanvas_demo/plugingui.cpp deleted file mode 100644 index 39fb3eee9f5a..000000000000 --- a/plugins/mapcanvas_demo/plugingui.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "plugingui.h" - -//qt includes - -//standard includes - -PluginGui::PluginGui() : PluginGuiBase() -{ - -} - -PluginGui::PluginGui( QWidget* parent , const char* name , bool modal , WFlags fl ) -: PluginGuiBase( parent, name, modal, fl ) -{ - -} -PluginGui::~PluginGui() -{ -} - -void PluginGui::pbnOK_clicked() -{ - // - // If you have a produced a raster layer using your plugin, you can ask qgis to - // add it to the view using: - // emit drawRasterLayer(QString("layername")); - // or for a vector layer - // emit drawVectorLayer(QString("pathname"),QString("layername"),QString("provider name (either ogr or postgres")); - // - //close the dialog - emit refreshCanvas(); - done(1); -} - -void PluginGui::pbnCancel_clicked() -{ - close(1); -} diff --git a/plugins/mapcanvas_demo/plugingui.h b/plugins/mapcanvas_demo/plugingui.h deleted file mode 100644 index d1ed5df8f32f..000000000000 --- a/plugins/mapcanvas_demo/plugingui.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef PLUGINGUI_H -#define PLUGINGUI_H - -#include - -/** -@author Tim Sutton -*/ -class PluginGui : public PluginGuiBase -{ -Q_OBJECT -public: - PluginGui(); - PluginGui( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~PluginGui(); - void pbnOK_clicked(); - void pbnCancel_clicked(); - -private: - -signals: - void drawRasterLayer(QString); - void drawVectorLayer(QString,QString,QString); - void refreshCanvas(); -}; - -#endif diff --git a/plugins/mapcanvas_demo/pluginguibase.ui b/plugins/mapcanvas_demo/pluginguibase.ui deleted file mode 100644 index c5e15b1bb308..000000000000 --- a/plugins/mapcanvas_demo/pluginguibase.ui +++ /dev/null @@ -1,186 +0,0 @@ - -PluginGuiBase - - - PluginGuiBase - - - - 0 - 0 - 491 - 431 - - - - - 255 - 255 - 255 - - - - QGIS Plugin Template - - - image0 - - - - unnamed - - - - pixmapLabel2 - - - - 150 - 32767 - - - - image1 - - - true - - - - - line1 - - - - 2 - 32767 - - - - VLine - - - Sunken - - - Vertical - - - - - txtHeading - - - - 5 - 1 - 0 - 0 - - - - - 24 - 1 - - - - Plugin Template - - - AlignCenter - - - - - teInstructions_2 - - - <html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial"> -<p style="margin-top:16px"><span style="font-size:17pt;font-weight:600">Description</span></p> -<p>This plugin was generated using QGIS External plugin template. Please modify it according to your needs.</p> -<p>Tim Sutton</p> -<p>2004</p> -</body></html> - - - - WidgetWidth - - - - - layout1 - - - - unnamed - - - - pbnCancel - - - Cancel - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 441 - 21 - - - - - - pbnOK - - - OK - - - - - - - - - 789c7594c76e23471086ef7a0a4275138cda8e1360f8a09c03a5cd860f1d669433150dbfbb877fb516b04493047a3e564d75e54f0ba3ef07bba3854f73f79330394da37412ee460bf9e1f2f2e5cfbffef87b6e5e57a3e94feb9199ff6d6e7e3c19a5d1def5553705de1e8094f24629f063e150f858b852c254e4952df2a3c2beb0061b1795065f81ad0b0a97d39ab0b745be22fcebfdcbc2756105f6555b780bdc546fef27705b35459ec16930578357c1d915fbb453b8510ef25e7888d743fe00ee7ed93f2c9c95055f837b678bfd93c259b5e06561df177bb85f2be75482fc33d8d8a07ac8915fed6dab1ac823380efec03f5a07774e6bc809fe1863b5cad07f2a1c35ea49c8a7f1de6ab97f17dcb8a4711f1b70673b037f09ef0fca7dd1473d6d657b837a318153a5b4e4eb79ca4e392fef7307aebc17ff18f973a169c51ebf80934b36826fc0d96b27f540bdbdf1c68a3f90fb5c2523f105705f192ff7ef17b656f2773be56ae85723f24de1e11fb17701d695f6626f47b876255fa85f35f49b457d68f2c65ee2ff0e7655eda47fc7e06a904bfca21fabde0937c27567c59f76cab50a5ea39f08fd5adbba2af6970ad70efe91b06fac95feba070f1f27fe5d09b7a6f403faad6e1beb2ae8ef8173a34bbe3cb86fdef2857a36aa71c27c0a36756f657ebe817d93c41ea17e4ddb642bfbe20b38b646f2c117857b23fa2c1cea925fec9726b5da0530faa7c96debc43f0bee5a6fc57fec87a66fb341bf10e2694ddb39e9af5770dd0687fcd00138062dcc3f0b3b8b7925f44f9b83977ea6457037f4a7c47306ee8335f08fc78593917c9d4f39a8d0598957d84665243eec8fe0a32bfd57839b688df88bf90d717050ea87fd14523456e66d63ca51c52cf113e28b2638d1e73be1184b3ef6dfb8cc0ff661745117f9bd70f265de2b7095bc91fe137b75cc5afa55ee8fa92e72f4434c2919c9df59e1aed417f39e4cca5aea85f91bc6bb71922fecc75465a3655fa23e29774a4b7e7f4c39ab1c4aff62df659b73d92fd857d9e5beec13d42bc7ce957c61be73372c44b1e70ab75aeaf315dc7749ee1f4f667f99384ccfffd3e1c889b33ccfd6e18e7b3ee693d93a7cca677cce177cc9577ccd371f75f896eff89e27fcc08ffcc4cffcf25e875f799197867399577895d7defeff8fce3a6ff0e6706ef136eff02eefbdd7e17d3ee0f1701ef2117fe62ffc95bf7dd0f9ce3ff8e7702ad66cd8b2633fe3ae8a6b6eb82526a24091d2471dcad4514fc77442a77446e7743143e792aee89a6ee896eee89e26b3e2a2077aa4277aa6177aa5455aa2e5f73ab442abb446eb78dea04ddaa2ed59b5a01ddac5b947fb7440e3993a8774f4b1c2f3fffc3ef72f81bc28dd - - - 789c4cbdc772f340b3653b3f4ff1c7c1ecc40d3609806e7007b29fbcf71d770080840c45ca5094eb97bf20f7daa90e8db40204ca646565656565fdaffff9cfcdc9e17ffee77ffdd7fca3f878acfe533d14effff99fd1623afdf9dfffdffffb7ffeebbf3b9dde7fb276e73f9d416790ff27fbefffe7bffebbb899fca7fa4fd26e8fcbba27f008a8ea54e02940be02e73b01ea1538cd0123c0c903605c972b70791b60a49fd401f493e31250d72ad87115a0ab97de0728f48e7100bd746b4da0ee50d2d32c40a577f0d93aad877a621440253d3b09305e81ab3b40560f56e0eb22808afe7506c8f9cad779002a5700bad465fb22407f057e4f02e8b3df6900bde3bb03e8f1959fb300fac9cf7900fde4f718d0a7c57e4e03e81d5bbf800195db9a030ac0691a402fddfa0294755be023807aeefc5f00fd64db05ab28c7ef5100f5dc8fab3f72572e00635e7a340820393d6e012c3047c3006ae49fa3006ae49f8300eafdefcb00eafdf3ed006aa0d3bb00aacb557b053a63ffe446b2de69644ce3657104c8e897b51b404ef5b7be01053f39ad02203009a0a4a45bef0178c72760c43b7ef700637ef2b51f4025fd3d00b881be6f02d0408701f48e9fe3008cb97600bdf47d16403d77be1540d57f7d0e40134a92d366ecab9117fa4ada8c393db13800647c767118402fdd7c00e416dc754097829d8c01055ff96e034a0bdd2ea029889e3837a01c3f7b801aa1fbbe0ec0b83d0ca0727c5f0540c66e03d08465009574b61340257df90d80b62c0230d4f703302a3756206bda432fdd7a035860ae6e03f0c40fa0a2e8bfff006e8faf23036a3bdd0b80fabc0d80cad907b881be0e02e82727a3002ad8e54d0055ff773780aaff7d1700e57811409f5d5339f2d0daeb19c012b4f50228a8dc741f50d11e9b156044d13fde02e8272f3f000bee6c37804afabb03f010bbe80690046d9f0450ab6f1f065039b60f02e8a547fd00aadcf6590015ec56135fb76ea30b6fd7036826bcfd05347a4a0d9407505d6eee01037ef2750a28ac935f012545bf2901b60c3ede0330a24e00235a7df6cf80cf7ebc06e027feac15fdd7710075e54915403fb9bc02b8d5bf0e0348e8b64f03e81d47bd006af5efb300aaede57500b5fa69270042a7277a4d0331a2668072acca3d6f032a0fa0dd002ad84d05b01adf1c07509bae5d0650e5364b8085eeeb2400254d02a0c77600f5583f79fb30a0915f6f03a8a457d701d4d9af9300b4e97100b5e9d75e007d76a882f59bbf95a970fab10b28da92d3750d8f7e23a72afaed0f20a5a49fc780012f5d4f01435afd8b97366229d1debc0fa06e586f032ca7cf5b01d4a66be701f4d9976fc0c876502b0012e4a2db4239bd0980c15a06c0b41e036a46c3992b671be67c330086e25e00bd63731400fd711440edb176110075b11f60f5d9d6bdfa76d0aedab5fa650f30eac8a69b4a60064d13aa1c9ffb0154f4cf43806dbab5b3006ac29321c0823b790fa0baccb60330894f01e3b1a4f0280f80ed706940679f1401d484f3af0092d3abab0034d01f406bbb1c1e1e37230346e5fb34808afe7e1380f1f20756ef68252afab069e455c1ca560618b7077aa26bd0515d166ae46123ebd89609a0a4606b2701180db706d465f20618d11e6ba701d40d1f2f011862470124309f0700eb8fef63801be8f4da806ed8de0dc0c8be0bb07a69eb497529daa564ac6a1d03aa76a9270a83ceaae75aa55abde8346bbc55130e2f01697bd5eac92eefe8e41de454e5281a9dac823d6f024a9be73b01a40cd63b000bee4d0df0b8ddfc0352284719a01e33252501d4846f7303caf17a1360d540ad677576d91e76568d5cf63b80b12ad72a9f0175bb2381e919742441a5269ca6453b2ae94266601956df623300d37c0b508d99810a03e463b11b402fbd9d03c64c6b8b2d035e7a750188ea1f079004bd3f1bd01eefd70124304f450095e3a90ca021b6f9f784f4d858c644d5fcad44aaf57a1e60d5b7ad971a50f3442573a36a444a6d3afa032bf968d5a701508efb0612cb64e706d0eda891d755974613323cd679e24f7dee0550032d0c6c7d4e28476329e91d8b7f06c8e9623b0086d10e805159b634e646ed7e476ddafb020cdbab9fb47e1f0085aa7ffa7100a8549716adbe041ab7e50b60a421d64afa01344cab3960accfb650f4a368f5f17e804aad3e0fa0af8c559766fe41f8efaf009d8eba72f30390f293ea0d90b5b18235678fea2142b75807d8dada4c00237c171fb300cc62c78031dd30ff34a02b675b012496b77ea26644dd7e04d0f0d8de09a0de3fdf30a01c4f498055bf24738d9771d3516ac2fa0880ac57ad53838e5a6cf1021823c9f34e0035617d1640dd707f63209ddc1af91deeb9791a409d5dab819a1fb435cf3def197404763f011d84ae3e01a49ae75af8e9c6eeb956f56e203d96fc1b02fa92c2caef484b15acd8d182663c1e58af03eac15823aada0258073d64068ca8873c804aba2603ad6e54ac9af0e703e0497c3233485597ef5dc00885f26fdda0a3774c6f03ac64ac7ade018c69e4cf1740adafb4ee2f0268cc6daf05508b6df92b356dba90fea89b7ed1407e7f0ba0e9f5fed280824de601241faf6700f7dccb7d008db9c98741aaa2df0e012975d99b0790583e740c3a2ac7f40a90e927e520057455d262416d9b495c7aec8e466ed4a7c6dcdd5e008db9e93f804dfc4f1a39f4e93a9f6dc6a0be724dd11b227dfa360bc092e73200237b1140ef28af02e82b67470134d4cbeb0048616ac0d87f7d0a2049fe980650c186abae6c3ab2ab4158aab6cb21a8915df43e03ac7e526ace5e024c85a72ac0aa6049d5058c11dcaf61805539cae7cf00123a0da02540f36fbc026a24e8a12dd02049d0e6c2c0a3e126c04093560ae8a0613e5f03486076be0016a9e9750015ec7762c068783d05641a0d657d00c8195123dab4113a8c895d03bd23f9f703e863a095bf0259a5a217773b02b5f74e9e3700157d7bfb0eb0359e1e01c6c8c7ed570066b137032ca5ad67403d967c1ca501341aca5600cd6265124033d0fd8d012fbdbf0da082bd7c05e8ca32582df09a4e28e8b9e70340950aac8f014861d97a0b201df4ef1b30a6d5bbc700cf2f5feb01b01d1606a97ef25d082c7b465f7907203065fe6940effffc814c75d901584b5de50124b89f59004d8dd50b002dd57aff0820d1de882758d02417013480f22f40ce5c39de0374192fa3f7007ae9f62fa0a7979643bf7420906c3f1ba81b923dfaa5136229edd0a9fb68a95b4adae842e9b18f47c0186df9e62742f55d05d04fcacb007ae9a81b40aaef3d7e82f0cf17012430c96a0fa769e2520d540cdf0115ad5ebe06d0f0e8fa2723c6fec633c022f57d00f0a2a83b12687410f34b06e8d0c85f5b01fad2745f80147531de00647aa27af805e41687f700d21faf270648e1da7d0089f6ed23a0cb3beeae02481cdee7013480f6fb01560d94dcfc00866ac22a39071492b16a32154807b6947869388777de03c8a4ddf90474ac94e886669128a5540c0163e463f212402a47d37c0362369d069096aa5b01d8091804d03b467900c9d8fc2580644c9eab155049679b06aa4b399586c91a138ef9a50d18d1d9d90c30eea0b63a005627c5f02980bed2fb36c04efe5449b3e5ecb0ea97d101a04357ee7d02522ca5dd9f001a0db2601b906138cb325801895492012c74bf8f01345ebe360268566f95802ee3e5f7c980a2af3f0440afef06a03de6801e6aebfa10801fb7e8fe33d0882ac79b8081aa9f5c5f000a097f92df004a4abab70fa8641726fb6700169ac5a1e6ca6cdcc530dad1fc9235822b29c432c8ea94696d41238777e396ce6e541f5b141303b4d4743b80bef2f201f01270f61d40a3613c04585b2669007df6ed3d8044bbdf0d20d17e1d0590d0bd3e0690d0bdcc0dbc587d08a0da7e3c07d0c8fe780ab0aa6d5549f873bbd49297216084483d8d0c58de7fce03a8f7bf4bc01817c167370073e507800154662f06c8c78b4665ee5563f9721240b2febe0074a4fa8a6e16405ff97c3790a24fc65340aaa9a04a8e02ac3e5b3d0d0d2485653e0fa0daf65e011956f0f1b70136ee513c21392d33973467007db7005d2a977d1a30e6ca09a047ab0f0601f4959707030a76e377f4658d27e7f30052b0dd1d03bae1df1a608052c2726c40aa41b87109c0e7985cf9b3a5c67e922700b60692fd73000b896247432c1fdbffb1437bd419723ae3896610e20da40963bcfc6e05d078799f0450efbf5e0720cee03200e3651c802d9bb700cc0d5f0614ece53d800650fb2e80ead26e07906dd951df362b5366e4c51c50697814ed0430a6e7e6dd007266bcf6046c90b4461f01646edc1d0450574e3e0d52a9f19b5f8057e2d33b03e697c53b2065a8d7fe0a066ba9adb425c0fa3cd902e4fc643e0da0827d519710ed854bdaa5b6df7b801e7afd77dd80055ebd1f40ebb9b51ad0c70cec0e03c8409387a401439c5dc91980e9a41cde04d0678f0a40a99226dded00c87a1f50a9e8c94106c05353cd2452dd1403ad38a4c562063a3c040c319c7766000bdd8e54dfdfcefb0edd50e728e9197ddb0c0f8d86e95a0009ff94ce0edfc5fb39c0e6d76b1d8009e708508f25da6fcf0154f4d78b002ad86b15803dadc7002ac7fb5900ecb1d700789c55975edbbe9cd60250629eefac1974185105002764c91ab9175e858b0ac0ec510c240ebde53a69f5c4e55600d9fce303408a3ebd3e3590355e25c7007b04e4a55d02a9cfead1c0d6d63c3760e5891aefd945506ae76c052496f7fb01a42ee619a0c7985bbc059076281e007d8afeea92f6297aeb2880bae1f81f0013bfd51f06d010eb8e0d30bff68e03c80ac6ece9c5101bdf079086390cc052b4df0aa029e96c0628f4d9b2fb07a4c736e700e697e2fd17c09e6792bd0650490f68f514d3bab0048dedebdbe127cd101338a42ecd10638b93a2d725a2fd5a02aab146f61b5d598f46d863e70170fcbf1930c4a63f0154dbdae51833a2924e00fc418b001ab7cfeb0198a3360cec319a023c90af07013490b533b202ec9cb502a8fad5660035e1da5100d5e5f52180867afbd6c02e574d6bfd6625ae21f67c6820d14e9e3f002382396e07012485a75b003b10cf360d58239fbf05d03bdaaa4bdf0babd6c55d808186e9c440eba8a23305e0ed295b2f01d451da5a5c820cfffa2d80bda4f2e1d2206317f01c6075f17e6180d577f51a4023fbceefb0fec8f7004c27559505d0d4a80dff25408fbd3c05d067bbae1c9367f9ba1f00b398265cfee91d8f01300472c080baf49e0d18c88b2c80f4faf33760a8bead0ab7d8104371ff2a80faa5ec000a94e394deefb06593dcfab31846d59394413f65255eeccbdce81759c5d8d778e9ff8d7ddaa35999638e52d26609a83177b80bc830f2e63340c9d87f3f055423ade770743780f162d10eefc6cb2280ac4f572e06f21bdd10a3b2751740a3f2fc37804a3a9905d067cfd70330cddf0750f52ffe7ea282ddfdfd443d7727453f882dacdd5f0304e6640de05dc069dbc0ceae578394088021a0f6e4a9161b783d97cc6e011d6fc55f0490e0b673408a7774760ec07f5a5ed7013447692f7a09b082d305c0432cfd0da0af289269095028476f007c6cc9c32880aa7fe7afb05a2bab678354a312c536f0f2ad189e06507b7c0660109eee0618cafeb834d0c661f9701d406e97ec01d097e994ec9d18d0625fbd00d2749f7f4fb0023e0d20a3a67518401d75bf0118607eb53e0ca8fee02e00eed2cd00525b8376004d05a57b6ea86ea8aabe01364cd50ba0a25fdc00d8e02ea79b0164e4f58b00aacb247e827ccc5c7d6b189d19590134ddc4c0deaffb005239933303ada3922b3f5121da171f0134598cb700f6496f590a47d874978f005c26c51bc29fb289916488658af3af9abe002c304f0cd37444f5ef195119134ef5c850cf3cbfa05006995dbffb8ccaa2697f819b002ad87e0730aa345e0e655b0eea3eeb9719e568d4a794d26c1d50b12a789e03463cf1f219406aab600035da5273f6f711a0796405d8381c84d973d409a0829d1d0450c1cef60348c19e1d06506dcf7f0248c15e5e065049d7ff804afaf92f802ad795240fdb76da1f3e01f027b70e5a0134dfe2818f40bfe2ae08a056effd001cfe72c44f22fce5f823007b387d034faf27003c02652709206b2bbb05b0ab51258706c8587116404f3cdd186492b1fa1e90316e9ffc952c539bb2ce1e2e7d79faac7f62b1ac1f026851743530c0e3fc76124096419503704117dd348036635f0f0c70966797009cd455791740caa09d1960b224feac5749fbd7012463f7a3002a587117407e87dd0b009aaef59d045057761f026805bc380c203b79bd06b0d55a0e6e03485d7c3d07506ddb2e3aee8e62eeae2cd1da3f8b009ac5366600fc1fc5b3bf32c285d42f01565b972f809ad9e31cb14cb1c68bd76100097fba0960b32dd9a5a469aa89af7af6135d79252b66c26136a22e879ac4878d09a76e38dc02f8b44f1b39ad0bfb503600a54db877408542617e19c6d6c0cb2bc05b03b3df0032f2eeb6036888ddbf01c6588e934703bec232611811ccf3f700faecfc230061f3ff00d685ddb901da72fc158050f38b002cab9f0270ee240f40c4cc460094d2660015ec6ecd80a568577376d1b6d7fadf17c013df9e013b01d5e416e0fd7dccaf06e0937ee0a58ee96d9d6c1b10057d7000c0f15fb40b03d4c5f40840fc47f1716b20194ba687808cb082fe18907b93eb358022ccaa1440404839bb306095c46a7e0950f4b300327bc61500bbb0992103e889fb49008da8b18bde43c1deed07505776f3006af5f631c09aae7e0ca0be1dc613040d3cf40348929f5cd2bec67ea988aa15d0ba217f060cb43352ddff01668f8b00aa5c711940a6f5d93f03545fef3e80867aebc140caa01cdc00586896bd3a806cdce2ef09f55cebc400d37a700d70e8caf77e006d1ded9e07d020ac5db942d52f3344bb519ffa6c990660f5ea2708c04c4e5d172cb672e8728c58474d33c098e8c1410b50e3da3ba11b5202a88ad76f030db1e408916a445d9f4db7005dcd0dd5d30fa062543e68ad5e646c2f14cc734563f549e5ecb70175c5de2b83f06fab9506aa5334cce126c0072e0f77003d9fb2f9055468a9e97a00bd743e07d8507c5e0ba07e190f006354df09fa230cc5d66d000ed35e06d04f260f01548e6119408d7cb715406279f71b80a34c5217a58fcc942d8dcaf26fcbe6cb80c0e9c31ad0e1b0423504b01bd9ea5e00bc024e1f0039de9ed91980ed966a5c007a980a3acab4029a4d89eb5b02993de513a02f294c7652c00043f1eed60015dceb06d0a87c3d0ca0eae70b03c6dce439808c9a5bd705077371b21f40cab17e0aa0f17255049072ac4606d4657005b061743008a0ca8ddf0268b13a3c0fa07da0e1c440aaaf18ef07d04f30264a6f1db572579f4d8c6a540450f0c2894b5a61e36e4c0dacc79e02683beefe208096b38bd3001a954fee5b828dcbe71f001370f5f007d42fdd170334fff82a8054df413f8014ca9ddf31c687d24f0cf0073d7500041b172f16cb9a269cdd056010321a520f8fed1f039a70426d5382b08a375a3d2550b87a36c8311409d12c530c92ea9ebe4d6d9e3fad0346722214fb0cd3a259f10a20fc8dea63494cd19ba18d031171688c4d9412456f6c4be22e18d98d96c292fe0aa0ba246dc0189f63be19400df4864835569fbef29805600bfc2c808afe980690967a2d0248608e87067cf6e82a808afef8f784ca71be1640daf2e23980b4e5e579006ccb6900497251069024e32d2ec3b6641056ed92f0a8ed2f80858eb0d72590fa3cd54cb83c76a3baec7502609eb7000e143efe31c052daef01080869f516062c56e7f1048eaa87590015ace597660483b52b031cff2f93006a0f76ef2b87025604d9340b2f9cb2ef9f0134678ffd04db82d5781c408bd5711240bab0f50bb037f07611408bf7b21d40cee1fc1d306047530794574043bd1a04908dbb4801ec02160f0f01a4d8f20f0302522b979490c4e46b12408be6d1b101437d143fc186295cf44261c045f218404afaa70694d285050aa5b28156328b2d81c4f2d522554a9f16e32a80ec539d4b5a01f5fef00c501123505c0550efe72f01a4f9bbe7013003e327f2f456ad78290ee64df78b43df88835d02b54769391d51f45e2b800a36b9067096a79a5c0590b1d93d09a09de6630b0ca1b3c9094297b2166b5dbd05d04c3818023a78048e11dc466bab724f6900bdf4621140f6fa148149091a48b0b61a8015fc9601726cdcce7100660fea92b22f564d69b1662a90d15bfb271c99a974fea553e50cb1822dacaa990aa4500e35e1548d492bd0e189ba40393ed31e7589c665a3ac0a1b77720ff0c6f21743ec4fd17702907ae03000994a0e0210f67a19409f3d6a07907d7a746320455fe281affe4e0d5c0790b36b781b8025f14300698764110027c24f00226565c18e96c758572f6dd5003c9b49a1c96214c1f98b8f009ad5ef9f0c52b67d9e01c4e2274f7e075abb1a0d0d6419b43efd52fbc6cb9b0012ba641f90dba8b935c8d87a2e010473548ffe6cd743ac0520d6a9e8cc0cf0e2b3ac1e3998a3aa3a068e3e7e33c0a623b667649d5c55c30092e4512b80daf469164026ed8e3f4bec4672fc60e029c975196a83bbe8e5006fd7769f031056b019404a29bab24839fdf41640cae0770d40906ff5f81e40f6297bafa30ebb91c9e037807e526606b22dab5901e0e463997f1bd0a6fdbb005239afad009a2b1f2c0e58d2c9c77a00f56dd90da0813cda0d2059af4e02c887727e06c0d84c7a96a011f3fefd5b004dd18bf809aedfcc1de53df1711d404a3afd04f88c55761340bb6f55118092fe01b5e9b3fc30a3d48736dbe706de9ebc3260105e303c52367493ab9e014e15763546b6d78bea38804cb85d3aaa31e0d1fc086e4abc43b2e3aff434cd57d305802daceac9ef18b03fd739092049de47071565a5a971ff12109b5c885433dfe3aa404e2346e01071089b9fe5eca8ae50c1ef7cb61ea3a489955c02298349008c6f8e998c1a252df5891b6a1453c1fb43007cc1eb01983d3602e8b30f7701c862f52f80cad1ff30a01ce54500b5d8681180a3e5df01d8d1148853bec9c323a04338d0d90e20634d88a534f6567cebb36780bb63bf0674094845af8f234e7a500690bddef567eddda8ab00985faf00a2e58adb5e004d8d7743406c5f5f049081966c1868ecb7ae32009bd345751e8011b516800d19bfd4fab49806509b9e2f02c8d81c5c0690b179bf6b90497fd4130007a6caee1f5034433d08c006d5b581155b1e405363e1ba54b8085efb01d4d983cf00d2dad9dc803d9ca21340eaa2e5da8e086dcadf0c68f55e3c615f702f804cb827d76524655012fb35ee70803d492d743ebad37b0c203783929a35ff7abfa15705e0b3c300529f67142c65abb57a7a34605bb0ee0690b7a7bc0f4058f44900199b2324397584eabf5f800ff7ec3f00ba9a3c5b7b8b007a62f70b80e3ae38e41d75869b72823834ba4063ff12290c77e9631b508f3489e30b5e02121b9d0720b1d15d00e9a0a3db00fa6cd10fc036d893016e86f65900b6e2d5d9b537869247adf8e2e07875ff60c06185fb1d00679bcaeb2703d662e39601a25dd7012441d71380cfcf8def0c504a98e7b5f7a28b6e3780b49412a23680ade7a4fe32609a7f7c06f435cf25e7df80214754cfcf03a8b387850162d9bf0d206530889f302a2f7e00055b03e5c2c0fb62a7013036a701a4b626970618578f6f00bb3a3bff0c98e62fee0368203f0c0210fdf3144083f0fa0080c5568cea0092a03c35703cff690045ff5c640154976b97a3c25468f92b585b45eb3980baa1bf6f809bf27a16408d7c710d201543727a1f400b9ade85011df5d50fa0eaf7ff05d074d2b3248ff15b3ec54f08f57a3902d46898ec2300266d3b0013f0388074f2b9544e9dfa986bf6648023e2a26d8063e6fb3a0053411a406dfac4308dddfbfbcd0018bd74549a6a67356137720954d2eb7303fae58a7e49337d36e108e212689ae74c51dd188ab2d7bf5d0e5242249c38ac53877bec0f0d34e68a77bf83e88ed61e6dda188a9a0ada6eb102139fb34d7551957a47aa95785d0f319d26086ea3f9a42daff8496cf8cf1601a4718966a843e3123e57871978d20da097127d5cffb908fa01a4935b3701a493d72f0290a8f62a8086d8e3208046c330de41e5c69f01645d147f4fe0115869bae5aa812dacaf57035b7d9702f6d226ebcf01a46037df006cd69777270042abab871700bd9f8cdf016c8127d538006eca3b033652f7fc134ec7258fad005a6ad443034e1d3ded065023df3f025889b7ae5c30b6b04ac5a0ad008107a981a37f0e03a0d88e0d58bfbcb91c0e6bac67062c56872701d4b7d2632ba04158b8910bb6f42ea780d21b43df06787abb8f01d86dfa174052b83b0ec09ee783814356af0c3249e1c0efe07869a9cdd81590827d3b0d204be97ecf406e97e4da1d35b238bc0760fb7a1e40d5ef3e19584bfd0ba0ced6fab6013e66d2390ba0de6fdd07506dbb16076beddabd6f4371a713404a69f8148053adf47e4a469d329b04c021f2cfc06e6c1ab9596713167d1c40a6e4746e6073e30f68886d7f07407fbc1b6007c9f9b702d2b89d4d00076193f12c80d478f118401af76264c022e02903644850b76540e50e69f5147bacd27ec372ba6100c94e5e020ce7c71d83144fafdbc3071e765cdb1ea11aeb6ef5be2ce96a5603067630af01864c7c33d7a56e134bcb98cb892c2fa67c254e0c3df60063a9f1b2fa03647a46b41b8d2b19fb5a0b40c2a98b0032e11ef300e4e8de0cc026d77700f54b360aa0d160fd11d6f8b86f30e650de7d0015ac1de560d2f278b1bd9e2859762383acb45a8a994823c94af26e401c4af159003226f1fa0240b68262b70674d1da1b1300d94eaa7a64c04afcbb0210e15eeaf4d37259859bf2711140169b12e52fc7020befb50740819be1e72b802428f5670b447b7211402d76fd12400b897f9b000230cb8b7600cd732fa706e8c2fe4d004ea43e032a8ccdd3006cfad5d3007ae2ce9ff504fc390e2023efe12100b9a17a01d42f4aa2b102aa4bf11c4076d0e810c0ee6c727d134043acb56fe09dc4df009a81eea70154f4dc5d89d1dbea7d18609eefb503a82eefad00d2a76bae7eadf8e4e2dfa740ea14a1f2072d01ad7eb01b40b555acc20ac830eadd18a02d2788e5f23b52e3cf06ecbe250f013889b1054871dadfbf03328c8993f5006c706f1b107e7b1e3fa1fa37df007bd094926a05d40df7734097ea8f3e0c98e637720334ffad2bd723f2eff03400c1f9ae2d07c8cadd1703cecf5d7501032f23f70268641f3e065023efd0958d0a9648dd2030293bbcadfdfb00a42f704989b44f7e370432ce0315fb9a2c3a45bf604b8fce2e868574f2fe09a02ca460f77b0623d6849ac53a8d7ed54baff300c47fbc0620db6b1f30466b5f9d0690f17d7516403af991160b9bffa41500ebf32200c74ba70170cbfdbd8318b4ca804dbfe423007afd3280c64bfb3480b617ce3580d2bf588531a04fe8ecfac800cf667d19803b64ce03689a1f0d0c1851690db0c03c9c0108066bfdcc0d1c67300dc0e52533801daaeb8f80d2b11b1f01342ad37b039ca1750920416cd2726d2b6f3fdd02705316592f80ccc08f3580cfac16af01240ec934807a2e790e20cd7fb301f036e9addf4186a1a4bf1d4026ed6011406afcfac120658f4fc3345d9a792b303f0840121eaa9f72dea3fc383640c19ef809673b51cce60a689eeba70108e63804e4540ec3a80194a3a2e71aa5240fc9cf4b004d38f910d06364afd31e69dfa7d23a06a8aded5900929b5c00bca0992701c866716220fbb49a22fc29d9708af3b601e6a8d2ae36604c376c4b29a5193b67855274a56951a050f611eda22e39b3ca4fea0c53f2f007d0230ef69a77d4152ae79a26b4522aef698f46a1c8b4969f7f0524740f0cc2b03e1fef02484eef8f0248196cb602c855b1d10f207d7a7f1c40fdd2b90cc0798f9700d2ebe96b007623f300528ee55f49d5fbd586010dd4be0ea0f6689f045057ca9fdcf4022ec66426359e39d164a223ff2b20d1d691eee57cec85f718d02764f5721330d05aac7a7833609dad5b441ae008d5edd700ec36f9b3589fa5ee075a016e88b93760aedc5d000a9981c5e0c9802879b96d57409abf370220ebd5fd6b00cdd97b7e6999c9bad8705d88642a95e67c0934808acb7842366eb9bf1640437dd107607d96895b6cc46aed7e06c03b5ace2e036877e571db20e528a44b6a67e8d95b00b5fae027800a363b0d20b3e76ccf0053729d8e7216894a01fe2bc09c3d35d0665b723a0174585732452f019b3a5d80f72c307a978000ffd4006df9b969c0c4577d03087e2ac62706aca3d61e03688a7e7f0d209ddc1b18a06075e5d40a30253d07d08cfcb80f60efa438ef18a8e7922b579fbdf9e2f73e80baf260db8046fe7907108495745c0e6bed2dd7859dd572d00b8038ec028684e07dbb6045c6367a05607ba138e1271929db8b7d69a9ac31f2b00bf70210c489ac8709b7bd1e40e2d03937608d3c413b340a16fdf11280ab7cfe0520d5e0df4f38d57a0bb04e2e3a01d0c9270150c1c300aacbc620801a4881a02b208324ab02a82e452f00615a45002994ce4500825a8f02605b8e0cbca5771580584909ff32759ae4745001383055de6e02fa84687e0e0d7010a52d80c33df0c12e53966995a438940690b1beb53632b0c15a074017de0790686fdf004a34ffe3cc00914afd52828e5adf3b800a4df7340b805d580590df72d40790fea47af832602ad8fd3040a128f562039c097cf3d3802d4e258c5901aec03832f041a5d7006a539d8b5e5a635617e300a4e77b37605a1b52b9d8cf9ebc06c03bba6e8087a4ba06383ee8e4d1000b36dd0d20e1cfb3002445dc08c084e3af7488b9da4a01e475aa9e1e0cf03b282e6709507d3ac4ba026a75ddcdb102aadc959f706ce0f43d0093f8009073607beccfe69881793b808afe716480359e6c01ba4ce21f370658b0a9cbe14d8cde5b00ad5f36ba01d00edf00a78478c903483e667d03269cd679003db1353290822df791d394e33fe5863b8a9db372fb2980447be6a2fb70cf68c700b1dc7a0aa065e4d14b00f993afdd628e32d1455f4ba02712e5426ac08838e9fd4100f5cb27633f75a4db13229591e7bb7ae42b59b74d7498b4765ef487eaec7dc64b51d867c04f623a49359de48d792e19bb4e03a85faebb01f809c26ff3bc4ce60108e43a03d49cc1bb3f0c40a6f81b033ebb7e1e8088cc76000de4741640e5a87e034870b3eb00528ec33fa036ad7e0268561f3c06c0a2ef0690688f17012463ada81cfe8ff6b10147445a7a47d741be65eb1bc0a510e5cd07804198e81cce0a60081c079035feec7790cba475f11040ab828f2d006116d5c30280e15cdc5c04d067d7a701b4018161d48de005e5704fff320bead0771a9905cbfa2a80268bfb97009c9d3d0110085ade1d06d0b4569c1ae030c386e9fa58564b9740ae00c7f6ae02a81b2efe191000514c02903f48f67ad7eed252f725ad00177ca60668bad35703396593fe1ec0410353bf836495e5db7100f50be657378206eab700ea97bc134045dfa7b353f69193debd01c6a68eddac804afa41f597f3d80a1cec0490485dba2e390ee6d1118033dec9b1bfd2c5b7f57112006d499b8687f56b10007bfd3880e6eca3ab001cfe42a4c207fb7a6740e57610cbd439bb36da06cacc51eeb909c9d7571e6c0550136ed506aa6d8903a09b7a6359616b2ba0c0a5e3af004442faa578e18ad71f032cfaf5a300faec86bbb2ccf4c4da57003db1e6bead54b0d6ed13c0b92a74f86b0508ce7f06906cae58f34f089c4eb619d95986fdb1cf106b343fa7050f02487d6e33a21abdce2daa7476a3f9d462e8c2256055b01d40eb28b69ebb112172cf400e457f7f6e20459fecec059042d9ae0210fb751c40256d5d076033f62d8006503f0f40baf57900ad1b5e5e02a0e8d70368ec0fbe03c823a02c89e9328ba64aaa18b4b417d991fb35805369e5552b80c6ed93df51e00b563efa34d2482693bf27c8d7d707f874fe531740506bf5f0198033458300aa8bd2253780b08264fbda8058dac7d7006ad3b40ac0454eae1c77b6558f2f01487be682394586929a2de398f04c24bb01b071d551cb0c989275f4c712c892deea07e092d09101fa43d93c970a87a9f1741a404da81b1d970065d02903a872ad0980088052c70896806db0f32480269c9d37039c2ac78f00d22616593f0086f36e00e2d7d701d8daa5d2d02e011ea31e1d95767d186e33805c153fae7e0f5381cdd89ea30892ee5e0072fc6f1810a5a64bec5780f384fd002a183bdebdb46fa3f73e80c6dcc3630035f2783d006b313fe15c6a97cf0134e19c7f0540d1f70c68f55de434e5b44f2bfd31607a4d5d390ef7b44edc62e8f5726b6c90e91d377e47c9da63ee26ac50c1372e18d92c92eb4b404de57489fd0a68b218d1d959495e49dda9d3002725dae72b8d38a24f35bff41a150cd80ca05199d1958d92d2f48a71d5b3922e3eb703e0ed390da0de575ea7068c2b8d97cea7012ab8f31540bb91dd9700dcd1ce78096fcffa59009543b798ad80ea52ad05e010fc5300ae16b80b40ead6d3005cf6f3f71552d92601b863796cc03ea12e826b6c0b8647f5b4088062eb0370dd24bad36f05b4907832187035dae6950111223a9e9e4656d1969212a57dc75d54ba95a90125a2ad1b721be0835b774700a219aac97900146c3f806a7bb1638081b63b0fc03dbcf15207611d03c656c177061c0e3cf64b6b6ca9688fda7afd3e80f6e675f3d7721d8ecfe0eb2d00fe8f03032c4765365e01fde48cafa41c712f36770db0b66e0e0d5834ffdb001089502a31c90ac8eb34a1f753db413833fa8e44285bb300aaadeec05c014de2a7ae4b26455ffef34f485d92ec9401347be822da252002e01b8149c9a754debb2ec42a146c812f813aeac52d664b3a7d0aa092ce8f02a8a4afbb01b4d29ab82ee4d92c46f70648e13c9ea0e81f2e7a9f8edab80ba0a2d77b01386dec4666c7bbdc7a08a025e0d495c31a4faeaf03b0293c01389e3f6544a58c9764dbef28a5715ba73b0134cd6f3f1a48af97bfa300d4250554f8835efc84a3e47f1995e958ef28c6ae2ddb2dad432a97b5994e8ed6016c2c576c4ef7f3114efb439992fdbacfe1e24f04b7d1eb4cd119c09119d3af00d2858b3f80e7bb0b185b059f06606dfa1a80fb3c3f02e00bde09c0fdc8eb0108e6b805d8804fae0dd80376ef3740ba70772380144a791a40f3cbce7e0076bd1e02682a783f0ea071ab4b425780f46bd28503df1a5a293f5d3a8863371f9a0907ce33510e4e0164f52ac7c700df30551c017869a2cc934b807f7d960620c2ec12402046eba20454dc66b2fd1680e39423030cb44537004b8d570346d4450760fffaf82400b722fc3370c8ea04302667f9fcca006d39380ba0debff667c71aea2d14ecc0a11ae59556050307949557098078dce46613e04c9cd5ad01b908881019d8055dceae0ca8edeb5100d5f68bea3b2742a9f49e2b80e37f66809d3cd80b4080cc6300cd95ca25bf04acc4ef5c0ec76eacef0760ef75d700ab8f08a2818339cab40a8047e0d480afecb8a484142547e3004430df19a0e8cb8700dc0b78037022e3d951002c836d031c557b2e079bf5457561c0fc521f062023a8eb429ae2e466dd8038e9abb901b12caf0380e35008e46a80346ea2fb921a80155c5601084d38db0e2005ab6b111b30a291f790d3944346c5cb7900b639a42d07195b3665b26dc0febeee6b6c00f90cca29e250f74a1cdd085d5d9133a3c801237461facf40eab3fcc9006c9316ca12b002dc4e7900a879e9f76e00cd733acbb304d2a7459106d0404eae02a86f7737039053e52400b35816401d35fafb8af4c7f80f484e2fa5c786be3732794b00ceca83e13c740688e27c0cf035f7973b0698b40f4700828e92ad570019da8bf3dc0047843271a67f995abb1b060c8ff600e01089d4e5a82d301f01f48e1b69eda1c35e8bdbae814676951c0052c23d944e6a091851d7b7003685cbf9a1012a67ed2400e1eac700df61a76c7c4bc04e22e1ea4ba0dec7c13cfcf3e33e045003f59200ea17ddcbd3008ccde2ab0c404efb7f01309cbf0d3025273f01b04fe9a8b4e7484837508f13dcf7b47a4aaece72f72d80fae5776140dfb28dbe045c2fff648082d5dd824b90713eaa05f0810725cd5c025a5d3707ae80e67d5d23ba029ae79e10cb507d1f6701348b297978f32f1bedc5fd4300fc85230342898bb7000470af05d0a83cd80770803db9f80ea008804bf70b517b49eedab2262c775c9791fcc9c5a6ebc2ade5e521b29eb1b02a74b2be014cd1e5c9b501f94feffe805a6cedc78035e1470688601f3f914ab44b76458759e6fd4a443b02fd3ed7026811d0db06e0bb4874a7ce0a30cf9501a4b60acad1e85352642c02a81b1e4e01350930be7e03a8f7934b037e52c74f28c7200f20e11fa501548e712f0021123b01f4d9ec2080f4fabb64bdf0d546e5f808403c5da5dbc3d2c2b170e5cd02e00cfedf0f002cc7e27c00209f74ebeac38040f28d5b804f83fdba1c2cde8be7d420e5409dda6399871527c2b101deafdf7f0004a62282b9885885f2238054f0dd450009ccfeaf01479988ea2c52a7d9e8ad07509bf62b0347543d027c4906c7901ae02c892d834c1af73a01f8629a7f2f062c01395f59a45c58586c1e19a03edf02608f4dcf02a8b6a50bd6cbb86a92464eb9f7ad9abe19a0d74fe701a42dffbd1a288f5179b90d70328f76c700374339063856a1f31c402ed783a1818f32b93d86d445b908568065f534807aeeed12e0fc749fe701d4406beb015452e5ec5a027232253340c9fc723f0ea0affcfa1d24e2285ad300dc979406d0148d055b78a3acfc7d0820c5b6e1ea8f68d37fd3004c38168731fdb27e1c40a3f2cbc3a3a6fa1cc98c9cc3c9c69501c6c40cc1cd32ae0f4f10980c3f4c31bc03b083577000a488b88bdfdf00f4dc66004d5a6dc65ca371d4fbb7cf01b414eda601f495743b001e818300684bc66ded8442a3cc808211b25a385830d9476d85cf60f46e808b602f9ec0a46d5d05d04bb3dd004499ec075049b37f013479ea02a5e5ca8391adbb5a970e24545fbb0ea0771cbd03882228d62706ac80cf350897c95d65c1eadabb25f011e6c300846a1870855f892919e95f93ef3b03e4f4fc02400440f9d635e0846eb207200eb6d8a0b61195952601b4062a8e015d6757ef1830d44f5f0c724c381ac8aaaffc745dd8df2f9455740588741b0450130e1f039072e808e0edfcf7e3001a95ef8701d473fb3f0027534f9f0310a4b7668009775204d0137d83c21111e701f495b50d834c5d79f10bf0b1f0077fd6593407e701380c7716809efb178063e1db01a43f0e36019ec46f2c52e4632b3fb703709de9bf009c179b062016ae6d8067737706208a2019be045084d9451d407bd1e71f01a4b63818dcaca7b0e867eeec31f3dcb73f3bc6c3baff09a809f4bbd61aa8b42e2ccf5a009f275cfb0da006faa56059c6e479445db25c4b8d02bd5e66cc84c93f0a96d974623bbfcc994d8b7ddab4180c65167ff2d9467da271d7039087f506e0a49944662c0197c74f0cd0b8ca06dc00b465e2f66894237958bb01345e6a46c39f7d7a1b4052d83931e02bddf7002afa380fa0d934db0f8039ba1d405fe9a9fa954f0a97e34380835b2efe0023fb05e064fb44745791f140970ca7551c207b6b19a02ed6c680da67dea5b6aad8f0df7d02b09d5fe2c8acbc7b5f3d7d06d013ca0eb402e4dd3803589fb67b060ce4b722802a47e45fe5bdf9f23a0016cab97f92b3d31cef20ecb5dcaf0c58685ecd0c181ebbef00fba4df8f00568e1f0701d473c3bf27a4d7c7ff00de246fad19a0d793f500faeca93f3bd0ae46353908a079eed325e5e84e99bad5f10696d5d42023b2dceff046fbbc1d4005e34c40959245b3fc380ca02794c57b0934d44bd2062c81b4d4c20573d0e273c780ca7d6c045067ffb8e77cfc47376c2f01ca60c33ff1ce6ae1af782375bc1d401a77e046c6375ebede065067bfb9d59d444317b0ad807a6e06c8c86394e4d706ac92ce670658061c89688056e2e57706e8201f73bf83b093f2d75fc938bf7fe5777431beff315e326ec92cf6ee0c10edbd3d00a9b1929deb007a691f651051044afbbe021a848f0188559831b2eb5a39884a8ecb35801bd908f758022e937b0c207fe1e0de005df87a1280cbc28a006c5fa701b4bc5792ea155067177f00f5b915009fa3c028ee035ef40085f7c43f00bea5eaab0520ed6aebfa0ce01b51ae8600e7b9eaab9147de46afc820338a0deeab510035e1cf890131f044dc8d6c28560fc701349075f1fb0a482c1ffc0eef676fdc04d00cf4ba61e0e1e1af902fb878b90ea05d0dce9c350b2fae24db9b1b10a3a84bb95780807617ac877678a1c5bc175d955700aee12970334486d452c92a574093789e07e080d061004cc95fc0106bebed2c001ed67e00f6b32700dfe8987d1bd809e982315e4a4ea48ebc7d5de81eef15207df43dc0c97f875f06acd5a73d032cd8f7cb006ae4b905865dc0f2653f80349d321cae804654af008cc9ca73786ec00a98e5db12a881bef3002a07899e46a11cd72d52631fbcd808c0bd6ff10e14db8edbd419316ea56146997355fc7b0374382e77f40ac8f07e1d7f027af82d1780baf42afa0750e1406c239661e4659b001f864bde03e0aaa04d1ba524f9e000c8287c8e9c0918c5a60ee709477102a2751a4052d83a31b0626b0520ffd8bf0044da3f07c04b3b0a805faa0cc0bcaf928ee37ee4eb1160c87d5abd3500d1a5856e3e4fc74eec5c11ff31f609ffb252238f7d00b5fced0550bfe088f8cb194af8cb78991d4a059b0008f6290fd601a9cfab770dd84b6aed0590dfe1ebc5806dc1693f80fa9693d34b209553ef027c3729fb7363abcfe4772b8006218905c63603cbf6308054dffa2480bae1fc08e07de48d6d0037a096772e07fec2e492564fb9d13199e506c4c3bcd373e10dbcb93760f9f644673b56b26cb9a41c542a8baf001a1e3dd7769891ed6400b0a62bdcd9ec011744448cbd075cbe540138e6da0dc0050616070e2996440f36202754e317c02e7135755d485f90d4f3001298af3b033e8b03601caaefcd95b3f3efe05f0075d4b145ca5b8b878b002ad8e80fa8e86b6e0f0286cab95feacdc7af9b002ad8f42e0007c703b0b598505b1b8a556b6e80d7e93533e084cccb18d06913d1cd10cb48469860c334803334849a8f33ce6797bacf7309380171d50fc055a4085db31297c3bd4bcf351a97ebe690f5cc699c485d32ce1c5f68d1ce9c5b6e8d562fca828b7911cb7ac8353c8b5740811a5fbc07d0a85cd02f8da227cff75b00b5d8e30680ddfb8430be7163b06a886d9701a42eae8e03b0343f0758f3974701d816fc0e40aecebf27345e5efc59ebf5f6610055ffee2b8066a0f96300c9d89926f13a2e90de5d0390bdb21c0560357ff9154052383c009071fa94639d9176b57853efd7293113457b0cf01dbae34d009bd3c55606f03591f54e0062e07b00ce48241c54aabd075cee170067bd1ff9b33ecb430ea22550bf9028aef6fe6db39a0ca019398d77605b7e52fdd8aecd7f02a891175b014823b91b807b346f005cb95db299527bffb6e86f06e0223857ce465ea732e02bfba5013e0325cc6dc0c8aebd450092885e02c6beb47ddf80367dbe0058292dd602a83d76de0db8ecf841d3499de1f92eff3d1ba01ca76b01d0631d0314ecd84fd8d7c77cbb0484ac5606546efd2000ee0e24284b7d13fcaf01fab4a4e77296c4c91ad5b742493a34a18dbca43b0da0ea3ff28e7a5caa4d77d70d2a36b9a601b426cc360cb0d886490055ffe91850970ce4070316bcad78a252bf4c9300f850e601b44c1864067cb6751940e3e57855fdaced8899d6f15cc007d8cbdbb5001a95d597013f498601f4c4c515c0b763ebaee715e05ab32d0087598abc0b20bf65b957027abe56e412404048a95b549720e37ec24340f8b68e03c8ead3cde70d204f4dd93b3160fb3af36709f748b65f02a81bf23b03cc9ec951008994b60696928ecb64b06f80b7477bc02ba0167b7549d9152dcedda6e4a52daeddeab8b28ae15500390046eb00b638cba79700ec466600f6b4cae703c0987349b59fa839bdf0e592dafe38ba0ca0ae5c6c04d0570e91a08c74dae5db8501e37662d07124f51380e40449ff20805eaa9c4c0dc8338e874d01d8c9ad2905cbb805b12cfdc410f928688facc888dc390578e253b297ac9d3b1bce0e05ab730ec42ca85c3d64d9a48bf11a50902c5b17392d01d6c5ed2360c425b24aafd5004c85f2e92c8064fd85a237ca80b8be1b838a44602701348bd54701c86156076033b613408aedf030808a3e9b07605f2c336033767819400bbcd16a759275e236f9cd73c0d01996ef018c866ab4051879cc4d02c8dafaf54bbd15afab48b38e9d5de5f518c0ae6871700820e8a8755705e06ad63b006979cbd14f001c88db0618ac671b809c0ddd6407d0c571b7b907f099e67fbd00247b6903c844515cbf19f89cf834003b123461ec57de6e07d0a8d445705927dc50a733835ce5e8fb279c91284ebf0d7cfada5f2188a2b8fa04782771b11d4032769b1b3067ef2780913786ce0c5845df5c01389d5f764601348b7dee0590dadad664d1c91c37ae60b025f0e26cc780b5d8db660089d435b5cdc8f45c7c0e02e8b333042663bd5f5693001a95cab2ba049c027fb909a0e9a4550032c2f7772f0d28fa918bee8453cf085d967b1dd537404ecb6703ccd1b714608fc05b62c029f013e43423f0b1e531973125550f2e986ffbbd7a34c0843b7c15a8bb9ce638444eeb1e39320f918f7a40eaa36b44bbd127ea86af77c0083be8270da0894f61052b201d244f6f03c615439d56b7d953becc02902dfa24809691ba246305f41525975f017c6c1701f4d9e1df3b481f7d1540a6d3f7df673979f06c30c2bb7119403a48f185cbac6774d46d07e0cc3e9fa581fd0e57002fab479b0664d5387a06386c4db7cb2d011e349dbd5f01ce8b9d0750ef2b4c2bfbcb3c79bb01e07697f2ee34004900b7027013ab01c77e8b1717bd276550e99aa6e514cebee9e90f800bfaca9bb3006ad34f9763c071b9de31c05b8bad8101abc6ce4b008ddbae5f8aa6ab467ea9d762ba896439ae89a9517eba1520d1c22200ab936b03ecb1c108e01d3ca56d5e018da8872ea0e61aafccd5279d5435d3b84deda929f7170674e5e89f01f6d898decf3a1ccc397b356007ef73c700b5f5b119408d3ca75fac83ca97610009ff4e06201ca83cd833404e3f2f0c54b0d6a00fe0d2b2aa76c19cc6e9f326803aea250da0af7c331a1ab5a5deffbc057016b0d59b1bb0c3db464e1bc5a69f8c2f024805afd11e457b20efe81ad52fca21d7994a4ba5751f8fd121dd500f507d0b64ac31f2e440dcff0060c2953a3adc80b11767e701d87a7e09c0a4f5144012d43a02a0d8cad9240081b1ed005a25dd7d062007511d405df9fd1280edb8630396801f4900125e4a92b30eeed2d69e26cfcca76b4b65e15d01c9d8fadc0085b2d5012052e5ed3a80b309a562f2560003ed2e00c93b730097db9459db80e0a78d1f0324b947d12344e2a1174032b65b1a301ab607062c4636b600c45a171f2e980fb1160bc0d0b1d6a701d063aeadc5f25f3f801a5929ec9701ef34e1dc257578c3852b47807f31737bb0c02b770b0372116417003b8858246629fbc8e59e7f32629a1f1d00c83b5a9e1f1bf015797a57404fbc5e02c856509c4992b3b0c7b6e8868c5bddcafb1b034665455db29463aec37b03d4c5fbbe01abb52f2a97650e085937a091e73b00e7967be90690ca99b603603ab502e0a47649735cf25fd700e7cc50a87903085a4cee36026820cffc9581acadd6e93fc010b7dce777002e84d904b06f9a1ca4809a95c5f1b60103484efba6a06d4e739c3d009c3d2a41d673ce02163aded1bca26f9b6e6ec065c7ed774025f3abf8fc09c054c0d86f549fbae113496ef41889590f03a8601f8501abc6038698355da238a515900a7ebf0f204dc70a380b9b2edf0820132efd7b4225d535b359648d2c754bf7121094a638a5ec2fe3a332b467b9c3c50a5d16b6021a959715808dc372f306e073059321806c6b858e552c0167bcb1e972074094ca69bf145bbeb2dd37202be0a97fd2d7cab3552d0cb0d8168300ea86f70d038687d21764b953a894379f00bbb206130362256f4e00a5f3d2fe007c93118bf73c9c4c6f7900cdd9590d603a29ff75014ee1763e35a03d7aa70076798aa92be76db0af3a807aee3d9ec87044489fe619d7552693b901bdff3d3160f6c077b1043aa2aa33014b1b87a8f0c5b98193882680d49e093f91129aa0dca52ba09307637fc5d7ba8ff603a8e80f17064c5a5ff706a8ad45cb00bbb0e7cfe604624c6f0d9870dee20932b6dd66004f9ec72ea9f3f6cc7f0228d0af4f23674e6ea2fb2b978038949e3f4bd2cce2dc451f60d2cefc59dfb03d1f030ac4e1f3ce80da6a1fa8015c9a5a3d311a726e33297ee8db3cc7c47f460a7384bf38941d9437cb59a635c66d5d141aa6bfdf808a45e29421d6683a15eca7134043eca30cc0fedc33c0bb80ef750035d01b2dd668292e3ffa09a07e49fe9e90c18ac5b60494a31d40e5988c02e0d92c02c8b3d99f0590fa5426bd15d0f0b81d04e01a8d3400f950f444b753789f501aa6bb4c21bc023a00b202ac3d860628035db4d100ee272c8ee6803e361dce8c06e065d191ee060cacc6c706585bebef063e127108183ad7deba010ea27f39c077825e6e0108dfaf9e0a0306f2a1bfe280655d5eb20478e12e4700072cf70601d440ba0d7a09729574c74ff8a6debd2400175b55068c4ac5f6645def9c15835d035a6cde0dc041b66b0342242ed6009cc12bb241008db9e300f83e7122741d12507eec1860b03ed3ea4be3495a6a2f80be32a4b36d6d1543178c9080f2632b007aec2200bb912e47d7ebdb5f033aea7d2b00ebdbbd0012dc7703ef253d0e0da86d9f6eb0a62b677ec29e89c29f25d02f698d02c830aa9e00befaeaad34c0d8ace8861c1bb7d269d2acdb759a0d25c0c8baf5904b32664861849c7d5401b8bf9206b23d9674e60154d2ee7300b569416dc31e3b3c08800e3a09401cdb5e007d657816002fdc4500159d7dc26e04e8cede0210aede0a404495545fcf67450b5d9bd900afd6b23b808f42ea34c70a681fa8b303f0f19ff6bd013b67fd430053524b813ad9320d1c4934e601d42f27970134035dc54f18ea0735c0d96fe3b35617bb49002222b6039046d2b51df93865174002ae6277124042777d6a80e5987e00486d5376cf0da88b0e8e2f810d01599f4d13b321a30cdc4b40cebfed2b809d4c492b0037d58c0c1873e72f00e71b7fef07505d5e2e036878bc1f0032c6fe94a22fad078dca5b409768861d7fd6eb7d9db358027ce34f2ee98064fbdfb501fdf27519409f55228e1520b6b86380ca69a701341a0afa25f341d897cc00c1ddfb32d00e4d717104287c6cefda80dafebc024a14ecf64b00121c5480ca3b565b01d4400b4d7cbdc630c24174031864647fd904701954b1a3f9b65777383db9c357ea9403ec3b75008d6c77439d716248a9e31b50d91d36038c7076add50134471574942da5e4b90ec0b5bb45005241b503a81b8eaf034829ddf603c830ca2e03704b441940b56d1f04206048a3b2ef6baa5bfbda3be97b17b064e7fd2f639be2b51bd0f3e9eb8700524a7b5dc0c099277f01432c7a45872d01baf08c722ca3f1574f6c5e021c5cab53034be01bfbe60164d1e7bb00b443f5f86480ac2bcd79d68f7db1bd1620c35e3f1d1aa04f9fb300041c5e187856ef01d8d32a5f5a01f459a52c5b01ecb12b40572be062b06dc0d2eb2b0fa039fb79df0017d2eb0ea0c781ed161d9579ab5597962d814654a18bdf9b7f0744bb9cb81cd60e2f7d0357ee06409c4152221fcdc85667bfd3951943aca5e89f152032e3c88048a61902938d8921c1c3dacff1c1560525cdedfd7aa2fa79290d53151a84fd1e7650b14f398a722091daa1a4cd50e7a0123256f70be9f5e907a062b9f2fc1880bb7de601a4e8276dc0a854f59fa7068cec6e3ce17dc23b80dde92f9300d2749fc7015857ba1cbe4e6ca36b50714fd1200069690e037005c63080bc4ea37600aef17a0ea0dec7bb31488932a99ee606c4c02bf5e20aa872bf7d0306f25e0ae062de62cd2f45a45a0f39c081d3fd11a0e4099dc0cc96a9b130bebf0d5804d4db0067c2faf067ed7651eaf80638179272412f0136eea334ee60e9f95f95634c4933e7637b1f1a68d2aa740cba01c44c94f3cc005f8e8eff2c01b3e9eb7900f69129a9877aa168ec25609e7bb803f4589de8a0e31220ebe351007df6f914e014198b7500071d5ba319c0f79abf0c0cb894bbef72702559d27b00d02f49e734004103b7802a9393e9d925f5e57a3f53800330dfbf0c348917b7b4478e5f2a394a02e8896bde9173c2bf522aca6cd04d9d4098a217c5509fdde72b8d3250499fa96d9d172ac7fa0660e44178120087482b800a768ae036c3548eaab33fa0ce2e6f02a80907746533c488313a0c8021701f8040d06900b2abcf02c83298be04e09ac84e0055aea5296918c7e568e4615cbe78700460ce2e6fde0103f26e2854740534808800183abb69eb700cb048651d033ebb3d34701c8adfc19d4ba59266ae800cb4cbef00d230df3f0134bd0e3f01be6f7e7e6be0d81eff84dc50e5d105c0eb06a5f65d02cc8defef009ab476d5fbcbec5172bb6c1e06d04bb7da00df784100c4d09bd3d5c43fe9c85551fc5b0778b7faa80b70f002f130c3d8d479de3360bc4cae000e267dfe0332f25ed70cac0c360368c9f3f40ce8716dd5b36b4b52b352993996806df47f5b00877a5dfe18f8eaef6b032c94f724807abf7802786bf1f9d2c0bb5edb010803ce01e4cb29bf5c5b27bb5df73bd8382cce1e01152fd57d382b806de98239d74d3933c8d9b162006575469c01f291fb98fc052d96fb3ebe36ed510c877a6247ea73d8d81f52283bf701a41d36192f750f3feefd043040195474433d6464dfd37375c1e6d2336d5a971802cf7ea2aaa40b9f270134c46e5d306c98e404498e38a5f22e800a56de06608f8f260cc5f63d0d20c54650c9d0b14ec9e579004961d60a204dd7ff7b87963c5911409fbd941a8f3c57455e00acc7746f53f6974e2abf05a0c78abdcc8025cf4102f07d9ea76b068c7d5d07d4005faca96bee1b404c4db1d703f8ceb6ed00be4d5e0a76990b497b27dd2340cac1add7be0106fcc106c032a66c052b400ed521c05e6b25ba6e40d77bc0a50103e8e30bc0d1d012bfd412707d96cbe1fc85af3d03bfe307c0302dba06ec7b1458c145e66cc0afae2d6a3ce9ee07c011e1afd849fdf119804848b7078b8072fd0e40c298d6a0088053f6c60065b0194fb08585f55934ca8088ee0f03fcda2faecb386313d44d489878eb7c6e4094fcbe9452d1d8891298ce16a083efe2f20990e132b94170f39e33b6f927a4b42b0bc4b28b4d57d6f46daf9d4b5b568780346751441316659f8bcf7e0c06faec0eef68949286e9660af0e65265d06395a44c140d281895f503a0b2a5d4058c58f24c9200eaca1bbfb42e55b9b37900f26b9f1a488f25fda7005c70f107b8f97c3f80344ce73d80348c721faf0097a74d02a072ce02c88d3d9183a8ec0ce817a56dce4a5f9a5a11d856a67decf58d1d03fc63ed5b80b77d2e87068cecf58f005a23b7de019cf56aa56b00c7380f17009facff1c193823466540e8ecb403a8881cd6259059e4532acf5d39b2259578f19780ec40a300faecd76300053fdddf01c6be5ffd1260f36bf3c2c0a7f32585cbe448529ff39681466555d3c8dead2efa470634f2d703c021343d3fe103ca57ef01a42d37e897accb36ba32812f8175a15fca92b8d57b01f87e531d1f5c02eb8fc3002cf07a00b65b8ac116c01ef8e763034ca7995feadbb2a61980cbb14a9d366ec0889f100a58660e35df9903ea0cb7ed9d01564e4a9b3aeaa6957e013a38548fe9973cd3e2ac9553b03ccfd9a0fa063829e2ebd8004777c54f7abd5c256df3936230c474fa0da0973e2174f550da2121eaa6d1786887270650a372f493d11fc03d48df36568e46f669668061e491dd00d9302fc701a4c726486163f648e5dcdc06d068f8bf9ec06deb97a2d892fe2480acadf7dc80cff61f034805a70f01b0944e03100af812409dad1b0cb3caa1d5457713e074c9eb8b0064d4d90d2091ba3e0758297d3d01bc0bf83b088067b3007056b4c57197ca89e24a6a5bf9d066d11e017c02f34393c532d58f9eb8fe34c0dc587f05b0bbd2ea6c001c59ae8b589600fd7160d0f515b14900d5e5bd0cc041a51ad0637a5dfc02fa64ace71852e59d91b2fc0678236471114002a31bea963b16e450c5a46d0059ef59135699efe6d0750d2b400e9173839c0cedd7808a91fdda06f8fc3e8a7e0924fcbb6701344c5f760db0725a2e2909c8cb773fc1f9b972d603d4345022fd5135fa43a392d55a9577729583a8f02aeff295114dd8ed528ed12160887175a829a96aec0f8dec8aba34e6062b607a2e563893228046d46c330051aef44ba30cf48ee787006ac2fb270306f26c2380d4162741ab7a5c4a3b5c9e05601d75674039307baad01f58c1951dbbe5492f80b4e5493f8042017b9b01084d180620718d4b6a4b298d27f86c960490d0e5eb0164089c7f07901472426614975126fb8038acf01900af531fc0a65f8bfdec512883cdeb00e42dde04543e2b9a1860a15c1c00461c713f380170c6aa58bb37207c5f775164239f4d285fd51ea3389ffd59013a16ed560009dd3c0710cd50e4bc3402428e7b002f454fd70df0297d7400b187e327bc169bdd00fa0ee62802701bc11160e07cf43b060cf5e73fc07d6b06433c79c389019aeef5cc00db614e9b2e57967aa21b8070423a7b6981acc09b9bd096e3fcd780973e1f0560c7fbd22067c1fb1d800ca96b00679f7b7537a0d80addf5dcfc4b8c5181a138ca9db27dfdca8046d6dda44b906b9178415736fd44042295cb3394d2dbc280927eb601ecbe1577c87ade539c63ebaa67a09f143844465da70c1953b0ae678f8a06eae539c91929473118a8c5da5f0154d29126e051ddc710a82858a32d38eb7501c0a82947dd008458311a1ab5c5398b7100bde36a3f00971f5d1b605c5dde04d0fcf2760a08c5d60da0cf7eef049085f2f51d409fedad0720fae72080345d7a6f80a6eb4c0348e3def602a0face03a0fad6026844d59300ccfb8f01b8b947fdb24c16a5aed4751e8da5edf340254f446edb8d7f808a4bba0e27001fc73e1f01c88257fe9c066033e508c08e5531bf3420ec55d7ce64cbe437f8727847e63378f34e00cc9e0a609f52760ff0351ae765002d23af5e0c32b6af134037672db60bf07d6b8f0bc0807d42f6b4c63eec54a475006edef03b1cd638f9178070645add312445ed8239cbc8d35e00bd747e6ce09bd0dc623888ca19dd90912d29c93b01d462cf67063ebc711b803071177d84d933df028c894319ba60bea57bda35c0401bc80130cedb2425aa6600e7aa98fe1a509759370021017e224507fdd29579d7db1c9581acad72ec9f1012d0ba3e36c0c736a63df2026d39fc0610f9977c4d0135d577ef2faf965c95639faf1443b9a112dd0f948deb1ea9284f68d3bae20ad0ebbb00cc0d6f8011e6d7e7510066f589818305fd13ccafe2f1320051aed701e4201ad062618fe936c615e01ad1e300eadbd66100ae117d09203da6cb0756800c543706d663b300ea394256c7a1c7c832320e3dc69ef83862ad1faf02a8092fb2004c387f80b8f14e0069ba422badbad3235890142a75daf6665b1fe06b117f8700072c6fa50074612b7f0360d3953f6701e492df7d003865d9c72080da547969b3da3ea5d6be84bf8ef3a60f0108c1fb790940d1db0148fdbc6d40c8d9a805202b4f71bd30608177fb0b207f72329e0750f5b7738053419dbd042097da09a04ba6e7c1838155ce750036a8fc0e9f8a6f1f01f0d1178303802ffb99d30d61f57d7c1b902164fb16e034c56bc7068cfdf906c09bf5f373002753caead5004ba9d47452e7ace6cbb71f4047ba30d9691bf095d93f40dad53b9407ad01c45c257b4706399be46b0124ebef9b00ae872e1f3f0c723aea06c0f2bec0e8ad73768a8a8b2dc000dfd6d8251da1fac6524a75b76dc04bbb7deb537aaecb71b9b24d398afe80683944ca465eb16f30ec4bf8dfb514adeb1e0a85b4344b1544de9e0250a10b757b47b6cc72cee5f10701a40b1fbb01f4d2c75e009691b469ac6f7b5b015417ce672fd338497f9ce40154f4b3b700aa5c711d40eaf3621200ffd873009463fc045d38f80ac0cd3d7f40ce9d878300928f87282936ddc9aaa3f2bf344e6705c0c13eff86005f417eb16e406aced61bc04776154095b7e38ec3ef4fc080ab05faf78021490095d927ffcb52f492001c9624a1cbdb768725e5248012192bcd5703c8bc90d4df0134e13c3c015232506dfc1a70c6aaaa01bea24d294257401d753d07108257e848d50ab0bfdf05f8b082d2e037807dc2c66200603b1403037624aaa9ebe203758a425a02d6ea0ac05c028cde014d989141377976496bcef2ccd70d1c494d67e71eb76b5b06ac3cd7ce001dc6eddbba01c74c5efc934e9785f702c0566b4b77932e81544eeb867ec90bbc5fe35b81a6c150179700aedeac5a1f00ece4b23a16e8a539f704bc027cc4acda078ca84b9bf6b0ca493611a93a27e3e34f0ee89258f1710d80ca29ef69e47ac8a83cbe0294a470fb7a33f03aea3e803c688714acd15292e4ee2480c65cfd68c0b9d79723c0480a25e9bc0660dbf83100fae3013096e5983c8f036844a583001a1e6d177d8c03f1f126803aea8c91dd282589f6d934001b989d0072436de40128fa2480a470701b4075391f0420e5f27a00c9e9e4ce8092f6d3005ce5b31780aca267014829b31f005f4e94b462475325edf8aac9f25f4bc0b78795bafda7019e5e772b40cf67352e026834e44700e7b95a94003bee8e3e01c45c25f77c369223e916d525c0a6dbbd376012bfe41d71859f4e2de691e9a8f87e0ca082e98ac7bc1317f4f5c7066c515cec01ba94f4fa238006e17803e0a33b0f1d00a7288af32c0093e721c0876ade7b0638aa947466a9818822d87e07701d723971c1f0b1350b6103699802f5d9716853d15f0338b7cb96dbb4a6b60a90595a6398b43aeeb2026cc66e1a587dd2b7b90fc4bcfd06d0c89e5e19604bad5f04205276270061f3db80b4cbdeda09c0b97fdebe0d68531d855c02bd2339412c732eb56b5dfaa55d2cc7390293f7a42d9331a29de3726d5dbd1b50f4199d9d0fbad263177e47a1308bd65d0228f989e2c61b30c22cbea74d1b354e3acb2740d1c50c44c68abca7d1b0f60fd0530c6bb14f5716833eb6e59bc1407dbb4f4715c5402df6c013759f047e43daa351c15c41be0b18615bfe6b07e0ace886018b555d37d700a708bdb9094056d1db00faecc3a10193c519d56f341d1a7712807c061b01a4b6947f7d0534f66516af80a4502bad15c0c9b41540faa33f0fa0a2b79f03c8ecd97a0c4022e3cf006ae4b3dd005c8e756c80c1fab0178026d43b52dfa953e9f860be4c05a5caed550047774c8700d6c8adee13806bab12a5a4ca970996d83b290cf039ea56b77c994f89f3fb3706e8a08b1ce05b767fc706ec8c3cf8092f45eb9300ec9b3e05d0d85f24009f3bd17df32bc0e1d11ec0d7f03c6e01866898110d1429dc7ede008e0e9bfc023cc43e6e01636f82ee0650cfbdaf03bc8139d7884abd362db58c5c0136b82f01299b184a08d280cc2774370210c746c1f2bc4b92b7cd009cf4db01747319244723408f40aecf6b40df955b04d04b072e3a0143493530a0a4337f76d0556d75dca5017653d6b458637daafaa363401f6d59d1d98dda624702916a9412c6e62c80863ab6f6329905be0beab2cc42bc2ae901056b74100bbc4100f9b6ba7701b0fa9e024839ee52fd464b4929cdd60390cca36f404abb512f0037e41e01d8ae2deba7005c73ff08b019a86dd215900e5adb0d2039557cd00ac896ba6907e076ca490074d03400698b7e02480795870124c9f77f9f55ab571f01a494aab90196a39c7f2b208d8b95f397a2ebf22a007edcdf005c3ba3ea671ddfc27c24e1cf9c99b454def3fc2f69d5fe08408866d5da058c3843b3796b40cc66de07f8605ff73200697a5a060c42e576c997699c345766d300e44f968c65b1077c7607204953eb95af648cec42c182f95fb6a4af0ac061a7f2f6076067e8965f6a2fdce8db802571de0a4012d153806348c634d032604c9a6e1b3042c33cbd021cd9f523addd687136a71f8606ac3c173472eea13e4d03703e6acd400bde56f90420f42d193e1a90fee4c53fe9b1249e6d07c02efc040cf0c265f3005abc9f2f0043878c6c19a02d272e07d75526b55feaeb2ae77e47d1e53668ad09b32ed95f2addb29b67bd2e3ec7099ddd4c51ecbd6adc2ea36b516c3472b38a2633ba344c561744653dd1c88d52e2c0d42f60a43572e2773480e4e1bb01346ed34dc0183fdde56900992cba1f7905105c2a67d3a9f8fe174082ab34812b401cec5300cdc85f8b00eaa89bbb00329d92930064e4da0b2023efb61b407519dd1aa072eea3602c56efb7036898de6f0540e57c079014ea18419e3b5778b9fe026067b5fc3907103490b4ee01b5af673c32f0b935cd51b977452bdd89912f0f73103eb767c0e2ec660e205aaee8f91d24ed6e1dff02c83b5afcfb317082b63ec059ac749b7c037cfe76fd0dc091bb02ff47eeb3b3a56ec95c0e63bcf81b77009f9c7ede34606b71cb2ff5d98437ea92b31839d5d513cb984e32a33fb60cf8ecf34900f2d4fcff449dc776e3300c453f467b1d17d5657a9cdedb8e6ae97d52bf7e68bf0b647b8f2d5124488220ca1860b94c5e560c641cded70ce8d8d42ced00ecd0fcb6e98023a0b5a34075fab5875a08d1eb9703bd25d041f12ca673d4520be0149d664f00b38f0dd282b39cc36af28fb7e453fd2254a700bbceef687a5168954a946832cb86daa63a6f898b81c0dbd481b682d30307e4aa387220152e47705d879153c902a07df606b8051cdd017a3494bd2d076ae9d91f204be2ab032913dd95038ded319dec0b8a37ddd41e150a5c0012a46c3bc0f07fe84007abf52507ec62fe50f48feb2707daf84eb55ae69eebf7fe06d08e70f3bc3540f59fba059074262d3e0db015e8ae209ba7fa91d0352f0eb48eed7d00f0db0aabdb800207eeafc4813ae8c79e6171f337134030abf52ea061eedfff016e0107404b54c9d509c06ce3cf5ae9f2b9315ccf583280be7ef70ae06e2d745b002ecad2848665d9881df9d300b3f2651590731df77307287868f10f60d52a9eb60d602c577acf08d8f79bb75f807985ef8d1c6818aead610d2bccc787810c778f3780697d8ff68b1e9bd2a37dcbc0396a9068e7b9b9aedc4a2ce301c7e2d56500c8db61400be617516e2563677c8b6df3cdcd9b012edaf71828339924e74b0e2827f6e4409370d871a049f8f1680023c26419d0b3cd8723079a62ed870375e1e9a901b6d72546df1481b0bce7400d0ba70ef05f0f0eb47b2879c50268aa4f0f1c6807ba3972a0d3dacdb103d28ecc1ce86bfb37079a73cae23d072d1132270e08ded0430b0b3f6ebe3a406f29977f015e704c27adc2922286e92dc0f2f65cf00cbbd34ab77b00f7eaa9fc1d22b030e8b789012c13a71f80da520d5e18b08a8ea78080078002d8e7db1ef6d3a37d406bf140f68b1e97b39b918129859cae01c87a3890481599a54ebb5f3380d2fbef0460975ceff469463ec746a9b1e6000fa2490090052fbc3706cce968039063d95ca6a519e69fa6dc0454ac303f4f809ad3c9d3cc01a12acb06721293ac38e0fcf205e8b96cbba2d7f31161265c0b465502b7931b7a2c1fd8e6b7908f2e1b480129ddb2b04baee43673a0a9def3507724ef270e9884fb0ed4630de312a7a926613871c06e7aec808dcf018af3f73a602075c9d79701ec1fdc3417be672fef3b206cefd6813483ecd781a6fa71e9402b6efee240422767b005d030ac6a812d2d6d40f370091838cd2b3bd05c18a6d4e1dd05e0f41c36be01e6d27c7c01b07a8dff3203e8fce1c78055c7fe00584910258a9b03f6ecef3b07b474053070123f90f09776ef11de4f0c20ebbf2dc0eaabb7af06982ffb3b00eca7e1f6d3012aad01927835d91460797bae2f0d7024c66e59ba4fded31fc073671b6081f4cbe70073e0beb6b704766465e658006e68e8f58c20e7e6fd0bd0e364a362c759995bd190610428f48cc09a5c16f458d8a6a5a12eb9e6a0d74328a5f4aa8c4656c64929a1dba5614349f0c6131264ee2f217f067089d19c4d1d503622778067c6ba011cfd46b7000c88a11c3bc052b3e2800e5a3660e7db55001b70d83b742009e20ea7f4796b0365f3367c7d3ad06b933d07e450dd77a05d2cdd71a03dbb3976a0897c71ee407dbaf4f717ada799bab0f244c6bf396040835dd1c7551e92f9b36bc02e0e13c0d422307b07948a3360e971c23720c775b63a00981fdb5a06b094ba5f01d0d86dc21ec0dc6f9f960c98b1bc040c76d0949c567e5ff9390364ccdb29af9d1f3616bfc84f00e4d64f0e0780a5c779dc71a0d1e776a5ca2cc9bdaa4147d073bcc7db250234e9fa1f609046df2af35356e56392129dfe1ae0c67bd639d0b83c7e1b20d67c7aee80cb143a390f9c805bc969557009da3674611c29caac683ba9c2b892f09f699a5671129268f20dd022b8e7970ef8cb9503b4e05380cdb9c32307f818e50ef041a3c7e28c62812d1d48d76ecf1d68beacdd00a82f9654170ed4f4cf6f075cc63e1ae0e479a2b95f4f4839d4040dd43c730b596773404574fec929802bbd50a606f033286a07d8a536005c72a59f1f003292078574cf01a3cfe5743dedecf6ed06d0b3e29eda2f06f4a0779dd5ebb95fd6021c7e022ccfc4334d9fdbb216e0750cc831bbdcbd19c838ce360042dc13e5dd5800ad1f4900584cf3db9201b4beb70d075803ef0096f0e1f7d7001bdf9b35bd918139a403a02599d8bbbdd61c201eae007d4e827afb387359ed2485753c25e27ecbd7e656c5ec8987e6958ec481ebdabaeb062ab16a85a98780142a98368236f08bb1012cac58596adb5f423f72a0670cdb0e187d037dd0c8a97afa1c303d925d079c4efe7e2191fa5e03d80e34de73409aaf5b07d282f3c18136cfc389036d38475307bad35235b50590e9863b8be0e53c12094cf0bbe88f1a60d52abebf1c5000f61260f54e2e5e01766bded85fec6ae0d8fed2e06bbd961b4087b9b376f4e6a3780dc02d29281c7b0e981e8936be30bfa3d1ee311840826e7b80c5bdfebb0098dd923bad90590ee65b7ba84d8feb0cd0a0067ef27159cb5bfe69510af944f72fa92a3c4430c5e4ca5d63c849411d54847a013847bd014cd91cc60e8835e7e30a7b687b04180c48d64319e4b9932c49db0a2198eb0aaf0d4d89d945eb47881388ac3c1da0d7592c6c310cdd30683dddba712071b8e6a19698a4b9e22f43852fdc392d8d52c912fc08680305e80f0ca0b1d9b80c5dd0fab167cf300fc4eb6f001b4e727ae0402ddd3b76405ade5580a9812cf4c18f6fc995034d421c9683cfb970e9405dc84122b84ef7ae2bcec62e425a054a2f0059ac1280e5dd78d79c8b1a3fc529c65f008b9efcd90358ded16406c018daa8204c04254b70ce5b3c3b90c26d1780222a2300859b8342651780689f03076cd15300e5e5d3cf12305880b2cc0c8d79a985fa11605adffd0760c2bcfd1d007609fa7c02c8990df7cb0ef496193d9699cff7fb11c066f6cba10126d0fdaa03c2e5f601950590bd002c99fac79901969c8f0b408ba5f769cb0116b46b40677be53f07bab0c3a9b5c97a6a502d598f911024ec31fa3909419ab57b03f87f74c7001c4242f504b0b08afed681be167523eed8a66ed0eb798d3aaa72621158f88f8a83674d31e1e3b635f79bb82a691ddbd24ad774cd20f9b8e2a171ee4b70af6e1cb01830b671ba4892577303586a3206dbf6ec903f39d062a0a0ef39608b5e1939d059ec7317d0d56cd1a901edd9e168d3007bb6a22816402d4d76003de53c52063bae1f7a46ba6d001df768e4406a719538504bd30d075aa59eef1ca8e997570e346f6d75f0f08ebb3d03acb8c7da805bcf2ba9c2451158be2dced9ad858636cd1bc012901f5f011ad2af9d6c03b8e10d1810dba915e952d1c305c00ec343cd6f2b8c69d8dcd340bac304608699abce81bc4c944e3b829c7c6c99fdc5c2f595926a010812d80194ecc878ffb4f383a47aecdd81d620155d8e80a499413596e780c2abe3138005e31ffe7380097a1dd06a12b64302e8a80fa4c402f3b5c16af96ac969734ff5f30dc8d9c43b3e2ece4a0dc329435958ec0a41136d28e57f1ab634e7da7eac1d396cf50e48a64ec38629f7fb0f74f250b101bf5f036a7c25d76a40c0a872b607e05c19b8f16e7d12ae7f3ad05f56a600dbc40f0f1d50aae5c000dbabb25766f3641e54329a39d08e9c8c1c68dfe7daa7b55d3d39b65fd826aeb0df05d0ac3c3c73a0671c170e9884970ee473a542e759e78a33279c6e4af6db66b70304ee0a684767c53ad2ad574027d14e0f3600563761f3cc80655757af7766fb4cbff84b66e5c48e5b035c82aa026a364fa380b96307605af0c135a0b4f47c0f06d870a61ab92e2724b3ed6f1c502cbd01e0591e121e6a76fea00aca119050b91926804af3255166d20802579c6f3f8086a6dfbe1860f37c7f02b416fe439fe6d4b34896b4cd7751c7d70ab3fd0ea80ae60bafeda2700b309451e92541bde66d374cb16c5ef5000bcc61d9ea8692f3dc9a81c0e5c146ef8048ae434013b46a7753031832cf18a8b8cf51a02f73a0815aff30c06bd7bf1c70065a0274d2b5931b7b2d06d5e46517d0077c266e1cc8abb3ff03ea539489ce66657376e94006a2677be8a0fd3670f68820504dde7f11a81f3538206dd18b0176647c143bbf4c49371d5086472dedb3a9855514006213c2d98b014233948c7001f060fe0730a734d4e2deca5734aad699cd63ef35b3ef570cb0e1bc6e19c08fede5cb817ef1a329d6c7f94298fc198070db945bd13eeabc9aa61c02fa3881a46bab345a04444034aa2410419b91c957d3a32fb8596d556a21eb4beb0f955ac8fa28fc5ab5b778ed3ccf86445b0b4a1f655ddf72d538a04f77010debfafa3700c37fd21f003a3b697d1ac0dcf1f1e080fcfc9706f0ebbbbc00f45203933473203955b9b939403e389af7ee75b3cbb84419238dd3b70389f6c9a503b24759d3ed4ca80adb0b809277e58043e2b90335fde2cc81b693c3bf67a8832e470e34818e260e88e155af0f13ce73cd9eac70835bf1f9fc615aa2d37db400ab4a7df102b074fcb8230f9e6af0701b40406e58dd014c30dc7135308ff156d3979f00a4c16fee961da8a5875f00b34afe6e022ced48b96e802de9ee1fa0e680b7710f08ecb7d7950154b8af5d406be9c53307e4c9b37658dc3c1732732059bfce0df0da42536cc8c73cf4fd9f815c42f74c3b728a960525799b031c1f871230b57853062ac7272f79e7e3722be6723d32c0c7bd7d1828d8e7ac1d9686e581b1cdb95d696f345f868a044b615b3a6edc8074e9d7bc6aaa0f4346b48f6aea4450db1ec53386c0d16bad376066fdd6810e9a4adeb9f038537fac8c0db08c1f7f025acc3f2b130764f2dd027481ccb5d60e2cacc9a5fd050b6bc26dd310dbcee16cdd0053fd70e480a97ee580a97e6880a97eecbfe02dc7b9034df5a3b103dc3c177fc9e721cce450fd044c98b7c7e706c838fddd01ec5663f304c0dd7c585932c043ef0c94e6485e02cc6e795d1bb0e4378700ec9689ea24466067c27fd6b0ced239ac037a76b10f7e915bb4e0075f9b93d9b8791900d6d2eec4817a5da9c11780045c1340c9094785ad22b0e269db3cb41811322387c308262445bcee018d1c53dae459a0ea73b2342f03865c22b5f42b10a60aec0b337a6caef62d7eb1cac745ad4f9bd62eed88f3454d57806104395e26da3c23a86c02d1c97102692b68cf00be57fe338001409e2a11b481ccf91b0ea4c21d1c033a76c2e6c88116a53477c07e6b6fe9a57e254a621e81a95ffb070ef4d0fd43077ae8c985030de5c19903f5d8f78301265075ee4013e8e2d48126d0e11fe02cf6f717ae9fbca5eaa056999ff2f1a4a54cb57c7ae7270fa970e9f71e20c73daada3790e172760d2850bfee7e0035e6c1bb0f406366fd5340ab5f2457eb0072a836d7c100b3f2652c909bb9e3df3ba0d08c0a8a468fa0e4be72e05b727cae4247d3f3960d58c93c22e859e8535a5af69c818656a0e284d32894296e2e43a5b9bfc4d786a24092538128da125c551159007ec1c745ad8fdc0c1da0e2b8b2fbe080abe733401d04d67f018dc548ac003ac4f2e812d0b36a1f670ed41fc396035220302ef34d6a0164e75f003d637ddb8104773d31809c1e1c3960a11f3bc0ef42af9d4c2da40a499ecc0b242d40f30ab050489e319976721a48679a84f3cc25043a5e01c8369f2a883502fcfad29f6f805575db3a0394bc65eb1c5071785fba316092bc0230bfbe3b7b68b0bb68be656e94972497805ec21f3a89d424aeca842204c0d8dcf70b07a4b3fc004c981e29ed88b34193f0e61e90f38c3e734064fd2d809af54d478f15534c04d75a9327e550e0c924299cd48d056c7f09c4855e5f7bb763404e14c912fd11f2825b0d1a16cfeeead35925d08f7a89d40f63dbdb0dafac3df924ce17fca5ae1d483e2e7946dc2c3491cf19b9a10a5c4e1f006a0ecd6b8d01deb2b70f08ec1e6bd70e289261cfc09c9ebc1a603b49c205c0f606a5908da0e72f2763079a51ca9ab000fa7cd95022e0349fe8427701b47b1c9e38d0301c4f1ca06dd9b7f8de70ec00bb941e3afd4bc72f5d6a9e4a9e543f4f00bba179d6604fdde27cf60ab06cd13729a041f8ef7e01b6ae7f4f0096b6b9d39c9b467d1d59cf1d905d9dbf44c145b57e35c0e1bd3b05146839f2bb8880eba766481d68477eb1b754b22826aa95b600facb640f1038cdabfc6f04567547ee621174962c5b4bdfb418d18ecf6b00b92a9a562bdd34be95db153ebf1e0a0dc3a534a5a94bf2da00a8d082779e1da81deb3f80c049fc83a11c5ac97a72fd6500097a7c047435127461005d6affd8811694df0f07124bdd12476072baf5e640b27e70ea40bdbeb9e940c27f3272a0866d5c39d06c389b39504b0fff7ea10de7f0d20006b35fad749967e15dbb04101e966eea5bb22c93635bb37501b02b1b55638ca042826e02a0b195ffd381c26e2eaf011d3999aeb56a6773ad7f01fe9d01cc2ef59d020a5b71af00a5cd06be25af25ebe9781dd0e5d438d496145b4ebce92fdf52045496fa07801378b2a4653cab71294a961e01ad54fc64491368ee77c25f5600194a4dc3b70c25aae4fe1410580bef2a071287846188cba796f18f3b079a62970da0450a655f5f00dc708e1da8e927e7802e508bf3d801a93a4e1ce85bf676013d0fdddb7320e35f7de4409dac7ba07c7e7a97d02981ce1cd08ed9af037dedeecc8184ff60cf811ab6bfef80542e270ed4d2fd230712fefaefa1da5f9e6f1de00c66bdcecadf704afaab6b7ea21d39b7c4ceedb00a208f73b3c15fb2c0e5a3cc5073c06cb8b80398527377eb402b9daa88e41ecad4bc7c1ae0a07993005aceb7775f808e53c18196be3c1f614292b567beee33a35e47000c66cdc73f40a9f9d23ed2b0dcead0a4e706a874a522d40b40f10107ec73af39a0a6619f74501ef42d89bcf62218287d75a2b1cd2dfa3a59e2f3e38ce298b00c20f94dd87e038482482ec9581e0559bfd8d4729147b587f3ed3b20d8e5c135a041b48733073aef7fdc3bd0de70ba0368838e1a97ad037d4bfe08602b483845cf813effa27120e13fa73fcc9e1c96ed2ddc5924a7bb067846bde980b0f03d079a40671b0e345f2e1207120765489dbbe6930470ef1fc0eca79be78092e827b92446607ad0f10ea01e6133b06704a4f0f61ed02074b7b7002ea71b55618ea063bedc5e037ad6f5e71f03d81c6fa5e31651b4a9eaf608c878c6db19c0afaff996f95316e0878645e1d7b77c57809a67b05c1439f9a493fdc1008766959acc8b12df9e20afacbca8bb823b3e1a16cfb7facbf62ba02c2430db2f80aaa0108bb693b801e12bf9c0d746c1554b318844c0b2753005989c5e0480e9dabacf8ea0d33342b6e440678f835d0712dcfd3d000b7d72b6e94042b76b6060079a940ef48bf34f0794223d71a0d157404c5e5a81cf26689a965e8d51959cf3d28aa7c535c081247943bd5e7a01d8871300f91d1a55eccbe73134ba90197f032ca6e8f00760e9d766a7005cab9bbdd2015a4e63002d678f86658345a3d3f4b906b200bfbcc55c9b423105501323510a84081aeea28fed19f87c374aa61e01e10c61e7d0817aec730c18e46fd92815435e1644e707d5068bc0d2055d6b1d8b824c4bbb6d40cdaabda4f952d621e7b0ca408511b361fb09100a6939337aac9ff45a4f77b5cf95c3c4cea6b78029eaf92e6fb1ebebe4960e8a6753ad526bc1813aa8df07707d9d0cb70e90e45d408b4272911a60199ffe027a2de3c9f987033df4fcdb01d92b5701839e91eced38a098dce0407fd93f714002f21b076c055f0e28107cea40e32227acbcf2904c951589c02a806c9c3b9058ce4e00161033d975803bf28301aed22eb54a55f140cb8afb0cb05a14b70d00dda1b96d1d901d3907d480af1a60ba76770168489ca708cc0806a92c41b1e679559827757b0a20a2ac51529139d0430397075561c5f5aa65035ad7db6bed0d556d27cfc32d40ab553b597a020cba244f963409ab28ebe4a65c03648504779b0e8ac2af757d97fe98e7395f808d2900bb65921a3093fcd93aa0414ecf7f006d207eee1fa0ab31a7bf3bd0b73cd3c9a68d37cf0f06b8039e14802160623c7740098c1f0764bd4f1d489277961d70bedd7720492e330748f299030de5cdcc8176e4db2f030aec6b1f743aa9a701a7a3b31380e57679d3d658cf338f6a22df0008850cd900a8599337ce0081dc2e8a5d59004db1c35f006523d2df0780a55051e9cd28d814d64c2e0c6456e46f1b9017facb5001ecf4fa8fd79a3f5df3d4022c0aeba6073458e05f57012dcf786a1ca88396e8b1b815481c90a03ab7da0b2d5d58f505bef89aea759475ceb7cf0ec867c0e7f756444521ee793d948825a7f9dae5f47b19809c2647170690f53d3a28ca29250e18ca280e5a82cbda81b61315c75a00cdb9f6cd819a5e160e90c2dc01c9a2ce0d107772afbf048b256eef9e00011d77290534ba376d55d62c0e13d6f35034004a2c3577ab00cba4b73b011085952edd02fc0c3433c002fba64d3cb8fde3680f3041edb91d0ca0e33ef096dc32733c6e012c01575f024afe527d032ca7fdc597034ce174d0fc3d7acb08c0e2d8dcf02dc59860fcdb0a40ca9080d61701567c056ce7a1247f61b2a4fd36c4a6e223700f284beabee99810a25a4cfa24bef6cf8cbd0f08b55485cb0e60ebe91efd1117183272f1b5512c09936f1d685c942d7a0124b8bb8cfed06bc54d95b9650eb45aa6d59e03cc2e670057150e1d6071fe039a40cdb6032dc11c78830b3f9b67703fb6eb6507a45c96f2ddfc657cfc05d4961fe6188059aeb978047472694e4f6e013ddac5eed880e90eef8081756ccc6bbd08c24d6b80980039d84540746d33d40ed8f8ae00381e347d052810dce509a0cca935d003f0a40ef671c588255899d2f279d480c08f032c791f7c5ce1a99f0f00c86968794b61e9e852adfc4d8961261c6946357593eb2ca6c8e9083a539c5f00831944786d181300a2948711d8417343f3a5316346f22f05b004377b3340cd6ebabbec405bc1254d8fd34333ea7270403acb6b03f8c35c0640536310b901b4351e889d0192ba8fec193da23dfe0312edb7de81447b6cc0a687320a2f809eb1b3e4806a379d03cdcab272a07694a503c9c78ed68f795c011985b528b559cdbaae047e11d835faee08607914efd4c96d3e9214a6cb3c34a7204c73f80d98726a540ef7083272415f7c00725db427ca4a9cb7510a09fc4c011566b927de52344a6b15544e6c0ee42093fc6a918ea392a36c4ae85abf05fc5907b016a6f5a103dca32e0c6022787c02a05ba6450bc02e952a13e71ce82f69f6ed80a4557fbf904744e6cf605757cd9405900ad7bf3a90d08d361d60d91c0c90ba95537497d5230eef678081f3cb9e86a1cb2db5cdc609c09cd16f3a03ecb7ca361f416665555f003907abcd6303b8f02a982502121927e7016079bfee0f011cab9bbe06e06a1e5afb45936bb055a926ef0aced949760598702f565f0248b193dcf0d00265b37d4800e4920f0a60cfbb92321ac9af06aaab5136132e86bada74cb46db5ad734ecc8335edb4f3a2ea769583fedf5965901c87bcdfd5d694add30c2fcb3b20f9810f5bc41d387293778279b8002d76a79ed455099e3d21ba031bbd412a0adb5573e0c0638ef3f3e03ec4aafec0c7006da5d03f4e80ef999015629e5535a00ad52cf06869a58af3f40c3961de81aacb487dabe7f7be28058d13d071aa8f5d48116a53d299bbda7b5528eaad8e503c79567cdca3e1f716faaac8011588e88db470318ed955b3f02dc1bda7e19800ad7dc6d1a402f7cdc069868df6d001a99a15a95278880e29ccdaf358cf37ea2820e795f34b4548eb111f46caff284ccfb122ff9f64e0b5b5f91d53c59e2e3eaa0453a1c3f3bd08c5ad796d4cf1565fde51fa040fb5cd905709a6f1a403b92ab46d8d09eddc70556637b438f45b1947c28b360046d2d23c2780098b299f70e2441a31410dbaa8defd701975c3b0eb48c4f570db09e1eee3b90f0af4e0043a5cdf3c91e3ad424894c1c903dfbc700336ae3d281d6a08d0707d4a2d872401d5eb563eed22c19dbd233e6c5b134b6aa3f970f96ba2455ce8c7ceeb02cb0f206201b5fb3710c3077d3eb0460b517beec2f9efcf7046046a61329ac439171a7f57c01a0ac59a25c04f97cc5917cbcf096a2c3468fc7cc508e11cb138ded50937f2c28dd4704815dfd8367443550bff87c72c02494c00c7195a6ec1dfdd167b6c08e0df46afa6ce400b1d4041a8609cfd8280053e414dd324a032bee1a0d8b4d451cf896b8384ae8460da0afc983161c2c3a399d5c1960dfdf9f389086b2c3c7f9a5f0eeba01d6e4ca7fc15f2ecf1d4885db5d9cd68a798529d2e29d0a645664f8e241c0d3177c5f022a2b43fc0e08b6cd370271afc4ac7f046827d4687f31c02feeaf054aab8aa0229011900122e80ea718d50d3756ba9f2be61ebb5cc8cc002daaf5c3b503a5f79cd030db5fc2de066060187497b40052f20e460ea4c0cbad6001344d27b9038dedcb8e03cddbab0f037a6dab3492c5d88a313497cf021915a642be0d206d51b39d01d892d2558ddcd8126e27674f004be374b82250545680feda00dbc9c31810d4a74159de8b7149f28a4475688a714db460f25b0108870a2af732073949125e007638fb9d3ad05b7e96003debc70a9fdf8f3a8a0ef1b53e4d374a8138e7b4cf5d5c020a6c177705801b8950f1da38e7d41f4f2f0e9873bd038ded19df32982fedce9701768fe9be030df6ce87030df6eddf2fd48eab7f0e747a5568e81c304d55dd65015025ef1c50506ad301f53c174b703c76e7364dd585939cd0d074e31340fda854a97d178013f02fc0fca4dfcf0195ec0ee9f936a0552a97e4a30258398fd9a3403152bd93f09a0272d6e49d2d8192621dc99b8661525b61efb315009e19c90abf98eb9212870b817edce92fb32960dab1ae4f1c48d6ef7601c1b4604de4499420099dee3d22281087c0e70f25a62c39502d004157378040c6d8ba0434b5c09d8196655c4542174002735503ba9a588dce81b69351eb404d7fb6d7f62c4afbf487af52fb970ed0727e1c689a1eee3a60371d3b4043f976a03e95a16a0124b81bfe5ab42d056e2d0037cdc70e34f7d76a0728acfada69d4a46594dd56274fb301e76b79a7cf9d80115cc59a4750127475fa0c20a150983e39c00d47833d9dff493bd00d20935826a7062aae3974275e4c4baafe350f8f004bf0787606b0db848eb754e65b9c1c032a52a676eae469d3482f6c9a7dc050a90b7f78c630e536723533c0b6965c004ab6b5f55b40ab6784f33d03ac74f2548960a0420c733f825aaf55f2ce052066e49f0389d4c9c881444aced70b4089942d07045d9d3ad0aaddbd1840608ecf1cb0cdaf3ba05ec1920349d0f7bd0354164d8f2cca077149d700ab51767404b0024af7fb06f0623cfb005838e5ee14c07d43bab60a30b7b5b72b802535d329a9c8e28eab4b50a5088d8042a3c9c31760e094b40228737664393f1559652e9afbb4b426916058a2a5755db09bd6007c9cc3f9aa012e525586b8c8dccc3068ce65510a4920ac3e9d0758aa1d9f7706b06d5d2680a6e678ff08684d60de019d443b2858720134a38e68989db4d2f1a303fae310e072ba6580f3feeccb012997c70eb46ae7ad03353d1c38d0ae7e7bec8082b8970e285ef2e6409bf8f18703bc7ffca19c2b0f8f1ce8f3e5d5b900baf57ad0b7e439ae5ecded13c043badf000d66a8932540cf9da742a98bbca0246adbf18b2854381baf022a79990499088ab97f14959d6600b39e3ff0d072ac5f0455b58f608297fcd30830e52a5e2177c5dc1f8892a8d261f2ca5c8a1897bcb23b8b5d6917798d374332390290812a59a13fe2364f3502adc9799417adb85f5a3ff2616459672f0044b526dd26a044e8ea0250ab1e5f500a84085ae4f42e77a0bfc8601641afbfa4993da3af55fa3b6b1ca83fcee9e428b81287c70703bce5e4c2818e5e5b7fbf20f46fc901eec8d70e58711f1de8a8b1f3ed8078b1350764797f71a01975b8678025f875df813a79532d2df2290655591423c848433bae018572dda46b5f00ea03a5eb2b002ba4a0dca5c57ce82474c7bf06c829dbf29628c902936700599ac324013464c3f9f76b80d8d98abf549604f0641d6015518eff01cc25e0a807581a058e8045edb9f666801cffc2af2700752393e91a0007ff64ccd746d1a6a2f42010754b89b632b5ce01d13ef2408ca095e698e674a11d57d2e2c481a470faf70b495095017a9e519e3a50d36f0f1c108e6d60d05f92cd0d0752ae3eb71d68a19737e502e8a1729d5d00dc4efe9e8172f5f70c89a5bc291740aac2e59903a90afb63031c8af6fc195cc7e97eae285d4e4f0a80b924bedc002cc9dbf6086039dd8e0e00ada5fb780558818bb77700ae91c997b6c6b2b023cf9324a88c5a1f0edc1aec786ac03afab20508660ca5e935c11b897c1516407dfadc18b043b3d48d32589091f20547d014126d65e12dca1ecd316cf097618c99723700327c37d2092047602697805632160eae1c90ff740dd0a1b0aecf0c704a5275db05d06ce00c54bae17f832e8c52c885eeb203357d6fcb007a616daf1d341b92e76d07ead3ad4707ea53b98b2d8016a5d1bb03d6d3270712dcaa7040ecdbbd031ab663002954d2cc629ea45a87e66df569955b9915e5618dc07c58650a9f6fd03ae1b48f5ac7aa6244aab0620380edb391393d0282e0db875300e56f92b301c06d5368f4f95539c138fc4d4b4bf3f8bfb75f98835dfa04a8b0e59c69a0aa6aca12ac92db71f53449ceee01e6b1ab520b71396d29e2d6d11fbd9548413eaade32a6f4da92aab8384ae7af6b402024b3ae0cb045bfde00386737c9bd01ce0db747004ed1416567164053ecf8dd81b6a4db8901743aa54c8da0a761edc8813ab93b75a01e3b5a71a0a13cdf040c15f7fb8d03fde2f3c50067b1ad3b071adbd99b0374877b07ea8f66e680a298ab0eb46a3fb40e4852bde740f3f6f2d881be65ffca017958d71d10d6b96d408b74f32a19abf31ce1c7e618f74e6e8977f70115d9d5b73200d95fd2d51780a5a2bcfc060cac858792d3ba28b94d38b803d4acebab2dc06e02ca5f00956a92477d7ed446d9d54fa45dd4d5184540759b8ab91b9f64fd97bfd4d47b0df7b901bc6e1e1b40cd65db680268a73c0310cc147eaf8dafee46ac74332de3753fe958fa3494753cde93373018402c516ae6be81125ca5a688a043c6d880e7ce821c79ae1c5041790d602a6d3b764060df9903748773036cd1ab23c0507121d33ac03afa66c0d48d1507c8faab0364fdc5010bfd93035afaf71734943b0724583a77807dcc5b8a26bdbfed807a491b06c8d8b62f30f71e94e54a9e7f45c86bd4e2d3558065063bdc04b0cdb74a5c1381dd237f680d8ad240a296230316eea25c9d11d48ac20a4a47578472447c439b0072c2c354c1308296f8ca2d0d65a84bf4d325fe52b75ca6845f072c282b0ed4a77706ba297579ee01a4a6489433a30801b7f9e4579d1c9a317607a5f72c426fe94f0eb559ccbd0735948a9e8ca035c1a50ba324631c9e1960e95b4b0de0b87455017a4c15ab53004b70f2b9e5409dbc3a76a085ede9c700eac6ecd30162f9ec40237772e280bc5f870ed4f483890356dc53071a97976d07f85dbc1ac0ceff2d099a3b0be283a6c5a0c91bb27a6dac02ac8ed5c59301e463760be8b1299d4ae89a62c46af9f20be811ba5e67c2a626a150e81f1d50416817d072bfbfa3d16f42564ad69fa4c334f1c8432ed7074060cfc6fa35777dd3f2b97a618074b8e7bc258a83cc72637b46c7600feb0ed4ebfda50375f2261d14e543c27fb3ee404d6f5f1c68289f6700bb077ade72a0ed64f6e280c446d65256bab0bced8095eedd0161bf9b0ef4da49e640777c574b0ef471a33f402ee80f0754b8544b5b0b4489ab93c03cc470f18bf5330089bfd3152d9f6d61a5599f5200f94f937dfb85a9b4bb12feb6c4fd259df2d07252ea2fdfa780827c6c8f352070e439fb36c0b54ffd0268d94d97687a6d5e04af0f0016a5907c1ac06b6f83cfaf7b1658a5a589c02a096c4865697bcb6fa9ea0c453b8c1aa2af0f003965889331a0b0f30b0f8dfa29d93d78edd060753ab9318038286df302b0c23c03da4abb47726780b16d27000c00a17b7280c3f2b9038d6dbaeb4072bab90ce859e9364e0cb0236f0c0e343dae7f1ce0e7b802306f1795f25900ae7cdf1d68c57dfa764089d8bf67b0696d39c0d0bdec40334a310173809eac143b0ba0766c9c3ba07a87378c2936e91d48c6a67b0ef084fc75a029b6bcea409f5f8e1ce85bc6bb0eb4df7edbc8e1dbd3bee82f5d5ee856b4d99e022c3cece8103098e2acedb52ba623f206be0328aadba8b055d1c539a786dd6928e3d89354243f0650812c5161de0520e8aa71a06118be0d305fae7601645d49944a7f0ecc03c07e81c924595b364081f159e24022b5adada00b41bb7a1bf8b8a6ab8880d049bceb2d6dc09b36ad2ece4af5face0430e63236a193874c12d434a780821bde9f2b4089a39f024022c03d3bd9a0c7e2bc25a7db36a0554b93cd2507dc26ec1960070afb808e13707ae0406f592b013d3accf93a6028b501ffac1ac017eef79f03c9a96ab72c00976d470e3450476706982f27c70e98eabd0306eac38186f2c35f8bdaf3e2af65465d9e38d0dc1f2d3bd0beaf5a690ba0e513e5aacf2d7f21479eb98fa2467f5be3d217234200945435026a1e34bb5780dcd2041e01ea02f54b02d39763ac1b2a2cb1001afdc77d40ad099428cf7704a140b5de03b468e3573cb4ae2c64b703d88c7a7902b4cc975f1a16c69432ded1aedec7994e2eb50450e0ddb13305545ca3278f801a395da38386605bd2c480d9d85a4063db496580c156698105e0172f0093e461c301d71c3b80ae223dceb501446a2d7320c1ed9e1d507ad39ed173266403ee6d4b0ae841bdd95092a72f80ddaea81469e1fe96e1a37380263d73a0a14c571da80b55cf6201f4da65ff0bf36573dd815ecb1556eff36573cd819c6c2e0f1c68be1cfe01cd97832d07ead3a76707a4849068476d83db6a65d32ae6e95fa5a11cac0188ce4fcfa5a00d85150dd9ab0de0bca0f47c11505d2e5d6e0156c8e9e51fa09f902dba3480c55969bd8ba11c9504180e00f2c2c5af004c739ce3ec2f1c0292ad23001941dbf4c440895a4c4bcbd222962b00b33251b4710483dd896baf8c4b2331cd2aff1b418b6e794b8fd9d618d21f40637b149dec9b96024022186c226bf91cc2880edaa5d78729e6b0d573406d6ef37780a0734313f87c9b84910330ee8461d30022357a0360cb49d626065025c31e80191596ed19d82d93b5a9038ddcf32ac055b83fa05f6099184c414b70041d7c02e14332d8044a71c11b7c02e58d0382377e1c6875f8181c6875281e1c686b7cfc035836bf1d905c7ecd81e6fef7ad03b5f4d53ac8cc944a0c5f8e2c0344aa5271f3d30bea970c66115852e6831b408167c6c611808a5bed237f29a9c599483ee6b345b29e6c5f0288b04b8b3703cca8cd0c4095bb646b175053b54b458623e82c45d73a6050dac4440e54e5a8a63a76b2d403a8fd94c8132102ea02869b6f033a13264ad1154163c1a3370ec8a9d2013a9268dcfc03f453f27e1d0206cd97247c39d0dc1fe8c290e7e8852d8058c0a63910680b0e122b8f02fd486522931ffa34eea6e432a1c7861cabc24e0528b0b09ecf00c1ce1e2b00f38749a60072bb34e91e806096f0cbc8c539c7c973e6400ddbb831c06e7afdeb400dbb60b0a3d6a729f6b9ee4002a31adc73c0c6f7b9e98079bbe680521cfe0c2d28c9ecc98196adaf570778c9bf39d07672963aa0aacaa9034e8d67064c95f45f30b355bc7501b4f17ddf384051f49672b05af97ba826e1c962512ae74977755176a329369e47cf2e7eb15d02cc3b5dd92b23c0a9a4511ee7082825d87ced0814b8ab27ff3601034e5889066a5c728911ee4f00964177edc1404972930450a9324bb2aae9318e8aa23eff9186c539a769fadc031aca575cbf18e0f826bb76390e94ff4d94be31022bddbbf368001ff84d4da0716f4576766a81381bb8287b02541888e4ca13418df55c6534cab19bd4568e1ca08ede3a60d9a2c7a2f04bc664a65c007ddc059f1f455b1ff7b9e20025efcd819a7e911b40d69fd71c30e7361de02f75e8003570d581fc5094fd650164ec3af97b863a797fe6806dedca00dbdac6ad039c7dee1db0df7ad371f34cf71d60ecf2d77221b3fe620033f65de140cf50d5e172eed1ad61f87a00e453e2b41e0156f66ef31230e0077ba47d6e52583cd0c5128018cd54510311340abc48653388a0b5d78e0064e14d5452a89c44254f2adcd318d05286677543a02a65624c120dc3a4e6b6ba6934729396a16c5b2d7d939e22e5cdcf0580d2ac8981618c1d66a734c0362fc5288229c2afb34739cfc2ab55aace011d96ab66d381b6c6f6d981deb2fe6080756cfdc901a1e519c02c682ba70ea4d4ac3f3ba0b004c3f0b7156c18b023cfa6033df4bd70a087e6f70e4858f7f7176d49fb5b0e981e6b0e343d8e5b07ec0daf0ed4b0d3bf679018feafa55c0acf0cb07e8cb71d481c462b0ed474a5285f006eab1b07e4a81a3b58bcb6bd558f4de39187a4220f8089e5a7bb040c2427f8d1049a469d4d6f5106dd08480a90a8667d3977f19624a7ad0165574f367b80c512ab0666398da2adcfaff4b5d3bac5487d7d0aa00468d20d004e5ac92f2d0d235cdf74062aa7fdb495d06d687a4c87aca6742fafb56085d45e3b946661fd0260936e920c60a91787358099b2ea1540878c856d079a736b23075ad7bf7f01f84a261b8d037ddcb3fd62e008a8b09b05d05f9e5e1d48a49e3e0de063f4bcee80d9b0e140bad473ee00cbd59b0352dbec385027675f0e34911559bf00384eff3d54f2b1b7e68002f4770e34a3ae4a07fafcfaafa55afa0e361da80bcb2b07fafc1def0f2c130fad019b51fe2d36a3561d68e446de52d4afd75d075aa5d61f1d50fda776a029a620d672ee03afe2030aca8b80eb96f6660bd0b3e1c8e618b79f11bad4f91b809242cdc91aa034d7a6538055ff39fb037843b5004ba1b29d02065c895f34b3b372a29bf7a4a01d25a94bd2fc10509738507d0302d981aa60808c3ae31f80dd2595eac27995156c5bfca5a2004ad87b06502c2c296947dde08425ab539985968cf5abfc621e4daba97ee940727acb6be3714562b95a021a0ecdab15a0656c533a394e423de33275c015f832c027e13f074cc277039a73e1ad75a029a6a8f8059032a13b8b0550af1f3e3860c35977a0813a5b73a0e97179e440ed984c0da06d7d0f0e34fadf9d0342cb8f1d48f8e5e25dfe85002834b4746ffd461eff656e1975dac719a040d7ce2e003d16e77df5695e60754ae4363f3764e199119e0024a90e0f5a82e38492e52ad5a54e99c7a3b9121bbdd38e9acaa3c9ef09c0ecc91ded30d529b9be7380f0bf1a40dbfad5729187116aa03c54cbbc35679f9934a5bcafc83ff6c36b87115df8730c9860a6d435c7dc2fd64e167cbe053937ec1e79dc813858dd001a361cf9f32f807aeca202742cf4af3b0ef4f967ab809e67ac584bcdb6f5f401b0830427addc6d5b2f2b0e4834f9e3805c7beb0eb4f2bf6c3ac039ffefa1eaf5efc6012e67970e241f93ce0125745a0326dafe50ce0de7fa45915b74dcbeb6c6b977bef475d5cf9e1f44091179fe004c09e8df9b024a9c399e0f001d07cd1b7b462f394d5eb415cc8fc89ac86ffb001c979225fef26764ba0690142029724083145e2e015a33306be92ba2a86b5d5746aeb2e81a095d2b2fa4b2e82bf57ac361a4e86b4a09ee140093b1d90dc08ac8fe68e52fe2314183fd73ee404dff39024ccdfcc343879ca089ef1f40c3a9e0820e8aaa9316c78bc201b7e6df0e2430c91ac074a9b79101cc942fcb809e38bef7d281f6a8d5dc008e6dba3c88609001313c0e0e24741ffe0b7be8ad03d2147f3a20a8f7c981be65fae5400bbd52fd2c80baf065c3810446a9c216409f5fdc3b907c2837d402481c8a3f20815111d905d0b73c0403e8414fde52b682db91032d9f37fb0e74c9a5d4f1e53c71afec41a77a685958719bb347c0944bbfec1ac042df1cac02aca2b45c8923b07cf4e70f8086ca81cac855962539aa92c76300c1d641ee1ee59ce82f1beb8016b7d7658d6d59652813af34ac2e55ed26f93d00908328f9dd7780f9f8d000a5d17abe25ce4a015dfa2d805698f757037628fa027464e492377659f639098467bb805205a5929f5380edc83fb434ee2f4ca01250e101905c016a2c35590e082c4a930b0778633372719ae273b561807d6e79dd01c77bc4616831b9de650690a0bd1500ae09e1fdce81e69cf2a12c0045a9ecb5a67ebd670eb8f47b7480cda030c0a2f4f102401f0b8fbd010e45aa24b000c49dfc01b5f467cd011997be1c48dd902ffe0250dbe7c401d9c48f1c68223f3d3850af3f5f3bd0bce51c55feed73fe0bf6b9777f2d89382ed51ff38cc2c4df26809a1b9ad315c020bff1e441dbc93c5841fb5c3935207148ce8f003d913a6f6a4755e58aaf4cdfb538567543128df7174047ddfb2d096e1588a20833cda8aa2fa895b67503b08a172a255856b107f571c531a056c3d2f2c400c3902f0302b73c2a58380776ebc5d70e6c8de16d07d032d888c31c482c9f0b00913ae1e9de8176c287c481a4f0ebdd01d6c06d405f9134e2c981f686c77b076a58f9e2408ad1dd950375d095fd6590bd305c3d38908cddd70ef48c8f570712a9c7ce001fa784ca0ba0a56ff7d381c2e5764e1ca84fdfbd1d1529544a0712feefe0400d7bdb75a0457afbda01091ea5a1d43965dedafb1e505a0cef00b014f6e7ead33aee1ed4e54900766a3cea00dc6737fbdf809e8bb2a0d1afa34e47216ba9a3751476cce91700d22735f7b4a31ee198f2cb33ea9cdbfb77fb05896a836a0b4650e7ec0df7004a0ba4ef3700b693e641ab76dd046ebd665af9eb9e1cdd61b603281b22a868474fd1b2e4671f6067c21f698eb5a9704d38041498d3c3162020410ad79f036654b301b05c7b2a3bb300eab1fed90087915b7b06b14d090a5a6de172e9893dd42c68cf9d034d8fe7cc016589460ef4daec17d0ab1de9b1fd8249189e4b07d2e8cb5707d2e855ce2382a1248a73c901fbcba3037d7efe6080fd65f7db8166d474c7815c131457b000e43d0f0e0831cb1de0d29c3820adf7be03cd39d6d3da15c5c3bf5fa0176e38d0f47897ac073732718a0e45c9a5dffe8701fc1c318587c2f2d1ab127c19c54533aa5515c4083aae39d635faa11ae9c23fb95e038c4be2c54e00536c2885fd85540c2d4b70a85a6a1c2ed1f438a374f7fa7e0d6848d0f676ec8039f70468957b3045a30fb5054c8d3494214c4af6281edae086d32a3a6e1e3b4ada801d1eda53c72aec68e4c2302255d8ea012033e7fc43404e0ccdea29a0d0fd4bbac2e7cfdd6e24b803a045a95172f93990d0a51b8903347afad45cce5215b18f809bf744e9c5174032f6baee80d8954b07d8b6f8da28fcdce0350ef092bf732081b9af1cb003b506982fd36d077a280a49f00974bae140fad8ce8b037dcb3838d0042a270eb46c3d7ac3f8b88375075ac61ffc5bd880f3bf876ae45e670ef42de1cc007687334950535072aabd7b35c0feb27707b02ccd4a8c16816557cff571cdfcd0b300df35a02bb9e27c0790e83a51dd9539208ca0d660c705b8a4f800eda82ccd79b701a0324b50faf939a026c6b2d6c2a626f74ffa76082835095334faa6ee3199602268c284aba34bc95813bf5f0ecbad16e9a69d4a656914645436ddb4a66a17bfe833d237ae4a7768868976a0468949e6004750bc2a9a816724abfb000c114d7362809396523095f324d56414ee000d62f9bae6809c4c5b062cb360026811fea73b075a948e0c74b6253506ecec71e340a27d3735c0adf9ee07a067717cb5769823e8ddc48156873bfb385303b16e346ea47eb4d7faa1a877a049581d3ba0ec4ced402dad0e1db0a0640e881a681d1035b0eb409bd6cd9e037c376ca0cc69e06eec80d49cdac4db0283597ad5011ae69c327344d05a2e57ed1e71f164d94a00d58429d66902b57581597fef0d80af75fa76042055478203446b1b4e38be050c688e5bfa963690b639a80c71040537235fab0033887c3b203641a59ecab6cfc894363b04e494e05a5517b671f9e0cef3dc013530f9b8a14460b8e19d03321e9c1ac04d6bc51e5a732fb6b1ef400b4a424ba3d6a7d772286acdb4971ede013a362dcc2eadcd86e4d65edb714c987e03cc92f73a38909e3c6b1de06ff900b03350f6e140b3f2eedc01c27fed40edd8b93780f0eff84311feabc2815ecb25a887ee2497870ec84b1b1c48a45477a5f4d09de4fad381fcfa1e25525dee55ee5200b2de3eae007a8e09e7da2c3a4b42dcbc4af9eeca8cdc2ee92da0c7e74a4532ca2e0a3f518b9f002b71a032d573a0e991727cebea89e27092d31f00b5c1d2b71307047fd18eba1b7365f30018b07e3d4b3eba506ae4da7e1bc02929ac6b95ea8609fafa066f31596f9a630364e5593560ca15ee1e5dd4a538565f0002cad57d09684a6223ef012d2285c074b6d027a8819d19a993c700e8d86fb97fe9ccfa952afbed0210077cec40c330a54fedfc92dc4f0db048df300c5170d541578f0e2452087fe7b2ae4cad73c033ceff3990acef6f3ad0547f080eb48caf5d39d09283eed0b92427e70e24c90f6a695ca42ca7bd969cbea8399a9f3f03a8a4d8b6dac4fbd2322cbf6d03a87c9ea8ae570496f84a6533cb78bca398dc7b07c8b0d2b25af6f38a638b5f7c4e00054359dc02aca4d00a4daf39ae046cd27d5de0e1fe7b0a28f1d83dfb04509727392f1c70d41800dd84fb4a8d5c1f46d48ffaa23fe2294023b7c26bfbd23c76b526f7c398657cf50850103fb77ae2403b61b30aa86cc5a53fa2f0ab7e43a0e951f825c9f713075a3e55733a02bbb2992c01ba9271b93440c3d0f97b3376250fa9037d6d71ea40ab659e002c92eb76d381646cfcf70bdc3d9e1ce8e3ae46069075dc3cffe25fb607076a1873bff765fcdbdfa28635c9b5030dc3ed9903f5d870ea409be7fabd01f6ca8d03075c8468460d398a40abd0ae08a8e8d862009887aae8dca0ccd7e5304fc2b49020658088a0a3f8a28a6296436949bc707e8abb3c5eae385f0f2506c4441595cab8cb699aa6396f89f3453affabd6a0b87a529d725b93700856b769a60e1a1a8ea20d06b3a1cd2bbc7e4b007e064da0e95dc5e16ca6a93eccf3f10b1c39d02f881a18e22140579ce1039033946fbc367e2e6958ce0de0d63819012aee0ade4e013566dbd12ba061194770079f1e7bcb00d3e8f7f8b8b86aab0b0f3a07dc24de0306ddbf24f86c0e26eb892ac12f00b2de1a40ffc0b0eb61264dbde8b16a540455886914c93507c4676f8d00567af3fcdd81a4f0fc15d073fbb6ff25509225b1d94f00135262aaf67504531977820ad24590e92a2d55bebe082a32701fdd03ea925a8b4f00f22a246b6f02d594655cd12d115034247d1d0bd4b93282a6af13404922746b7a4d22d2f435035484779cd38eba261dae467f01a4e5bcf702714d564bc75b025d4fececc1a580596a1a25978fa0e26c3a193b908cbd4f01dc5924728e5b00898354a7ea2face2ee0cd0201fef13039a956db30668b9f748571ce87c7b3772a0bdf2f6dc8064bdc919a8380b69e9d8818672e718d023fc57f60b53487405be00da1b5e7b079a95ad3d039525994c1c9064e5da014113fe176e68ee3207eac274ec8025f8c60185577b074ac520ef8e289319d6406d16d53c7a41b3417948e63649c958a364d973403abaa34700a98fd29f37805d1ea84857044389baa1868dab917e913ef08b289514c67b000ca43cfcd5e88f6b2661e81b404199a637fb8549f2f914d0a36b5ffe02c805dd4aa7abc6c1d2e16e2700f29fb64a775a8d1b7ed1b49b809c25e7e50ec069add121b11af753d2e2adee0844f55c03652d8d2b1f2bee11c0b471ddf046107091b8a2e951f8519c53073cf4d80071e2d30280d925791f196017dbde0574d8711552b500e400983850c354d0720e24da4d5638503b6e2f1c6061b5d7f69a95c9d5c481647ddc38e072fac6009b6772e9407dda5a8f0d78522bb46b01f4d0ebdc811e3a7a31400e91c7c4014146b70ed441daa21740afcdfe392011fa9d03a2d24e1d90f3af71c01d5f6b80e522f7bfb05c5cbd3bd072d1ef3ad081f7597bd4a420fb7ec30a33291ab49ce31c60599ab7b4264fca0992fcf901208170db2f012a746d959aac26556ea11903a062511a78465cd62530933700b54943b1e9402bccabc4212a2c2a629fbed2d2ba649a9ef07175c3a9e078cd8166c36407d08e29e0780fe8c65ac637d5eb93168dad51007b043521ee0a23a8265dc73de17806e895a4ba79e76bfb31e98195913c820ca3ac523045404aff66ff00507312dfa54f7b12a3b51d4def39ce36cd1100c7e936e1f3e3cac7ea700ea86c6b3c04b07906dd4844c0c697dcd95fcc7f4cf6d308b03a25251d14e79c1ebafbcf8176f5d133c0e6cbe7af039d923e561de84c98fd732075f463c581148169e9804bf2c281ba705a3990d0956307044dfc38d0a1e8e6af61544479752059af361c90707bcf0093f0f00f28fae95e7bc33cde430bfdfad481bee5401bdf34aa819cb35b408ee628bfcf084a8afbe63b805ab332fdde000c543f9e69e39b56e42d6e964e00d883d257f5d8d4e64bf2931b90c6961c7c3990da335e0690c53b3de2a135759ad3d304d098e5ea00402864d85f3340c8ffc8dad1eba4955e3d3ad0ca3fb6b70c635c23b54a4d43862df8f81250e02df76ebfa859f93fb5264f9b5222d59c6b7f99b6780034ca175c4dbb29cae6097ddad57865cd346fa7fd841a764a091141d0bc6d537a6c98a0180d67000a3a84c36d007727e90a4d9fa709d0f67a05c088905eee032c6eed76c3813a68d6003a145699f5236075683f960d70560ff469dcd6a4c3fcb3bf30e7423d7540c6942d07dc89f70ea4286eb50e34e794867601c8cc9138605bfb7b06c7954b0724377931c05056eb0e3472f995039d2cea65079a51d59a038d6d71e640536c53db4956901fb77db902f498900eb54a655161d555fce3126042eec1df990199b2dae74fc094b4784a12198ffff91465f3d9007687ec11106c8bbe07905e3c7d97c696d5d998679c032aa9a389020de64067d3745a031af63919dd22b00b7f2575afb2864340a3d20255d68fc867303b01504eacb186f559208a7300e4cc97232db0599475d2266e00ca9a7bf512d04ac6c2941e1bb88c0d935f07eae4aba9034dc274e60083d981030a38d263713668fdb81f3b90245ff3b503c1a3ed52ea4013e8df8d0136adcfde8114d66edd0149450607c4bc3f3ad05bfe5d3ad0f438af1c68b9b87a73c096f4e44022956e1b6007521a96ea2f4266f4ed40f3252b1d687ae4de0e66c3bed6c23c0f19a9c2b4c2e44523496e5518afcacb0cf56b74660013b46e792208191bdf09806bf46445732eaf2654dc7acc012567d3c90ba021fbedcb2da02dd85f24da799c0d1a064c26795d98dda10554b454a6ac05c0e77bcd00bb98eaac46c07c49d6ee00d4394b650a8f80f416c17a2c8c0967d80e808caa2a0a0fab722b74de8cbf017c6df32619cb5b8b7d9b6922e7fda4c10a27d1cee338696c157752cdeb48683bb9e0e38686e09eab67032c9f61d3013ef07c9c19334271ec8062508c8b1df092abcc81a67a4dafc7194519f37507b2170e2b0eb4e1bcff38902e95204171ce6937fd5d75a0bffc5e39d05fd291014cae7de7805d2c732095763871a06fd9fc724071bdbf67689a7e2c39d0b7b0bfe4be8b290bef026809beb481b24d2b191c6857aff71d60a4d669ad28c79c5f66cb00ae051bc534475090fae87b05805886a9067b5e2d8a6a040190a15b9e7f1bc05dfdab04e44cd3df5740c1c7d50f0054a7a040fa082a330ef3967a4c2ee8d72b403e26baa500501c2bdc6d03a84195e65f80c01e95e70eb4cf9d2d3b90f6797ae000d7c819a0c53dbba44fe3798e22b25a500abbbd0f276780dc72fd5e3b20a48a8f1b2ab6b5cf67075ad7df2f0101abf5c500b0220813fb0505b6daf75f0086eeb6db03b025853073a0d9f0cf1eca657dfbefca010f5d05d87c795f3120cdb129ce1df08c0b074ca01d07e464fa7620cda0fe7ba8c676f3ef175204f2b1037510b6f1c2f5c29bbfb7e8b0fa6fe440abe58d7f0b1308cdb12c28b9dd6c4d00dc57a61cbce72132eaf5830703643597535a0425d34311761104eee62fb5169695651852dab308304385031d9acb9af204e96b0930ebf93b2d8d072b35ecf01840bdf9a080ba08c852147e74e02d43c9de70a6812a3be21a9315695b65dfb40cc312c0fc4f7fb40395c30853c584964649568f4d78e860471e85aa54a597cfbadd02a08fb558f14b377463812fa3e06211a083cc0ad724e70ea42afcbb36808632d01f514e79cba503cdb9f1aa032dc1bf370e2430bf6b0ed81b460e38f2fc1ac0af4fd12d0b4032c2d48116a5eb370712edb553071a86f5d281368bb5130792f5972507eab1cb6d073a13befdfd454d7fd6a2340f222119905a5ac58384845f55cb23c8713bb9d58caa2acb86f3a286553565ded2b70a908df132b904e4639ce203a01c93b6f90ed0e121b2a581aac2983badb17487aa27097133510755712d243eea0c5063313a5f03046cd28ace8f00d7a6e4ea0ad02252b7db0e64fe795f72202db81a013a6c4a93d4810e67ba595d007ddced8e03c95865afed0bae6ceca13d678f7ac981b6e8f4db81e48355cae34e92e11a40768fa46f1de85bd03e2b17fedf4b074872ed405acecda6015ebb73eb405278b9e500a1db7140afaf3bd0727174ec402acb8d0d94ab2cde528e0972ac8ff232cd10a92f408da1eafb03d06a9a367c6d3d3f062c8032504560b68b6c1b605ebf72f18e7beb84bc5f8a918880a2cbe95be9400355f0d0ba2488040db60e5c2c872dda115a8976ab321a55dd70d06cd060a3eac00dde3f8ddcbc0406fafa2aa0c78e3b963e56f756f76dbcee407e06d734bd0f18aa76e8c261a472ea6179199091170ef5ab8e334a7bf6e4c401f173f617bbe559dd36a08ba166720660a14f4f1f01ad6906f60c9cb092f70b07fa457f0ae0e0dd72e55bdb8c6abfaca5e6f779b4ef4036d8b0e640bdfe750e305bf0e6a7032dd2ebb503d2369f39d059ec66c38174ba6ae240df727ce48020f8d400b74d8a7bade6d52ab4b0a99c7a04986e9afd574083c0bc5c025025939b7bc02055213dd17a1adba36dbebdbd06c4d72c7ef1f50ba829b0553f0230b8a76fb4a3ce54902e551049040517fe2af930076620fa06340a840da74b808e23e09b862104a2399a52c21f9a9106bba95600acdacd9896762d0bfd98677403a0d26c083d7ed24d00c4b3297e39c7064844aa70fd6a1e78c1fdbefd023fd8f4f80ad020a7d8b6825d4fb6dc79ce8196be925e8f822b9152f1b408cc4014d61d90a6f802d0235247bb0e34b6477b0e2452a9358c75bd55268a05d06cf877ee80d3ebad0374981507985c7b07d2947ed71d1074f56e401fd7fe8e1d68cead570e48f276ec402dfdf496329115e9b70012291c31c2df76b2eb007d7ddb01f7b7fe2d48907210554d61334abe4e117453aac9ff334019e22b6d6b4d69f151dfcb804c9330ddfa01a0a1344a3538074c53e5bb88a02703b762f022180800d9e62f1517fec93beda8a6dcefdfef006aea48c8b53a022c2469258dbe89e75b9d4ddf0a00ba54b33a0114a84e03cf0823abf060003f8336d5446eba82557bbc02e8b49d242bfca5af8849dcd803102d981e688f6ae248b2f21f1960e53f0e8040fcfe3805b4dc675763003b61ab10c405a05ec12fa0d72579fb75e1000d65c5408953bc3d0397c4965352e3f3e5e5d5818e4df59e03cd86fec000b2befbee40a2fd7de180bcd633071461ba72a0997db8e540b27eb1eb40539d1b9ac685fff0ef176ad8831ad616995595d5146bcd4dab995d022a0e9aaa341101699c9a5a52d8ceaffd34fa3d80cc82c9157fa947a66d4d0019f54d55276001d094d4856d989057618b7684ccdea2bda18deb3a42b70ce859d74b7d7edb7756f14272da7a62f80bdae1f7c8d75340a3552a5da683e29aaca62f1f3aa026e83ba0432dfe7e7120157ff2e340bbe9d7a50153370e1d481168ef003d32c615676b2a7eb2be69c056cb73071229ec96aded0d41c54a23180aa95f61d98194bc9717079ad91f3f0eb415bcb60ef032d97780acdbb79862743d76a059f9f3e940b2fe983aa0e6813f94feb89d39e010f007889cfe7220a1c339ce6335d289be36eea51c45cfae0183d59fd333ba2a8cb4387e8e01acc9e99bb49cae1e8fb49ebe4d01d311fe63a501bbd3ca01197915fa73031c46f00e9b039c162f0125075e2c359d19fe1bcc2e5d1d706cfbfd06b43a7807eef8ba906ba09aa994deaec9508b15c61841d0cc6e6f786d6bb9a156b4ef77fdb421b49cb7c4eea0d2d50c40b85cab12071194a40b52d299085a2b1a627fb1aa3b7268afe6b11a3adfe209d94599533b56b70096a9e49086c5ad40c370f407241fedbe037dedf72ba06512e264d3f95df4cdb2037d6df9ec409daceca60b4079933d07d4b3b80730f7db76c5001681e2d60185be9e003d6534ba07075ab6da4703a617ee38d0dc3ffc03c49ced3b2087d9950319ff4a6b298b41ab0c320bc0c2f6cf013e136b0ef4d0f6d001a6ac3b07daa2c3b1036dafaad83707ecc8237f0b735fe9c51740edb8597180cfd5aa03894365f2c18d44fba086c51ed5b571ab946511b4947ce06b7b3300b44acf174146a2ebed0a50916af07a0b40018366f7da8134b6632d39fddc2346f2310072e25e3f0a408171e7f90bd092058ffb860874b26895f02102f2b2b49c81fa7a34e6e230036423eee77a40611e55b4a32eb16ed49706c8aba06c27115002235155a6aa8f338c32a2358088c3f65ecb56df4cb0492b7f50d5f75699363f77406e971f007a611be875cb259feed1414325b14c56570de04c9a6e02cc4fbad90504a6c7ea9a0112e8706ceae3590cb0e640f3b6380298b5f8c6da81592eec9f38908cb5ab0ef0609e392006ef02d0e3e857ef3ad05ef9f365c096ad03076a58b3e640dbda91b5144b5e72baee40a782637f06d68d97670027be50ec3a20cff7b70326e18103299b4a46b800c4266c3bd0e2882b60efab4372ea405ba3aacb2d00cbc5a603021d3307b219600ced5d9938dc7080f7cf9e0309cce51f20c7aebf851edb5f77a02578f4e1405d783d72a0c540f53cabf80e021e666340a6d5219d8e00818431471780a6a0ba4b0090cbb57db1670ce4e856e6da39900b4d72cd6b2b2bd3a430d708c69807776f001372642e3f1b208be6f2148065a2bd590270e4493fb5bf0c513d2701c695015db5a64f1d608262f4617f211f6ca39cf6116466643a051463120bd08eba223b61be0b68724a81e970364fc3aa2ecccf00968368c62ffa5a5e0441f53cabc1eaab87ef6f079aa63719a0209ff4fe11a064465dff0358f99bab4b40c31d0ef6a021ea0e24bfd970c03e77e440dac5affda233917a7140ae707ba8d91c89b2194c814f927d07d46ed903306fdbe71d079ab7181106dbc49376d7815edbad39a01ece92035485890349e1daa60375d0fa8a037d3e2e9a831d0292e6afa56c9e6f0698c8edb6037dfec1b2034de4037f0b472f2efd065715da2d07d416fc748003f7be03d29cff01e474312beb51dce6b503656f000ab1a42a761c412b27ce669f5f54232de3cdc90430e5e3861f40866670700b202224f9a801561d6aad0194d2505ae510a9e7a14c3a487c1828b88c7dbd0054ba4d48fead02ac6eb5b289d7a3505bacc6a940d372e1bfd20bf45334fae7a940d4c6c985d40288d24b56d701584793d59903b57497d7ce27bf24790fd03050c932a065474e961c1035b06d80d97064a0636b1c961d48bbd0449e03f6ecfc084095dd56694716403acc67e740335bd9a223c05b3ff9b05fd8359862ce16403acccf9b03cdb9be71a067b43b0ef4daeb8903bd36fb7b0681d2070e8835bf73a061d8b31e33836a7fe440bd7ee1afe540339e39d0f2d93e3820e3d2ab0382d0ce1d5054e6dd818e5ee5b103194395d6aa1e178463372a5917c100d8928c8d4b6a70a7d93e0007bbf661db80f686469a74040dde3f67f7809ee49ddf3cb41ab3576ef197aac2e36ef7126029cabb5f80157effa74e1ed76392797cb5801c07bbd19e012a1afc9e03c8fe1236560066cbb9fd1208191e1113beb629492c50de00828574f3da78b000dc18a086ee34171846e8b80767801cf958a51d83b936ad6e3ac0cdd37e114c633b764015915d003712adf4a005d09930bf06746c27c9af038976b2e2400f6dad1da63877df0e3481922340cfb6b6b1eb40d343aef70ba0af3d3e34c0c1ea894e8e13595df8d11a50205b52ff3aa0425de34052f8f3ee40ed480e1d50d1e0d9014e143307f4e989031d561574557b14563b9c3be0d4b86e40df92669903bcd4361c686b2c8e1ce0fff1e9405228adaff6fa406dbfe780d9609d4c469df6599f3f2f4c436a5f49f23c604acf785c0654199e6ef700ca9827fd58a022de23691e00150aebbf19a0460b5e3b0498b9f443c23fa9c7baa268150bb8003a01bf9e01b211150cbf0ce0caa3ea3f1194d894c21da0e292bce5195da134a3c98a56fe499f37647e9204cdc39034e754703d828cf416034d1f28789a4a2d8e201066b273046890c26117808139c8813b82ce54a76703aceb27070e9840ab00370e170ed41f9bcf0ed4d2eec700af2d2f1c70287a75a0cdf31f1df4375f3207b463c9013977ee1c5012e4c581a67a7ae980c4f03f0e58616e1ce8aea09a39d0c70d7b0e08bc3872c035e9860114b466c78194bca271c014db75a0a12c2452d39292eca94e270b20fbc7690a18389c1d6836cc2397a8717807c8592e940fb69e17b721735c0b68b96b7c3d00743a4735ebc70608935741987a5a4f724a6ff2969a5c26a93cba23c865204abf8f0c58c4e139a0d4657db2df03f0dd08390dab3166240adcaae73575341bbe9f049a1a05ed700d60a6ce8a1e6b10a970c4e7b7965e8bd572da5954fc0a1fd74ff032d9b904345c73c8fd3602c636285d613d8dd354e3a224f7111418cb552dab9e97f2213fee9d032d5b039f1f27b2dad1270e28efba0f60f34c154d1a41831bf0f68e03f5ba1c42e640733fa44b003b57a6bf00db4d27ff003d734e0593e70049ee0a0758ad9f1ca04bd96b11cbb0b2e5403bd0c7b70116a5e0bfe0b532da2f005af0ad034df5eed781063bac3890b9e3b5714075a8bfd76aaa67af0ec8b2fae5808442a5032d06573f0eb4187cfe011d68e4e8b700d4793f754072c64303e80efdb1036a0dbc3bd0b9f2512b6e568e6d6bfc060c19391174ae8c5390b412e11990e329abe2ad1154f47a7b0da8a94dfad2033acacb3f15807ecabcad04ea298ee42a0615414660f0cf0ac0fcd77f355fb2d050fe9705250b56edb7d6f12d6bcce0bec2b7c449a867ac0c80297578ab0b0077278dcabcd5d930a6e4830c991164d8711bbad06665aada0b11d40490cd6a40d0c29674f68b06d16e970c901075830e1a2cebecd196038e80670e34c54a078cbe92002e80647df305601a6cf7e54012b4666fe9ed08181c90f4ffc80177271b8081960efb0eb4b03d3c3ac04afbe34027cf9bdc0141ce070ef4dad7bfbf48637b7973c0b9e1dc0129cbf61c686c55d96901c89a70e640334abe3db58798256f36fab6df3ed40e4836b7ec403a5d7fe2800d78c7015923470ef4f90ffa453eaf35b100cf9a62799c738b671cfedb3780a7cafd95014c8cfbff00530e9afbef0e38893f0172d2aeae9f1b28d8a2f700852c9bedcb04504fd082ed2d817017d9b6e6008fddd90018ac9ca9fa23af479afbedbf0dc0784c71f016d05ac98712d051602bd3229d073354a9e2569d7739d55d66b4231e34d5eb2bd70eb8e1dd0454f21d6d1b8ddcbc2c110e65f4c750b1aeaf3e006afc71371f0176aedcd8712009aaeda10dcf488f0cb0044fbe0184cb25d663436bb3327340ddb77307f24153a5ef39c01a38d8333ae6cbc69e0302c80e0d6095ec6a404f3bf6be1d685cd20b073a24e6c70eb8e67877a0cf4ffd179cb39fac1d249b4bab4d079c70761d68ce714aca6d130fca16bd005a613eae1df02d950335fd6edf016acfb603b5e3d21b86ca52ec38d0b7bccd1cb018f83350d0aa4b075cd7eab545419ae266457f294a4b34a98be579d25502c8669ac84535d635471a524046f0d74e026848f7b1730a40fb6c36b54817f598bcc54a7b16c19483e6d701a0303000aa312e899b809a59b9c96b6b02e9d3b205985156eea611f4192e2334dd4b605cf196a6400a91b1a2ad09959dd0b0de0a6a332b8bdeea13def1b5c3041fd6e21a50602eddb900944ca0af1a401ab8e42b73207d3d3f70a01557176511045c8aca0700419bc9cc5edb32c5cedf1c68274c0f1d70bd4007c549a83eddd877a07dae5b76c00544ef00a3caa50176a0d4fac34276d7b61d68287f1f1cb03a1c38a0847007c038dc3e540ed4f4f2c201bbc78e036e9b9e1c500aeccb80a5e4f6bf304d5fbe1d5065e6d501f376cf01f5f80e1d10deb1ec00e57bc981c6253d71a07179fdfb0b718d7f7fd1c7b98c99915adefa0ba015b7bc336026f9c18136e055495039af0ca85d4c5238bf8f916dab790350dbb87d32d04cd00b0f002d8bc1f133a0a79ada83be655e765613f97b0f402446fb7105201d5d72f402a8e5a1da3ef150af3b3ba51d61642964f9459890eb46a549ea794e7f72436946954d69090d65eb2bfbcc02a5371ce033b10ab0ec84a9fda22133c70d5dd85bd2cc8687c613301afd0460d94d1b9e11b717e99663fb4b65977e6b809a1975b763809d70f5de00b9079572b92ecd2b2bf99a3860b360a0dc63b77c34c034ddfb0570024efad401cfb87180b5870e726bf1fab20392249c39a0f6e4a503ad63c385016c6c8a06abe7692339797e3aa098dc8f011694dd1707ea8fd72f073253fe3d9479fbfaeb404d7ff903a4f75c72a013dfc5b90375d0dd8903192250594a3f2397470e34918be080e2695b0eb428d5260e364daf04aa32976779ca9d45558df0863aa900531c0f0ef94b45bdb5e66c0058b85c97003a2edbee65fb8c0760b28cecec0302b55bb68e00dcce26c79f800e8b5126a1abc2144956ec7d040561d05bb43454661b7f06d885fff53d00bdb04924da71812107b322daebaa1f59099d5b00fa6938d676520d53a4f02b0794b6bdd28e38e7b8a179348097ebccfe12ec1953803b2eed3b6027fc4fd4796c370ec350f463b4d771b7b44cefbd674752529249718a53ecaf1fd9ef023eb39a7b1c9b15044114fbd2c41adb7b7420c1f6f905a886bc46da97da75965b928720c6ac36c0208f46809a834f85574b0f41cc5425620988bddf70a011fbf907c0ee9075ed3b1a92327f470784ec5e3b90b943d5f69600afdf2307ace43503585994726809283ab4ed80e8da07079a97b747071cafe70e74e0dcd60ea88872e14016a3bf1b075a639b2ba0cebd0c1da873ddd201d2f2d28039a5f9af209373b5b46c2fabd4267d068c30421ebd00c6a4b54a3f8040229fca4005f82801b51e41d34c3acc22ada48481ea8c2c4eca0eb9d3a700f26d65dd2340c531dfd3a897a14ffa82db3d408da3ce0edf117b441c7ee6808211db90fc28ebbeeea6616f0b30a2c2767500b094a94c76d9aac554561803c62c87df910376650328789edc7c73403acb7503166f7a6580437c83ced90d38f47e01915da962b665e9f7dbeb0d076ce4b1030df299f5a5c2fef17361c05c13be1d70adbe76a0bdffd83340d81e4774d96e53cded2873402cf1cc004124af378086a7f8b0e740bf323970a099fbda71a0bef4574072ece7cbc088c0cfd281f4c2ab1707646ff876400deea9034d54b9e9403fab4ccf4b403d0b6f297b4e59ac96400265d766df5c24b6b61de85e79a37684823c68f1e61510c9f9378f809a783195ce6bef8c1494cad73e017da227c33360d059f6e54c59ce9640637a2d791a42979be7e71ba04f0c0d3a7f08bc4725959a6c41b2e28b7ca2bdf1e813af5a30a11d7452ec1c00c6bc9c95fb003c7683325f2f00eed91bb7009c39b2fd11808790bcdc722031be6da062f6cb03075442bb73a0a7675496e056dae75b07fad2e7d59f60b63d04b0d6b3fb5b075a5236401e87f374e740a3ae60c9163418eda7b70eb41b5841c18fb5b4ed80efe83a20a866d70189c056404d573eb605c008f9e0dfc129f674e840edf8f9734061892307d4b0fb764080e1a503c478e940dbb438358002bf573950c3a2245d1c4502515444a58ce3ae79116c01b07fa4f704304ffb0df525163d2a3cccdf0003d4d1a236400873590146b826e0ef100bcbe3fcad2d16cb8e1d7cdb805e0727ce608070fdfa1ad0e72135ae010638c62ade6309244f1fc600539c9bbe03cdcbac008ca4f4664f74df52e9c7a35b03bc9d1c31842597a2a4f4c0650c3dbee3ead980aea2d9e00e302809c8e54bc3088fff416d80330a3f8318c7d871377400c776edcba6f4a8a320b6f74a6a3e6e02c6f807353307b8de33627e9afe7601a5bd6a38209bd6ecd000e95ff787806847f48301acc5c5a7037da9b29a2f0115e9ed13891d757162004500e38e8797a6a75b07fa13fcd862439691841d26ba3df965e400256fec00c5d9bec3ecc9ca14bf043cfa3d3b50d39500b4052672064307649cde724096e63707bcac7e3bc00a77ea8020d61d072ccb3d07a4b7b05177d5fac0811af6f3eb4042e9e7c7810ef18b3b07dc4ebce99c517f13071ce2ab4fa82f834f076459f501e2541fbc1830ef3035ac9d487cf1dfd4b064796ad2e413407c76d8d755231585ac4ef9f117a0d2536b9af389b28bb838de040c152d985df2b3a6f4a64906c0169c294f4d0bd083c24c4d4f7144fc2d0f87a9eaf21d0f5adaa9ee9ab5e70f601b687d08883cd96c6a8052431dcda0b0ac160c71d5c86869bb6fb5b3f10c5d9402c3999476982d38db7c0494284697c780c882e98e01a6d2f6771de84fb89a2f4265b5a4f6c70e64b87b9e1be0a964b20f3047d0d197032d8772d781e4d8f8de002b283b00d87e797875c0bbe99b034c265307ec06ebbeed86c3c681167fb770c0e2cf1c50f66ecf81245d71ec8032e6970ea84432714089c78e03994b1ffb0eb88cd878985fb02ab02f81e49862f0caaae810e3ad62502dc01a98f3ca531554328a689f5591d0e954eda6058d057d6b2557edf6c085e60bd057d077dc3a05e0a09b8dd5d22a74b06cee7c027a985c5542b8057d4ae89c4b43a9e2101bca3adfd16a700ac97cbc0794e6d0ce77b4834e4ce21b0077a0a4523e2de04533cd6f0101f56b5e382023d781010e9cfd01c09e3847df80c4fac039aeb2ed916653071a8f370679a5f46e3ad0c29df600352635e5415b02f576e7d400425a55ed974087e7ec0fd0e0b3d9b1a6dbf9527d3bd0061a8d1da8a5ca82b70478ddec3ad0854609c81780c2127f2f0e30a84e1c9024e1d2819654b77020113cbb75c0063a71409295cc0139babdb71cd17b23075c01df1c683ce6d283ea71ea91b659927f11b429a050fb16d4d2c7721ecaeab2c33d4a95255b90b04c284f4d59075315762482eb48e6856c5d0dab5b31ae69582f1da8b78af56a414549d4f501a0c151e74282ad6e48d690cdb60043acf8b36dc0c8163f7d316fb96c7b0d506a6927156358008c2a7b0110380a0634bd21182e4cc70ef489c3084808d8e1a501e4a952fc2d0153c934b48b5fa6ac72cf81be74ca78b48b5f0ddb3a72a065d9df3780081e950e24f91b6b87c557feb3116b8654d9dd76a05f39281d685e3a43076afa68ea80ea7285036a62ac000fa9fea576bed40e74473e7f7440fef543076afa417040c3565fcaf9726100479dfe97032d6d95465b98c7707bdd94bede14a4d6cb714b6aca2ef184276b801e35755e7b06884ba22f4d69c9d54e6680b1a6219e770c902c8ac7c7a6acb06e3c4a3836812cde59ff176081c10792fc4dec32c87b378021cb72ab3450a0176e0012b57d7e6969a24a55b6aed96f6a02a6b2f53120065c57242d5b716aae2b7d807dc7d68603edb9f93a806c6bd9d51600efd2302d00662fec8e1c905a2f012ad67aa770a02f1d38e0e9f9ec1160eea683d201e54c3f1ce8579ede00765854d6395bfc3c1c3676d5483fc901d6e25d077841ff3850d3773f1cb01b9e0c9874b8744069d6ca010e657f0e241d7a370ef00e5b2eed85b2a196c6cf4f40d9c7a4b60f3091b3f127d0ea305aa7c7ef8001bbf2a90244c526a438166855160db21293b460c8f17a5d0278f2cd86bb80824abde90950939c60772810471ce20a1f0c9dd4c5c946654443a7b6124bb3078045c5cbf5be05142e0a63fea419a04b6dd23933fe65b31d0348fed901005378b6f9cf81ac2c2a60d08212b3fecfb3015e464ece0c9087e49a016a770351580ca17b52ffbc38d07828a3700b384ef2626e8077e469e980409401a046aeef9c394065d936c0a21b8c1d68b28b350714817c05d8f6f87833c06151ef3bd0ecab30ef12688b3def38d0973eef3aa05a45702001db9f3be05e9939d0f5be3b76a0eeefe70eb4e7f64b07ec399b4adb738f6b0e243f3ade39e4c7d791036dc2fde840ddef0e1d50b5ebd701e5e60e1ce809fc6ef5a53ca5d944d9bb980a9e068f7c4caf9ab9aed7a1d9d2cf2eeaad49a3574df2167435fbb95e9b5a1008b7fdd4f6e89654640b834740df5284de006a3d93c69fbe40284be498244c37921d3928e4bf05e6f1df7c19b0f3a510a80305e807da2fdd66609b70d3010f3257007a1bfa53c0c8a6a10720083eacd33937cb7dfe002c02e2f70810d8733bfb0e34953fd6b0c8925274dc02d88bf721c01ec915c41abc005b76c8a8fbfde5fe04c0064abf2f06508b73ff041584f4d2bc04384fae00c93baf1cf0d0feec80622eb903a4c39d039eaf3f1d687ba8305ef000c35c47d212687b14eb0e3473b6a456379c0b07bae1dc5e3b90afc286ff0a6ed17349985ed1eb90706a0d5076c89f3c07840e75899f0c60b97aaf0c7057d78b660b1afd49fe4f0bb7575296287f9e012ca5ccd13f038cc77c1f90b4a3d203bfd29e73b8025e03ca40c8ff3380126dd989819a3ff9d334f4620787e5a30cd0a53885c2a043af3df8748addf227c94a81cdf8d21af52bc84eb7005815d67b80a8808798d1f43a5130f9955f69fa1a8f7078630063f98ceeb767251e22bb06b0a02966a405e4bbc836d71ce8ee31bb0090ee34d9a8b78aa2665f25a742cf4de1bf070ed47d3d95b420b1703fbf0d70697eb83340298e3ffb047e3941796a968013e8d0805d4682034ec29903eeea8f0033cbf5670e30a9cd1de01af90eb0c353991617002f82fb53075a41dfc1018f5cfe1d9ca6aa38be04da1efd3f079427b874809fd2d481d6c741e6003f94553b8868ef3b50d3d1507a7e78eefa97221dee7f1da82f476f0e900e2ba099fbbb722041bf5d3b9055e1fcc700172b55ba0afd7120187f27001aae6f9fda1efda2b4836f0350f162359f38c0b4b7ee804270d23efbed7d8e72a627803109636ef99592d2cee94387783f0ce5499d5e4b075a1f67fc6c308feecd3d0325bef85269fb91f438d9ce0ea024f63ed1976a480ac8424baadf74c831d3fb018cb8e1148706b846ce1e0138b665b33d036cf5df0ea0e45eb96e5f1a781793f353e89b3530c8e7aa0556f04319851780243cebc70e74e19dcd0c601b9f583b70b2c947870ed4d2e723075269470610b079e7d5810ecffe9a032d7e39d62f0037ad09a3deb082b2c9a3032d7e55435a00f6edd3a603cddcd387038a754c1df00cd638c0b23971202d78ebd8016534060e786ceb39a0fead0d901b215f1de882771a1d7022570e7457ff67436881f40a540a8345691aed977740e25158f1512d6047c5be76e5a0ec5395fae81730648b4d5e0dd07434c741592a834c50806118042a9f67a32bc098eca69d33400c38511c006a8bc44802158fa05159cec2a0eeb05ff414df020b0c3ebc06541c6b87fc6c43099d70fe0de89b59ff0660a1086b5f00eaf2649b1f000b34f8b76f8037addf63801d8daf74ae09acc2fb0b03c445a3290dcc461f7e9f1c502dab0720cb482ef7ca25d09e5bb7be589df77bbabfa862afa3e0d8017e280cb29b29c77b0ea820647f522b4c2d9b0e1d68b28b4d03bc37fc5d3b20ebfdbe039e16b700e65e898236b067e334bd72a099fbdc774030cba703b554a12a4b20e1b873ee009fab57071cafeb0e2450ba0f0e385e7b0e24618e9e1c1099b2eb40c79a32942d8196c3f68e010bef3873c069ea0db369f0de9a43d9b303323d7bc3cc1f66cf812e128d0f21c7abc27fc270cca8e74a081286ad262d99acd29bed9aec52d8fbfa04d02725f7f93a800ccbe9e308907a3c2e49260fc398820eaa9bd082824c14b7f689a4b782b8f10368a809aa20f8308cbc2367db1d40b4b83509a561d325e3f4a6813e67b66a92b70097e620b7b525d0a2e3145b000a06d92778390bfd6f073a09d726005c35c2ef23c05e02ee2f01783067f7370ed497e7630714a6d906d47810fddb33c05afff874a0ce4d36014c65fafe3580dfc5d3a7036da0b7e4403accb47240cdb615405c1c3a2041fddc013921371ce8ea353e71208dedf6ca018f6dc70e74cc8f0f0c70373d1e3aa058c78b030a18dc3a2015d4b60359371474d54e5b452ddf7d89f15141347aa65a470b4039c2cf0ce0150c370115db63579af4c8ac2c297d19d08193bf5f0306bc451fbe02861dccd88780a8241a1181d202752e1e48bb180552e9c79286851eb5c1be7b00acb471fb0c30d0b371bcfe32400cde2c0758ee63e5b46f81996db75e0df082776eed40c98b4a75bc001887efd701155751a5710aa3d829c921f206b0e87c95220da3d42583ff07ed48786565ebfc4a5d04de2c18b1bac693fa52eb74d48a7529ac27a706f4fe92f5b7012376f6653280e5aadb07b891e9d70029659e2e01056115bfcf8092237aeddd009ac1fd3920f010b2ce10ae8a305d0112d2818bc4c86eaff978d70002e5e5d4012aed0b00e990eb75650948fdbce680a8b41d4043acf9efab81212e89eb0e74475e3b71a03db776ea40fb45191f83471ce6f73f0e749aaa6ac6124873bc5a0135ecf7dd81cecaaf0b03dc3c2f720712e3db990132507d4a77181724238cd712d2e3458ab6e5270e3e017d8eb5e30b4081bfe5f1078007ee5cb91916bba5cf16d3dc8e438f4270aa86d482c86ee8bf014cb9ea6ab2c7b163f184db80016f27db53808563d7f4258d6c3748388eeb0ab7c613beb4dd0d24433e7280c995ef688f46ed97e109a0c753c98c9636e687327b058cc9158e217311722769b9f9e9401375300610261f54576301d0e895e8ba05d10e3e6b872dfe8f0f0316eef205b0488c8f1520fe257780167ce0802d76e6407df9fb70a013683a02d45815eeec3b30ece6a3dc81cc2e6fcc5c83c3509aac3be010df70a05fc9fc13bccebee60e48f3b5e6804c36fe2becb9e2cf81140125775d026d42de0ac67e882ba3f01248a0ecac3e814afbe540bbf272f5b33ac46f7e1ca873bfd70ed4b98f7707647cfc35c021fe294dba68cf5bf5763e050c891a5039d31614568d600b10396f954a6e09f88e4f079ab9ed3d40630aab4ef5459132adc247ade42258eef4c30380ed1795540e45ec620f7a7e07f4486db3fecf0035b837be01a39238cf2f8099c20bbea3227d63b6de15a853c0cd937634f82a64a34f037854cd5e0ce009f94b3bda430bffe41340696b7dea8070b97d803d73bcd352bb0286f71d03bc9d7c751ce08ffb0cc0e49a7e578053ac704084dd9e014cae9b0300115459b6e7804c365f0e70d13c72c0d5ebd98146fd77db816ee26fbb00b3f63cfe3aa0b242668083ef6aec4066869fdc01b9d3d71da08d7f3bd0265439a025c00bfacd0147e3d40171169b0eb879f61d6808e38e0374ed2d07daa647f70e986c1b0fb3e3fefa77709a9e3f38c0f1e0d30156dae440aad3763030464fd6c157169d0e857a8e01e4d7ce5561bb0543f2c26d483896659762835f05a022718db22486b2dd97e4ebe34b43831a78a79696b14bdcebc63ba009badf2a7c30b43751c2f6465a63ed8fe03fb6be056013863dad8fb2ee474ec206304063c3b259b6073016566917653bb5f82a6c38c0e79b76d8460e6b1f063891ffbe0016c7f7f3e840c7fcdf0fc0d25b4cba80c844adbd1940fb7ccb00f6a6f5617f820d364cfc13c80f0c776563b7a4b7d200c68cf75d07940fdf07d8abd7fba703d91d3e2f1c681ae21cc0e119f010597a1d2dc1d3ea132cfe350714a17e70c0738b0d901daf8a5e5802adf5b563079241e31d073a5e47fb0e28b4b1e7406bfdf6d201b92a660ea84ff8e740e72d4e03ab00c3df8903020c4f1ce8003e2f1d5043c67b8b21e2d807c82a5ee8f40845470f215105e85bd0b5e335012c10f633024656aa761b10ec78fd0054383ddfef18901d37e75d3dd80d381ef3b3a555bbf9d6bc84d0a55ef4c51f60d027db3c4d0f433b914f0123aea2db2700abb4b96520a8fb51f90bdbff470c44b7f4257658da371d40972d667d69813af7340698b5e75a731b1215b702bb3254a6166fcaee109a2e996c76f60064570f0a966c011e77e999eeb7eb45a7c7fa8e01453fa5175ada143cd7fe3e18b0a4555f0ea4087cda77945689e4c701af098c98fb7cbf9c03a2eddb29a0628b9d660638f8b6b71d104d7ae2400dcb760135fa7a7ee48040a5430732885cd97834642ad9cb1da008bc38d0886df71d908379c38124ee74ec80f226a70e341e77ab3f9166907e1c60c6fe752059f8dc3340e7d2b7038dba12c387553865983bd0162b579f9040e978e7d00cce1b07920e47ab4f48181c9e3960a28203357d7ce4006397ba1fdbbd8f6fe01380a4aaf1fe135076c862f50568241de2b1da114bae80a956e762e8b22b512563e8511fe874df00f5090f2f0cb01bb8dfb65b8ed7c88700189361f9e0001031541d1c01a8c99571bd8f91cc71d94d3480065b36808144706c76003c608607fb938a80fe4d46acddfbe433d07e696fe60883ab4d404d756ceb5c5d63d7ee689dc6f6ac20411bed68752b1c0ebf0196256073ea40ebf46bcb806548bd07942cdccdb9015cac268c69430dddec75ec40024525521600cfaecf03073cd7fe38c08982f1689509e91f6f8503adb149c780c5241e3b20c78c75ce6ef35ba70e48521d1d485550e8ce1268d17d5bc3cc369e1f3ad0e2bf4d0650cff3630768394f0e74445fcd00c8a0907d3ad072501dbc25c00b7af5273c3f950e88f07f76a021dcee39d0bca8a4e112e8d0ca57403bfb72c381b49cbb4d03bc9a5ffa9fa0e55c784bcd8830772019b4171ca8a527fe2bc8a0b3c6819afe75ea4087f8f1c0819a7eb7e740bb61dba6d24a80ce758aa5a22bfb7abcff02141239f1fec300d5c31ed4b054f671359f48c74da1afc223b9623417807c5bcd27608c3faeaaa8b620f608dc3a023424be3ad835a0ba80d98584746a058a3a77f5ee802a118700dea3f24905a0be58ae94982da0aa5b369f0178e18d1b743fd6fad9a0cc6021a548d93b55b60ea9ea2a79565042f61650603c2a3a3fa49afc96e1ccc058322872496c814c15e18a31ada90b98940da70526faca2ea056bead54d3dba643f8cf06bfd2d8202bdd7a0b70cfce6ca29ac4d27e0b0e70b3181960abaf3ec10ac2f12079d4f30dd3d00a034929656a5d028dfa711f80ba919f170ea4f3630f4ab6d5d3d79f034dc3e3a703ca880607eadcd38603ccd8ab2fd5b23c1f392085fd8b0349a98d1b0784223c1b307f983d076a7aefcc81ae2bf7df0ea44cec150ef01feb3ad0ce5665dae0b1a239c76bb28d9cde8e1ce8e03bbd32c0ecef4b8c57e3864aceaa7712aa5699d08bd5b166bf2a49f414a2d67ae587f8f62920e17dcc736d153b542def97801ede2e6f06fa381ec447033c50ddf1b3d1f2c172e1ada245f80fff0085b237c4f507803f3d4b0655a9a320b4b85e017a01ef0e2dcbaaa66061b85e0344bcb2540e7901f0a456fef550994766b6ce271af30cfddd02e09e1d5498b7050507f0e6af03adc25f86b009ec06e5825e00a28d3f3a80887a7ef468009780f7574042617db97020bbc397fd0951cfe92702ec103f9903cc21e4fddb815a7aec00dd216705350d11217b5d033a6fb3bd8e035dac9a1f075ada5b7f0e285e3277a05d7971e940bbf27adf81e625fd3a2068c27f85cefd4c1c68addf7c3bd0aebccd1cb02bbf1cf0167de680ace6da2ff5e2014640df51b747a3667f7f07806d3cdebf03c65ddca27f00d10a6b6a3ceac0f37552d58c160c2857f95300863a2bf3cb7f804219dae39ab67a1d7bf85ca53160c0832eaeb3754c3ce86e74013c94c5753ad76e20ce976b00c13de142ebb46e8f13699fc58d030c88f6892117ded9bb018b39a3618d5566f9b709b0c09c57c6d4b2bd266461dde0911914f5bc00b2d3851706c88ea44c39ba5b8055325f3b722075e3e7dc00dad6f3990354eb6080f46be7d6307b6d3acf1d68159ed70638913faca524890cf91780fd9254857909b0f5dd3bd0544e0b075433d97020e1a83c024b4071bd5b079c734f0e34ea2a0ab104dce6ff39c09963db003baaf25fc122703273a075daed39d0d2ee3c3bc02cb7ef40ebe36ed78196e5e7a603cddc910f10b9d3b1c0b7e2543b2a729a36660e0bfb870e743bd9ff04841e8f4b3a705a4592fbedaf8463b3b06c6b13d680c08dafee011a15b14f13ad8f562f929613d7f99344def36cf71a509219fdb902e0f9170e35d94dddd5360de52f6084b3b14ac3b7a0a290f58ee6a5694510f7db27035236b3fb63c0c0720eaf01708b4e2a27b604148fff32a0089980417501b07d3262eda145a4ce192052d8fbef19603e8a678c87d9a413cbb2f1048fa73340cde9f13475a0ebca5970a0957c9639c09f7fddc0909cd4270ea45c5d31a6eda1252353f9e3401bf9da86904d985f9e3ba09aeb9a0375aefc7280e977ec40f75bd5a2580292225af76d479df92738a36e7307f85aef3a201dbf379d33ea78ea408a2236d8c67654d85f8abed82948271595d8a8d5d7bab868ca68df82bebe23de46c05887787eb62110067dd994946d6d01a48de7729e6c8155db7b1f030aae2b2a39d5825070249d1990b6955f8e00559f42e7c9001e88652e1031ca46d5c468c150ef4071630ae04e18eeba02a967cfa45b02559f409429e35177300edfac01fab8563ff327ee85341d1920a866f6e10093c92b606c152f5e0085e520b23fb104071f8ca9bb013ff70d608779b904f03014e404be046c0f06c86cc1e9f3dc01c6d0ae013672f50f40c5e0fc64ec406bfd64e440bbd2d687598bf372ee402d9d9e021a692899ee2f4ba0edb17feb401bf9db9ace26ccae2e1d48162a9876093010cd1d68375c1c38505fcaa903f5f672df01efb7ab4ff0623573c0ce0e0e50bf361d203ff61c6825ab467bf480dc7c2f33c088751b0704e67c3ad09edb1e3b90dd4139446277ccb196cd6b40c5fbcbbdd669b7283b5423d098764baaddc4e35700d9c5a2b224b600c7a578a651ef8681167f3cbb00603f8dc79f00eaacb63730404566528555b4a0d6dca6ecde0076875ac2a01bfbd4187abc030c68e99cbec4b1b28ce42fdb80a4f7a8f4465f52c70c33342c51bf3228b55e0b2c216af5245075d9eae7bf0235b1b361879f6d3a18874f4e000372ff28a1500bc8de904d8f015466c936ff0c10f22f0b5a0bc6e46539bd34c097eac0898bc858b5e3f2c2404170b1fd091595c23ffb13c2d3d34f06c0d29b9dce0115c7ebb3fd094a6f5006ff25d05979b906c04a9bdf5e3820b06fc300a7d846e940e371b7ed40e2e2dabadfa8f246567e3b2091e0ba014243f7460eb090e40ed4b993d59f6010d97780ee101d90b1adeb8007991307986db71c68232b1d6eecaed462ebbe6d64e458d737f2d8bf83417efc722039f675ee40bd55eddae8c1c5d9dd8e039dea3bab4f481f7bf18659d4b3779f07cc7d2dcb5ed155bae4b0ff67c09e8e7e00037977a4771d38bd10fb08836f40c220b27d25d0fed3af3c3480412411e935000788b8bf01308bd1fe16a0960366dc34d05842211d6bbd56e995c2faac6dda6b955ee9a7aa8ab00005717cf4b65d2f3a1b54dcb705234c596baf0608ee799f00cc096b73e60003620e407ca6f71707689fff00a147d0b703b68712f82d00e194bf97000bff392901c9b4ad15e068cc006ce4fc64e8406bfdb474a021dc280c98b3601740bad3acd9734030dcbb03e91f8a395b00bc90a6678046223853c1a025504baf0f1d5097c746cc4ef5eb3f07ea2d92aee77bbf9838d0bc5c6d38c0187ae34087f8bf03073861d50e78473e71c0a91e1d60faad1c48185c5c399030507ebad85b09834d0308839bd201be4e5b0ef0ee58dea362bfe89baf640d887ae18dcadb13fbad36aea6e7bb8048e1a257bea34c1ae47856002abc2a4a1d7cfd803a9a5499a505910429571217fdd8d177e40fe7801e6617153a6f01075f569d01863884bc1f1950ceaea86a372d2864b98afbfc6cc47e1a373562fdd4959129a89c470b4a1e7536260622053ff89584b360d8d098f6ab11b58ecee97e45605f50d2ee1698f3d3a9d658bf2e884bcab701d4f40b5f77806419fde86d2b837491f87a0090a22b6c4bf4f51bcb0aa894a92d18580e00baefc10a13fb13327364af0307fad2b7b103a27cef0101c1f6cb44b5f243f717d5e35b02dd6f4fd7003c9267bb4f0e48fdbcee400ada4f30808dedf9ce00716b27d6d2ca14e73f076ae9cb9501bbdf5a3b2c7f50bd6b0085a4890e282d70e0407db938768071f8c201719e361e2694fa6b0ef40995425f02b5f47cc700ae2b57570ed4b0af9903b2688e1d482139291c482139db742019547e3a40c224079230eb470e08b7cd0d205036fb0e34405b3f0e30a91d3aa01289e4d8609c285c84163c283a3d02a6be016382e09ff4a58330d4699affd58092eb7da35f19b4ea3975f0f8d2384228fd0c004985ac6321f93148961550b5afe3a022fd5ab8d05939a8897e0a7b5f0042dcd3cb2300af8ab0ad011a582ee86cf609b0b8f9dd1120f00af8b605e03125e8157009a8e8b806487833bcd87758f5b0ea0d50d9e931744079e87d0752e09fd60db06fe5221157f1b7f9a6034dd4f38501b307d9cf36f8afff9b392013e78903b554b54a9680d8953b072423b486d95a3fdf75801fca8703e2e6bf1d687d0c4b07ba671f771cf0a07bef006dbc72c0cd223890907ef49f456a3f796f2dd98b86b05d3f3d0cbb9ab9a1394f660a306c0145dbc3feaf035d67ef0de05115f6b701edd572f989ae16eed0ca0145655a6c01815bf15c4b6a1802c6aebf1303da2f516f6b71d8dec575122a3abf0543e9b8713c008ca2b4f17d2d8761ea709c3c36803e823e012a4b977ca1f531acc7f65e7901c0bd322850ba05510770c0ca32ac9365a1390754380da8424cbb370af48f199f684a7caec20f206076c9361d5093ebc2014543ce0c702952ce8c0520dfa7ea67b7209a93cd0aa8a528ce0ba043ebe5ce00fbf6f1c701aff74f00caa9670f2f0eb4812e0f0d60927f9c3ac0a579cd014bbb0ba8ac3ad4910126eaf1db8174dceb2b0027617e393780fc78be7440c083f5c542992e6d084dd77eb24fd8463edb70c0be5d77201974f3ea40a758b7724051bb7f0ef4b32a02b9041ab1b7da0129caef1cb0d5930349cb9b2f073af86e0a0778555c3bd056972fed0270126e8f1c504267cf805d78252e46e3aac73bd0dc81a6725f7f326af73ecfb527006ec0617fdf0019a7ef3701e30ea93af89550f6a97d6d20527e4fe9705bd0444df6b5266a14bb66d73e07f4097838380698e27c68a054e5affca904706b4ccf1ad351c559195402a305254955d7e97e5d126e7bb80d48560591eff0f886773ee1b1b3d8b547edded7cedebb03d8de5744d912b04daf1c689d0686b0ddb73c3d0f0d10cea080872560df760089859b660e3074170ed4f4faca8164a1bc3b5a5071dede8c1d68e1de58c3acd0f9fcdc00db43c5e45ac0799b5ffd389094faf7e780b5beee00b7c6170724a8bf376055443e1ce8f9e97e05d48e6cdb8176653739d0bc5cad39503beef61d68cf297a6109d4b09dbe0174cb8b4307921f97070ef0fcd334b4ab8387d4fb1740b060fc640037e07b09a571d13733d42e2010e55b68f6c791429249b59e5b305214785e6f014ad2492909cf02105334dc04e0b21a4b9db7e32ac92e150ef9d99a30822007cc1650613b5bbf06041e52d7af1ce0fd73e9407b4e39aa5a6065776773404529418566c485c788cea8ebb901dc913f2a8005c1efd052cf6e7af207286969ce78b45b8ce8fc1b071a6415805d004ec27a074049c3fcf5db81ec52dfa5033c322f0c509bf4f30c90ecc05977a02dd61c38d0163b2d1c90ffa36bc06267670ef48efcf50ba8d85117e706382b770b07eadccbb5035cbdf60c10a676c454b63b9bd414b70eb4b3cf070eb4b3156cdd8286ca3dd7d70e88f37c75a03ff9a91c200c361ca0f4aefe845c59eb0e2880f2eb40e2e2c906c8c445e79f03b40bff59d4f3f9a503c98ff985031d5ac59b0375ee68f527eadccf87034de566cf01bd7d77403aa91b078452dba2e32d3abdf877f0da74aff128da13597bff513357840e45a8af32409fe727c4d6a2d2a6248ccaacc4c28ed7282fa416f4d90d3c2f14554db4cf483a4cd14e3e1ebb0646967af10860817deb9f06c8e7a82add8b4a4fb218a5970a30b0146e538085119c1b18a1e2cb2fa7056342aaeed60d5869926b40c1c23da1fbb6e742f87520153f3d3a20d26f66c07244bc032a16ddf3950176c3d9d80125856e1ce0def0670033768721747bb2f2d42c81d4af74e740bbf2e7c880bd250d0c58b11f1b64f3ddc057a170df0dd5b2590236d09f03a95f1723030c61e7c9816490f27e2d019e4cd181b6583873a0de86730778994c1d688b293c7d09b4c58e7b0ed497dd4707ac206f29c1a3673b0688d4517d8f5896d82ee296da512edc3996e07b08e8aad6733cd8038448d908a90a651ae1e8f7aa73bfacbaa6397e021a33cca87365ab2871126a90cba643747e304092fbf45e02c6dca3e29a016c9fdc924ab37da63ffad2ae756a2cdb971696806b60800c651f3700eea61986dd45827e4dd4eb8f036db1ed5f031866367307eacb9635cccaff72662f0089d0ff1930f7db5b80c525655f0e90fcef808aedc1ed7501b4604ec70eb0b0da77f05c9b1f1e01ec1ad9a90c7036a84cc21268e1ca6f6b09b4e8cef71ce098f2083023d3fb93030983ebda016958761da8737b3d07289b570ec833b1fa15357ddb5a6abbf23a39505fb6fd4bd9955b770ed4b9bb3d073ca4f61d68571e5d3bd0ec571307da95db4307ea2d572f0f61ceffad7e96d7ea4d03dcf731dd84d18853ec5d2316c29032d5d3774031c093499d0bb1afd7c8389803861175943f5944d42d3f81b2b988a893f2cdf52da46ec401e217d0c7f9e95003142a732b98dc016a1cfd76b4f7839786bfbc040cb118ad4d0163d26cacdf004a4ac37f7f036aeadebf3c18c01b6acaafb4170bdd2bdf9f0db0b315b7b600bc67cfbe1d103540e73cbdf8461f3066239ffe399006fbf2cf004179fb5700d20565bf77065015f0dc09adb8d0346c5bc3789dcd1e6e0c6031c2161cec34cd7facb7588b43637db184a868b0a1ddc8ea5c9a1b60595e9c39d0be554cf312509c33007048cd3e1e1c68adbfde3bc0c1ff9f037275ae3e414aff5f07780e7f3b60ab771d68abc7c281babf3b74a0dec6d2005bfd60c781b6fa967fa96df58e036df52d6f295b7de0dd67ab6f5c39e000de77a0317dda7380805d73201df769f52744f8cf1d900261e640e3a164a6d1c38fd3eb8501f3dbd277b497d31ee2621d90b038df038a2e8e18b98e9318395ea342bb5a904aaa876903c56ac8269ccc002404092ae61263bb80c87ffa021852926cfd1e50953ca668f6633b8224af9818c04a9b3e011cf3d96ccd011e114f8031cbf2f7d6803de9ed1b20800cdd215a128d505d38e0cdd33e6155aab6e60e74cf3eb176949241e1c37ea52440f9d9be2370597dd972a09370776c80bbe9d6af03b54359025a60b7e8db0f076ad8cdc481c4a7aab92e0119fc7f0089c7c7fd7b075ccede1d488ce7ab3f9176916c4c3152e79d47807988741a07da40273d075a4113fbd98a6c27139b5bea45e73b5d072469ea3b20b0efcd0047e3fd2100a194ef0d1d50cae7c101ce1c570eb42b87a70e2494f6fa0ed43085ec2e0136b689032a19d9a89bc8e119cc0383f3cd15d054eeaffe444d3ff4be207294c26d0924720ef61ca82fc3b1039200fe38e0b549f234b587a97c26ee9f1d4833d8d544a592e2cff152bd4d01c7a5845b740a2ced7826c539c53eee0d8706a85215aa0a5004deb4f601b5ec63b9c23b624a5d5632c6f254714487207523d51d92dfbc8d00fd02dbd63ac0448e22965b40dc7cf8e557eaa2a412c914803369a6f48d2da8b9563f6b08932776cefe00045e044caec9527584cbe880d8847f001cda43363560f50919e4561120a03f33c0e3d2a70374a9fc13602f56f9cc8174a9d32d4042162a07c00230c8c13fc1aeccbf1de026feec00dbf8a3011c41ab7307889c17071aa0fad20039dd360c5476917830c0f638be71408dc36d079ab9ca1a66e97079284b664ecf265f0e34406f95036d6445c72d009bf0273a90c455ade725a0dade11c0d49ea3da816461efd801ce60990329359b370e28263777800e3372a0017ab4ce9940510699252031dabd03890b94ef640a4938dd74a05d79ee4d47995086d4b80a3ffefa73404210ed866a1cbb64f65903d45da27cb5a4aa62884051744bac42e410576eb95845cbeaa5ccc62d8848873f9d1e552a954d2ba8c0450b4805152b1d7c55d5d1dd34ae27c02069599e9e03885c4a689f553d2255fadf2fa0945293fd8d0091f438c363402275eb571750213fea0b406d7936670e88bddf019086251c32404d674806ee6b802536526dd20530e3df97017c472ff70043fc616e0f00235c457902af5a91a3f1387e06147866bc3f024acc0caf370ef4890fa6a109384ecf3203f8b2a8f8620ba2d9a47b002cf0998a862c81be4385585a8022909f8d1ce858bbd972a063ede11350b33d92b5d4cce9f88f55eec8c526acccbe9e955f0e0822b1f130cd609239e091ebc681f4a0b34f07dad97f1f0eb8ae0c1c6847fdbd3bd056df5d7d8267b09e032c13fe09330ffe3ae076e27f82aa30bb744035b599031e0fbc2fcc0be10c1e069d1ef5565087447c54a131ad232f45b94a0b2c4e6cbef426038c10b0db6f802a520056dd6f6fe698f6e6ff00bc8c84134d54ddf44a8ef929a08f7ace4dbc05c4024e1360d8d3dc5ecd0de081b831364008e2c43f8146bf317220e178de078c340d21ff3580896093f1b0eb7db6770fa0ca4c20d0a06e7703aec41f06384eb22d80f95a2b49750b2a2c02bd23039ceac596032da9e36b80bd125f1e3bd009743572a0851b6c08cdd07d7f00c0e8965ffe3ad0f6d81d3bd0d2de38734071bd5b07a4d6eb3bd0d2c663a6f6a5bd716ec04eb18e039dfb1b170eb4d6fffc4b5159aa77071ae4d9ea4fd8c8b9035c574e1c9066d49bce85e672ee40bd9d7b6f79f2bdd729b6a86ba5b724e58759c4f9b12c95aa63914452423a5fd35a5f4cbefe44d9925a30c66971f30840c28714d4db56618b381e44c0304ae2be4bf23735e10ce1934fb447121e113aa29b86fa40a17e36602fbc9f801e913a0fd78001799d06ff0c90a4fafa1730b4b0bd070324bd53d68445da1e0e9cef91015e686eb601053addb9030ead2f6b7aa9410e4a4ab400dc5e0fba80c029f63b37c095e7760c883cd9e43b0690a7d5bd03edb966d70169f1ace9a94fcdb6ae032dfed9950136615d3b50e708fd6bfc2d1a5ffc453cb216ffd9af03adf533ebbe5d781fbe1ce87eab6a8cd1e391b3779bb94635b8b3894d43d3e7261e1d70ace50ed4b0bd8103ed7d15c9580232c6be38c07378d781d6ba4fb6edec6fff5276f6da8103f59697a2c64fb1a30b0792c927730754c9fc754086d4d5af68e6b20f039274514f03a913ba2464bfb914683721f1845f80ba2048712a603101499a520b08aa092adfd902c219c2dea7402b7075ac49e96d41c18e92b9b40589b7d749cf01c919a34063cf606734acdda6d8a5ce0c90a935ff0310ab913d3c0306dc2be510b204f86b6f3ad09efb39058cc884f5fbe480108019a060132afea5052582eda5318016dcd05b73c20ad30b079a28f96b2f0047d2f41c105952cd830166bfde762021bdb60f2024331fff1ab0d363e080c3e2da0189590b4085c54829219680a4eedb0e74ac297c700158eb9733073a8174342e81c6a33f77a09676ec67cd027f72eb409dfb3930c00692ed6209d4d2aba1035eceae002e0c6cd44d185c4707bc9a970e7847fe728047e6b10309d8cd6b07eacbdaae0309c7fd4b071ac2f9a1030da12af62d8126fb67cb8069f4db0ed4f443ff157afbe37d61d4472f0e6898ff2cd6f3735b0e96eb37ff70806d7ca905a75658c83e9614af9e16e56e2925782f104a45e8c6220112f6b1772ddcaee5848c724c49ddf654d720a757c09808aafd3120f27236e457123e4671fd1150470a07a8fbddaa8b84b9a1e935797b423e018cf15055cd831694964bfe1610a877b27ee740c7ab9c385b10894796fb6d0b12be2c72696e414d361c390a2f80eec8993c5453b7e959a140bea35d7318aab6010324cccd8b012e9aca12b000727fc96f8780618f840f8d01a4e55aee4012572e230bc0e3810a8eb5807aaf99d29f2c001941558528752d75493ebd37801e340b0e749abe4e0105db637a6780e8da27ebbe5dab8b1d03a80a7fd639ee0d4179e196008bb38d47ea9124a16b801bf0f39a033271ce1da861e11450a108e876b2043871ee382040d986d0ccfa17fe1dec4a95535f02e4c7d001e9f96c806a649002c79780ce9d3b40ebeb1b40853b6603b9603bef389096b3bee34003b475eb00b567f5271a8f9d1550f7bfc70eb0174e1ce041b4fa15c9b19935dde4d85fcf0189042f1d70f53a754058c5950112a4bc58f72d95feaeb67a6f30e8f182a7e5d01bd78052d2a1d70a25d9f92f06008fd1ac0462b7e02afa0cb03a127f9b80b2aba9bc5d37407cf6eeb9014b457900a825e93225a84fbd640eede321609470bfcd0163a5a28c0a886901a9c2c2bd167fafeaf33eb7a769e8d51d92123dd3b956b049a0bc0640c024af279b16443cee76e85c2ba5241d868c8725130baa0dd6821e9ae32dbfd2d0971c41bf08fa2644f5ce01be70370688024ff62743a5e74bdf0500f52be4ef0678f453eda705a07cb802fb5a30e69df06f6c8038cf511760af097ff62b96f8fbe6115092396ee3cb002247a9181680dc0cd7178080a3ce19f3d26a6c442c5be7ec45e2f7d700f2b4630364ead7c5b303c4c5c081f6edc5a3032dfe390ba6154a541cff7480c7dd89017407197796406bfd6717c0d340aec48a4ba0ad7ed573402c606d80820eef9700d7b6ce0da8a46136b972a08992a5770948d373e3809465c101d6d1ae038d7abde74023b6b6e340a26f6df509b4f14307127dbd1307cbbe9c4da70eb07f1c38d07828df56f250fbb3e9b703ac3d170e340d7f1303c8c2c2ff847919ce1d48381ef9103251376b0e789ed478f483555155818b1604e5634bf5072091ba841dd55f38d5e84fd48e7eec48b0c5ed5b0338f92aff587bd9ef282368165f0103daa14c8b2db01c11725b4b8ba06f7dc7b3f4c27eddc507bea4617549e9abf56f032434bc7f308047c44f03a850bf141db700d49d7da6e975adc29a99b2bda645ad677d42b97f5ad02557c57b01e8a1f628bea105165dcb6daddfaa4e1ab1620f30229df60bbdb5f4e2d92703d4ca0f74ed0a800e932b27d30210eff1b506e06931573469f228f0f4726b800ab99ff61dd491089bd6f40a2b7e7a76a0dd303f76a0c57f614de779216cd9afd4ecdbfacf002e12ef3700b67afe7d64c0b6fab5038c4c9f0ed4dbeac30195582b079ab926394016ee3ba02f2b20e1989d3940853b77c0cefe75a09dfdfbec809dfde240d3f0d77120c1565d3ad0ce9edb44d9ce1eaf3b20c1d2c88136f2db9e0396b6f7162382d28db5ca2945cae38d267b10bb24bbfddb008cf470988f734041545a18191853d1600cc0b9366e5d18c0ec2277f53448232a0829a8b70575544bd7f9d9aa1bc9396ca0c7f3e45a04446cb00734bdb26aaeb3ca0045fed6b51c0696f52d2ad9ed02442935b71d8095bcfce5676bb267a7fc15502454851f4049996a255a68412c2914380324828ce47fba045204fe1d021ae985e151e2736029a9b2bf12d0c74debf6de003669d4f3412b3f7838cc1d48ff38a11df6dc921d0c0063b2364d6f015c9b82dc6f5b402c607efe0508a81ba3670792639fd6d2a86d9a2bdfd602a06e44d64793d8622a16b604babd7af7131be86c6880b57e513ad03a7dbd73a075aa145d0b4040eeadfd09622bbffc7140b2869e036dc2d19b036dc233fb0426a45c9939968098a2ae032da9990d9025103ef974803df9c281867072e640edb8fb75a0769c5a3b4c8789b90375ff67dd81666eb7ef40939df9cf7225bedf7720a134f376683ccea63f0ed40e3db427cf2390bff97730d9f353076a074aef307268a5ac6380371ca5066f41852e15b41c86ede58b0b4d040c923c11540cbb052192c748dd1f56780ec7bd6d00899ee2fcd640a29c18bf520f6575cafa9b8006d3cdd78603c92065284bc3f6dc970c52bab125d0fa9057780bfaacc2bb0c3064138e2f01231401455f2f81e4a95230a5a13fc8fc9b03785dc98b5707da0d073d0794fe9e3aa0b4f327205141f9251a40b7fc77eb8054c7df0678e33beb032a5bfcf70eb4c69e761df080796d80057362a066259ff61d10c876e4403ffbb3ef407d19ff39504b8faf0ca04c9c7c00d873b98a2f2e81c6346c1b406c9ddc38d02087d201c53afc4bd12eb253075afcdf7d078536d09703ed869fdc01f53c579fd0d9f0f1e78097b32d03589d944b3e8dca9ee447ca250b47b14fc6c7d377c090225d651f30b24cad3f80b18ea41c2935b2ecfb59a69bc528f5fab89cd506084538d804449919b25106b008dd620c6892fc1c51cf47351b39dbef004aeda8f0efc281f61c8ad1c8f25d645b6b00333334bf0e34848a375d02f5a5d80054645cd2db6b0b1a36f213a0e99296e6f9db000d53cc590b7ad20cf2bb00e8b3e83edf00031492af75c00863e82f4d6fc6a6afdf004ade6f2f98a826b0d6cf3f1d689b3e9e01a8499e2be7ce12688d3dd2fd7623f3003136a015144e371c68e1560950f31da35d0744e83a40e49c7e011a048a1eeb97400bf7fdd6014b6adb81f66d280c98ee70ed409d8b9903c90fa5715a024a5dfb97d2db543950c3fe5e1db04d8f1d2061f61ce804da9938d07814de5bab94b7fa130dd05fd701d1602307eafee38701a6e1ea9f03ac81daeae356ce6b05fdad03cc8defef1680977cc2243f8e94318f4565a0c4ffe30fc05110f72e0049c1817931025805658500a4f1c2c8a869780270e0a45c6b7d5c7792cedba35740577a72505ec916f430fe65062cb2fed8be836a3761e70bd0584c91f6feb89d16cdfe1d9d6baf405422d900a0f466a33e60c4736db7e340e7edfd1e8087a1a04adf0b40e4c1430d286dcf9d0302cbb2691c68f6ebca8116ffc79301dc9131428e2dab46fef001304fa6d39103f5a5d974a0de9efb27508bfb3303a45039b3de26cb66d17540e6968103add35303769bbf4a062cae8045d7d4ecdbc753036cc2ef4303c8c253569069c1f9c39e038d69b36680bd7fbded409d8bfe1decfddfc60139cc5e1cf0e8573bc04debda01b180f70e3440f58f036df5aa72a011fbd970a003e767e8404beaf5db0195f2bca56cf5eb15c0d27beb80bb7a70208fff420a5a11fb380b9eca5e58b4b726b5a33e020c7447ceb32e009780a828ac16b497e4e59f949a86a2eaa12aec6d016aab4ea9d95f84c9f33cb90618535367efc300ed78da04905523e03351d81367d8a32fed1d5906b3b50068f0f847816f01e57f3b5d07ba78f3e25d345dde2b5599a5053df6fee009601ebbf1db00fefcd32bc0c84a93ac1920b3f168e24032f9c9bed4a48372772c818ee8275ada5ee6d5d2cead015c121f4e0025a73a6e272d306f861b075a96d32307da732ae3b50038732826b1058431e6677f0e48323b75a0a58dff47612e23f9a97d4764ad9f741c50ddd686d04d8cef0ea4f50d1e0c102ca992754ba0c72595cd5c000a8c5fff0324f6ed69d701b191470e78a2d871403883cdbec558c9917c0108a53eb903f0887136fd7380bb58ee401b6860edb008888da903321dd9ccd5c8b1cc96658dc8a9bf1da8fb6f3673e63b3ac81ce05c6b5fdae06d7bb1ed40f3d2cc1ca8a5cd8603cabdec3ad000a5640001dbac3b40736c1c68c42e0e1c106c7de3404dc733a370f17975e94063fafbe0404d5799952590dde168d530b5f4e8cc00151d8fff3990fc98950eb491772572cac158bd4daf5a1f6559499988475aa7651cc8b2197774689589bcd6198e4b65b2dc1dcd1b60945830db80c25273da270aa93de9e31c50eb2e167bb423357a9d8d73fb8e064d695db2b06c5527754e75ef5b1089b17a9838d026fcb80410d29d7d3c03909641058253d974d895e36340d782362706c81b784b4b9b1e374f26bb6c069ceaf2935e000c11ca0ab800045c0ecf0004c1679d8e03ade4bd5b0724aa7d008c4c7cf600632dbaa05c042da0f455b6fd6d000bc993b5b4445578b1be94660dbc7080d18d11b37b54966c3c82f9b26406380955ee252d52426081ff76a0fd32fd7040c3ae014483e567f70ef0fd8a0e1aadb14f809929abe8405becd7c6c37ce1ae2e1c68bf5c59e7c8049ec700e0b925ffee3950d3b313077841bf3a20926bc78156e1c32e002995377f0eb4f7552d7c0934eaf99e03ad42e5cc580254eb4307d8726c4999d83a3e7540dcda89039223ed38e0c6f7e640c789125f2d814c7b0ffea503a48316eea26e372f9a9ab94591721e41d700a4f58e653220a37d7adc352003622c4700ac1bf17402c0193d57c4500bccfb676b0be055baa57f84d493f84c9ffb06384eee6b401f3fc7918452a8baa450791d020654827fa26115499ac29e462cb4f77f6d75dca3424da2ebb0f10320c42cffb80054d83e3fae1ce8f0bca173358547b2e1b901c4d6e41860cec6bf3aa342abe44916aa08e402f0da34c8013d3c33547b6101b0277769472b72a805fe6e000df6e61f60648ad121c072206e4d0d90cee1e91610381a9f3a0e340d53fb59dc6ff37303f86e64d1be144d295329e316246e49556380bd7fb7660025ef9a35d64a076de47aea400de36535f873eddbea4fa416a73707b8151c1b40c2dcec3850e78633079adb7969604cb6a431c02e89c966ce6550e180b0f073079a86eb4d079263de74734a431d5d944253f731fe05579ddecf1da03a6d3a90ea54fe38d0785c6e39404a4d1d68801ef61d20a5fc57e8dcdf8d03123b9f3ac0f76bdb8146ecf1c4014179ef0e3054ad3ec165d57b6b697a565faace1dae008beecb8116ffb74d14ee1ee1dd3fa1c3339cac3bd06ef893692fc65e97da1cef0032e7a74aba544c5d0ecf3c03f474ccc7d1116020e7dab8790808ca7f1abb3a4da3bf01efed00026ec0871150252ac2be01eaa4a76795bd5b02bc6dd59758f714809aa3b145b33867e51f00f52b7faf0096a8f653cfd7b1e932621b1f0ea44ccca2019cd24e360d50cde47d08e8a1a0a946fb021050f7bc01e85bfef5dac01823e40b608060fbf8e780344e74ae19ca281b3e6680118ad1fd9b01bcb16f1e006304ca0d93dd1e842478fc34c0927a74c023d7f4cd8176f6a90d50c991f4da71a011f3212c1942cc2e2d40aeffd40eb4b38f1a07888b3b40b068f4e8402a0b06c4e8afd58ad25b002e89a7d6b0c8363db977a0be4cadb7568c61ddda1129677abb05484887ef030308d81b9b7d2eabf968c701f7fd89037c7bc60646bcd05c01ecf67a7ce9400bf7ef9f0369f4eb36a65c8af2c70b8019eef6ee1d687d1c1f39d0cc1d4f1c683760555884b6e9143b5f73806573c781bee3eadb01b907af1d689b5e6e3a4048ff3ad0cc3d9c39c083f9d80156491b7597c9cf0e888fda72803d79dd81c6e3f1c881c4c5e6950375eed17f16217dbdfa529200ae3e4186101f20b4cfe043c895f8ce078899bb369163f6c26d0d504a1d536afa0e74f3549295167415e19f9735a04f35b5cf3d402481ce9e7e36553d3da34725ee6dc150cec6713c3250518ef004404de170af96a6ba8b6ff11e2dad7bb8122b13565a640891187f1a02f043c98a7d40906f6076609f8818ff5e687aab5b1287f30aa8f198996af6532b930982bf34a04fe4830ec034c7eac6002155afd7008bf5dae801f02dceb21f03c8e49b0160c897be6c3ad0e29f46c04829caf3bb6480876595be5a008be2a4b7ad08d6e9f1677f4249e5f03d344055c84beb6dc9f5ed3639c0ade00b102c67e80ec05e12af371c48b04d8e1c107b7fee80ac1a2cba56f4e957543464014c4fbe73c0deff04e05f985fd506b46fcfb85627d371b3a3ca0017dea73707249cb251af39b4ce6e1c68c4de6da2ec7ecbc1974c95ccaebf1c20d8e60eb4e87cb24d8ea900ca1268d15dec38202bb10da109a5f99e038dfad1a1031c740f1cf0ba72ea40633a9e39907418fc3a90ceff71e50031fee24056c99b2707f22298dbe2b7bad5f391036de4d78e031eec6ca2ac102defa6c92ad5847d7da22a98fdc40da78a5c12e3d100609ec3ca6493aad425ffe9f113a047e67cdc2caa546063db3e06240a6d2889c60224c2c20f01d83f32d5f56ac518c909227e9f2d4095cc9f01e58877d339a0e601f3416bbdd535d9fbaf3d40857d6c5201c854920db51caaa6a378b17cf807a0526f3e1c39d0a8dfdd037a64c32124a2055c230f3a0e300fd6803ee6d23fdad1ca3114b42fc008eb79750d2808dbb351f7d425bcdf56a6b1e54f4c434329c130fb6780078807eb6dea7137b59f4dec862a7380d1fed201b270d70176a93d0738d7faaf20e93296834b98a37d03da2f67d39903f206de3b90e87bb411b30befe1a601697df9d527a046ae3f1c3a9074082307d8c64f0dd0fdcba903cd7e76e58052d773039681ea0d8094ca9b1f07ea0b0e43952b57f5cc0199063e1d50ace3c30185ac6d084d6c8de70e34511ba70e488bd77780bb7ae18034f8bf0e34a6578f06b858bd5c3990fcd8d575b61e46fcb6d6f44253870e0bf74f9daba395bc2c07802185f17815ad6318a3e326408539ecec0ad004a22824a5ead4c56fbcda07d85ba3123e2c00ce3ed91360281077a5f52d8c5fda848497d675818d6dcccfd694cbce3f4e0091c08bdf6f40522853364b06e8dcb35650dd901c3a28517e0bbac4f27c1d1be0a2f9f064001d666cdfd143b77cd975c045221940eb7bbb01988499170668a9ea68b660c0bbe9a803b082da0f170062acf2e9ab03aa415780420b377f76c02a3cff73a0315581e005e05e79fa062859da38c7d576370dca3bba00dcb49e5841ed35529bf0c33e61be1bcd0e20a22ae4fb0ed40ee5a45e008c6eb9752ef5b06b5bf7edcdf3efca8126aa5a018d3aefb7b5e5a5cd4b16bfc7691dac3b20e7df8303eacefe38904e37db03f08495c7e88054508f0688c4789d3a90ba71fce64017cd07f6ad9be5eab1032eabd70ed48efd6307124adf5d07442cdbec9b5052ddfb2550f7718faa5d4add9e3820e3e3dc8144cee7d00126933b07da954f570ed4179e27eb95ead43860cf1d1890944a73ff5934d867ef2dd715654a6bb5f346858b72548526f28c9eb281810223c21b80f47cf9583bbb491df53621f917a96de408dabf02d491344edac84dd5c14573ed1ad0c7c6865756d32a4612176f5d00179a4008405305b97aa54902544a80918db4e71abbcfc567adb1a6e910bd506f00ba14d66cb61d60dce14b9bbe695b5d07d84f5f0103d2383d3f03867d12d6ed18181368c000356374878b026029dc8edf0da06d11dfb048a0a3f178ae0db08266f61da5055d4d01c1ca68ec01b889e75c891b7706e33adb7814c51513d5ca0f7d2976cbc6ad4e87d61753ae7c082b1492141d68d44fac616642ba7973c0ae3c04d8c3e1b07080befeeb402376d3001a1423e5c65e02ce863307c489df38503b362f1da81d071b0e34b78ffb0ec8fa76ef80ac6fb70ec8fa766d80019af977203fb6ef1ca8b78fde0ee48792ff2e01f2e3cb81667fea7f4266b01d5b41566269b4bc37549d48b0757ebf0da83ad402df1248662d6e3e01035c68eebb80026be0d11810a5d4e46f3d81f612ad3d171e013519db3203e69e2d7151755ab1ae4d78c8afd496d36d3400045e349f0c248cb21fc70674cce71f6706f893e31f4095242d1f6b006f9ef9c7a901ee5183be407b6d2211fa2da0c782b9be07f4b17cebc9b705f680f933020cd13fbe6887bf02ea75b60563733ada36c01da85e778055f2d18116dd251365c55c92aaaa2c00e54ca7f4b6951ff89f6e18c0b55ac9f75a1058ebd24f178023e92e1ae05970cf3e81fe91db545a58d6d974ee407d5135e825e0447e7240f6ca3b406213eeae0025a7ec4b2dfbedc383039ee2ed4f2a76656d0384b527dfbb76a0a3f1f5de01f7eccc00c6f2d92ea0e61570ebca81ae3c8f2ba0213c3a3580c9b51e3a4041b3d937ab75ba734092d98e03c66305f42b376307eaede19a03649035cc64d0fa960364d08d03a25a93034ad55e3850d38fa2037922ccce1cb0c6360d60fcfb5b9e1e55b75537641c9e4c05222188b9c2c3168f711d995d3ede00e43ece8709606e27b2d355ddd4b71aa943c00085f57e0b40adc57870225051e022e55780b1d48d4caef72d403d8f677c69158906bb3d02d4f23d8f7b1af56e3da434aba2e25b1024e9f2173ed17434b7e16902e8e2ead5640650487e0c0ce8ede90b608402fffc0f604f6957c18166ffedc200b7d72677a09bd6f983012b8c3707149c73b75f0638a2a7df0688d3caae01c1ac2c8f0ed4b0c8ccb5e282f08e9e03ea78db00d933d8dfa503d27adb979a37d4e90d2071ee9f5e3b203d4ee5a094507a376061e18503091439c82c0139bb360115923f3b724066411b0f735e783806d4584836cf1c6867cf0e1ca8fbd11a8661263b59013d846cd8afd4320fe6f2746b811987f74f1ca0d45c38a046fbb503eda8ad15d097ae6d3ad046bedd3620fd23cdde1d4826df4d0d6054f93a72a00bafeec80b40b2a87d7d476f48da91f4ace5b0c86483195ba7692f8e3aeacbfdae0352a66680b2a386a50008445f5f8d01153accb17da2e9c8e22cb7a4aa97ac737a24af7a6dd3a44b8db4f87b7587ca1b77d700e24ea2aaccb4a05fa17fec01cca872f460c03c990e011535523fed3b6aa2af3f69474de58dfc5d1ba8671e00418ee42d20916036680ca0b2e47c69439edeec88ee5b02ae3cbb018cb53ecea66b0e340d2f13073a5f9e1f0d70bd5772f905b0146ee700de92b2e98301ac1b756680bb69b5e5006deb125062ee50ade71604d6fab3f53660545131ca054043996d037868cfead2815a2aa7811624cc94b77b06507b1a165dbbd5356261e8401bf9fbcc81d6e9f1a1018ed77dff04c7ebc997038a964d1ca019b03d5ae920a566f3dc01369443079aa8fac301f620fb157b687f4e0e8890b151b7d7a6acef80aca2f70e483af3cf01c1d6470e4831dc7540bab10d07dab7cacb52798a9dfcc2fa621acad1890346eccd818ee85b9b17cc1de1e5d281fe644d9a523f0cacf2a8c6a3df5e1b64ddd0fb5cd56f6741cf2de30a5054dad92ad6d18298742b281f015c35425e036a4b5c2349d7afbb64d39adf19d02b4fae1a762d206833a0afb7c0ee2fbb80244520ae070395d6fa079d5b9836f5279501b2012b78a35a248cc126fd6040efeaf93b5fda0a1449879d9101aca3ef11d0470b3e7d050cd862a753c0d0d48d7300af3cf9db250085243bf9364098c9f313a0c0b437fa670047bfe71740c90d78e7cd0042fa761310507ae73300e591b2bc74a0957cf76780abd7e92dc09489bd3b031cc04fd67df3a9b1e5d0542a93901fda97f20e945d6c19e8535bf0ca01f7ec0d077a80f8674db73c574f67007be5d93876a03db77fea806b42cf00ead7c196030983b30f4043d34b9b8686117b2a1c60715e017dc76cc78146ac1b1ca873a1eb40a39ef51c487edc9e3950d3776e1c485ccc771da8a53b770eb8f2ac3bc01b6adf0002e570cb8116cce7d880b9344b1f1bb4770fee0d7b80b2a342920a886941548eccfcb80234d250a2e28116b52ae44e98f22ea0aba7e7bc7f0120783422c607691c19b106408ae1881a384891d8d9ce0dc08cf6bfda8483aa2f611073edfd41dd25e44ec991164071f3a1fb0fd0c3a1eceb04302293cd1a0d6b659074a9f50c504906652a75dd022bbcfa7160c0e4d88e031dc077ba592c92cea8e93b3f001e96a35e789700bb430de87322eb75a5054342ddfa7f0648227a750618914780c3a2058ce913f3d2ca20de817e1c90ed84b96d7518fdec64c78045e832c86654c99f1f0cb0b39f4a406069cfada5b14be6a73503bcaccee70e240bf3a9031e971cb0b45597b805dc70b2076bbadd5f364f019525e27871a0962a616e0bea2e2f565706783a52e68525c0a83231403bd2d0017e5b4706b8ad3d586f1bbeb47977a0f5f13476c04bf3d4819a1e3a0ec808bae98008bb15e0b676e0001df7d101419b370e4881b00218ba370c7039bb5c01355d6ff34ba06579fde18017ab2707ba8bddf41c10622629351c582ec67bedb961282494b2fbdc81ae4d6f7f80409cd6da29a0e289e2983f69e5983a775c03a2dda31e01f638fdfa0a3057c08136d0307509873a8e80811a168ff8951482c6f4710088e4d97cd3ce1e56380ac7f91b60aca8b4b8e5000d65c29756f80547d5be6e414241936b530baa4ab7f9352dba615de27faa8a7d2da8a4a0c5f5dc0072ec621d506364fa4806c63c92d70e889efc0034663ee6679b8e246e3ed904f4f042ca1a0315f739e6b65d403cc7bd03065624f4dc00eec8a7df80a13c33a202d95a3042977ab1ef2048319fec1a608d55b90174bac936a0b02208acc2568e91e4edcc00d2124bcdb0156c124aeca8a1bb45e75f80885052558405308d7ee28060967d0356fec6c6d4f20779d3797ecaaea606b869edde02786dcaf72e1d10b3fa093049b771620041ff74ea80d2bd3695f6fc346d1ca0393e03b06ce69d640047bfe715a080f4dc0149126e1d902a6c058803ee39c0627465005356f43f613c9ea3038ad94e1c684c9f2e1d90e4edc500cfa46b9afd5169814a773ad646a1ec50334587e722d50fb9d335a6234bab99141cd882a152fb664d0f50e2dad47f0198537c6fc3815afaa6b361648f4bf95b07c00994dede0ce0e8a774a70b20c34c54cdfa6a54f749dccbae6c0131bce307c040db34847f8011efb71ff62735050b3f3495a376eff3896d03e8412ff609d22765bb5706d8b7932d00a58cf3b72b079aecbb9901cce9db4f06f01c462f6c014fe0bd4303284667978091b97b9c3b50d31538be045a749c0d2dc0d1afeb9f40d2cd99fd56e4e09e3d7040161afb93925d397d3180c548a97eaa9185ba65d32707239dd91380598bb1b07a0ea2a02081052038b0b4f148a6081c3ae000ae1da8b7dc6f471e4c1bac2f15d20113e368f5c03d32607a90ff0957af7556722b5006eacb930314920707dafbf59b03a2c16c0599eaf4b0ee80a8b489032924ecfd918b1cee62abf449e1dec158edf8e70087c38e03cddcbfc2014269f5094db6dca32a4fb09471d3f26c49d9c9ab03899cc76480543f0f5aebe3382ac8f3bd0b18ebb61695607a91582f927c6f00e89383e8a8000c3b0a62aded4fc664e145c51fb71a8a4caebd0f401dd8849274e36a8cfe815c1ffb3b50619f68c87b3e06b4372dfdc9b83650514efd01d04328edd1db7a144857687f526031fac80014a708e908407586b8663fdb48a949137ea5e9e09476fd6e8077b10903d460a80a556600b3cbd91cd0e338996c18402f7cff304048c4350d6b951a493af9902c016556de0c484a4545b5568b044b6ae9d693014b9fb46b403e02f99b7de9109349b56d0049f7b20e18993de81b8094cadf4e0d10ff920e0d5048e1f40260cf605ff6a505ddffda7020e1786a835c220cbeb60c7007fada74a0966606023bfbf4d281466cfe0ba03867ae02f40b60f7b9574062ef9f5b4bcdc779da079862341d3890c849a503eacdb33dfc096b3a7440048475df42bb1eac2f0dca956de41650fde7cb00bd3dff70409eab3707fad2dfd527105b770e90c9b9037220360ea80171ed0001fbea40639afa0e88c01c19c070a73cacd52ad1d3bdd67a117b5d35fdfe1430eef0894340211994dfef00eaae24dd93e6b6485d051a646f07809e6e6bd9e41630e0f95a39ed5b60918ffd2e00dfd12c9680c47ee9ee03887a8e2ae3551555976c6bbc7a15d5084957ea6c28ea8ea454faa4b7754f2b28745e0c28b949dc78040c74178bfb7c693d92d74d1c3706240bb3e30f402490fee301508fb9026ad1150dced7f9f4d900afe6aa3eb800235284ce005d96e564e0409916278f06ac304d32803df97d64c054b86f408f836f8fb96d4f352da96b6bd88065f95b1940973a793140d36f770c8c10b0cc5c2bd8b89cf51ce043627da1b04476f765808241753040bcc78405d34a3a527558e72cdc369c004a0b9a480ec810f2e4801bdf3f03ec8617fb4460abbf7c18e0c6e73367f90c5ede0066a357a5bc2520518bcd2d26f9ac3e73a08b66ba75a0ce6dd8bc5428464f270e080fb3eee3b09cc9e3ae0526b68a530334ec3938d09716670ec809b9e18050fb5d07125b6beb0e3462379f0e4814e7ed40b77c9d39d0441dfe3a506fff8d1ca0a08d1d68d19df9af681ad2efa303e9635fea5c1987b8f1ddab7365ea0a24a57e6ec1007f3aec632d40531afd01ac3cd2e01480876a3e7c71407e871b07eaad72852f80cecaa84adf2db047bf354d65590db4b453f30128945d3d6e3680209b52f643d3ab9a1889533a57f72d5cbf060412d48fa6062a8a302540859fb442ff168034929c400ba04f5cbe0350d0b23f5a5adbf3e4edbe014af9cc7e0d541ac2898ea445b624bd15c8b97601f0fc7bff3480b1ebfddd81949a8b0b401f4f95933f036828d8941600913376a021c4e9a8742fe89bae03f576b20e18f07aafa0de25d0fa78616e1bca8767df9b0e88f1b6860dc950a674a74ba023a966805a9d8ea7c5130338a4bee70e184206b91d636e38d6d20239f6bd6180f1c86e01257e7d53eb3e8f8ff9974d4389bf65ee9f9055328f2ca956852349e493031cfdfe194083ad6dc402d7eaa76340442df65f893dc27fba0e34623ce9952b176f9bfd8419aab975c0b5facd016ae0d801f7b91f03e6c1dc01d89be7ef8d03f24b59f72bbb573e3bd044d52f0eb03bec18602a83b5b446c066fb0e08f9b70563d10bcdab03f27dda7898b28905ad74317ef9ed80f7971d07a409bc77809ff495037cf183034de5dd9d016ec06bfa8e5052eb397b55d3432b603584ef33006e8df1803f490d4113dc91436506e6b711007523befd186023bf0d00440dc4f90b20491f4bacf550d5686cd6d21a1f817873041824ac81c780f19804f5af8032529ce20d90c880d9ef01cc39eee3d1001acaf98503f5f67207805745fea83516cc7932ffd832808236613c4cc98b7beb06b04aae15809e046c76f60ee863857b9f1850e7a22aa22c40854242c32c1b70fe766b0005ed72db00624b795916a042164e0104e3c707fbc408c3fff986038d47637d191304ff350714e666f10428ed6dad76c0af6c38c07afe6380ebbd2af72c002fabca19da8260ce609f06ecaa3171405e6bd687bf68627609f6a299a79e03892df4f5e02f9ac1263b31c8d99e811e59122b07a4a47a77a0f5910a0764af64f1b7520adff3a903ae809901899cb3a9ff498f18de5707e498b1f130ef8ef7b101d2e33cfc026aaaed359f0e7847b6ced953abaa852f813af76fe880cc2d3d075ac9f1d281cefd439bec9a4b91cf7ed3d578148f0e78f3bc33c04dfc71c78144f0df97031e31fe1cc845e2c7f68b79537e8f1de813d30b075adad75a30d15e13f27b40ec2b0179d8dd0354daa60963680bb0f41e3f006a5c45fb3b800695f6587a614c1dddd513cfd73175c9fff17e0fe8cb33342aa56e0b88e688e3574081d2dbaf0196be11a36c4c3549ff7f6958d54393464369819c49c3ee1850cb33348eb43edaae5428350560a0bc4ef9640d40c9988c17de16e00c76e58037cf8d6703950cee577f0073d5b8d05a6f070c174d0cffb1e96aef47256b58808a5a7a4c437b98ea1d68d218203f0cfe852d202fcb15e3d1aaa314a5ba308065627e091854dafbff6e004376c3e9b901b49cc90160c45563d275a0217c9901c626e9760ce03d88c9247a45d8877740291914953a6d0108dd79f902044be37406885d4a811d39d0ae6c9e0cf0263eb596f2c499bd6d1b2032a5797040e2ab3d071ac20deb7e85fcf83770c065f5c2013999ec576a54a7f29f0309a5d735036cf5abc681e45871ee40fbf6b60f6828e3757ae78014d42b809bd6bd019a3ecb1d68a2befd4fe8cb7ccb01994a3a0e50e1b61de0f6bafa526d8f7fa50305807c7d3b40385e3ad02dfadbd6ba85dc3df8971277825136259265e7ef73402408fe9f3661aa70f34c3c2ea5aac20a37d10994ea8e552d6f0c20c66fa7802e3586f0724df5a022d2ef0b30aaa4c30ced4fc63c40ac8d00250e10273f806097d54b0752f2463d00153f239e2ac92a90e52a3ed0026afae5278c476d819fff893a8bedc681208a7e8cf73a31dbcb3039ccd9a95b5298395f3ff2d47d2fb39b7b1ca9d5585d1899c1e6206cafb9b81320caf7e20420f3f53e0d6ba53e746c0b02b8587dac01bac80ecf8f0263bc6ddf0ce2aefefc01e861e6784906b1d147ad816a9e4f2936e96a0530a61d6f3f025c34eff4dac902798b5f0570184276c8ca23d0b9f69fe003df1b03a60b5c78f5f9d358519dd3770142332ed41fca197a7f0d2859d9ef2301d62d4afb794e2602fa4f0192d8ded70514edb36110474124249b030c213f4cdc5662a334c9ab01f1c80b06b19f725666df3c1f04646a3ddf30401df605a8d91d56f60cf0fcbb3420954b63100d3bbb308895fd7964108b704f40f7ca8d33031ca8b60ce24f16170dd8d8ce05d8d8be6e0d621ffbd933c0c7b96380dfd6b641f4c7e1be41d8f8161b038247970c70aebd310841f1c51f47af5ffdb52384ab0fcd3105f72cc6465f4d27a40d38898fabca49485b398aec54555ee017e882abdcc366311d020644c70d4e00a3d8faf2959e5146d98822d2adb700fb7e3aa61df3ddf1ff2f1e7968857b65da9f09a410e196fc8b3a36c78b0d40c2221175de5b90e34e98a2746f35ff176b2ef290b4ff25e1543aae0408613e89d1afdac334c0c63b60180ac4b4dc004615d66ada514f23d8293ff1d03ae187f27d2580b475a0b7c8d7e95440b7e8933d03aa331c1ac46ded600c50e6fcbb9082ab76832526e04100ade4e258804b73a4e96941173543a45c9e83115ac97701c2a007f4697b64c7f298dc0a84c05a3eed09901fe6e218d067f2ffac08e04d79f225403d8ba81d370771002714337340eac51f0195fede312098b66710937ff90080275327aa0fb660d427fdebbe401dbdfea80e1aa3e8befe064ca8201455bae70029f8e95220c6253fa91d72c13bd640c98e7c786880d98705e408ee777590ca78dd6e0264475efc31c048ae91c320935141cf013e350f06a4b1d66b7558eca96159f7ec8941b837608eab7c799fde1b70d19c022a89a39500bacf87178138f7d3b58652f9a4a79a9635bed6879a63b2671f1e18b05b6a5c9a2e16894503f2c39c1990c6fa46808d7e74614010dabe417cedfa910112eca1411c05ebc706e1e4fb7b6210536afcf716f2e26f1a10a5f760c0fd6526c0c5fb2c0481b9d923fae3323aa815e9304ee38554a7ac7496150047e14e64296a41833b320164ed26156b3f73cccf733584ebcac6085086ff472e62aed7d5025533c6bcb622ab68da1902fa24df3bd804e020938eaf016594d128ce6299d635d9a3d226cfa887d4c4584e02ecc98422d4f528139af1019884f22f45eab416a40a43c82d802d389777021c270b7a0b1e884554956d81c68573ae765dc0cf18ecbadd9363011dff01b29d2c09207d3e3072ed5d3df6c228b1340738926f7f19849fd2f28340c5aabc01f4c881387d15a8f066b807906fab58280003ea155c6500c6e98cf57e0ea24fa36cf71cd418a72f00638ef9fd7d01cc6077fab889bc5df42d449316f7df0671394bfa38729716a73f00b4a309dfaf390851616f5980affde90214abb1a8b7e4a8485f3cd406ec52fa7ce5dbba790354ddd8616e760cd0a1e8f32b49b0e70671e0e0a4575b2c3e6301b51b5b7cdced96416ce32bea64c9c9fbccd376dbc211f4d920fa746bdb207a7df3d0205a3a523bb4b1454dbfff201ebaf60762995efba1d8925e351d94c966163dd64c9a2e5147d11fcd54d9b3a31a52358fe9256d731f30267aa107d0a694891969f2648aad9187e629bf4029db822939ed2b0001ecc5534c98a61a139fdd5d04d461e6c869229063b071686f2a34ac699c054295d5c1c3bda98724a81fbe097035dffc0430f93bfb021334795bbf02150bf90650c633ca5e014838d88d69699db5d463e236ba019718311a998d8b5f1ad64a5b24aafd10400e8af4e2ff01469d52807bf6297dda0c197dae6f8d9c5b3a6b070082153aabd7025c9a49d5d1021cec3a2f80095a85a73303841a7a4cae2ba9bc32886debdebf5095eea900b2c3fd085032d7df5705109c7f2e0189f572bb61102a93f19701f1d9b7006526cd5d83d8b51f9e05648bd6436d59cd0238a6a00a6fbc7f3c5e19509d415f5bd3d2eb558318ecf2d48096f6046869756110dbc5f1a3415c4509d7778aae44ac57d3ee1ff18cab4f03c4e22b039288de1960b3c806d1eb69df203eaefc3188a677ee0d624f8e620c732015e3ae412ce41f3f34ba30ffd60661c4f8f55bd882475d835873175a4068aeca281b512f4cea8598fc8b4701a63ddc1b96d70079014bc07a80127f87ce650918458c55b9b11b2021f3e7a844322f883a41965a008c6221e7ea56207e91263c23e3a695fa15001ff8f4b50da8c2bf307527007265e5d411887a8dc5f377806a1886905c098c09cb8ab478739b06eac18b114049ddc386d382060b4d7e0950f7e3069c1f68474dd066e76341202c23696b5320216ed0a7ed6e191326f26bb740ce1ca7f70065b17abc14d05d6c24302241fd58a00ec971e507902b2c454b800ad972b06a10bbc34cbf50cda5e302a07a9eebdd00ad90176beee2cc00751843d99e9db180c2f1600ed83ed7760cc2fe12c95eea790eb3784ba4e49e030ebeb70d409f344e9f7d01d494512bfe3f083968612810569e74ed5fe0ae1e5ab8160c1169c3a9b5050a44b9da312042e6183096067e5540569e3383d883de5973ed3d3b96fae28700ebf6400d530cefd9ad80ea9ca94f299b9936970570b13a7e0094b10775de0a010251464c4b3bea1463039c7cf52d58bccb3153bb1525631bbf5d378889fb501aa02e4d062821d90cdac382ca4eea64ccd79da77d030c211a5b999eeb3f10635b5d1a60ce5f328825566a6c9bd8c78aeb6b0176fe6bff829dff2a19443bd281011bfd9e011bfdb7011bfd9d412810bffd0c7987dd1a100c7769109dec8192caf5d10f65c23cde1bc4aefdf1234062b4c5e8e4ae05d6484bd39ead0bdc9107478011e0f20330c638fdbc0820a1615a7c03d472f41b0994048fc632ed560b1864663ca3a21a527ea66115db78277c37e680a400d3f8fc6e3d0edf9e743a034cb9acee7f01f0ffe81cae08a01e9c4c003936e9f4ab675408bd87fa0549efca7e016888257efe100871b4b312b3b02b5b74f1f22510af2da31a413d4f9d168b706b1dd0c33363af14a0dcdc7702106e5b748f0470be7e2904c2149f23f4af05830a67c12dc0101d6cd4f4fb0f42ec59be17406dfbb0061821b08685e63f40f9b720c0d5fce75b80f3e5e7d720eeb7791b304650bcf836a012fccc80b7089064a578fb36a0f8c0090077a054eb17b2781f31c7daad8fd2bdfa7cf939beeb4f4a2900ba025c131e581eb28917ef2b021c6b3f17801c9b4189fcd16d37b6f0301b7f1ac40e733b338887de6e1bc409d455af13ee52f6d5eb35d7c8534d1839eadcbc1844c36e5e0d2833abf92113b8279d128274be0d627914c70671bc0ed4ebba9a9fbc18449ff6570de22dbd6cf0ff2d07ef5303b289bf1bc412eb750dc85561a0cd71c1808bc483017a87da20ceec0f4d07348a69fa2480a7db66c874bd4411c872630f409dc472e30040605fb9b10398205d44b87e0b4a2eef118a50f77297cbeaf32a8080981c39875b5047b5f01c29765ad01094370b39a837f7fff9ffdaf77d0097b3f2b307e0ea554445d8f6d4a3d84f1abe0270272c4ebb00c941cbdf80111bece29940188672413b6a324f16c7638012b3bee9b5537406cba5003a83ed55813040a445b5a344e87dd29f38d3d1be40986cd28a5a9a7079bf3e07501b2cadfc026a39c55f03a471de8bc3b327f934ad2c0a90b4eae10240c4611109fbe720a27d3a2306bbddc68907fa1608fd4739e90048ef590ebf00b8f2a49f1f811ad79519009d41f1b423a04bc0af41ec967bccd366ca6ab8fd348855f9b06a10e352dc0a10d51a519c7340398f9289eb6a9db76b8084d873fb6dc0e9c1026af7c278ede1ae01599b4e0430d944c2feff2046ae7a16c058ffab61a8d850ee27062833760ca21dd5a980e4c23303d2f31d0b90fda53702b0c19623bd96d8b7222297fe83980e9d070384bc5b0392ce740542c82b077a2dfb69114554e6002ded756d8022a23488d7a61d03c4d15d831897ce8d416c28df7f808bc4b900e5b32efb0674f2b241088a1f4b02e89466b105f753addd724b803cf05fb13cfa99fdb433fc052874e7790d90c3052f8763ec1c4c393dde007216e486d3cf4471a68f1703dca2d701486c295230b517738ab8e5ce10d08f30c632d217b460448994ad07010a39bd6d02ca18ec1495e0e780a287ab7a060af71219b705c885eb1f808ada2da71950c715300d6221f7db1945dae64f408fb0bd9527c0809d6eb70718728a1dd1f45adbc5f19d009b74a4f49f83d8c7d2f78b00af3de1e36abc6e721831e68004187b570025ab5c7e1320d94be4419b838a5d5bcfc8d205d7061863ef0114c9488b438178464eaf026190e99cab8308c62f5e0cc2ad209dfc0af0daf1b541ec74cb4cbaf628881080f5070106ea770ce812d0bf500a70be8c69987c478b9715016517fb35e0173f06a84cce01c436753e9874edb7c581f3b16180ad60dd802be0056088fee3b90fc003a07cdb32a05e12f3a3192b77d8ae8022524f0cb0379c1a841c14e685164c94c8674f80bbc7c39101f6db3b038ab7de00a65cbda61b06f1d073a6652bc0e3fba52e24914ffa5914a803d4ac39e7717ee80064f0bfbf328825b6f86e40ed27354c997d1e560c422cbe1c0ae0477fa32955b16bdfae1a50a878208002a05a3088fd635218a0f9d60caab5d13f1ac43ced5f1a900a5bf30397b394f5b54d687acbaea676831aeafac6803c68950165126a839072228bc47f409cd6c48034b42f06f1f99d8e01d94e0a83f8da8f23038aecdc1ac47418b96174e1dd8501ce2d8f0684002c0ba07344c61d4cb1bd768ea3618372b8408edd1a300ac7837223c4d141525cf45709c89c73b73ca33d1ae32dfd902e063a0973b834b7603809edc6e01180db5a3ae7a13973157d5e0250cb2645298e1690ff237dc6c41d540bd891236bf53c3750d8a3d25e028c224eab8c8c182d98a2b9da33c0c12edf0312f54dbf69587bd5400fb3035089e9bd5884837656c684397902f4327aed6d00bb541166c1ff8074eb3f000a4b14277a283b4cda391520f2e0f40b50923afef50a905099fcf071ed352194e55173ba05d5904af063817091482b9f025c9b9e67002a6f944bf469ad5ae09f34ac59e0aa1145a8e780872e0b7471d59832faadb045a5ef27013e2e6a1cd6ce2b59de1f1920296d0b10def12130503e942c40aebdfea740441b17a7df8021c1815111a5052339b5ae03f02d2e8b4a801a98936583f89689de32c6c5fb7747a0e6f22e208f88692dc0c43de80ba0a83ad49f4c91d8726310e3d29b0a501baccb22b4b3f1db97003afaa800f21fa044e80270284bf5bb007d7ac61cb313c5d9b501e99398630deba5c86b06dc1b2e0414e6ba6c101fd72c0aa83cc121409791bc61c0ad60d500257563c0f6792ec06e795619b03c0e000d49897e2b83e8e491a6a5cc60cf8706d1d2ce9301799d9e0da2d7173e0d382c5e0d382c4a8358841fc70628aa8e0ca24f1fdf0c4819e2874ae1ee76e8b0704b398087e70621f5352b06e40eeb191018acd127cf666a960c622f6c560de238398df9311ce8f4388c893b6cb7b110d0b6bf01c305f2f3ef1984faf86002188555a3b377011813a6361b030831cb397a6ce8340abd0680e6aaf315a7d830130d962e1e01c403a5dd1f010c98e36300395473c96b5ba927d65c3884b4a047bef1ed370006bbe2f210a0c424cf9b004a2ca50d3d7418ced7e5c33960d445b5a75f4cca18fd4bbeb622815f465b3cf4b1f6730340622ba37e540b9a05d2f22e1bc4028ab2eef5b0567ea9a347032253f8969a24a299a53eac27d2b109248e82ad6f819a52b51540152e9f1b83784664e2ace72942a9d27d02a8b19dac7c085458896f014d9c6269e946209202e4177aacbd149166f44e00c7e997258092cebc2c1ac4e4ffbd04f4a485db05f4b1ac623a1a2ae143d19f08906d7ec4c7b54752c852a30301ac91d80ae600ffc20d00468c32124fcc01d784e1874028ddf22773ac3dd6885a3c16904bb31aa64a9b0ffb063172e1f33d07b8efe71aa03c35efea206519b9f802d873477d4a945eda5816a014c7adde9275b3f831e0882e0c22e0e1594329479d2880d2828a2db83a11a01df58d41bc362f18c44cfe610fb245226aa5cd41ecc90718b8ff729756c706716d1a7f0bf0b5fb7e28f7fd6f7532268aa27c32e02d630302949341bc65f422c00d276d187068ed1970bc6e1a9058f1cd203effd90d9336301b50abc4ed605c3e4e0d481af165c06af83508ebdb953f0e91e5eed820265d5919e0497d64109fefb9cec1973f460618530e0c0843fa31888dbed12c5482fa08fcac9d98b5134531ebd174c43d6a3d8ec6517b4651a7e80c30e2488a30937a9464581efc02707c4c0b5b00b2de773ee3681ce91e95be79a8dc818ae71581b825e5080b9f8329d2670813a36a21b40a891bf0a8eaa2a5bdd62f063172e5ed17601c0355460cef3c2f1877a0877b008a8872f909803f5d19b5e2ff83189725bd85e885725dcf40a556fea861acec327c475b50938883cbeaa83d7042fe88a4662de833a50e960003b2149dd402b127977b7c5c3dc480b9bf64c09d70061861ac2fef05b8141d33fab52296f10f9a83d8603b15601a998e727a1360a93f31b6352540d32a23d71e8db19fae6e18c4127b66186a32c725dc1b5a80ce1195eb489e4cc5f71aa026dfc5aa010fbd18001401f1a26734989f96f52d0d5e048315038ec65020ce73ec92ffe3de00bbfab201293268babca1f2f3b10069f15ef4279cb739bd08d438f81f00f0da2b0617025cf0466b06311d360c4a2a5ef0f9ed891cfdf1b06580d7efb700f7fdd1870041f00f9b8001469d95258190723a77ccc2f6548f59e85fc8db763f09e0113162a9b7a77aac97e1a94188709a632d887d6cef464001cafe1352ebbdabc7c6dc1b703a1a39233947d2481eff9da43e9d10a438bd12c0a4776410d3a14c1a7d55d83e5707e92a7abe6510afadfc0b748e975301f4a7b79a0e8913e860df2076edacfec091ab385b304020f133d027cffc0bb44eb71a174c7a07ef0303b4a39706d809bf0418fdfacd8023495d9843e64ff95a80d8b79b5b4045b2cadb5f03eeb72b069ca60f06b1d4ef570598b8076a7a15eb257febb5b5927968c2d40802374f06f86e2c1ae017ac96724d28ae6a8318fda1262ef247bade32886979f36040cebf7b8378cbc7890116ef1583f8fcaf670302514e0da23feefe9e417a9cbe0123d73388a331aa20d6cee39c3a5f06249a1c0a2846228ea4f180bb6919b54aeaf150e9f922934d3d9e963af7e366314e239dfb9b009dfb6c28e3f68a1c3b5d57a0cf6535c2075b803091c2e9790ef0f98ea4332d986016ece91919af8ac841d4821ac9318d01380b969175f63f889b458ad11f570bcca0ee9240dcd6ca6602183094db77025c460e5605c23c59dee8179cc8c5e61b60c4be8ebff6b862532a36e8d36aa2344e5920ea9a17cf6700d247a7c70f80e21a9fb700aae97718d3615c0f68c7ddaf00b782831d017c9c1fb605707d3bfe010c63dd262ccde3b9bcf51f8c5700a4a3eb9c5f02a8b25b5c740d627344e5da025cbcf15518dba579ed4520ec40c5855e4beaa3b44c07c9b49856190625342c1b065b7e7d69754500b768ae1a630717bfbc0b202a6c7e097035bf6335b407305bce32a01ffb477edf16e8a2dca904f0d6c7ef62ac2c349d0b3ebf1984222247229f7a9e4f9a324d7d83f893ed5d03fc83d452dcf88a0ec3d01e8db14c3fee0c624a4df59631a10878b8cf014ecf4702b8598c9974ede119eb76accfc7d12f0dd541dca28be37b80d2f1375b02989eb33e7f4a62b45d567653726b3cdd17605fafcf05380993be252da0ebfb15e0f3f7770c62fbdcdf35c0abe24c80fc52f8c1b660c891a4299539c5ee1b835862cdc020fe24ca99d64e965d76fd0c9255feb2e5d8bff0e7dc8074b80706d1d28b5783d8e9baeac28a7430378f009d84b71f063171ab1d03fc0bf70d70a1e90aa0811fbd1a443bd23a40d7fbfc0728625f1a9025716a10839d341db8cd17e5bb0133b936202473c580cb7b65405eb86cc0f17a6a102d1ddf1b70bcee1a44d31f5f0c50416bb0b959a4e48fc33a5bfab554a4af9e0c62d74ec90083bfbf85e01e2f2025ddc57d7faccb7bfad574686aaec447067159dd8e436bd2cf78439d473b2643ceecd48daf9db457753ccb8f012800ca9d1100ffa0ce4a4ced49398843bc98f50063819830133960169111a39e4845d0e9082440c943e7a9d2feff090ad58983bea3c6503d517ae0ce33af955ebb33d12f784bbef9014c26715d9956003413256104935654a0b4c0b2008e8fd3d88326558f64ea0b3b00e291d3f91e60483106bcc326d538c73370d09d54d384efe817a02125c44a2cd349dd63d2edf3da5aeaf4e333c0604004d52f403edf282226b5f6f5d307011cfc716e99cc4592ffe0270bd4dc2cf40c122aa7a8d83707e4ea1c2c19e080a9a697e80c2e7a020813e70b80c443973b001c86d272618027640da03a655a790334e8d7b7d70442bf9e7668477baae308fa6e1077f548415d4fec08ca126b01d7eae73b012cbcabcb02a80886df06712b40c49fb44b3f3a79e343803c577844cc33b4c78efb35122078e3567f32a05ef4c30c3094b7cb8e410cf65e25406292d35a20d6edc13bc3d04a0671aa7fef19a01b3f30e0d27c68104e0304094c9411347dab8346353976570063cc2dc48bb580d895fad020e6fadb85c090cb3b934e59ac8a477d3e76e4e25e5f3b8da3b11cab0b09a4ef4c5e05983049fd31453173a14e2e39f82e3e0d626c2b0da56a3d9f6503ec95fe05c57d17f596144752aa1e0494bbb46740a623b6be26f3b595be562e45d59e0127f2ae41bcf6534017de6a5b80a3b1be30202cebc8800c10bf02e1ba923f59d90d45ca8b6668400c6fc72066615a3388afe59634f1315f3e1a104bac919316ffe6ce80e816bf4597f7c6802a9933839094bcb22508949f06989eaf0c48bef766101f777363101ae7e75d03aa772c18c4d73e686adbf4bc6c104d3f3d308845f8f66e808ac04d478316c58feae9406714578de99833bb9cc56a984e7009c85f31c7a65339e82e9e0086d2e2bf002a3d23c6655af6f072dd8819344d64792f370e017de27066238022cad225a05aa0d4424817f30cfe214cbc5d03b8dea737dad15eded127df0a902065d40110269fb3408a245e65b50ca8b9bcd785419c0d6e87f2c14658f81c44e8703a88c19e56e80bd3c31d809297c5ce0380db6b495cc1b4f2e8c75d6c5af7d1e4ed7f030688c5274b00e24e326e49d3f6661e7d7ac640d5dae99e3f05884d88a243ff417c4b550990f7eb624f80128f18b8a73517ab74f22840069917b5a324bfc385de92e2199dcf0140998df71a40454e95a5a90081d2f76aba5c78af0e04f8da17b583f2e1f92df6d369b3c08e3b1c087012bebc1970e56179a84e4051d37429a98b6add201af6ba26c0747863f41b99f3233aff3f88337b766980d70d43e92a0079c5207aacb933c07cbd6d40d1b2170194b25713c058570dfdc958a5151f05a80e75c0603793d8d7cb220b7012ee7504380937be045268263e5e01536c5a91ab730eb8ef2f3194edc117b3b03608c56ee6aa31af1310834dc4d0d407df8286924a8a9d9da900f5d63ed8b61a6e27c5efb900fbfa7d6d103db6b46880fa7828a0f4162706441caae964b04bdd67012c561f1a3936c7e257635b7146fd2e1ba0774806719a561a28658d5cde02c86fabfa03ccd34303b2bc5f097049fcd1a4abe33e975fd43025be8a7cf4ff41f44777d720463f5275fc07b11a5ed60c30b467831048ae0a81f8fc83f7be419c7369db20fae3fcca0043fb87418ccbc28241ccb14e63100385e979eacbfbc58141f4e9f7d80045e6b901caf23383d8b57b5a623a6feffd8ce8e472e0d7b25dbc68ff9091fc6edf80f2bf9a634d1d6f894aaced854767f66bdc80cbb1402413abcb89bcc3d6a2c74a9dc89db798526552d2ee8a67240ecfa29f01ba560fa6002bdcd701999b45a49f6f0147745ad816880da573177b61f95775e7102095fc700c904a7ef00048f86c7e6d0170bd2f8b125085d340891345991b8ed7b7e8f5b2228b778a5cbf731076c25cd3f46a403865c1c755438c18535e5be9b21a2997e7018898f43e470009ce55ec85f34a13716b9c9d01fa5cdeb19acf4b4fc46013ce50ce15fbffc1cbb9419c84c31781b845a79ede32a18a59ad674c719cbe5c0168fbbc78122045060930cabf03985eafa9e35dbcf0daf668a4e6f4ab0159acf6015d7cad57f9b8f66e4a718a9e0041df5b3f06b16bdfd2a772f5eae0d955ba44ec4d2540543cd256a993b0733a10605a1ea9e9a3212b6a0130460170be0a987059fd52c370f04f673381b05627ac802d087558b1af5fe05b5c7c9d0b283feeab017512df0dc2e7ea53cf28d9fafa6b06f196dd758368fae79d410c25e92d4a1d9ec5d22f4026dfcb5b8350fe4d2b034c255f025c35c6ea4212c6149ff702c8fc551218c61cdbdd00648eb5a51f036e5adb06312e9d4f031c746f0ce2f07c5d16c026bef40da8b8137e8f04d8f96f660631b6f5a54104287fa83fd03916da0b9b5adae22301c6256f1ac4d7d69a0e728bce9706217f7caae96c4af975c9201a765d1890f07264801fdba201998da706e8c6fd167abdbc37a061ab06d1f4e1ab41f458736b100d1b3f1844c3ca1303c48d0d03c2f54b038ec6a101bed69afcbabd3e7e1a84daa5af61503e7a56761a28d49e80cb349ac6a42bef63934ebebdf60e01d2274706ff3a95bd052a6fc4fc48096fa80e4146292534131b0d4087e76d4ccba4532c2d6c0008b8ec8c7f01137e31ac01997a5ae514504fd80c687a7b76c6d940128df68e84287996004374c15142a70525a3bf7b0b706dc12c402e82fe19007d503a38154824fe7e0734ecb83b7122a7ba17f6ec5c18904265f503d0c766b1b724208f6eda510f23277567760120c361eaef0230e82604f839e0178b06c8a78c5c4d306d3a791020af35090e524d1c5f3a564b2b4a08e767401d2ac6e2e509d0c881ead9009700831acb48ccd379d190b8cf5dd3c9edcca662df2ba08f1afb8767b8c4d2f45c800378e9dd20a6e5c74c20564352273783c8abd0f9625a364312904ff4da2195ae76bf0c629eae5e01465d7ce10602757cfe2713573ece9de1b200b9d3c974342f2b1267e5c6a70009c8374702b8d07c3050edbd92acd52f026c065164e73fc04bfed7209a8e65a405b87b10eed202ac91df0cb66e9ec58dbe85b4899d03035c01bf6f056aeefbac7d672bc8e706218f7dabd7db3914abe1189075a1290c6265a78e41ecebdd430164fe9f55813aa603127d6acf399419b706f8285e0ac8a27964804573dd8022c3bb06f18cfaca8072511706d43666eddb81fbeadd0053ebb541fcc991bad02910960d2865dc31881de69dbdb051dcc957c700b56d6380e3f4b30135ebef0c42b87a5936a0fccd8741b4f4c4cf8891cb9f6e077ddadc18c43c2d8f0de2aa31f66b65f23d37a07a69d7809370d10093af56b6a28ef69201aa5f371d2fc691df8222e2666c8025e04d8039b6e1b750f074e25f20afffb8c7ea30f81fc4a4cb038eb512692b0f924ee4d04ce4d184139988903cd69fdcc6c8e5896e9e048ee7894ef5d93d80a95dceae0d70be8edd214f13e1b6ab254017de852f80b4c5277114e452cae1851540c2ff633605646e8da3b87b645f8987fc89a39f365e005252df5e0164696e2e0099767cd07425c0e87cf0f9d926df1f409fa9fdd307483efd4d0014336929e48ff6028cafe48c86b57b41ecfcdce673d5e74fd463d58830a4af6f80720e7f5e18e096c4b85439c636dde817e8c693e6475553b67b2d76875cf7082320f2606ef0c643841eab09f94fbb8d40d8b33be7fa136ae8a64b5e3bbf69ff07bd470322ca68472b5ec52f5064ce41cca0d3250125fed66b29d592b6f705383c57ee0422fc27112292eb0a77b145fab4594067b03411a06ec22223d7f4e22a5a3cdf0aa0716eb601fd214a37c6b619846931ade917540fcb91a3bb05540feb5c4d0ce24acce6d8025240eeeb1963aaee1ce9176314bbfd0701bc6d17fb0221296552a8641de2f9e3064042a1fcba6e4045b62b812182c00050b2b2ab3b01d59bbf368865dadb1260c21cbf0ad458bdd4309524ebeab52acf78ce66e05494971383505293d030abe476a760a76bcf5bdc5e2f05b8142d7d18c499fda4c1560dbb2b56b60fcf2d7d8bfca5ae970c48e4f364108a2a8258737b6845afbf2c19c484795d34206ff1af01b15e2f0671defefe3d148dd1c800f3d3b5417cfee1b301eefb1a06dd3c4f3b0631d85f07066826160c6218ae970dc899f16680fffadf9f6059fd7b2d8e4bfe5a052a1d1ac4e8d77e0bda9ec72f83b08af62f0c62281fb5c4b88aa6de9a40acec723b4e8faa2f376072ddcccb78c7b1b6164774351c8740526e3d01c88059dec50caac61c38e5d30a40cf200d6d359660f418f3b49ae858fb7c01d4f2b99a09e048be164741352579675aa1e9539d734b213b5425fae4623586a14a5c788bd9c08044f9cf003d63e1d720ba709b96faf09cf12d8ee4da2901ba342fd0f454a264babb0670bc16d30b039232f70c6293de3b064832c03bbdf2018cbf76a564a665d4c2aaff4a3d8df600342c97342c531b2c8df9b84c1a96dc61e4aa0579877d03ba65dc09a37ed43c7b72b867e746bfe897f1f9b78c4ba54be287fe6418732c5feb2dc31287c33e604472c6954300e6da54eaa18900e5c181416cc12723402657e770478093f07a0340171e9059b005e4962b3b004aa216ef34bd56a1e2a32d002af982d0aef611ca9ffc2830208dd3830041579f8b00a27d3289272a4b17d77c4b3da21de4426a418485e7b210902dba0ba0e256e7dc009fab0b355d39aafacc0fe7a83afd340891258adafd07711979637770d9aaa7b1416ce399dda1aee326ded95a03b07da6b5990085585658fbed3d8295cdaa6c7ae81d2e0406689c71f09fd77e8ab76c30939b21b7b5bd6d01acc4d70f02f8193c4d0ca24fc9e8d78211defacb02f4d8daa640b4347347ae9a11c7c9f7aa00939f90ddcacee8573301f40ea76aa9aa54a130ab9481aad363c234133281ffb0e534ca6473a88792f230bf3502aa80ba0e2839a2f7d60ca2c7fa1f02f828dea8834af2e24ff55029dc3f170494948835273b7271c874b0bff6f59741e82eea5703c4d113806ee2077a462d4bf39941ac97c53f10f3e3f507c0c53bbffe1a84b4f5551a44c3facf06217ffc668338b33f8e0ce22d1f5d03ee407f000fd51b83d861464b0631b54ff704247fec1a441776ff7e115f7b3c3388b1fd3933207e6e6810637bba6380ece00ec2e4fbf86d103e8ae3b101b1910702d446ff3d1468a24f31d6d71329983f1e019cfb693d76bada87787707d08dcf2ff79e019cb79de55500669f4e9404a9db8d4ee7ed3280cb7b318b895bb7c76d809d0e40e77e94666d414f56e22b800cba6f19203bf27808e0d25cacdc037ceef32d09b57e313905941896a37e65fd57a48bec62b54ff55abf6894982436835a4afb7263416018f2d8060dcbfd00c5af7ea1b4bc9d902e5a296f1283fdb90f1830713f1b8398a75f170022db8aaf3783384e96cf0448c74fe289f62420e1546d904828c4d856883d09d9e1bf10f31f70d5f82f8084b871258029ad8efda3aebb1545caf9b85a225cd62f8608cea49f6f018727f12ff3fa6201f283011609a6543d1a528a94fe68effb312e6c7dedbc64c7cd8f02c414ddd3c9b256a7d1a6002986dffa808c871991e4b55cbcd3f98f414839e7df029c95fbfa5af2a1240a4bcc410cd468c52024836dfd82ed33dfad1b8412a1a7b7d415c5e3f50bac0969ad2b4090f327b3b0bddf71023d08a0a979be16204e9c34a3ad6040b83e290f6b0902c5f30d40a5e2be5f05708a47e69f673a8e95bdcb76d16e522139ae6d0990f57e536f5190e2f98a000335d66b072aacc986624fb7c98941b4e384815266e3ce0b1346292053ff58808fdbd3e74f25b26c19b0e6d4a73870e7b7678398637d7dfe14379cd1aa410868dca35a30a014077b617beed38e0d83d81dd6d8c69ba4b4896a874a4ddebe1b449f7e1f09c4d6d7397e35a070a21e2a8fee657d7ee69c9baa832a0ecf85be80ca23dd011488725f0a70f09dce0ce26b3fb70d62e4c6eac25a7d3a02e86efa716280097cc700bff1a141f4477f6080aae2c6205e3b7c33c05dbd6740b042c720b6e0a57383e8b1b36f01e5763936882e5cba340851216f19c48459ea1ac4b74cf60c28a07466404bef0cc8e41be3d2f4d9b54bd20535d6197c9d0164cf46746aa470cf0fb17d3652a7276c6b8d35026f02132cdeb33b404231f3c95be42e56ceae0cc21beaab0be078cdef3c632a0965f1093052c0f61b602295fc2780ab79e798b7948ab18adaa42d508cd5e909c03e68fa45232fb598a78de58ff51b80c49eeb1e60aad0ae27835075367c9c4485b4c76ba511c858ac1aa5a0ee7c3500f9c2b1b29b9c59eaeb09c022cc57df80661a9be302bd5ef51037c87f3a2ff71a87e7373dd68a0ad46b7c0470bd2f774bc058b5495705baa46ea51dada8102b6af74680840f677a4642f35de9171842d25a2310a692ce811e4a4448c663b79917bf8a617807901ea743d6ea795273fce96a403f51fc6807a0c8a5abae0029baf0506dc188423d7b00052a35a702f2e7bf1320950b3e794d4d5c522ed58e115a85b72980e09e5c26011cec88df9f0332501d024a8ef92f354c71f353fab4953f4298182c0a10b1fca18691cf317fa96115c6e9ae9e2109052ff979deabe8d38b4d03749f7a8bad4d9702f86b9fad08d0b04bff02bf8b1f7d7e7b31f8ff50f2173635f90b73d49e9c0372cb75d5ebca9ebdc6fc6877e018b9e51f400fc7d8a631201aec412024c7fcba22408eeee55f01020c49733e0764b07b14a03f2ed9721ad20476b4f5d9ab62755100e9e28c29d50cfb9817c680112ebc4f9702e4f9d6e4971345e792b155dc5a713114185084fa5e80ba1aebfab871859e7f1b80a77d7ed9129012527f4272a4e2564d5710dae5004001c76243bf9053fca53e8eec519dc33b01d6dcaffe44eeea878f065cabb70d8880d0d752482151b9a70598d2beef0da2e99b07007417f99da9fde712b0618079a130e09efd6c409a8d7d8398c9f8d2364e55fab26810fd315c3040983833c057f242804bc0cf9341880ae34783e8c2a59e010e767f7f120a1134022e02997f8706b12a8fae05c2f8581efe9761e697040913cf80910c10a70004d6f2fc31c050e2c6fd66001b20a2e8720b900c72a440683b54b7e8590950dab3ee0240824024996d81de727906d07dfff501a0146e9135b205bace3ef32d138ffe7b0005a1a5f10e406f993d0860e23c6e0258dc385b07485571320048dce8f3d052b11a3b8501610443806cf3bd970036956cf1504b285b15c0fa0fba50fa8f7cd3074864f9a0d7ffb2acf28cbf2cab1d0019533a2f344c124a79ad5f107396460c549e12aeffc640b537e2902ea22a420b5840b9dc0ed02efdd8b53ff8b8aac7940aed790b484c52c4e9d18201053e5799a715f334dd9c1bc40c9a7d08507765470f9d84baa3dc6d0cb0f2a81d153e029168610e706b7ce62df5022e9ae7cca0ba8b0ee5f80840def3e26104a0e939a27ce7a0e2f4b8044c7a649ebc024ca521b91620c7cc882e6c458558eae9c98068c1034022adf7d9ae40451ac919404e9cfbbf02b8374441ba39205fcee859a02697eb05a0e65afddb13e0cc3eec1a60186a0470e37b5407355c896f8f0522337a3ad443e55274c940296ebed85d0250e0330d7f0428f5b43432203a9fb16d4ff518fdd5270394c3bcb6e913161ede7273806be4ca8300c7fc98a174f6b9c1b2404d76a0778126e6c7de0a6088fffada86001df4cefed18c384e76bf0d4831dc17c077a3504b9d6c8ec16e658700219f36f312a071880fce059404908dbe99924c7dfd4b80ec0dabccf5a66499eea893a5cc585e34885f8cd5b0527534f5f9251198376b00957ada15c0e3bf735a19e0cfbf2b807d6e8b13c8fefc8bc706b813d602b4b45719901143afad08cdb8614369f0532a763450f8f3e7b7da8068c1be015e151a39fc2e8ace8b01da8da9417c4b6fdd8014e54b06d141bd05831897e58941cc8fee8e417cfe82be45ba8bf19941b4f43719a06688d5d0edeb68dc8fa1ecda8f7eed04c0e7972cb1aed2af95916cbf9557a477b88be5d19dc86adebb00f800be01304fcbd9ad41989e2ff6013af77b03809c1736f50c9dfb6f31b65df92aa42f0109023f53807cf2965700c4bda6a5558035131f804caaf4856f408dd7de365f2b51a198f501ca89b0161b7dd7e7fe80d7fadcef6f00facc8f70be6e8124a588be6e8112d7446a8a16c8f1f17c2a800da7a3d7ea82c7be3e2fcd1a8767f85bb6a0bb40a9eb4b00d95f3a1f0c83eb8ce463c090ccb5714d68c16848d04417308e28acf286b16d8509944c6f00c5f20c98525916894f7ed1ca0e346c04c0bda19cfd02887a4e4faf007266e450a9cdf3a550cde4f80b507312def3f96dfffc5f5107ef0b02540ffbed181043c36bdba54f7e875b835063efeb4ff0d9cc9d9140944829ae04faa84c7619b9569820fcf845208ce4b9544b5593eb895958532f3a8def0422857dea9f0a607ff96699d65c23738474cf41e83f72f56a40ca10f5c7641837adea13a0c08b3dd64b2ba1c4311f0197ff411cafef7a0b052e72ba11e06afea53f21d75ef1a9fe20fcb8f8fc322058520d93fcd153c3e4ef70a681522446efc9208ef9cb738398417b0ca5d2f4a4f31583f8dadd8e0115c8f4275d7cf177694723a13794c3734085877ad520e6d8e3500093efc589002dbdd36b71074aa78b02ca4acc4ed70cd0d4acfe0a2029f5970d62f41f2ac01007ddcfb100e11d831fc0883db97f2e40f98ac99700c3b0be2d401aa71ee74b2ba14407fdeab5cae837ec0be0cdf05b0b0ca96aaf2e1ca352fb1c09d0eb07bb000240d2815e3b615a7e30facd34f6e4b4ae2e544cd1a78681f08efcf10c901cb4c20292c9a658de30884d496754935053eea8d771f12e96f4b5a4e7eb9c7f18609051d309cde8205a771d6771b9045058c5ceba807c374e0c0889e038f9f3ccd834c033e3c500f7ca4783d872ee7a067cdcc02054263b7d03f27c17069438b835c077f4ce20769830c5cf012a93cf150314bba5410cf6c6b74054872aef421aef8d64b3588809d393409243addf02c59a3ff327139d4051e8ab05922e22f540d3b35563d00148cfff7d0cd0117dc25b4a95429fed0064c4d8fa02e898bfbe3208c1397244b4409e909bd70025bbed1f00a488e8c722ec49dce87cd0303b60324f7b1637d65f013ae66f7a005935224d600b243a45dda6ff200ebea846d002b574a2b728c5dfae1a96e5a23905c855e3e1c780688e0b004e479de7d8f97b4adc9bf60e01fadabb2b0322fd26002944f678a8120b941b3d01e23dde4e00d4082923b6a905236224ba7c5c9e302ddf760ce2047a7d11c0f23e564ba7c4ae3c9c0132998d5165f5329263a9b7c855344505c3ff201433ef7b00f9f6ac970671ee371f02d42ba8e8a04a9fffdd3188d3e39ab1ad7409f8b93620f78fc1246c5a7b9f8009a2e42d6bae9ac64c4eb76383b8ef23c2b50035c3b9daa184a835c3505178b5a8560d62a072ec85bd56400ba9af9304222951e7a40268dd9e0c0d885beb0910bbb27103e811aab2c850d603e4a09f07c050050cae0490b6aa1703ca13dc035470ecfe12a01c0023267f4d86f6b4391620aa35dd01922c45bb80cc29367e314045b006c077b478604ad5ba467214cc0b592339ee0820f61cd20e15b24ea7cb06d18ec3a100e2c6d98f41f4e9cb85010593cf015dac2bdcf87ace7078b06d109f8ffea3d78a3d18426602bc76f5c5000719b6f146d56d4fbe0508eadd5d040ce98f512d40fcdce0d00005a23e6e88b16dd500b16797a9dd8c3809777f0c28459a0530728d4e0dd029bd09a053dae5b068652932d95c188418b8311040ec7965bb702581f5250126cccf9641e48858509fca41668df3a5958342dafae9097449e3d40860f47bf32f4826b6cc8662d1897bc3bcd2777461ff480095daf79341881bdbead31c9b63e758834de9efb4b929906345edb34b391076f1c880dcd8ea20aa101503ce4a27345cb814c0ea75b66f10dfb22d8072277fad1b44176e1f18e0baf264404abb0b0372763d185088656c802c756f10bb65d537403e9d0a10b3fabe6410dbd65bd780aa4cdb06247ca80ca816ae39a6189a7c6c10abf2581357e6a7a888d2de5e90a5cab75873fdb1c58de8e4be3546985bfa725d29bb09207d5044b6b500ad537a8ffee8dbed75f609503469f10b900c7354026a4a0a1d550079861e67837008d98923a96f4bd14901902e679376d852b471077072a445018afb2ed30e07d52cac02946762740390e814e1832d90d4872abc9ff8fc62710c90092bfc835aa0289b45fd89d214478de516d08e7c45c36c5c4afa1305b15ebe0024c25dbe03a4a75b5813a08afb7517c0f24817bc25f7a9b677910c4898cb30c8dbb678db1620f37514c899038ab8dd32fa39215cdd1f022a16e12223976947397b1720333ab7d7bec4af72f50020dd67d85eff83b8232f3f0250ff943ff45885ac5d46c9981638a6f95580cfaf9930328395fb4c986a4cd988d9b3003bff3daba1d2b82c4e0114a2cd487dfdaa9e86d6e9a201486bbd14e257bfeee112704bc3ea21f9717f7604488a88a6b75f6b06bd7c0326dc5fa2e4650b14a33964a06a9224e4ea430091256ab7347d05c4a4ada9416c7d833700b90872a9a693bb238d6606b139f6560035d2d6db99001a34ae4df3d2f0b1e3f6d552c5deefc4aedd6f378790608f0d3061cd7a06f1b52b745083af537e7c1118c739777c2580307134150849a944eaeb373d7cad17ce0d70f6f12f68c7fe8741cc8f3dbda54799fb377aac19207caf7e0aa0755ab932881974cff2b0c6e8e45e00f5cf99be96d09db4b668407a0bd69c6a2ee56b357d44a681e99b0032dddaba01ea9f89419c515d06bba19a5a7e1c18c4e7eb7c510e9174d408f016aee6fd668a9d70996dab157b62d2ede85b88e5c9efab0228ee74363425de50cbfa851cecd60f0cf8c59200b7c691860139a85864db6ac51e66f2a60047f468c580181acd8f8cba74632880d0bbac3f91afc2f0d9205abab96f1012caf2af00de831b1a972ae318cbc6d6e023509c770de8c23503ee739a413582e2b540a3fde3dd207e313b372067d7c88096fe01ea7b64036cc02706d18e5aab41f1c81fa7061470f49f20298dfe7e4119e21d831014c385b7f92b1e7f716810327f24ff6def269272768e00ba9aaf9d01c6a818cf63531ad8fa761b3bff4059acf2f51420cd15f686812386deaf00b28b4596b316681bff5a00c80d67f11140944dfe5803288ff369019090b71f233790c2acb3fc011871be6cc6da1f5895b5b06410e7fefb1b4041bd51c0f13fe00eb402a89194a20c4f0bd48ef0fcfbef151d3bcc39fd917a9c4037fc8925a5f0ea6c8104454c9c835652a27ed4af012a824b807299ac2d08e0a9f2a45fc87327f25db440fa31a4be1684dea173f90c5080f2253d26692b1def1a84a26a436fa9895cfae900d41f1b312d07b91bde2e65944869816661ea1a90a8567f4212af34648e29136779370370392bde0e0548b4b0cca4b38d6fc484c928a9cb15e687a5adf546803a9a97f469a596aeee01244baddf097027dc61e42aaed51dbc190695068a6bc2a0220344b9cbe85799cd7187f9515514e6ddd915a026e8d58a40a4d5cc890eaac8f3dd99b1b2db551a637bc8daafbbb248b008eb5edc0a9206aaee855ebbb8db064c467421b350d93c73c57a51b6932222b85b9011bf1ef9b89a3abcb99808c80af86e10bb65bf07d08577e7434095cfb38022a74b019c9e0bbd169d52fe603acc1d0ae344ae04300b9e302e0a54ca3f6c398d6e5ab858b5800d56fb580be2e36e1a01fc6097ee05b0f11d8c0c626c2f760510370e760ce204daa1831af2e5145f03017230ef5d0b20181d77047036de79010c148cbf2f80d08b2fcb1c20f43250cd906deb6e532044c9cef3c020be65f54b806f59fb1068e2aad1fc00461c8d53f5d80827f065fd624cc3fa2b02c885cfea207c37f2a7068a5a58f99119d4681b5f3c304085f46810b793be062ae1b4d8dd3688637e6b03a02d67f66110bfe86b6c49e592bf35c724f6ecac1a4427f7360c421da69dcea5af76f42d356fd9593220639b3e4e1e445f5b06214c8c160db0bebd025cf12219c49f0c4e0c42fed82a0db08b1506d4053c342068e2d180e25847062899960d623aa4be407c7e67bc64100bf9ed4e40f9e8ef0df0ed89860dfb890a0f51f66e9eb657b7e868e9d059abcfef01922eee635c8636e9bdc65130943b726a5e018ad4798a737f68290747bfe144d7ea590d18a384bc9b0274365c4f003ab4b66998bc90caa358b7436b9db6788bc49e1c89595b20a31f92f4708a0b4d875e9f03d2257f029094d2f60b406e49c70940cebf0edbc5d0c5b18e9201c58fae008a8f5ae26b4bc7562f014aca240cf8166b9dc67d805c9a878c8b83aed03b0cff7c9d6a035cdfae0cd07ed15279439511f7da823e87f84107a0b2220da36f59ea566f21eab983d27e68d1e99e6f6925a590c7ee1f012ce472e34200f1eb9d5e57ac57da3b05684a75bb02ecfc78b80ff390721e7be70029ff2e580d592e677bfa13e783cd006903df8e00a4844835533b6bae0f2b0196d8123d56e1da942217630b7409c81d8310bff0fb1c4ab84a8dfe84f592eb0781298a5d3ab99223f9f99201694677041003f11c1e5608ce69f740801eab1ac0842d7877082899ebfe38e669aa19dbbf98f7378062138a35038a95eae3c8c4d939623a5456fdd2c9b59c065ebe00923fdeaf01530abfcf1806393f150f34bdd639971b011444daa56a6a1be748efd9022db1c53b012264661301c27f3aa5413c23ea57fe07b149e75b03c207d50e259e78675ab6071006992d01cc71bd0f0312e7b1f5cd9df0e224640b6ec89f9c221a6c0e908356cf04f082fe61aeb7b2549c731cf32dc008ba752080477714b7f90f78adc080dbc9ae1e4a16bc1429a9e600bdd4c6ae414c98c3118058c0745c1b90e57d53209c8ed2e98641fcc9e9df2fe2f09cb0d3b5b254fcc9da9a80bcd33f0cb0bd2e19605ad4c729a57f7fd58087fe1ae0c0cdaa6c30c517fb1aca096903bed58e29b549af370d42b67c7c1698448f9dea1953745b2b33804aa2eea81d25125bef0f501daa12201fcac609001d7d315a16c07169706610d361ddbf2035c540cf202aadd841bab0e66ae9c4205ada7f37881ebb65eb73ccfbcda74134eca86b808cbb6a1002eb502357cbd55cf34335533e34a574565e3d181092d93788d5705f1884d4b7910da20b3baf06d1f4cdbfb7e04a9c0ce25b362a030ee0a141f4d8c2bb01c9e5970d08951d18c40ef3be62103bcc7d4780a1ec2c19102cb960104dbfd030282fedeb9e003e023f9aa70debe567cd20f4635174b95d718a8a8f40d8663490c26c21ec62a3b164bad40348a6ebc78419d95d1d378b91d5619fcf00575539059478bbacf0164b8e91e4be194d65a189e8daff200492c852f41f84ac7dd4015478321d268033d6f3507b981d5f03a474bb4c062cf57780a48bbe7e213554a4c19f03aed52b19a0d334c79e3c929097ab058064dcc763401fefb0c923400e655143b7050a755bec02d4eb2b8f06a1d6af27009c383b514baf05324f4eee0ca24f07db007698cee40920b9f0fd15a0abc64f611022cbf71450cbd35eeda08261e78b6f719ac0cce83ba150aa0c627e5c188489335d6483b02446347a0b248f757b02d84e2207400ba42deed0b04c42a1b47709509f6e9c0be0eb34d22f74e5415b3cb2a9f5f310e00c104f0218532a7d3ee9c5d3f38b018e4b4700124c17115bdd8cecd876fd0b502842a43b6d81547ba7ccd34a2e7837a70621c0afe819caa239fb12c0309419db6a12a526d32d3d5691e4ad44761855da3f76187d674b3ad733b4081779467b78c41c23f0735477292a73b4096035144b4cba7a30a40eaffe6430267ae15120a37463b0eb319e6e3703c084bbfa931e4a5efc9cde05d05c3dbd01a668036f5f04e442a36f99923ee9990554eb98bf635c6add09677702c49c7dac0308e92e3e7f0d620fda3810907c7a65105f8b243daa157d5d4c05f893a231209a94b7a8845f429733721ddedebb0062e02eaf6d25d838923a850199f3d9a49b1e4b7dfd03d027bcb47b2dc04337f70c62796ced1b447f7c7c03749d5dad0de2aebeb66f109e08a55a4a7282b47d2a10639b76fd0c4cadb8aecc0182118756430c4de740bfa0d860daad04f896839941cc8f8d1d037288e81923a50cd912a8711a50c354b56b7d53a0a6e8a15e3bc1deb0b62ac05b7e1f0c6243f9e2446ea65c8a30b78c14c698d69604b8266cff004af68f0db5a32431c91287562b8e86c07aafc1a64648fe6235a82c51fe66aeab625ffeca0614d565655b3d78f86080b7dca500a6c50d763acb853ab32d17ae6583985291b2fd3f88a5be561950e2f1da001bf0c020e6473d3688feb8fe302017e399412c8fd5bf76c43e56ce0c70c03c3720824a135796d5eb4f8370c2ba704bbb24311f0970594dfe05a9c23a1a7d153018685cdaf7fe07df0f06a1213988af9dbba0c5468f3a6c3c947af0250ebef1587aa9875d807e71790a502e82cc332c4a4e160152755ec4a63496a75bba1b00a4c87c7c00c839ee93b7581cdd7b024862c3c7686c5fb89f0900c9314766c116a8616705400d6b42e81dbb742fae092d9056f20b30c4c01d29325a202d1c5e04e3a9e4b1631a36cd38d81d0f0d42a43d5b03c87f6c5fbf901e6637d47263c9b8c5ea2340c2557306906266e316204fb74d7acc42ef069d6cd3f376095010eb556110ebb6c7d85af74914f8f84ff7c950da056f61d9805c484cba8418584c7a0009ce832d00ee62698d7624ce86624a9ffe8566740192a4d75e010a44b9e6e39c452233b52d38f7e975fbf5f52f0d887b65a02c384f3b0664b2a14f1d6f7a790fd050be3f1b8402f1ebc22024364255c60a512deb1f80073b03e4d5f9ca605b29bb477fb84ce41ef3c332ee7a0d98a295449f3c96d09bb0df8e33368b34b803480aeee94f6c6f78310889be64b02de346f1c5ff20c636332e76277ca1a5d6c1e222d102da71c3326dc5e2b0567ff0b5d2c12664dc39888bc42adb56e5fde3dd20da71c14055d3d84fd3f13e40fd71bd6840de0d464e0e87f9e503a0bd70af2fc0be8ee56cbe37c691844b400bd850960a01c4e20db6ad9a5450052ede2d882a11857abd264964ae9e04f0817f6706d58ab1fa1490b7cbb31ecafc387867f2d7922e701a68410ee9b3930de28ce28237ae1126f2afbe857c4ae970452052b7a6f19700b9c3ae99c9f33a00ff3f0e6bf55881b0f947402e89c4cdcf8f17eaad6d09605ed83e134091b9b16710025af12440be8b1f812ef686931701b4a3c36d01e971d701da8277de0cd05bce04284dd261ff68fa18963799a70a514d5b7b0678eeac1b10a1bb61101f57aba5cabb51dd1ac45c1fea1904e6a4b3550184dec38141fcc9debd01f1b77e0619537e1a80b6e0bd6501cabc1df605e4703832880e5adf32a0c6d02f409691951b0114cc2b6afa848f5bfb1268b8681e0114bc31ec0948a1aa67948cedeab34043a667b68b06bd54b1b26210b3f0f75200d7846f8d8be25e75beb4201aa62dd8a5ae676706b1d4fb6f069435d3b4aca83bbbadf981fb7eb15a0910f0f036112087c85a02e8ccc6e43bb6acbdde1890cce3cd806af23706d152897096b5af1f0cc8eeb16280c0ba6810a2f5fbb201b7820b0332b61d1b50ed664d20e6fac1bb86b289a488e55e74f2c48676e2d527f62f7c7f0748a47d8a764cc6f62fac003a3d7ae700edfcd501401ab4be805c121f0f016ac77948289389d461371b00c9dab306308a8f2ba3f4440b748813c7370721d14701c716487573fc6e106bee7b1320397999863999d8d7aa412c8f999ea1639ee415933fb7c61f0059ce3aa4c79983d07d1e0f00539490db4b00895fe77ced34c90ca6874a7442a899fc49c1cf008ddc551fa03d6834064cf4274f8052ab720b20bf9c2852de02adca65669084dec4456222d56f4205dd02d22513dd3249125916af000e443903e8aa31a4835a9136a40b0cba134bb00b8c9c0cfee5f7c4204485a98045da1b83f0b68d820eff419c40791720a1f7614d80a44444fa4d2cf446dee216a883a28cf97f102721812813c7bf1cad1bc44309fd9b2427ac63a0ac3ebe61cd59c6c5c36c624d6fa2d725f4961bfac520748e65c174c84376dcaf1e80f55210813951d6b7f24aedb0e3c1be00b1801f1d806afadd303f2416179f57061896a706b1f57d7f0128bf577c5d1ac4c14702bf3988915bbe03e8f6ba7c6340416d9647d636febd6840ed167d9cec516f3301644bec7313cbeb584626157eb06554569883383ccb453ab995c6630f22dc76e2d01d14dd13bb48ac5f09a051248dc2c4e2395ab8893c543b078541ec1fa76706217f5caf0a94715bc36366d2caeb7139db1b1b90af8ff552a549e4d8ddd1b7682f3c64979247447e615cfe42a969ba3d22b65605a8b38ace6062a7d65d76dc7a4099b792f552134492c9ee31b1bcfefa091893bc82a44413c9ebf999d3a3d66dfefe0280c8920ece04a87b7f7f0c9084b2fd2c404aeebb2d01bc187fd430a92a96670228aa9a426042de0dd65c2dd5dee68641c874935a205358e21120096559bdaef8ecd954a06243e1190da6a384197d32cf75f41facef19a0c666e45af13c44169db72d88f9f1742e404e15f2d3b50087d45dce5b65d24b38834de65167ffc1ca8100378b2f3a489aef5c6401a4cfcb8900b2f6e5d420f68f5b1661434ec862ef5900e5df655700d17a6366c02fc606d1a7e79b06f1b5fbecfc73c34f880a8b06542ed64325d113f0300768e09341dcf8ce970de25670a0968e31518cdf0d4897fc20a06bc2ba0141f01b06a87e591e0d1b7d5a3d1550512aff827159e1146b24a19c684a4db1cdafb0b1b5f786d84ff74b019222f6fd0bfc50a2d0680b245d0c3e0d62ae0f4e0d48a9db3508dfaf3d4d18ea7b143bfa05025ab13b35880367f8611013269d1990344223a7aa08c34b038a61fb2ddcb4d6d41fca3db8a286a96e42ad895bb3a26e770d629eee5f19c49f747e013ab4b67a06b129555383d83fca6d033c87fb06f171372b022403ea3f1984bbd8a3ff844de9f6c48002c1ab068422683534650cf686265d5311bc1147f4b4af239ad09da96f162797009d8464b09b2a0abc3d990012e0cf5f001566b08b3d80de1259cdff171240b3b90e90a474d2378828dfcb7d805e7bfe6640a69213809aded79ff8482a00ba8c1ced02249fee3d1a440771cc4f753bc99fb18f4de5399ca3ee4a0b7407e2f4985a253fd42fec065c02b46ed79f01be590c0c4242e9f12df643393d0248c63d1e1b50c0f106a0cb4837f6b1a9b323e3eb3407f1967401500735e7006be069a942dc13936e5a3ab1335d28757aaece0da81bd9054820c11c377562c545bad0770f7687a9f4ebb93a03487dbc7c6010c6d8720490c27dc02c4c782274f20240d795f74f8006ea7ac100efe30703241486d2371cb223b780f8a8b54b81b86975ae99dabaf2943f0b06113fc75939f50d67303388760c3f0d70f0ff30a0201dab5277a0f2a76b1083fd7569108e183f7f003ddd5880a62f68a0a433e0623507b1d43b6303ae6f1706a1d7fe523ba466f8fa0548cdf079641083fdca6a70f58e2fc6d6d9a3a63d83d8b57f0534835e160ca2933f983036404cb60ca2833a538368c7379daca221f985b96e37f1333e5f468ce2e3da808a5b2c42dde7da856410c310e54cff835032956a98e618f91ca74ecd4972c639a0c0780dd01c2332650ee2b5eb95004e36490f25e374b97c0fd0a5f9536f91e2eee7d620ac1a0376295957ca7b3af92f38f046409691438378c61373cc2eefd76b0621c271aab7009fcd7b3eae420a4e0f7a0bee1ee52fb3d06e497becc97f39cb8f0d98b87490af80cb8d4174e1ec5b0015d22e6b4e57c074736610b7b55da665a57c28a42b6c01ba8b13269d2c34e98019a4ca2c9dbd8941eca7ab1b02642625d87aea1c112b8b02d4f3fca4e9f692ff280c48bdd831203c9ded53d7c8fc3e312037f6d42084bc0dfd497f18324cfd0e18e169ff2430c132f2f4651097b367a643ad1328fd0810b954de18c4c7dd32a56a84defcfb6d40fae86410e2d73dfb58cd069b7fd5306948de4b01dc2b179f0d62e4ded48e4c9eefe24a00b7a4ad1540453bde9341cc8fe56d03ae2bfa964a818e8c6d5d87fda5586499fae6f9f16b100d7bd7e737d48a278ff35c30005c19203b6c0b7091d879145096b37d0114003fccc2467bf26a63101317ffb139887bd4424780aa2a5802a6ed753676988f458338f8d6df0db801d70671051cad0a70f5ba38368849f7adaf5562c58f2583f8fc99be56a96df0dd982a87592e6a83382b47eb0631505bbb0298c1b439b697e6b8cf1deb2d8a6f181c188470b5c20252cab25c5406d185c335012eab78634f75252e169930cd088be6fa8e0057d18d6d8368e9e99a411c27ab6ad85825ea7f0cb878eba1add0ff1ff4fd277c6d4f43395634c79601d7b7c200cfbf6783f8da935b8338c40f0508d74fe33701ec84972301be76960de24f4eae0d624a6d68c24c655cda378867f4f4f953b40a071aec2991c2dbacb946baada5438318a833f5ba2ede9b1a6c2549d011dd680fca3b06f8d3cd0c621f2b35f9152a3bd074506efde1930145325e046847cd36dea0f92eae6e0da2613b3f06d1c9eb2b023882de7136d860b7511ac443b73a06b1d48fb70c482af26810b3f0e6cb208c6d9f8b06c46adc0b6047ded7b828c1f48f96299107e9db6f09bb69b917bd5ef625271f1e0124d470d32aed83761793ae1c49a4ad62c2947f2e67270009ce97b13c4a57ddb95807f491a47bbc56b7d772e70c4092a672ffd520a49c43fd42822259cee620567614f9fb0f42d83c3c0748503cda31c03ef7661047e37b0f206b020974e680aa5d1300fe6369f918c0d8a65edc81cabfac6f1f00e7e9a5e97ff1b7df0019ec06ab005ddf6633801cdb4e2e00d8923a4719a04b33b1b3a57dd04634cc650136ae01a8b10b36a5d2f6b915fd4212ca324d97975aae2e01d25a2f7700f23fad68692925137e5b7380d59c2e94db5a7e0c2d5c691fb4fe85417cedd300a03bd0e4d620ee73dcd64a27107e3c3188c1aefb064462dc0374ad9e1606216e348f00a561e9eb19630ef1541ac4b99ff40b5dbca7a541ec52077a8bc6f6fa0f90696003201d4a77cd203402bd2f83f8fccb278066b2c6a5058464b21a748bcebffa38591330e9cd41ac97155665b24aeddb001bdf1420e3f4c2ae40d416ccef8c8b2fbcc4349776b06b9852ba01e72fdae17430ea20dd80f3ef264083fdfb6410a7fa372dd5fd365dd40064878cf5ad74644ab56410ce0b156b3fab3669591bc46ded8c69e9ebecf38301775386a1bd9b469a625c24ca4cfdca12e7dad2775322524b9b27df0e047016ecaa1de86053bf34207665d520449647b63e9b16174e04a22e60f9cac4b52be0e585014650d69cb23477cef60052222c560631d7ef4b0194f6c4d094be8a1e1d18443b28173507dc80af0da20b0fd530ed96671b06c4d030615482ab83ef46290366fe513be45f7871278027d3e2ab409405e8cc1828c5e1744e2f0c28b2c3c455604e3a63f465c04c170f02dc5e5f1817df5e3fdf0db0359606b13bcc1839df5e3fdf0ca2a5bb23037c7b38926a7ce132eac139087dd09b1e8a0aba20e1430bb8f0e29852d672699edd0b50fc99bc5f65cde6583ce9b564c12bea6301ca13542b0631a566fac54419421605e26e5a9039bfaca7e4e8bea2d76b45f9fe0e0ce2c0797a16883c7905d1d7659dc821a2d3a34e99382d96984ab2e7e72d006e16c57b47201a960bbdb6ca9475d75b2aeeb74b8cbe23ebf11b6f4188b4e9b72fa0302426bfafc40f13030ac18d0dd0493f1860e33b17a0eccc91a654c315f08767e8169d364602b802127653365d59abdf0430d92c0d0c626c577e04301ba3d82d954f292db05d38f5d1705380eb1b419b657bf30c4191344e653320f46f530d1b7007dafa03b1a1e0295b3ac8684f0fc541374d1e0c28e6b224c0ed75676210af9db217ca3a5b74f550aaa8a6d9508086699752daa2d47b33881e43c5583688c59d8b2b01d483849796739f88006a87d2489ef84fb8459fdc189025e0d7206e492b6a98a43ee22b5b108aff0ed53ae720a460894eedad115dcea1005f7bbe66104389a5680e62e2cef4f972065bee19c4a49be9b5d47d4bdbeaa05237717d4bc994ba1c1a9044f4da8015c5be6ea330b16fa5f23aa5354ddc568889b9ce426eb80414cb7d035c4535fa2aa2d25b35880e5afb166862535a537fe83879d76beb080d2daed4c976151d1bc41eb4d131201deec8205a7a3734883e3daa0ca2e9f9d02014331f7f80146e1f0694bbdd172041fd77f4471a10e35d72e0a481ac6f780ea7018a88fc184399c6aec4ba0690043bd804c8ec73b105b0ed7517a0eb6c37fa34398b377534d3448690fd3780a4bec353806e38d892925d346f170c080e4c06b129918427d98993b4cdc915e98b18dbe43be1f791015924f87ca706e78c4aed9d3016e1a67ea19bc5516110924194426f816e1664ac4f36c69e1e03d485d50820cbea65ac97546aa3df9a005cc4fe09a0f4e224169803560323570ea5feb9033840e81620e3526f0c7002f27540a974a7b4d4aea2ab4c29996bcb5b355dc7eb8aded2c87dae10202cfc8691fbb3f09e1ac4b78c19fdbf92b90f0045c860e06e419c2f9d212df555b43a3140feb83208f914fb5c4ace74d435887b1465bce620de82fb5cf2dd143fe939882556f70c629ebee8e31477727d6d10de2ee34fc04486e59e41382ffc9c1b84da85e8fc94d028965f3d83b0045055362579fee1fe92fe62bd160ce2e29df40c8ded2713d7e6daa26710915c1ffa38ad39f22acc411c5a5db594420ae954bd6e3f5896e95fac1753db7eb014934b7f99498f04e2f428eb4580c229a7ab00f40e2582e21c44d3af184a5f56cffa06b1d15337720ea2931b3d43e6daee8900a5aeaff427633de3c10025353b8cf37e916d6d0ee21e85ac9d74bf4d831b83b837fce86b514494d4c04c76d07d5b3188cf7f61063990edf70fc49578716240c6c78e411caf6f6aba92bb7e69a0748bfe5e328805543e096014e69e9de4d35b504524c9285ceeb029555cbdd264268027d32fabd216dedb9e004934eef87c07d4edcc0ce26b31eacc411c9e08ce4916deb4752f4005d4f56cc0759683cf5ebfb8cfcd413cf4f4ef17313ff6f5162ac474f6d91ced067cb8601082d1c2a940d4b2e9ecea179a4124974f2a86dd41d39b64252e57be0d6211deb36de926de39db32c02fe7480071f4449faf394659c4398880072c1249d9d63aa7fa387bc9b33bf86a4e65b8644b3305935b10b6e88cbf43d25dbd33db07e826fefa6110d7fb8f990129dbbf0c622fa48c79b207f3f38500a537899049b5b45fcf2c31791fa7d57301d5be4686a9b5c16e6f18845d7d794fa0c742e6ccae71a1e92cef0870cf5e7a3120971a13b7ae8949fcd1d74a60fdea18905880b1b5b916c7d839885edf6c0c622809b89c0304673f03c747cc60c906dded0b011c853711261ac6258d9f04a87cde3f14c087953280e92fd7efb741eca7540d4db6f0f66a014a2b4e5e0cc856b026a0bcf8fb0218dbaed9729a01579ec9b50017bcf1b30181c18706f1710b85416c9f5de6ba53c96d9f08e028bcc57a9121b558d5b88c959df0c98038be47831886e1854198d2ce3550ca0bb7cdf268f02149671a17e58759e6c069afa2f12d9a41edad31be76bf32888f9344afb299e96cc92026eeaa3e0e7b65fed64095d8d67635d8a5ccc65f06d44dd01c93f48936700ea2c7d6d452993857ff005978770ca2c7d2b941cc8f2be4e446aadfeb2783d850def4f91441c8771b02436e272b028ceddab2417c4b870da551c6fa6b75a1ee95274f065834370d42a29780e6dc1d37df06b119502423d9a2f9be2b406ce483e67a338861d8d48469a80db6b96d10f7fd1f7d6d13635bee874092fb488ee577084673cb409c954b6380fca5a85394ed17fc10e3926df3ace3d0cab679f64e003a707afa8564986e07a0e3e43a6650b65ff027cfb099b4770cb06c790b90e4f8762f406945bc5cb33d87c9c79665594d57af001de2072f0618851f0c886ba4e97625de7f31886bd3a17e213170a30128d91cca8c39600b7e04e816bdfd644055fb55800c8784b966053a76708ecb53ee2f9db53d8014ff2cb1fc6726bd04c85076ba6f10cf98d185f63ed6c74de5f7c9aaccce7137da04a861435aaa50c8b2b76710af9d4c00b2bdf6f50b6e7c45efda20ac2bd880b35386ac3294be346f2f0034b657cc75d96ff3353de65b748f19f457ab75d720e442fcc7b2afd588f8d9052e280b90ff723077011ab97a2840f2df7b569413938c7b06dc4dd574850020f367ddc4d3e7a3019766bec53771120b649b8d295f3107310cfd6b038248f85adb9129e7917d57af170cc236dfe7f3d3500fed1930f93b06216c3eac1a84b4d530f97d57a73cc11c84f895f70c422cc6e09fedd1ddbf3388bb0795f2b26dd1dd758016f257df20da3165e412d7b7723919c4d73e1e09e0c479a96190787e5b1ac460af0d05a89546da916c5b349acdec20d6321bf016e67af266f00b508eaa575e6b3bf26b631096f769df206e38650120c6bbf3d2352029d137405bf0db8641741009625b108557cb466f91345eac0828d93e33d991b19477cdbade975430cc194d4d1a3406d1a7f58a41d8a2337b9053ca0c2706f8e45d19c43dfb690d20c783317ba1add5644cc999bcd6e53bab212b1cea6d4f00a9efeb13a0cde0e7ce207aecb76b8062a66f10628f4ec2ec849703833870dc85b2acfe3e1be0d2cc4ee780dcd78141b443e74b26836ef9c0d4964777fe5932885ebf65aedbc5fb996fd1f53e2fb25e1c90bbba6f40744bd7208e572aa165173bbebc34e0aaf1f78bb08c7c1e18844e89bc4e591a810e11435961bf1d8237b29dc06f0706b12acfef0c426542f4759629be73521a4427efbd19441752ca383be125d10bd9a6f8d34b83d8a534b65200748ed84f7ddf3f665fafacd87d1720a3dfbbc605dfc0743605c876b2c3ae5de198d2718f5185287fb1a29c5d7d87cfb7e59d58f3398885fcf96140be605683effba8a1b22eef2576c23988a1dc7c1520511cb907b3f207e50ff6425fefbf19865afa752a8eb7c72c1a81376661cd30144f9f0238816be2d6a36108dfcfac06a51cea509cb30543dc6ff5f998168b7b759072741f1f1884d6e9579fefa8e7538338b36f59b735fe740595bf5a801261e25f643282324f6b057f6dac1984a8f0ae1e53a0f49a7e21e5df03f3a3563aedc7d28014d41a06697b48ac98a5aae86c1c1a8422626bd180e28bea7595a99ede1984e50c77e46c7547bd6f40a681194042cdf7be417c3e3954e70063fd95416cd2eb7a4b1703e6f6b9801cb88f0d0840e5e0b376e3e3c7207a4cf27ac34c4e18b8b37ccf73e2d05256d1aca340b1d569b02380b57ab4268032636b661053ea8919a414a169b4248077fafaae005ed0bd65032ccddc70e60971a33f8e0cc85d7a6c8003a600da8d747029808f001550e7207e31f32f7091d842fc6ae44db9bc601013174d4d0b98b8db5c126d79dffe34880befb93e7fda209e6b3ae0ed92b0cde7b9f34af4c78b418c7ef7ca80698960f46702ff03044dcc0cd06e68b0a98694f6d55295cbde2d0de217c32d8350bb3cb06e1bf4fcc5caba4118daf3ae4148c1530da52ab176ef05e8f5464dd7da2fd70cd883f60ca2c73ea702f4986e5a4dd5c4e43fd7c8293cece0d12024478ab7b64065aaf5f9baf2e03d98659bcf1f954104d5bc6b4aa110494bb702e8b6d6d4b0f6dffff38508aaaa2fd1e9680b2039e8e704209be74f4ced6a8041373f448f55d66e9c3f03f0bb48c8a795d51d978700a93b88e29c83907248733e07213b5c08286b75d9352069770720b5cb4b8c4bf567bdff02e8783dd12fa42179bf0168cb4187320764027f02e86b8fa706e4a8ba078cf896e357839060118caa3fa5cab3011a92bf5fe0d0ae5fe82e76b967106f39f8c7d8792db7ae6b6bfa6178ff972d599275a99c03952cfb8e513953f1e91be0085a6b9f7dbabb0aa5f2fca644023f8001602049c4746eed5b0109c40bb9423df9894f080965a9b95338319015cc9f2f06b24680cf5fb7801ecacb5f427599f0e9731650c3e71615d070b6db62203db66e47010d89475ca4f426811e17185d9d3ee78cd253563f9e0ca4c7c607e686ea65e1b34bc3f74d02a1023e1c89d3224b137c3e6e3df464ab7dcc654cd62a78d99e02b20e191659bd2cbc1023542f0befa131802ea1465e7e22791b3d188819cf73055297099f1e65007b4856ac989e73c5c76987efc50b9cdaf7d284b1028afaf72f0311e8b3a680b2327353405999e58889cb2460e3188acbc4db0a90e14a3551c0a7692d15b0195f29a0a6e0732880d77d16e4b5e265890b0a688dc0da67200b205602d843e21c720ca4071b9f14d08a08ee6e843efb2d9ddc5d01e9c10bfd425d7affd16420ab7f168e00f6aff34ef2d0e796d0ef751490a64bf98994f5f84f01afb6bd30e0e1ac3fc830d0b50a6c0c021d6ab4145083e35c19e89ed5a3023e01f383018f3c837346013999eeacc77b694255016f956d2aa08e112f060b756b792ea7800c6cce51c06b039b0ad833113190b1e9e744000ff0d86d1bca6a068fafcd0cc5dd113cee0aa814fee41490c55d2d14d06b7ff20ca49af22d55165039fd5a2aa07814fa0cc443b25a2aa0c44d3f14505b59ac0b9053bd247145be6339238993a5e6b98202aa73076ec465cd84bfb809e09d6dbfb102ea1716b89a8a1f26e0331142f1c3f85928a06ee087442ca06b77fd6f2963d299f80c1550c4d6522c75c5dd5801d9a0674e01bd767157405d96846ba51e53ccc7585b40cdeb810b8cb85dc0973f5bc067a9bd14506f8b374d84e298016f710f431978f32e700b785538775942b663c1ebac8097f1c50af870b5a202ea28f2954206f096ee27b751ba197f5e52406ea89f50016f675808e05302d8bf6e0195c2cb51001d39e4cd25f95281f840100bb893c7555d7d393dce1771ccf8e78302caa8fd510155f521f73ff4d437be702c14d74df07414f0420cf9896cb9e33b2042ddf2bfce0ae0ad6e5d2eb8e2ba0978774b18466283d8f287325770bb2920e3c8db90ec360b9a7cec6405f0fd625736d291747a6f5905d4dd98670464f970572ea7e2cb091c6ed6a23c8de69d12ab1e7de778ba561ecaf3c8587357329249ae675b01df6f7a13c0ab2a5adc66473ce4711357002face7b98230e2cb6d025e0c16ea368276590139cbf91a1e03f808ea17abae2b337831a905f416becb37147707f8c2f55037d2f385eb16f0dae2aa0276002c159095e20d42a11cfd8c2bd7177577f0cdb4167063d115c04b023a120fde151f2c0206d902d5175ea665009f61f6cd1539fea29b9cf1929fe478b50b9fc31ac67936b039494b9e079a93b502b296d344002f91a84ad465815dbbae80977bf4149009eefe0a60c74cbe29408e703b2b203b569598ca629f594d008f80f9d4ea509c08c1a3ab808c74836b54ac273fbd14508179c40ac8edf22b51f762764349d47d5926ee2ae07b5724f9e21198de1590846260ed92a1f4a14bb641b24402abb202de669228a0f676b012c06e869f92023ed48c7b4aea1118c60aa838ac870a48645e051dc652a3d6ae023ec14ee211b11f4646163adee7a33a425d44e1b5155081196d15f076fd8d008abac7c3a648ef8eeb0d19c896cc9ecb405ae43b8df7adb398bec16753467adddc9e6c619417a3c4770d4405693db8e31ce9b1677c074454906dd0a1c74056b87b19052490f7a1809735ca43f596bb2c03d91d17450ca467b0a2921cc912097fc5cf100780cf773d5b40652c0c18c870657e5540358a374d44ba66622a405a53de6a6f0149381e309055157ccf6af47600ec19c8e0bdb456c0575fb1847a454a69a7802256192be0c32b580fdd35e0bd18709172f850e648cf6363bf43a40e00f6e45940a3936a9e81f40cf85e400be8a1bcb52bd2651652e8d445d06d2ba09f0c330af82cc62f06e222e8cf19c8328bde44019f0ec4c5413d0239aa62915e25f81729a09f64e41bba02c061202b003ecb0a28a67c16b4053c04e4e4ebc971c53f06baee62a7802af2a7bc565c0419ce6c7511f0de95e8bd915ea2ae030947013d34c325595766f050d400de40b692874a179faf348cc445e0f1ce470ba822efd83a8847c0dbf61550dd0f270aa82f15fd29a0458b3c7514e9fe063e0cd9026ae6b72705d49aae5d05644f8bf20c99d3e2ae42e4eb2dbb5cb4f504eeed56016554215140569b8f3a8e74bbfef24f011bb69c02ea38ef2562b2c928ce2ba0d43a210371226425ead20bf6720a48643e3cdc025a255fe722e5f38e5487bb5f91ae99c83c14d0335e6cb575bdc3eda0800aae132b203d8a5cc57c7141f315a0d17bef3d9b2d3302e435133e834fd9ae9f53c0c7d1450aa8a3786333ae2b224e9102dee65a52401d01e7a180671239a6010facfc1c14f00c4d4f015f555b64a05347a1021e04fc29a0d7deb60a688077db28e01b94bb0c74dd45ac80d2e2dc159040a1244e2c7fbfa78087c45c2cdf0b313c057c08b1af80cac7a6c2404e3b599f1550e79bd74c44819cd57968292047269f051da913a1e02aa0a8efb866ab1321be29a0de16cf3447ea3370b8395107c06ea6806c9014fe20941d101d05bc285e724e8c52f5a680aafa0b0aa897c39b9c233d5a2fe92ae0b3b238f77521062f4b8af47082ca4e01259f674523d967113cf92dbaee82cf51b480cae9e2a1809648f0add406f0f5bf25562cfc9275289c7c1d78ff440a48205e926800dfe7c93b63233df160705540cdda4f57012f197928a0467c20699106e787cb986ebcf85d0bf8e49f70bee8328b31570f395ddde319bc4817518c160ac8e5ca8710477a9e81b4d97a20fbc553c017f4717d89644c7866e3f8de23c12658c6d94e77a48017e9ed04f018f9c8753fcae5c948b7b946e9f9eb52a42219f26c7f14f03c21774822de4412c465013c27ee71272ff26524feab809659b0d33ed223db579e025e16fd50c0db2ab8c0e8b101cd9a800c1fbfb61220bbf3d702689018bcd84ae9787f0f05bc3930144003de60c7e543c6fbce5104e29b598227bf36964311f9ba06030202e15180dc92c911935d14782c1550ce49bec4d214b45c01116faae1e4eb91ed938d001e124fcb0a488f9c3cf48b2f5ccfb1918ed97decfc714936a379aa844589189f8c0ee95ac705d9c0be1020470fbc04f0c09bd77f4466e0cd67dc89627288f9f422801357e53aa723f1f35d01b751050524d0ac2a80172f0c2205d436b4386f63ee3b80efe38b74f6fe43de22eba5fe3e04c45c4e45313ea23ce0fbe60de07bcd3b92da8057557ce937f874b16c43008f8079c96a24c36a7f2e792b1b0d96dc51d461f5eaa58062fa1009234ead3449ef69f482024afe68a380e7e6770aa85806ae022a96abf74329b31b0ae408fb87029e1a680920ff87c73728c7595d7aef2ae0d3c50e0c74a639cf40478d39057c1edb88810c13dc8502fa862bcf90a9f897bc56dadbdb9081b4a6ec9889f54cb7d21f03693c9f3305d421e1599ef84b26daef330594fc474e01b551e56f06d2bc5e48c238cffb09bd438981ec143eff32904ecde5a98066024e4305f4934399812c2bd8b7155067e2f262207d98f39f02def5ec2aa0676c1b0c64dde78e1a607b3f30df66c2892b48a797b7655940bd4fbe843a2ec80887c76216d04fb67b05d414f06a7d0b783d0cc7b4202794ed39f9859c1c59365340f536fe534015c89788c908271c28a0671c7a0c64a22c230f95be839f574099fd996520de8dd05740de1e3fa7801efa3766202ea475a080dc1d5e5601176d119907bcdedf848194f5ec5801fd24fbfe06252ea829a067b81b017c6bd7afe4ad78aea25001a5f6bbac808c41b450400566b815c0fb6f3f8a0cc4b715c50a28b57ca770acab5d960f05fc964001c574b014c0c7ad7f8281f883ae3505bc33b6a5808fa01e2aa098cef20a683a6efa29806f10e29d8ff1db0bd751406f09a180dfd256408eccd5400175158e1705640c3ea9f31debadc37cb5b305f496f54c01bd25f21590627c12a705dc4fde292063e06e15d06b792d8b05b45f6cdc5140cdda8acb87fa1c79959a05ec40cc29a088ed420594fcf59f026a09cf5b0554f74fdf0aa8fb757a3f83623acd28a0e5d97c98a90514533edb25d6d5507c03aa05d4a5f55b0a28a6ebb902be58e2470149c86e390be8b5732eb8bac46afdab805dd07305d483f59b0a382d925a19cd5f370ab8eeef14f0d1690b055c1b560a78e7f41b50ebc117b15840ad472fa3808ac3544a90b4c8c3bd02aa62939b02aa2fbc92c9023e8874aa802cccb8ab809a026970be79a5bdd713a023beb502be8a23ab80f28537a25840b572565040ae2c5ee11e8b0bdae705edb1ac41f31f1d05d402794f05bc99f60da89c3eba0a4864e7ac80da28efa180cac740b2525a8fd25601c763a4804ae1bdac8053fb52c0f1e82920917feb0a282b7f6b02d838fe5614b031e0ee97bae4ef150514b1674101af64da28a088f1e26b0b58b192028e695f01c574995740a5f057f2a5c89b8bf93ecf5867021eae028ac763a0804f4aeb2ae0b5b41905346ce2a53cb1eeafcc161550f558e614d0ec5b492a90b87fee67059c736cd7654ba6933929e07347e527e211682e14505a1a6f40f932136310f18eb299940f199bf29a9a5896357ad2db2aca1ede78a480ab475101ed6c9bf05bf452cccf87027ac6e24f00ef689fb009d66379c79c5145991aa87e2be0763fab80e2f1915140c561f1a180eeac9f440cc4d1cd271e58409a568b0ae8a1f15801b93baa9c953acbd3c82aa067d443051cb14f05b4eea2ce0557e781f894770b285fda6c0b75776da7a480acf6c79702aa957ff2d0029fccd1610ba3eb4f67ae029e6b6c28e00db902640cc45b65639d5ceac933c495d51b2ba0f12d1f1d6f015f24f9a98063da13c0dd9ebfae02be95a9a3802fa790ac9429ac615601d786ab028e87a3805699fc716dd075b03ce11fcbd546cedf5a0165c307db0f9d17fbce2be09fac1450bec41305348acecb6b6590e86415f026d6580145fdaba48024fcfc554026c7ff5440d31c7ff20ca9c8f9b6021aabb32b3cbd6b816a6549015fc3f352c08a050a282d9983021a137ebf7f426320ef4f01d5b94f96506712f9a4c558f66783f726c43ab5f85d54405e0576eb5b4005e673ae80f4e0f5a71690810dbe15d082a12cd7fdf77c2514b02f67ab804f5bcb29a078f0d91d16f04afbba02eec0f715906262fa3c3e63c68f3c057c58e55d001fa5df668bab13a9d98502aab7bea78014cbce15504cdb9102be19ce51c02b215d05b47329cf0df07b32f643016f998915d043bfca0a385f7e14d0aa9bcf9b003e3581fdc91690c835c939d961d77803ca97fc5201a596fd4116f041a41f0a7819ce5e01799d326f40f351ab86021a8c54a0805ab1829453998beefc29a0aaeee415f0893a0705543e9c9c02be8d71af80ca47fbfd0ceab27cea5b78757aada180525bff154007d7a0cd3648e7c45b3b055460e25f05acfa56011f31fcfe06c534d751c0becfb502f228b6370ac825ff79524003ab4541017558f77d05e4b6dd641590e33f27a995c3081b3b059416e74b011f87bb524051e7d31b2ca0a867a180a29e79ff84ecd86ea880bc927cbfba015c2b6b925a5956d0de2ae0a5091705bcafc053c01bb74e0a28ea9f57055c4ef30af8feca9a021ae144bf0a48f576ac808af6f91d53527ddb514026272fc552f6485463056c935b0aa8c0e4b70a282d8dbd028a7afefd0c529d6f1fb480d3020594969da380968bb5a5aacb428cfc5a019f663154c0ddd19902d2b47e54c013214505d481bf1d149084594f016f62dd2920098f522bf9f45bef5053c0932952a4c461b61b29e0a1d75501457d5352c0a77b6c15f04d577b056c2ed60a78ec7153409dabf3410139994e52927d8e7ae943012f80182be02375b907ab5b66ea1b05543ebe3f14d068edf9a580465a9df74fd85b3c50c087dc1f1550f9c80e15902d5c1615d06ec1725501cf593415d078ff525640769d375e584016a62dada99e5ef9a98097156c14f05904ef9ff02e9b37201fdbea43011f533c574085ae7b52c057c6e414f0551c5305b4b87629d910925336888b0a78cbbfbe85669bbce78f022ab88f8202beaa561227a3c6f558016f65fa53c04b24d60ad8159e574079bbb92ba0bcdd761550555f4101d5b9fa4101e9517d3f94b2f2263d94887dd26ba91e321f555b2be09c5b2920b7cbe25b015f4d1228a0ac2c7e29a0ac5c0f15d06b8f1f0a6808b8771590eab58e02ca39b5fc3cc9e52522101fb1132c351e34c209628d299f5a5d635b287bce9ccb4201a576f352c00d4ea08052eb3b0aa843729a2ae09c7b2aa07506524d7db9e24026427cee6b078f5f05d4ccafde6fa1c1c8816b946e86e38d4a1650172edf554031f51c059c2f5905e4ede95515504c77650514d35d45014d4eefde3fa1c1884c84e88db07cc1672c5bee82ed5101c5f4122b604da1802ddd5a018d5e4b9f0ac88e251505e4c9e3f3602de012d453402ec6e658409e52bb14d5a57beef80a681879c828e059af83025ec6775740227f7f2aa0e270fd5340ed4bafa68063da5640d5b4d6554022ef470a68cd449c55409bad97efa8d3da9ea5682ac384bafe844f35af6be2b8d3fbcd964e162d7a5a4ef5a65e28a0ac3c7d29203d720f05543d366f402b774e59056c83760a781630a3800f547ec7838c74f5a880edbaa380f4883562dcd9fc66bb2ecb2bbd8aa78012f7d55740898b8f0ac86a574f0a78d95a5901c574f97e28e56df2524066ab2ee594871a4e410412cf95966439e89a0f47b28022e6bdbfc167527f28a0b6b298534031d512249bbea543224b4583db5c0195b1e73b625481aeef6f503fa89e17c0d79b2ce51be263cbf714f0ba4f4f01a525f854406949ca0ac86592792aa01ac5070bc4722995773e2920dfd6eefd0d5a42b39f2aa01ac5a7cec6ba0e76bb51c031cd2ba046bcf8a780cdd69702325b32ab21c78b7bd75f05bccb37ab809b82be022a41cff74ff834cff76b6919dfaea9800affd9514043c05e5d01cdadf51a02f86c4abe20d8023606df0aa85323ae0ad94b8cefac0212c87f7f83ebcb4e01cf9c7514f065d84f05bca779a88052eb240ac816562f0aa8fb55ca28e0d48a1e45b1745f0aa8581e24a6e261cdf71570dd771570b1fc53c04b23770aa8f11cbf1450157bfd28a05163afa580322ad92ae03343bf145015ab040aa88abd782ca667c95f4205641dce590554815e13057c33cb87026a81be3c05e4daebb51590f93cbf7fc24752891e32e4a9b514908427c917f105177d057cecd99702ae510505dc858b15f0ed615305d47aa8619321cff543012ff1fe55c05d85aa021af2e4e70af8f0acac02cab9dc1b50a1ab49190b38b57f522c759f675b01cd368d4b0a2871e78502eaf3fb7d05bca966a0804627c787023e9468a8808fa15d2ba0227591aaced788fa9f52b443ba0ed997192bbdf60e50c08bd1f70aa8dbe3f714d0d8747457c0f9925740968eaf48b180f2e5f854406939de14f0454e92fbb25463f4544051cf7c2b2007c0e8a1800abf767a6311b9ab80443e2f155009425e01c7f4ae80ea4b7fa080acd4f1aa804b9002b6a711b762729ea3e72f15506de043222da0b44c3a0ab8c0840aa8228fdf0fe5b4bc9f4133aba39b024acb69a380557f2920e3788914d0b68ae753019531df15c0ab4bfd6f05bcf3f1474086dde96c0ce438079f2f4089f53887db4e0159dc625101bba01d059495ce4d0127ff530125dff51550f2bd8a023e8f7ea580b2f2b455c04b57160aa8eeffcd15902333947cf9648f40288ac9e2fc6b43019f80e92ba0bcf5ca0aa869145b18c86c02de80da97a8a280d3b25640866d7455c06989155056f2adc3165077f4d75540ada9cc030519ceca804d9f9caae1f146470b38b323057c647ba080bc5f7c659d0564d7654d5e20ab074f4b059473c9fb1b945aafaa80529b797f83ef8dd4d7f21a78afa180af489929e043238602684f91174af590a35cce2b0594956ea480aabae72be0290a28e08b3543057c679ba380865eaf9c026ab4c282021af2f87f0a6864e1bf5f4b95709428a0bcfd1a08103d9a0ac8a0785f0a786e5e3495736ac4192a57b504282be0d35f760a48e4714501e9c13bfc2de0ae534d01e911bfbfc177c87c2b203d8277c4f852ee4f0594fc68a980fa5259c9ec1c25dfff1809c8534c3f5c05f49648725f969b5e3a0ad81d765240657d5c55c04de3fb1924722eaf80af6aa92be0b55f3905bce93ba3805a20375440c95f5c14907ffd5554407a2cc528e5b9cfef94145036ac5c05d4c9bb4bf9d03b638b0a7807e6540115fef0a180ab7a560157f585023eadc0534083d5e7b702ae0d8e024e7ea080ba0ae3ba0272edbdf20aa8666fa51216f8bef9f5a7022e74a2a91ca073cc28a0c4c98cb7ee6c3bee15f029bc15053c79d050c0eef4a902ea5b56de806c32decfa03eff5c34fd96823b16402773782b314ab2184c260e65871d9e4b05940de7b3028afaa6a9809d190d059416add93cf4f26b50402297eb0aa8f588af0a783daee49c0cce7e1c0554812e7b055409d7f20c5d5036534036e891554075aedf5540654cd6c2c9d1cf786e1550e2ae0705e43dbf2e14708dfa5640aa272d05d4e08c020594fc9db4b77c56b8c707c4c6b26b31787c29a0faf25c28a08c5a5f14b0bba3a980cf4f5e2be005103b05d458bc3e145063512a28e08e404b0165e50b0ac8189434ea5c0acf7b0594511bc97dbdc5ec57011f6cf4544035ea5e50c083d53f05ec3d6f2920eb204b0183407cc17905947c591d6600ef0495a6514fe0ce2ae0ea112b205b2853f1b213d41b9c145045de1f14d0e4d24bd22223adc55501bd856f758bf50aaedb520169da7d28a021f1e30d7846b3a3801ccccf9502be0cbba2808bc356011587cafbb5d4c5474d019f8722a530caf0165531d23231741b2be04a98574015f970544051df4f145007fef1a9808ae586e3a1d776f3ad7fb11c8d15c8c69c502664f8c04b0bc8aee77f155009921170f821edcb9702cadbea5d012d5e78e61590bff0d75740563b7eff841c8873fd094fa525f25ad98654ca29a0c673fe54405d2799490ce5b482c7b7023206d2710e7940e395a180f296af9db180ca69b4574051972d11a18c5f9655053457e09405f07a982bb784b2dbd8e1ebe5633907defff9564026385c2aa0cc7e9d1450bef0defb58ce30737e0305642d2befb790814d3a0a28eacdf75b680dda78a1808f2c7b09e05ad95829a03a576c2860d53562d42d76c66c4f656f75f0cc28e0fd625040c5f2c753c02ef9a2027ae8afa3800a0c6ff9b7806701df6fa15238cc2ba059c0794101255f5aa090a77d9ca9be851d55f3b502b274e58602b21fb26820ccb283e877a9801cdd132952323124e633e44191377d03d243a6e2656bb9332f2a208fd1fca8808b031490177f7e5240ae8adf5001d9b16b4b01d5ca4146012936d578c8c27aee7ec96173c1130a782be44801a565e628a0b48c970a286f272b0524f2e5a080327bf2504015f92750c0a93d2ba0d4f6ff14906bef267ae47889f76ca6802ae1afc683b70e8fb929d0ddf9a33f05543e263b05bccff3ae80736eaf802cee36504059f9d353407e98754e01e56d6fa6808cd24923c6074c777c0514753e0fc5803ca57624b92fa393e15d01a545334a2697e63b059496d987023e27efa0808fd584027264fef4155046fd7a0aa82f25bb28c28264d4a702ee4b49ce15f8f2f84ffd49961227b31a61214f057728555def9e3c2ba0d48e22056493fb43059c5a4f01a576f6a980dd2e4705640c649f56c8e31767fead800601dda702eaf456246f79eac8798885f9a6031e9dbea4454e5c1ae414f024c61b504c874505bc0d69a380aa47b7af80da86715300b7621ad362865edb97222507c53dca0ae8b583bc02d2a323aaf3c27a7c740564d9384ac4a48b7f3a29e03ecc5301b7fb2505d4566a63c18bd282db590155a0f9560135f3f796023e69515f2ba7ef671450db20db7f429ff3652ce642368f8e4a0ad83aac15705bf952408af5bf1450d42f63057cf2e44801b95c2f5040339a1de99004b25e7baf80a33e109021432f9bd0f49ccdf345011fc0e52ba08c1a2d1550d4a7050564c746b102760e1f14d0bcd8b1ac806af6442216f259d03d7d2d9fa1ea495a423e6773208ac9bed7db1b706dd82a20d5658b99dcff125cdb0ac84acde60a48f57351015ff1280245dccc8b97c5003ebb94bdf87a67ac6cd7973b6383f3b702eed14301e7fe4401af0c3d2ba078341590624e59ac549ce7b7b0d5d6ab6bae7d053c799051c03f392be072ea28a0981e2b0af8be938700ee061e4b0a68dc50bf08e07e90ece333806c906c753380e74d39b3dfc7c19c14504c65db9edea17b180ae0de67a52120cb77e99d15f042f2ae02ce6c2ea7ef43675c05acd85d014f2e250ab8568a62dc717664f76494c9f031b4810272bac966273368e405cb45051c316e5fe4f61fb425a6d90c59a96c2820cb7babd918c8fd404ea7a680c6c87cd88b01398ac7f14b01b540655f002ff5eaf04022925edf2ba3800c6c4d7e92a3dc772a4d01b45eca91bd91512e4bf190ade50650d4a3a202f2291df52d7c0b51f647009dc31abca448c9268168a480dc0c614901ef6e1109f31cd3c65901a5a5d55040f128e405f0f1382f29dadced713a0d05e933dc64ac805e1b9615c4f40d8969810baeecd08d0a7cf8cd97a4968f7f753aec31d2838d649810c97afee0a980cf1cde2b60815c057c8070a080caa94cc844b262a6d212c07dcb8a64e537d9c260a13fa1a2ed0f34a6945190a32922590f23cbd62271b9fa370554d59f550594386fa18013775090234d7f14903d7d0d15f039dfefb750f988c60a38a32a0ab8f194925ca42e4b104c05e4f930f5b9003e50c86757965e7dc587aa5a40df9015aa7a17967f57408993a9b488b7fdbac95c01f5e95eefb750e264262062972b924800776a9258017de35b4a909725131c8a75f07254c6b01410f269f3bf0a28b37303017cd291276fe13e9d9bcc145049ae050ab2f48d8902aa0d9db602befde7a580ca6922a68f1daa683415506aabfa134a6da0f9e2d391ba6e225929fb0a64ae51ef1793c96939d5cba92f1550b194ed5072cc97d31c28e0d3b3dfdfa0ae42fba5806a54a7ab80f245f64745bc6b00723e4c1448b11481820c5f92b1164059e9c8c21403e827b2ca350abef89433318e019d040e4f0a8c6c2f6d0e15f059594d0594fcf24101ef7e6a282093238eee48b622ec1d056c71df0fa5acdcbc01ef7f91bacf1b0d9c4a5b01d9e4fd5c018d2bc53b2a67a9a15555407d87e54a01e5cba3a58014db88a661963acedb93021259167318403fd94b590f496467a731fd2237435e8a54c8e7b12d34a65c81645a50ce74735a6d05f4d0464e0125aeb453c0bb8e1a0a281b1a6f400d5fbbaa80725f15933546bb4f015ca33e34622cf2f6ac8006ef2ba940114f1c36f41901d9e450631af0996e6271233e3a4df6add923ecd2d7cad1367a407df9a880f5b828203db436c8b68ad7fb27a4474dac54cc2568e729a08e515baa474c97753807e908f039797e712b20e4435602057c5498148738e28932565d6ffd2b1d14f0ec4a4901df7b7f554015a8bc57c0471ed61490b99033aa623e02019dad004ecb292fe08becfaac2f802fc6fb881450b1bc71c195f3f9835d460125ffe00ae0e9c9c24d0037166e41809cf927af95ce77fba980f4781d145035edb404f080b7ea2820ffd8b7fe843b8ad14501153abe92cc003e189eaf0f8f63bd69b3aa80f7020602f8b58da502fa46a32e80bb70835000df0b98d187f201f58d8c029e8e7b036a0a1a1231d98fbc1d2be07ed04a01b72f650564943edb02d87c164a0af876caa2002ab8019f066c017d63a8afe5d3f86a123119151c460a487569a362f6c13a1fa27a8efbdad982023ebef15b01358df9a102cab9a27e833b2463470189cc57d45b4046495a4203f8d4c8ae00ae9535798bec58aef714505a2e33013c3d5992d7e639b3eb7f02429e2a8915f0013a22729ecf732cef14b0a6f20ddd6ddc57c0eeb08e029ef7f015502fe722e5b420d75788752870cdee1d14f0b1cd8e02b2da95b202b263b937e043674a0ab8b725f922a393c358010fdeeb0aa868d7bb0af8b2d29e02b2635dd1f49bdd0c2b314adfd41bf78b0b015cb32762e9bef9d68c6c4b0139991a6ce8f562cd5a5f01e5ed76a480d718bd147077e357c0273b227e04b083a83615c0178ff4970a78190e14b00fd65740e534233957e4cb28b34d017cf346430a8c0c35ba5305f48d76560175370eef6f7035ad296027f55c00474c76d9d8bd9029c8bf0165437bac801e7ae01ebd1e44daea2920cb2f3bcaf41ad1a6ab80afc0380a90729a5740439e489a463fa667c82ad7587bf40d053c38fb53c01da3ae02f65c7514901f662bad075fd0e7bb92fb01df3b9b2f29a09c7b2402b802b5470ae8275f621cf9c8d460cf83c4f765a54d051cf5f737a8d049d73a0ec9cbe27725b343be5565f650409d2b575e1bc6bcb6f8ac80dec2e79ec7ef83592b0ad8cd3054c08ecc4001595c595e694f94a616f9a480041a88e98bd816e6f5b56c61a66705548164b5ad3db89952fba980176248ce4594167f5e524085ce113da42bb93c2ba0e4cbda1eb99a1572b48d9c181becdf802cee2eab807b8ebe027263efbe0450c3073909cb002ac989b4a6314db7042b6980e32f3eb6599a9338c75929c521664dab62c762367da3a2025e031f28e0c3f6f5a1ac7ab7a080547f7614f09ef78d023ea6f8aa808af61d0af87aa4f737c8a0cca4931753bef8f397029e8ced2aa0a8d72e0ad821023771dcc47313df4d023709dd247293d84d166eb27493959bacdd6493c2ad9becdc64ef26073739bac9c94dce6e727193c44dae6e727393bb9b3cdce4e9262f3729b949d94d2a6e5275939a9bd4dda4e1264d3769b949db4d3a6ed275939e9bf4dd64e026433771dd64e426633799b8c9340d3337f97193b99bfcbac99f9b7cb8c9a79b64dc24eb265f6e927393bc9b14dce4db4d8a30c3741b9c347869f0d310a4214c439486380d8bf47f97705670d6703670b669d8a46197863d9c039c239c139c339c0b9c04ced518c734dc4d2d80f384f3825382538653815385538353a74055a561fec3e89bbeac09a705a79dea6b5edc117da3146ed3605edf85d383d38733803384e3c219c131d298184ce04ce1cce0fcc099c3f985f307e703ce279c0c9c2c9c2f38393879380538df708af000cf81e7c1f3e105f04278262fa7f06278268f7fe02de1ade0ade1996ccec0dbc233d99c83b7877780776459bd13bcf33b90b2dec50656368297c0bb5a7dbd9bd5d7bba7faeee03de03dd3f0b0c142f3c697d5d72bc12bc3abc0abc2abc1ab9bb6c6eaeb358d0d81d786d781d785d783d78737803784e7c21b994f32346378137853fb326f06cfa4670eef17de1fbc8ff4f333252661591b1cf3c42f78267979780578dff08af06185f61df81e7c1f7e003f841fc18fe12fe02fe1afe0afe16fe06fe1efe0efe11fe01fe19fe09fe15fe027546c8db8acaf7f857f83a9c5fe03fe13fe0b7e097e197e057e157e0d7e1d7e037ed34accc13ca7f55f8295350d7e1b7e270ddd547713cf1efc3efc01fc611acc1f6e0a4dddfa863f82e91ff913f8263e33f83ff0e7f07f4deb6d5a416392e167acf47e16fe17fc1cfc3cfc027cf343a3c9f7ff5a7e1140caef5acb2f02272dbf1102cfea1bf856df20b0fa062102c363040b044bd63758215823d820d822d821d8233820382238213823b82048105c11dc10dc113ca4d8466988adbec1d396dfe085a084a08ca082a08ac0589b2f04c6e0e4113452e12eb6fa5339d5cf7f062dbf6a1ffe9fe5d7886eca6fd044d04260d2deb11620e822e821e8231898d61d818b6084606c0b6f304130b5fa0633043f14a8173047f08be00fc107824f04c6c01921b2084c1a72e9a7f94d2185dfe96711a151ff88d041e821f41106084384469d07c218e102a131dc25842b846b841b845b843b847b840784e68727846784178409c22bc21bc254dfd04a8cf089f0959a05f358f39032c20ac22ac21ac23ac206c226c2561ada083b08bb087b08fbe9e740fe1e4a704d489b161b52324ac318e104e114e10ce10fc239c2df34983ffe5268c287b542e127c20cc22cc22f84393611611e6101e137c2222220721079887c4401a210514421d5378a112d102d11ad10ad116d106d11ed10ed111dacb8d1deca6ae131fd347f9f109d115d10994a6dfeb822ba21baa77f3cacbed113d10b5109511951055115510d511d51035113510b511b51075117510f511fd100d1d05adef099b66fc65e9987b8886c8b87c88409a229a219a21fab6f347feb1bfda6e12f159ac24084eeb1cab66a4ab0bf326fff48e5368ffd4ca5fc4394b1c1fe91b5d0862f6b858cfd8d72888c0e0544df888a8881d8b12d5becd9c62df61107884dbfc0411c218eadb8f142f48d97885788d7d618c51bc45bc43bc47bc407c4c7f4f3608d6f7c427c467c419c20be22be21be237e2036af31ef28212e23ae20ae22ae21ae236e206e226e216e23ee20ee22ee21ee231e201e2276118f108f114f104f11cf10ff209e2336763fe4c6cdd887f80fb111c2fcef276213872cdbdfd834003b6b46e39c4d7f9c475c481ba234c4dfff08451b8c8dd6b0401a9cd42e5fb0f0acb55df8580469f0d3e0a521c422c222c66281c5128b15166b2c366f7d4d586cb1d861b1b7067a71c0e288c5098b3316e6c9e754df458285b17435fbbec50d8b3b160f2ccc2f5f5894b028db3f8ce21656b0a86251c3a28e45038ba6e86bb8f96d3bfda363f55d74b13091ee6331c06288858bc5088b3116132c4c3c6658fc6031c7e2178b3f2c3eb0f8c4228345168baf77ffc1b66f36d8bf17392cf25814b0f8c6a268db37d5d788bb84ed45994f2b740e4be71fc13321edc615b0f4d3cfc0046bbb97be957b196219611963b9b0c9b77f2c5362f80acb35961b2cb758eeb0dc6379b0c66169de75322312abeff2826582e5154bf3db3b960f2c0d7c6159329f3472296359b1fd876515cb1a96e6f70d2c9bb6db608aea3ffb0fcb962dd7cb36961d2cbbb6abb0ec61d9c77280e530fd74b11c6139c672627b6f4bf3cc19963f58ceb1fcc5f20fcb0fdbac2d3fb1344fcbdafec3f20b4ba38849ad49f9379645acf02ebfa6ffb072b0f2b0f2b10ab00ab18ab08ab15a60b5c46a85d51aab8d0da695a73ff89f6ddb43f88fb0da62b54b7fbec7ea60fb06ab235627acce585db8e7bb4aa4379df6a3ed97af589968dcb17a60f5c4ea855509abb219ceb20936466355c5aa86551dab06564dac5a58b5cd270d7b3b58599b656df9aa87551fab81957535c4ca4d3f4d1859b81adb9ed96a82d514ab19563f58cdb1fac5ea2f0d1f587d6295c12a6b4df0ca7cd33c308f55012b138322d6b0eddbdac1dac3dac73ac03ac43ac23ac67a81f512eb15d66bac37581b1bf581f50eeb3dd6e62747ac4f589fb1be609d607dc5fa86f51deb07d64ffb4f1e3efc3bac5f124a1c8ca0f68f32d615acab58d7b0ae63ddc0ba89750bebb60da607653aa9eb0ed65dac7bf6cba4efbacf12af07580f6d295ebb588facfd5d8fb19e603dc5dafcf007eb39d6bf14527dd77f589bc47c629dc13a8bf517d639acf35817b0fe4e3fcddf456c808d838d878d8f4d60e5db84d844d8c46958a46189cd2a0d6b6c36d86cb1d961b3c7e680cd119b1336676c2ed824d85cb1b96173c7e681cd139b1736256ccad854b0a96253c3a69e8606364d6c5ad8b4b1e960d3c5a6874d1f9b0136436c5c6c46d88cb1994898a66196867e1a7eb099ff2bd8ee47db96fdcdd43671a607b9f9b56ddae62f0d1fd87c5a62b8e9bc9b7cda64b031fffb658331119b1c36796c0a69f8c6a6882d6c1778eb60eb59fbbbf5b10d28901333c436c236c67681ed12db15b66b5b66b71bdbc9359fdbad25db1db67bfb8719986d0fd89a079db03d637bc136c1f68aed0ddb3bb60f6c9fd8beb02d615bc6d6bcb88a6d0ddb3ab60d6c9bd8b6b06d63dbc1b68b6d0fdb3eb6036ccdeb5c6c47d88eb19d603bc5769606f3ae39b6bfd8fe61fb81ed27b6196cb3d87e616be296c7b690f6d9d342f72e77e6c96664b8b735d258ea774136b12aa621c60ed83936c93b0f3b1fbb00bb300de68f2825869baf992f2cb15bd92eda6e8ddd06bb2d763becf669386077c4ee84dd19bb8bedb498f1db2ec1ee8addcd7c52fb76e0f26b72de18a0dd1dbb0776a69f649efe4a07cab12dd11696b02b6357c1ae8a5d0dbb3a760dec9ad8b5b06b63d7c1ae8b5d2ffd671f3bf3a621762e7623ecc6d84db09b6237c3ee07bb3976bfd8fd61f781dd277626ea59ecbeb0336fc96357c0ee1bbb22f6c0dec1deb3ffdcfbd807d887d847d8c7d82fb05f62bfc27e8dfd06fb6dfab9c37e9f8603f6c7341bb269114e8bad1da0a6c196dfa62dd7fb93adb2fbb3fdbe29b3f651ebb4f0fea3fcee2fd827d85fb1bfd9bab2bf63ffc0fe89fd0bfb52fa59c6be827d15fb1af675ec1bd837b16f61df369fa9be4697bd095dec7bd8f7b11f603fc4dec5de3c6e9c7e4eb09f623fc3dec4698efd2ff67fd87f606fe264e297c5fe0bfb1cf679ec0b6930721471000e0e0e1e0e3e0e010e210e110e310e0b1c9638ac7058e3b0c1618bc30e873d0e071c8e389c7038e370c121c1e18ac30d877bfacf070e4f1c5e38946ce5389471a8e050c5a186431d87060e4d1bed43cbc6ffd0c6a1834317871e0e7d1c0c19a6c1c56184c3380d131ca638cc70f8c1618ec32f0e7f69f84dc33ce51fe9e7270e191cb2387ce1904b431e87020edf381471048e0e8e1e8e3e8e018e218e118e318e0bf399ea7b5ce2b8c2718de306c72d8e3b1cf7381e703ce2784a3fcf385e5298e078c5f186e31dc7078e4f1c5f3896702ce358c1b18a632d0d751c1b3836716ce1d8c6b1836317c71e8e7d1c07380e7174711ce138c67182e314c7198e3f38ce71fcc5f10fc70f1c3f71cca4218be357facf1c8e791c0b387ee358c4093839387938f9380538853845e91f314e0b9c9638ad705ae3b4c1698bd30ea77d1a0e381d713ae174c6e9825382d335fdda0da73b4e8f343c717ae154c2a98c5305a72a4e359cea3835706ae2d44a3fdb387570eae2d44bffab8fd300a7214e2e4e239cc6384d709a9acf54dfd30ca71f9ce638fde2f487d3074e9f386570ca4a307f7fe194c3298f5301a76f9c8a38036707670f671fe700e710e708e718e705ce4b9c5738af71dee0bcc57987f31ee703ce479c4f389f71bee09ce07cc5f966edeff98ef303e727ce2f9c4b389771aee05cc5b986731de706ce4d9c5b38b771eee0dcc5b987b3f9d500e721ce2ece239cc7e9e704e729ce339c7f709edbb49c7f71369f1f387fe29cc1399b862f9c7369c8e35cc0f91be7222ec0c5b1bf329f367869f071097009718970897159e0b24cc30a97352e1b5cb6b8ec70d9e372c0e588cb0997b3848bf94cf5bd24b85c71b9e172c7e581cb1397172e255ccab854d260fea8e252c3a58e4b0397262e2d5cdab87470e9e2d2c3a58fcb0097212e2e2e235cc6b84c7099e232c3e5071713e95f5cfe70f9c0e513970c2e595cbe70c9e192c7a580cb372e452480195ffa4f241e4cb39e04484224118cf54f164896485648d6483648b648763043f6e480e488e40433464f2e4812245724371bcfe48ee481c43ced65d395949094255438585e45524362bedf40d2fc4768a4c1f0169236920e922e921e923e92411a86485c242398e1bb19cd9b0ebb1964263f48e6487ed3f0673ec93fb9b78319eb7f3adb9637f940f2892483248be42b0dd934e45217bb49581e6614947cc3f4c3afc0d5c1d5c3d5c735c035c435c235c67581eb12d715ae6b5c37b86e71dde1bac7f580eb11d713ae675c2fb826b85e71bde17ac7f581eb13d717ae255ccbb85670ade25a4b431dd706ae4d5c5bd6145edbb87670ed5a8fddb5876bdf7a97ae035c87d62b7275ad87ef3ab28dd5758ceb44dcede274bf4ed3303323083b94f0cc4b7f709de3fafb8ff09706034d0b6ca2f489ab796fd635f977fdc235876b1ed782f57747867ce35ab44eae1b707370f370f329d0bc52db0ec66f41eaa2b6fe5fd71610d6379dc55891971d373bb5611d40b708b718b705eb7b5bfe4bdfdb0ab7f55bdf9bf9fe16b71d6e7bdc0eb81d713be176c6ed825b82db15b71b6effd6f7f6c0edf92f7d6f2fdc4aff5ddf5b19b78af52e99c164b0c4ad6ae269bbeaaaaff56bdf653a23b49ec9ffb7bef334fcd8bfff43df5b0d37139f066e4ddc5a763ee1ad6f1bb70e6e5ddc7a14a8fc2676d46806c7ff43df54dc854c6188beb73e6e03dc8656df9b8bdb08b7316e13dca6b8cd70fb617d6f73dc7e71fbc3ed23d5f713b74caa6f36d5f70bb71c6e79dc0ab87de356c41d56dfbb83bb87bbff0f7dab76c441fade03dc43d6f71ee11ebff5bd2fec489df435ddde7feaabcad214d17d698391d8ce7138a9b7778bfb0af7f5ffaaefb26d9d01ce10f74daa6fedbfeb7b37cfd9e1bec7fd4081f4bdd881f9fd6807ddffa9efea9f5e763b68be9fec28f97ec6fd827b82fbf5adeffdf6d6f77eb7fade1facefdd08f7c2dd0854c6dd6851c5bd66f5bdd7716fe0dec4bd65f5bdb771efa4fa76ff6ffa4626ea3ddcfbd69d7f1ffc4bdffbf03ff5e589b830f514a7c189ff8bbe5c842558b957ff55df74a6f18abb8bfbe85ffa1ae37037ca4cece4c57d4a81e62f22fbb2fb4cf545e0d8018535b86b0da9a3e7cffa77ee3fb89b18fce2fef7d6d7d807a3efdd48f9c9fade33b86771ffc2dde898c7bd80bb7971110fe0e1e0e1e1e1e311e011e211e111e3b1c06369f5f593ff9bbea6031eedf158e1b1c66363bd778fad1597ecefffb40fd632a4e2da69883490bec64a187dadf5f8ffd6f7b1537d5dd396a6fa5af7f7636f1b0053781f07abefe388c78942aaaf79b77999d5d7b3eddbe36c5d108f8b2daa26a21acc3f4df0327824785cf1b8e171677d1f0f3c9e56dfc70b8f121e656b1f1e15abefa38a470d8f3a1e0d3c9a78b4f068e3d149f535efeae1d1c763f0d6776d7e38b4731956dc7febfb70f130ef1adb86e1619231c563667dd08f1f5b728db88f391ebf664ccfed9b1986fd87be8f3f1bbcc97fd197ecc33bac44e28fffa92f1e1faee99fa8bea6f03e3e6de17d18714cdc8c7a390aa9be8fbccdd247c1d623336c7f9850c413e96ce6fcdf2175513e1d3c3d3c7d3c033c433c233c633c17782ef15ce1b9c67383e716cf1d9e7b3c0f781ef13ce179c6f3826762f57d5ef1bc597d9f773c1f783ef17c599bfb2cfd377da5fff02ce359c1b36afb30cf1a9e753c0d6ce269a2649ed9c1b36b1d26cf9ead7fcf7e3ae4bdfc177d69f2cdb6375e6a4036ff12f739483f87169acfab9172c9ed9bd887545f2ebfb6ff600aefd3c57384e718cf099e533c6714527d9f3fd6056c72f539b75ebbe72f9e7f564453904d517d7ed860cb6c1aacb89f7866f0cce2f985a7494f1ecf422ae8379e45bc60ff7e39787978f978057885784578c5782df05ae2b5c26b8dd7c6367146df97f9f2ceba175e7bbc0e781dffbbbe9b365e27bcce785df04af0bae275c3cbfcfc81d713af571a4ad609659a07d3c55cb7d2550d7b3bc1b32ee155c6ab8257d57e9a92742707db04abc416de9d794ecd2a6b4aebab6e3f59e5015e0dbc9a78b5acad7f993874f0eafed33ee0d5c3ab8f97f9e6102f17af115e63bc2614527d5f53bc6678fdd8bc7dcd6d6c5647bc7ed339d4c1bf024dacae8c40e69b262a9f7865f0cae2f585570eaf7cfa59c0eb1bafa295bb04941c943c947c9402944294225b7e4b314a0bab6f6989d20aa5354a1b94b656dfd20ea5fd7fea5b32fc88d209a5334a17941294ae28dd50baa3f4b0dedbd2d306727d39cdd48bd6e1052256df174bbcdadb4f53724b2f2bae2dbc5b944a565c533b770f94ca69a858f34821304930df3771a8a3d4b085f7d5b576b6645edab2fd5fa372c9a4a88352d7fa7c4b3d94fa280d501a9acf54df928b92f9d218a5094a53eb6a8b57d6db5f9ad99a65fac51a6cb6cf51fa41c97c9a67fda1f481d2274a1994b22819bd7228e5512aa064c42da20c941d943d947d94039443942394639417282fad092eaf505ea3bc41798bf20ee53dca075b5affd9be850f948f289f503ea37c413941f98af20de5bb8d67d9fcef13e517ca25eb78a469cd741e335d80f2b2fada39f626bbd8cd1f6a16ca655b728d195c0d50ae70034e41db9b7215e51aca75bbc0a3dc40b9998e2cf256e55bd35ae1720be536ca1d94bb28f750eea36c9e3644d9359fa9bee511ca639427284f519e59ff66f907e539cabf28ffd9a9fff207ca9f1232286751fe423987721ee502cadf281751012a0e2a1e2a3e2a012a212a112a312a0b5496a8ac5059a3b241658bca0e953d2a07548ea89c5039a3724125b1fa56aeff455f0a951b2a77541ea83c5179a15242a58c4a05952a2ae67feba8345069a2d2b2ee56c7f036af413112ff33d8254f3b2beeba8d4ac78a5be95a93bddddac99a4a0f957e3a6b63fe1ea4c190a11d221a712b068eecf8ad92f6c3ae05db4b3303b6ca0495292a33547e5099a3f28bca1f8554dfca072a9fa86450c9daa9a48af97d0e953c2a051b421303038b1cfc29aa40d541d543d54735403544354235467581ea12d515aa6bab6f7583ea16d51daa7b540fa81e513d597dab67542fa826a85e51bda17a47f581eaf3dffafaffa96ff5856a09d532aa1554aba81a5247b5816a13d516aa6deb9eaf7650eda2dab32a3b0d5b9c8dbe56d095ac777aa4ca6651eda33ab0cda029b6d5a19de7ae9a9f8f501da79f6930429b509da03ab55decea0cd51f54e7a8fea2fa67a72fadc479543f50fd443583aa79ec17aa39540d2c50e005e5a8166da80135c7ceef7b1dd43c3b235df353ad73e9eaab0a6a016a216a116a316a0bd4cc1756a8ad51dba0b6456d87da1eb5036a47d44ea89d51bba096a07645ed86da1db587d5b7f644ed855a09b5326ae69955d46aa8d5adbea671ab35fe535f631fcca7e972d59aa8b5506ba366a2d745ad875a1fb58184a115bae6a236426d8cdac44eca90be242b2ddfb3bd82beedbded4ae942af3f5b548db8b5296a33db0f33fd10f38709a4b2e939d47e509bdb5ead1938d47e51fb43ed03b54f2bb129c8b50c6a595b786b5fa8e550cba35640ed9b02ad7a2fa612a72ad781ba83ba87ba6f67ee9609ea411a421b4cd1ae47a8c7a82f505fa2be427d8dfac6aa59dfa2be437d8ffa01f523eaa7f47fcfa85f50370fb9a27e43fd6ef5ad3f507fa2fe42bd847a19f50aea55d46ba8d7516fb0beb7c7dbbfc3fa9a0834516fa1de46bd837a17f59ed5b4de477d6003a96c24ae1be8a23e4adbea175b03636ab94b6b223c4e27124d4a2776dc640be9c80a5a9fa26e3e7fd23f4c98a7e117f53fd43fec947bfd3395726a3feb19d4cde797b5bcf51cea79d40ba87fa35e4403683814445f92b8e1a1e1a311a011a211d9c9bb469c2ecabca44b2b5676766f75476381c6128d151a6b3436686cd1d8d9f2dbd8a37140e3680b72e3640b75e38cc6058d048d2b1a3734cc6f1f683cd178a15142a38c46058d2a1a3534ea56df4683ed03e96b8b708d87188d261a2d34da6874d0e8a2d1b3fa36fa56dfc6c006a3b52dc2267943345c34527dadfd7d58716d7f567ab88d311a13ab6f638ac60c8d1f2b6e639e8a4b41c46dfc5ab91b7f687c58e360f5fde560fe6e9890b1b6c274c81a5934bed0c8a19147a380c63705d27728fa16d1845d9cd274d0f4d0f4edca143b759a4533b0c114e46668ad44334233467381e612cd159a6b3437686ed1dca1b947f390c2239a2734cf685ed04cd0bca27943f38ee603cd279a2f344b6896d1aca05945b386661dcd069a4d345b68b6d3d049ffeea2d943b38fe600cda16d5a9b2e9a235b849b631bed9ae86bfe6e4ed09ca239b38b426de15da536811c371f69f845f3c74223f13a87e61ccd5febd5342314a36cf30fcd0f348d703f76586106e2cd8c1d1c36b356e2a679754e421ecd029ae68d456b2b5a40cb41cbb3f6b7e5a31550f867f92da2155a7d9dc4ea6b4aae5df6b34b1757f9acaf09adc82e0668c5682dd05aa2b5426b6ddb37d3216b6dd0daa2b5b3b6a2b547eb80d611ad135a67b42e6825685dd132bfbda3f540eb89d60bad125a65b42a6855d1aaa155b74361d3ffb5c6a162071ad110ad86f558b69a68b5d06aa3d5412b35be46e2560fadfe3fea9f49d8002df313d70e976c576cf56fdfd887f52db446d627d91a5b7d5b13b4a668cdacbec6d49a0177eb07adb9351acdb99b9824fca2f5876b16ad0fdb7f6819293356d396215f68e56cb9f6cd3ff36815d0322214adbe6d50f8b7bedabeb51d6b134cb135cab63d1bec124158714d07a36d608076682d6c3b423bb69d87f602ed25da86acade2ed0dda5bb47768efd13ea07d44fb84f619ed0bda09da57b46f68dfd17ea0fd44fb857609ed32da15eb42537d4d2fcdfa7a3c1bda55b46ba26f8876dd06fb47232dc245366e46df7613ed16da6d3b94f05ed26d481b376328cc67bbf35ff46d77d1eea19d7618dae62143d6b7eda23db2fd5cd3e13526f83e457b6c3f8dc46df3cda92dc86df3f31fb4e768ffa2fd87f607da9f14fed17fb00541f5cdd8a24acaaab8a4af57433b6b17e4b6bf527d73689b1714d0fe167d8b56f40ed071d0f1d0f1d109d009d13130b6339b9d053a4bd6b7b342678dce069d2d3a3b74f6e81cc43274d23fc838f4d039a27342e78cce059d049d2b3a371be1ce3ded9f7ddb3f3a0f749ee8bcac7db063d1b23511243187749dafd1b75362fb60f48dcc4fcad637649bb2193a156b228c51ee54eddadc4e0d9d3abb174c6b667b0ebfe834ac89303db34ed3c24e0b9db6ed3f74cc93bbe8f4fe435f310e46dc4e1f9d81b5b3b6a8a69a7686e8b81246acefa681ce189d89b5b39da9ed42744ccc7e6c77ad3347c7c4e00f1df3fa4f7432e864d131efcea19347a7808ed1a268d79f7581ae83ae87ae8f6e806e886e846e8cee02dd651a56e9dfeb346cd0dda2bb43776f9727750fe81eed6abbee09dd33ba175b72bb09ba573b1035c37d2abf76cc960ee174a0e1f7d1bdb1bedd3bba0f749f7643c3d53cf3658bb0b112dd12ba65742be856d1ada15b47b7816e13dd16ba6d743bb60bd1edda9e59b767ffe89a679ab79b27b8e88ed01da33ba1c03bf952714d6a6756dfee8f5d50d59ddb3597dddf7730fa1a62ba68c63e74ffd0fd40d744c5bc238bee17ba3974f3e816d0fd46b7881ed073d0f3d0f3d10bd00bd18bd08bd15ba0b7446f65dbb7de1abd0d7a5bf476e8edd13ba07744ef84de19bd8b84731a12f4aee8ddd0bba3f740ef899ef97909bd327a15f4aae8d5d0aba3d740af69079ccb8a5d6efb4f71495ffa34fa5e7fdefaf65ae8b56d23d6eba0d745af875edf76217a035b787b43f45cf446e88dadaca62bd69bbc25ee99afcdd0fb416f8ede2f7a7fe87dfc0f7d8db83674adb8bd4fdb7cf5327639f1ce243bfb8ff095ae0b32d0bc238f5e01bd6ff48ae8037d077d0f7d1ffd00fd10fd08fd18fd05fa4bf457e8afd1dfa0bf453f1d19f74d38a07f44ff84fe19fd0bfa09fa57f46fe8dfd17fa0ff44ff25a124a18c7e05fd2afa35f4ebd601dd6fa0df443f75993ff2bcca7a7db5fe07eb93f4d291db3fc38a3f8d7de8b7d1efd8ce59bf6b57e1f77be8f7d11fa03f44df457f643df7a650f7c7e84fd0377f986ffea03f47ff17fd3ff43fecf620a36cff13fd8c9d0aea67d1ff423f877e1efd02fadf14445f2abc667cdc2fa6c5a18c0164b9d526fd43c2c0c1c0c3c0c720c020c420c220c66081c112831506e60b1b0cb618ec30d86370c0e088c109833306170c120cae18dc30b863f0c0e089c10b831206e675150caa18d430a8a7a1918626062d0cdae96707832e063d0cfad6b130186030b44b1f072e06a3d495fa3f8269cd28d8458b591e199bf66d30fe97be830906533b3d3a9861f063279c06730c7eed02d1c11f061f187c6290c1208bc11706390cf2181430f8b6120f8a56f121307430f430f4310c300cadb8c348f45d55ec568d616c6deb7061c51d2e6d136c7a39a5e93b0c5736f8750cd7186eec0e96e116c31d867bbb806a78c0f088e109c33386170c130caf18de30bc63f8c0f089e10bc31286e6e1150cab189a77994735306c62d8c2b08d6107c32ea245bab72d5d9e1e7f61d8c3b09f86018626922e8623ebde1d8e319c58ffd6706abd07c3591a7e309c5b7f82f765ff6bf7601fa35d36973a21cde7d368914ebf0fff6c0fd7f41c86e6699fd693eb9bffcad860841e6631346fcf6198b7f311c3028646b2225cc075e07a707d5b90dd006e0837821bc35dc05dc25dc15dc3ddc0dd9a4fd1d7ddc1dd8bbe35db441871dd83750a9b60fe302155d9ae94708f704f70cf7623877b81dd9f78b58b32cb2db837b8771b21f701f709f705b704b70cd7bca20ab706b70eb701b709d77cb90db703b70bb707b70f7700776897d4f16e88acec3c49836be233823b863bb16b3bdda99d1f32c3017766177b5f3376df928992fb63a733cc78d7314f9ef3e2c4fae41d8cdceebff575cd433eac27b76422f6698311dacdc0cdc23509c9c135492ec0fd865bb4528e8091839187918f51805188918131460b8c9618ad305aa7e2da90ea3bda60b4b5faaefb18ed6c43519a60b4c7e8902e6d2fdbb6d884dd19a3a3ddb9609ae0d1c99aad9121178c128cae361ea39b757998b1b93155a33b460f8c9e18bd302a6154c6a88251d5ea3baa61643e1b1835316a61d4c6a8835117a31e467dbb027734c068685d04a609b27fbbe9e708a3314613bbe4f069be3fb5f3f30f13c919ae7dab8e29808f9d15da984e3b189b6364a231372aa783e0196b5d32314967e0774f3bfc353d335378477f76f6b76ca2f4c1a16422667806234ace1746395b788db815f3cf3c4605d6d70c2b46df18153106c60ec61ec63ec601059a9f6f5b7dc7e15bdf7164c55da4611cdbb110a96c24f63bd6d1bebbdb6e8dd177bcc07889f1cac6c3f407eb198cd7d6e48f3756dfb179ec0ee33dc6e639478c4f189b9f5c304e30be627cc3f88eb1f9da13e317c6256b1f6db7b4683d031b5895c7651b8cc4e30ac6558c6b18d76d2f6adcc0b889710be3369cb4ffefb8769435eed8dd0946df7197f58d76a42f8700ffd2d7f41cc63dabef7d6b4768e33e07f3b7a98ee301c6260ee6ed238cc7d6329876cc3a797f309ed83ed9788af10ce39f54df39c6bf18ff61fcf1bfe86bfa5ee34fdbcb31857779b7ebdaed86da0a4b6cf718a5c1f47ed61d8c8d88263de62739d6f73ec1388f71c11a7e1bad6f8c8b98001307130f131f93009310930893189305264b4c5698ac31d960b2c56467bd302f63946de5b57f98226c4bee00933d26074c8e989c3039bff59d5c545f5b84a9fc4e1253c06ddd4fcb6cda09fb473026c2e83bb9bef5753f30b9594f79c93cf06e437566ffbe99683f30795a7d272f4c4ad62c4cca98546c30fa4eaa98d4acbea53e26f5b7be9306264d0aa2efa48549fbadefa463c44d377ddbf09f124fd2d5e1a67d9bf430318f36e91f5ae360868c1313951126633baa9998184c319961f283c91c13932af36e93984f4c8c0a594ccc777298e4312960f26d97cedbe9c5860d34c368e4d60d7f9322a6c0d4c1d4b3beaea98f6960cbef34c4adccf6c119601ad9297a33ba4d7276898c19a14de377a055e2aaafb121ad3fd1776c47c07686220de66f9322ab6fdfaec7f9a7bed385d577bac47465f59dae59dfe906d32da63b4cf7ffd6777a607d9ba19d71315df4b4f05a65bdbeddaa5069a773da572beef468adc4f484a9f9bcd8f1e234b15efde915d31ba6774c1f983eed08ddd8b5e90bd312a6264e2642554c6b56dfa9894ac3ea3b6d626a046a63dac1b48b69cf2aeba55e98fb2af5156c781f65641ed5c7d4c837c4d4b5f3f0d311a6634c27984e319da59bca5371a73fb8ba083cbb046967de6b22f69b863f1bece2fbb40b61f49d7e581b627abe53f3f08c5def343551fa92909abba9c99ebcd5d774126c8396677d6df887bed302a6dfa9be45d677060a527eadc4ff2ebfc6f296afffa5fc1a7d670e669ed577e663166016dac1f82cc22cc66c81d912b39575f5cfd6986d30db62b6c3ccbcf28099f9ed0933f3c38bb50fb304b32b6637ccee983d307b5a836bda1f63164cc9b51e99b5dd416942f881d90bb3126665bb9ede745a6715ccaa98d530ab63d6b06677d6b4fd07bb253ac7fa5a4d7f3954073618623e6dffe1d77ad68dbea6fc1ae36bf47d1cb8fcda89e12697dffbceae67207d672ddbb859fb909a88599bed03955fd6372dbfb3cebff50d0bb60b61fa0fd1f73fda37a3884946cf86e78fb509b33e6683f47388998bd908b3316613ccd2b556b3992dc2c650cc7e6c833b9b63f68bd91f66469a4fcc32986531fbc2cce4441eb3026626038af8017e1cfc78f8f1f113e027c44f849fd8b669b6fcaef17f787baf65d7719e6bf762c6394ad9f6a173ce41e1cc39e7ecabdf0392e79addfdf617fe9d56a1589a5a32453d86418004297f29fe4afcb5f83cde8abf137f2ffe41ed66be23fe5167cefd93a64831faa2e7e09f750e8dce19ed6ce2ff26ceef1fa1175c8953a1fc8bda87555bfdb0842fcb5ce236989abb774fa9092e5aba92cdbf8a7fd320d8bfabf040dd86994e18f380fd9bfff81b5fff99c87767942f5ffabf492c9ff0dd8dbf42be0cea2703f15f3a970cb2788bffd185f87e56fc9cf879e5eb17746ed5e70397c42f8b5f11bfaa4b367cb68fb76c88df14bf257e5b7ca2e98adf13bf2f3eab1d8a3f5217c2e7c57c86f0872f5146e21be29b315f4b7c5b7cdec25527a1d9d299f36643e7c7eead2f625df858d3d1affd274e5dc8fd46198990afefa9fd215f3fa5564569e2cb978698ea4ce29a3b122b323b9206db9c163f2381488058444723e95104630926124c956f3093602ec1e26b1f687fbffa4bb8b3f4d73f63f0c6e022717effe82f1d86affeb624584ab092602dc14682ad8e2a053b09f66a1c82830447094e129c557fe7bce54582ab043709eeca37e099a7042f09de127c547f83ac043909f2121424284a5092a02c41457fc8aba2e6b80455096a12d425e0c79bbf7ce927046c4c5b8278f2fc91fb227ef93a0046c50cbaea3c4c7592ed276b241622ce66e519672c323c51c35d5453f0ee49d053c47fd55f5ae1da48dd4dea2981fe95af62edab52ebf14082a10423097c09021dd909d8f28865cc373074c11c8dc3cc95c0d4e022b0747efb8f7f86bf380febbd04b6f60f812301aff72448a9ef19a425c848281242c2b1841309a712ce249c4bb8907029e14ac2b5841be51b6e956fb893702fe141c2a3842709cf125ed426a8b96c497895f026e15dc287844f09f9a9b7841fe51b66d5e0b6ba12e634ada662ebee299f9ae687d116d34ad0c108f36a257285dfcccf71a4c78c9b57555d001c16f41740979931e7d4d7de2c2c4a5892b0acc4c38a4e18afd8c8aa843535025fb8d3587e102b743e6f5dc286844d09d9ecb68e3c849d4462bed4dcd541e152796b551d3c25dc7543dd8644403addaf0b3161453d09fb120e241c4a3892d09790cf134a1849c8569a125aba4023b425240b57424fc2948469093312894490682cd144a2a9443389e6122d245a4ab4d27be9a4ce462d43b4d674b1755da28d8e3f445b897612f1fc413d878ead91db74aee1ec87d71c35218c88e90253a3e920277394c9341a41c7ac934466cd52cce6d586d076534f9717894e3a0dfc9828e8e55589f3a4c6a2a6446755de88d75c554fa39b8a1edc356c4b88470f899e12bd247a4bf4d1c822ca2692e497382ae3bc4439854be5255ccd35fa261afd24d7c77bd9bc3c89786541a2a2442589ca125524aa4a549388cfd99088ad218eb6441d89ba12f524ea4bc4060d251a49e44b14e8fc7c144a14496448c467b024b225722472156bf6a329627454224f2d559492282d51460cf9f235a06305c658830b63a2394bb9d85656e36104ba6baba622a6167f3319fabfb923f9a618535db7de887f04fc94311363ae613d2d9bb11063a9f938c64a8cb5181b1d8aa4f21a5b317631dc472c3162257bd703632f065b751483359cc5b888714d24e66bdc74e0bc2d62dce32c3f4fe1ea06429378f5e2f5bb4464cc8f3d54b58da7182f31de627cc4c88a9113232f46418ca218253178011b5d15830f5f17a321061fa925465b8c8e185d317a62f4c560b386628cc4f0c508c408c588341d6b35d6bc37c310c3d45d85e8cc189618b6188e18ae185ecc970f9c162323a6880955343ae0656a659c10c69f3cad0411bf020d9449993d5e923b92b07e97c51cc783e891c69ce64427d8cda90eef1274c154e23c49bfd3a4ccc55c2847322dbb622e5578902026743db9d2911d732de646ccad983b31f78924eb630f3a6a9e4feb08d92aa7a3d493824c4b3a94a5bbe72459f6f17afdf1a57be3231dc43c6aee937912f32ce645ccabcebc993731ef623ec47c8af912f32de647ccac983931f3ea9f9905318b629694afc987ac885915b326665dcc86ee6e6336c56ca9ad37db6276746a8abf2ab3abe8cd9e98fc14ff6b28e62826eb8b19e86cae4ed5186286df9c30760654613a6d49c675a2c8096896a46cb236431d0f5e49f7801c9391461d3b8f115312b835dec214d3528ea61dc375628911d3ec9a84eb899912332d66462c110b628dc59a2412f36d3a2ae4cbc08c71c4aca136816afb876fb22582152f30dadcc59a8935176b21d652ac95586bb136626dc5da89b517eb20d6512795ad935867b12e625dc5ba89c50f3ec47a8af512eb2dd647acac5839b1f26215c42a8a55d265d4fbb36ebfc5965865ddd582fea25511ab2a564dacba580db19aea9c4447b15a1ad7e884a3adbd5092b044d3992c3b791d5485093141fca724e55a5b2731d9375a6d750fc83119092365ab1367eff6f5242d433d0e22acae583d350bb40354550a0f122b61f595b535106b28d6482c5fac40ac50ac28911fbe96f1cb57b75388f96e4315cbd424e4efae1388d78490af25962d163fe88ae58995122b2d5646f34b6c111b628fc59e883d157b26f65cec85d84bb15762afc5dee828fbbc21f656f9da3bb1f9a983d847656ac7f1f79e579ec5be887d15fba67cedbbd88fbff1b59f3a8f4bb8cd91ee37568cfef0fdb1c22d45dcf8c4eb067e84940b03e54b1bc28e915f0f39926f7fa8419acefd040a97a013e5657846be89e5b55f62bfc5fe889d153ba71a9d6bfd0b5f3b2f762191ff73be7651b707b34b62934545ecaa2644d935b1eb62135953ec96d86db13b6277353fd5ee89dd177b20f65033fbec91d8bed86c44287624b621b629b6a53983b61df37562be972fdf062f76c5f6c44e899d163b238e8803edd0aaa638e3787af12f7cd9fb33067b887adfad1fbe7f95842fc33c2ab8f20d63beb3bff125dcff277c9d8938d3447ef8b273fb4fbe897188f912ee2fdfe554f93a3371e6e22c748a3ee1eb2cc55989b356be9583381b71b65fbeb40fce4e27df9cbd38fcafa3382771cee25c94af73158717dc7547059add11bef6817c9bfcdfc7bff065383049ff4ce88e62fbf077bef78cf2759eff6ff2fd5fda07e5fb8af9be92fcead1976ff7f8eddfe899fde1fbdbbfc9770f4296ce5b9c8f2aa9931527a7a97c4e5e9c82ea6c29cea5748ae29462e265712ae254c5a969dabac3afa1214e53570e397cfeb638aca42b4e4f9cbe3803e5cb109c88e93c38439d6f7546e2f8e2b0dda13891388638a6aed49964749b1b06af2c13be89f74abeb3e93ff96a7a4ee397efff3dfbf09f7c1d4bfb37c7fef2751c715c71782615234efdf0a5d0f9fd2bdf3f2aac4b20fbbf70294faa5e5a9c8cb8222ec41dabf3909f7ff9d29770279aa8ca93a595f66fee54f9ba3371e7e22ec45d8abb12772dee46dcadb83b71f7e21ec43d8a7b12f72cee4537b37259cf4ddcfb2f5ff721ee53dc97b86f713fdaa1fde14bb84974c000eccb37ad7093ac91bff2a50b4117ed3ff9328850beb10bc1feed1f7cffabfe8d7c7990f075b3cad7cd899b8ff9a67ef8cebd2fdf6a57871de2bd8ebe7cd5f9edffae92fe6e9df954be6e415c5228295fb72c6ee56b1f5ca2ac895bfff2751be236c56d89db16b7236e57dc9eb87d7107e2b24d23717d71c92e1437d2d43cd7d0d410229e599ae342beae29ae25ae2d2e5bef8aeb7df932e872533ab8c5f2976f45470ffef0255037fd859bc87ff27533ffcef7abd7a338481b8827ff1d5f0fe28dc59b7cf97ad344fece97c1c5268a37929a7c9d331adf9ffeedc744887833f1e6cad75b88b7146fa5f993b40f34c1de5abc8d785bf176e2ed35478d7cbd837847f14ee29dc5bb887715ef26de5dbc87784ff15ee2bdc5fb889755077cb1d6f55344ece562c7b1281e9bcb7bf1a014f3e5f565e54b6bfbabbf76bc5e7dac6308434bbc8ada07f24d1c065d1d17cb1fbe95e86ffa9bcca491668258e1867aace747e255c5ab89c7a76b68ff46be5e53bc96f66f5efb6b1fbc8e785df17ae2f5c51bfc5d7f195f7843f158912f7343bc40f7503aece33c645e1dc61269c2a167e836379e299ea5f96735dec98e175ff0c011cf559beb79e2a5e2c517fc02d3e26524259282a4c6929a486a2aa999a4e6925a486a29a995a4d69a8392da486aab2668674b6a27a9bd8ed5e502491d247594142f384bea22a9aba46e92baeb8822a3897a55e7faa2b36a5ceaa18adcf524f594d44b66bcc55b529f38a53796d24877652bf93afd511a4a2a2ba99cf6908cd05449d9c8bca40af11aa0a6a68cf038558ccf972455965445525549d52455975443f9a69a9262d9965447525d49f524c5660c24c5ca4789fcd8df3d1fc99754106f79e9eb7c622ad4d99ac13dde96d6d2399b2d7458d65fe89687a948e3b7e24a33245386a44c5dd042beece85296a4c8c8d185442957527ce094a4d292ca485a240d498f253d91f454d23349cf25bd90f452178cf397915ec93d8af70cb87cf795d50d2407baf1687a2de98da4b792de497aaf7e2efd87f441ad64faa893d6054b271ad227499f257d91f4551755052d49df34abb7d68ad37b035561c41a3d7f4afaae99643db6e7a14680711a43e15a3c76ce32bae8b003cfa779e54bd26f497f249d95744ed279f5d5d2054917255d927459d2154957255d93745dd20d493725cd5b27fb13acefea3ca4db3ad5e62f758bcf7d4ea7c7b3795dcddd63733b92eeeac869ba27e9bea407921e4a7a24695fe1a6034987ca3a1d499a7f9a92b6246debe28bb4236957d29ea45392e62d329211c9403263c94c243395cc4c3273c92c24b3d475b9999564d6fa75663692d9aaecf9bf3bc9ec754b95cc413247dd3d68b194cc493267c95c247395cc4d112703086d5b479f337775d168015a3dc93c340725f38c87defb9a55967949e6ad06844e1e4d41326ba99d5857e7267460976dfba8e646ac3c2b999c64f2922948a62899924e1267ca92a948a62a999a64ea926948a629999664da92e948a62b19deb7cf32e69b4996155e759fd10c6f3fd205bea541bc3fe229de7f32a75b7c3ecfba73f59c4feb4b26900c6f13e90843c6908c291942b125e348c6958c27999464c82b135b6cf53c2013297fa06ba266d0ed5c17d05d3d56d0fd0f37d05fc70eba23d901baedd409ba7fd145decd783b9c1be26d3ca0db43bce8fd4acb84aec1cd421730e615712b822e1b2b4217e894d58b78b1b64ab22526a4aa0bb4e7370aa4d6bd9db50f9cfad02ce506a4195bd85a9cc930ff11fed65a52a487d486e69775a15f459fdf068142a7b2e945faf1787b081d7535a0a34d16347ea58bce0f26ef3963d7487f3ed44d72692665be8d775b5fc8981f48c75ba89ebe1b51c61bc550fde2edb8f96fac76807c530ec0efdc06a6c00c98030b6009ac62bf6e0d6cbe7cb155bed8295fec810370044ec05951e2025ca974c04df70f5d3c34d989bad6ea0377e0013c8117f096760a606d592007e8c2464d086bbb4041f6bcb2a8dfc5dd96711a34d08bbc829e2ee2dde2798bb282a682d303697b4005a8aa074621624dc68925e0b3d0da36803ac092cd6b016da00374015e3f02d8b0013004465260553e100021100106cb9ffd53d96b6f03f519e61bc0548e5d5e6701a4a9265307f4742e40b733910eeb25503e0c6be473f21932f1e63650bee331c6138c7930c378ae7cc70b8c9718af305e63bcc1788bf10ee33dc6078c8f189f303e8306b7d6c1f81a6ff9620b9f814496350d705b2d8c6f18df317e60fcc4f885f15b33ec86acf08371166322fea8191df0388f7101e378ca075d19b36125453c4eeb4c876e4f7c978ea19b0a3c77ead5f1530507e332c6158a22fece504cd5278bc7cc30ae625cc3b88e7103e326c66c4f1b63b6b68b714f718ffb180f301e623cc2d8c738c0384c24993f36d5dfdcb6e4c0a78d6223c0878f73e46bacc8a4e86c0a898f2d8a147a18db18b3592ec61ec629504df824ba0b0bf5788cc90fdfc954f94e7830c76481c9129315266b4c36f2f030d962b2c3648fc901932326279d95409f4fdebd3d31396372d1b551f51226574c6e98dc317960c2ff7a61f296fe00938f0c539864359b863ec0a88a490e933c26055d70fddc6aa6de70a8331d2c936d9028f3971adf4f9bce0326454c4a4ab694c6a4ace38dc6ee2ba61b9f7130a9605255cdfdc37752c3a48e4903932626fcb38d490793ee97efa487493f9124bfe4a47ce9991d8ed2e3a5ecaf6d4c86f261bda378b1479bac31a1c449737a3ec424c2c4c0c4c4c4c284d73bca77ac7c254b766c1c4b3e3cdb9d8977f2a7728f319d603ac57486e91cd305a64b4c5798ae415f7bc6e32da63b5da36eb53531a763c97084e91ed303a6474c4f989e31bd607a55bb39bdd1f4617ac7f481e93399d3c5f485e91bd38faeaca47bdbafc5950c757b78f2a553319bc51b6e3fe83c60ca2f86f5e7d4084cf38a785af8228ee1826124f94e4b98f2b8826915d31aa6bc35af6f62dac2b48d6907d32ea63d4cfb980e301d62ca3afd4412ff61abfb791ccec9dc2da6812eed20c7302fa6816948d12561fc533716aaf1e0cb774aa7f2a27ca7bcccfcf29d5affe4cb6f6bca56ba987a98a6304dc77c33f17e4334d763cce8d80fc00ee7dd954751f9ea18f950734756fc767bf2da6036c36c8ed902fc1a662bccd6986d6450c06c8bd98e7c31dbab7715f4313b6076c4eca46398d92a6667ccd8c8b39a1dda5c861e18247c756c28e14b2340bea44c45d6519b5e325b81d915b31b6677cc1e98f1162fccde6a10661fccb298e530cb63c63614697f312b6156c6aca2f677564de4ff17beb31a6675cc1a9835316b295fc6dfe949cc976ded922f663dcc8866a05b5fbd0cd5b545567bb955bf7b7b6336c48c0fe0631660c6d6479819a059eb4df407feff2d5f0b335b4dc4ccc18c673ccc5298f11132f1cb08d8978f319f603ec57c86f91cf305e64bcc5798af597ef797d35961dd6734a4e7ab7ce7877fe14b733c3f6acee15ff882fde1ffc877bec57c07daf4f901f323e627cccf985f30bf82ded2fc8ef943f9ce9fa0656cf6742f9b519970317fd379c0fc837916f31ce679cc0b9817312f615ec6bca2c35deca0688813beffb00f650373f2bd682f47bee8e8b8fb6cfac73efcf24decc31fbec93c71cc57d1cf6b7ff3cfe6f57ff7cfe60dcc9b98b7306fab7f36ef7cfd33eddfc6f7842ffb37cce9a8b123f2c954e1d21ba517014b82aeea3585b678defbe5fb8ffe2de19bf46ff37ecc7780f950f5773ec29c9f0d300f31e767f9fc26e616e636e66c902b262ff0b40b0ae88913379d457e0dac2113bfb3025fbe8bb1f25d4ce2799d94766ec3b5f66fd5d42fdf6cbd7bbb61314d5c087d43c75ff9fef46f095f2c66ba343be1ab13c303f5cc7e2634952ff5f75ff92ee6582c94ef62a97c172be5bb58c7fadbf9d1df3ffe193b996110fb678e6626075d2c3631dc982feaaad7757a692b2cb658ecb0d8637150be8b2316a7af7fb638fffa67e44bff6171c1e28ac54df92eee583c94efe289c50b8b37161fd0142cf890792c0a5814d9a1fd07df587f17252cca6a1f1615b50f0cd31b6dcdb3fbc3d727d01a1675f51fee1e160d350ee3d839a3674fff2cd98e88ceaf0eaec77c5943568308891ebfca4b2ff8478595ef8ce17e57edc3a2a93ec3a2a5f677d1c6a2830511f5b4bb5bf4b118603154fbb0e063fa6a1f16febff9bf8be0affeaf2c8beaffd25dfbf17fbbb775cc57e337e54bff37e13bc16f7cb1e07f118119f3b5b0b0b160fb5c2cf8d8fc3ef8918cbe608921c8728ce504cb2996332ce7582efec2f7ad7c970c9d0758aeb05c63b9c172abfddb72a721066d825755beb41224a54b21dc2f5fc6be8c026816921023f17f93ede04615ed36d997e6eafa0b6070cc208d9ec39fac0646168cdc12c4e4bbdc6379c0f288e509cb339617555856bebc6279fbc617cbbbc617cb87c617cb2796af44e2f86df9d6f86d3c94033ff0f9be5fa43cd2841773fc8d2fc68666befc6c478965f6cb9791c5ffc8779953becb3c9605f0db5a96b02c6359c1b28a650d0c5e970d2c9b58b6b06c63d951be2b1e7475162709de963d2c5992329f6484a52f1d7e3d01fd5f8670bf7c83b1ae4269f35ea1e6f37e6a6a1c508a83b7a96e0085411cc29dffc9d7ea295f0d2e62be8c9293f822e14bff2cf17f9711960696269656ec02b3d9bc97a3feefd2fdfabf4b4f23e3bff9bfbaffe40ecb946e18364cecef3ab10f6a82d5445871badc4a8d2f4dc4cdc1329dd8876f7c9ce69796f9eef2b812b5bf2bc6c663e5bb9a603555fbb09a6135c76a81d512ab15566bac36586db1da61b5c7ea80d511ab135667cd6963ffc3a080322a7ffdb3d5052b5672c3ea8e15ff97b77862f5c2ea1dbbc0fff41fd8bfd195965c39eee2ce6a883fb5ef32827e5d67971f455d8939dce8d8589cd84057e1b78b63e7b6fa48aa8d5516ab9c0611ab3c5605ac8a5895b02a6355c1aa8a550dab3a560dac9a58f11a5edfc1aa8b550fab3ecbe4fd2d7cbc818e932d4eaab30ccf56437d07d674f52b997722dd1b118cb0f2357e9b18627eb00ab00a25ed631561656045a656cc976e4d4ad26ca883154b12496195c62a132fb606d663ac27584fb19ec9ed8ef59c3f6aac171ada7e1a582fb15ee902f5c15376bc6c8df506eb2da80a64bade637dd07158ead7fa88f509eb33d617acaf3a5eb3be092dc19a753eb066e8c18b5fb1f0831facb362f2ee39acf35817b02eaa795d97b02e635dc1ba8a750deb3ad6aca789750beb36d61dac790d9bd7c77a80f510eb11d63ed601d621d611d606d626d616d636d60ed62ed61ecbd83eac53b1a4d5da9ac6777af5d9d18522c9801ea559fb1e54596f4633f0a8d69b313613e5bb992adfcd0c9b39360b6c96ca77b3c2668dcd069b2d363b6cf6d81cb0396273c2e68ccd45f893df5cb1b96173d7e19bcd039b27362fcdca7fd9e2e7b1796b7271c08f7cb0c96293c38627a944fcb3884d291edbae6053c6a6a2d3e65e139baa6e32a44ba85271eacd5ca727dc4c9ce934e3418cf5854d0d9b3a7b366c1ad8f0533c6863d3c1a68b4d2f16b66d80cd503c1e8fb0e1d3058a75136213616360636263a9c1ddd8d838d8b8d878d8a4b049639389df54029631dfed18db09b65335b58b8d54d9f7bdd5fcadea9a4efbda7e17e3127726ee70b6336ce7d82ec4a8b37fa37df8f2a5156687b5a5acbe7cb76b6c37d86eb1dd61bbc7f680ed11db13b6676c59cf15db1bb6776c1fd83eb17d61fb96e610db0fb659a997b1cdc5f3e723e9f2cabc9cfbd816b02d625bc296ff5bc1b68a6d0ddb3ab60d6c9bd8b6b06d63dbc1b68b6d0f5b5e3f889756fd0ab643695b6a403ac23858bf1b2ae9863e03218cb0f5758437c3fa03d05bdd46d81aaabf5b135b0b5b1b5b075b175b0fdb14b6696c33f1c612c06e0cfec87653ec66d8cdb15b60b76419db077d7188682a328d03638a5aeb4bb6d556f3a7b9726d5da740159e2d75415ee685dd0abb35761b8ddf76b4a1a1ca6e87dd1ebb037647758d691f7627ecced8f19a2b7637eceed83db07b62c71aded87db0cb6297c32e8f5d01bb2276254dacd335758ea66a3f879a5536e0c565ec2ad855b1ab6157c7ae815d339616766dec3a5fb8bb2e763decfad80db01b6237c2ce8f975ea6b023afa1963bb6939e3b6f6d6067626761c7763ad8b9095cecbc58f891b422de65e2574502fb31f613eca7d8cf629963bfc07e89fd0afb35f61becb7d8efb0df2bdffd01fb23cb587ff727eccfa00b3175b0bf627f8b770b9e691ca5e9d31ef6ec400ef196c64dec1f32ca63ffc4fe85fd1bfb0ff65930eadbf36401fb22f625eccbd85794f5be8a7d0dfb3af60dec9b3aecbb6f61dfc6be837d17fb1ef67dec07d80fb11f61ef631f88c1a687ba1ad4e49f9126f1e5588981bd89bd85bd8dbda35cf66e2c6c5b0afb34f699788d3c7018eb0e856d1787090e534d394df2218d95eed5c0b264e3309309af9febd8c561a1b1d961a936e1b0525d26eec31a870d0efcdf9d446f1cf6381c7038e270c2e18cc325962b0e371cee383c7078e2f0c281577e70c8e290c3218f438165ccf75054c48752c257a75dd97d576c1ddffbd4d58f21e24319870a0e555d5541be871a0e751c1a38347168e1d0c681adece2c056f67118e030d4814af23d8c70f07108700871887030703071b070e063383810042b4fe190c62183a3683ea42eb5b574d8fd3866a96308c7098e531c6738ce71d46c511c9738ae705ce3b8c1718be34e7bb6e31ec7038e471c4f389ef5a740b2c4ca3acba6ee35523671bce078d5b9bbfe4647908f371cef6a8293feedf888fbb7aaf66f044ddcc7278e2f1cdf387e70cce298c3318f6301c7228e251cf9910a8e6c610dc73a8e0d1cf991168e6d457c8cf79fc4b1a3139afb970611ecdf18441dbb38f670ece338c0718863ec2ab53a6a37d8ef75d9441fc700c710c70847b5bf389a526473c9c5c6d1d170f9e8aa7d387a38a6704ce398d1f7b09ea07c4f639c26384d719ae134c76981d312a795065da7b5ae4a4d5fe839d07fc06923d90a4e5b9c7638ed713ae07454bb793ae174c6e982d35543af3fcec3e986d35df70fe8a734c7d458279e0329d373f8b2a6f4d917d571a2ddafa8f3707aea90cde985d3fb4b9942a53e7dc4e08db26a0a4e399cf26a074e059c8a3895702ae354912e1b53c5a986132b6ce0d4c4a985531ba70ecb64fc21d455bfd99cf66f27deac87531fa7014e439c460afae4e3c4708ed14757bbbe53283402a708274383e0bff26547c7a0e364aa474cbfe264e164e3e4e0e4e24476299c788b8cbeedf60c9cc7384f709ee23cc3798ef3424c9e5feaaa49ba1054b1e10367fea21d9cd7386f70dee2bcc3798f6911e703ce479c4f389fd58612139d87f305e72bce371d2748f60fa0cf30fabb181bd56b4674a93cce779c798b27ce2f9cdf5fffe1f4c1f91397599c73e2f0eebcb280336f5ac2b98c73455d887315e71ace75f528ce0d9c79f716ce6d9c3b387771ee2512eb2ffbe5f340dfe3f4a9a8dbd0ace33cc47984b34ff94e01e8ea325f5d08fa67e7006756ca7b18389b385bba795469ad53c8b515ceb66af1d9d17eefece2ece19cc2398d7346df207c012e635c26b84c7199e132c76581cb1297152e6bfdc55c3632e7c9ad44675c76fa2b7e1e70d9e3c2f288cb09179ebfe072c5e586cb1d97072e4f5c5eb8bc71f9e09255a5a681beb01fe69f794c5fba90eaafd27375a4e25290541d97a28e375e4ab894351ebb5470a9e252c3a51e1ff34c1397162e6d5c3ab87471e9e1c2460e7019e232c2c5c725c025c425c2c5c085f7b570b171711289f95e5c9d10ba78b8a4349468b2d2342e191d04a1dcd389f3108f13a6e55d8c37f4a3368f719de03ad5f1c9eb0cd7b92a2f41675c5c17b82ea5c0ff5de1bac67583eb16d71dae7b5c0fb81e713de17ac6f582eb15d71bae775c638b5f2f89c14f3d717d499a57bec917d70fae595c73b8e6712de0ca0694702de35ac1b58a6b0dd73aae0d5c9bea6c5d5bb8b671ede0dac5b5a70922bab9482c49d648aea94e5b810858551fd781f660095f96d721ae238d2958f258cff83a6d710d700d718d7035703563e153dbb83ab8f2793d5c53b8a671cde8fba76fc06d9c48f2fe8b296e13dca6d278e136c36d8edb02b7256eab58d6b16c70dbe2b6c36d2f6188db01b72318cbddceb85d24e7e176c5eda666819118e33abac3b7076e4fdc58e71bb70f6e59dc72b8e5712be056c4ad845b19b70a6e55dc6ab8d5716be0d6c4ada52b4ce845dcdab87570eb6af475ebe1d6c76d80db10b791c6b237d6cf7bb125116e066e266e166e3618bbdf5cdcd89e1484f74a63c6966754ee22839ebe7c9bd10c4f4a0ef731ee13dca7b8cf709fe3bed05989fb12f7555cae71dfe8d80dfd87fb16f71dee7b75c5ee87588eb89f703fc7672eb85f71bfe17ec7fd81fb13f75722b1fededfb87f7067d5bc651ef702ee45dc4bb8977fa4827b35961aee75dc1bb837716f691c7c6fe3dec1bd8b3b9bdec77d80fb10f711ee3eee01ee21ee11ee06ee26eebcd8c6dd51be7717eccaee29dcd3b867e2b78d4395f431c66382c754d7d9564d3c66da17150c1d547bccf160b9c463a5d1f0638dc746c7071e5b091b78ec7422e7b1c7e3a051d9e3a82b8375b8678a072f3e53f407c1b251d764d692abeb31d94f3e2e785cbfd6f6c11aee783cf078c625bb015ef0c6e38307ff3787475efd8747018fa2ba108f121e653c2a7854f1a8e151c7832d69e2c106b0611d9631df47178f1e1e7d3c06780cf118e1e1e311e011e211c562e0c1a7b5f0b0f170f070f1f0f048e191c623a36f617f02cf319e9358a678cef09ce3b9c07389e70acf359e1b3cb778eef0dc83f6f479c4f384e719cf0b9e573c6f78def17ce0f9c4f385e71bcf8f76fa83aef6fe28e299c53387671ecf029efcb3846719cf0a9e553c6b78d6f16c80bef9b385675b438c6707cf2e9e3ce8e339c07318cb282e7d3c033c433c23f5ed9e069e269e169e369e0e9e2e9e1e9ea958d278667404f2259a73f11ae335c16b8ad70caf395e0b8dd95e4b1d7978adf05ae3b5c16b8bd70eaf3d5e07bc8e2c93f73be5f03ae175c6eb82d7152fd678c7eb81d713af572c6fbc3e7865f1e29579bc0a7815f12ae155c6ab825715af1a5e75bc1a7835f16ae1d5c6ab835717af1e5e7dbc06780df11ae1e5e315e015e215e1c56699785978d9783978b9787978a5f04ae39589df7ccb60dbd7f23dc67b82f714ef19de73bc17782ff15ee1bdc67b83f716ef1dde7bbc0f781ff13ee17dc6fb82f715ef1bdef7581e783f7fca17de6fbc3f7867f1cee19dc7bb00762aef12de65bc2b78577fa486771def06de4dbc5b78b7f1eee0ddc5bb87771fef01de43bc4778b39101de21de11de06de26de16de36de0ecb587fdf2ede1ede29bcd37867f011cd8cf98cf199e0338d6586cf1c9f053e4b7c56f8acf1d9e0b3c56787cf1e9f033e477c4ef89cf1b9e073c5e786cf1d9f073e4f7c5ef8bcf1f9e093c527874f1e9f023e457c4af894418fe553c5a7864f1d9f063e4d7c5af8b4f1e9e0d3c5a7874f1f9f013e437c46f8f8f804f884f844f818f898f858f8d8f838f8b8f878f8a4f049e393415634b3273b467612cb14d9d94f39477681ec12d915b26b6437c86e91dd21bb47f680ec11d9d38f9c91bd207b45f686ec1dd907b24f645fc8be63f9209b059dda6c1ed902b245644bc896416f9d0151b6866c9d65cc37db40b6099aad6c1bd90eb25d647bc8f6911d203b8ccb11b23eb201b221b211b206b226b216b236b20eb22eb21eb22964d3c86690134d59ca8d919b2037456e86dc1cb905724be456c8ad91db20b7456e87dc1eb9037247e44ec89d91bb207745ee86dc1db907724fe45ec8bd91fb2097452e875c1eb9027245e44ac89591ab80a173ae865c1db906e818e45ac8b591eb20d745ae875c1fb9017243e4467199888f5c805c885c849c819c899c859c8d9c839c0b76d4b91472e9b8f462c9c46bb081fc18f909f253e4677139477e81fc12f915f26be437c86f91df21bf47fe80fc11f913cb986ffeacc383f90bf257e46fc8f3f881fc13f917f26fe43fb16491cf219f47be807c11f912f265e42bc85791afe9e6dd055e5347be01dd109e1f6f21df46be837c17f91ef27de407c80f911f21ef231fc8c0413e443e42de40de44de42de469e275de43de453c8a791cfa02028008531e8ed15a628cc5098a3b0406189c20a85350a1b14b628ec50d8a37040e188c20985330a1714ae28dc62b9ff1c3c5078a2f042e10d36b890452187421e85020ac5b82cc57f9651a8c4c755146a28d45168a0d044a185421b850e0a5d147a28f45118a030446184828f42804288420476c80513058b6592bf3352a161a65758705070ff2e1e0a2914d2b1645014f637288e519ca03895f15c77998eb7f0467186e25c5f5dc13354c9e202c52518d415d7286e50dca2b843718fe24123b7e211455e7346f182e215c51b8a7721fde2034576976f145f28be3500ebc40360c50f8a59147328e6d58b62d0552ca0c89b96502ca35841b18a620dc53a8a0d149bf19aca78a1a5aeaff49275ad28b6788c621bc50e8a5d0d2e8a3d14fb280e34082e0e511cc57ffa28067abc62cd218a118a068a268a168a368a4e7ce0a2e8c525db964631c390109aea36466982d23491ff43bea5194a73941628b1b9479456ff2bbea5354a1b94b628ed50daa37440899f3da17446e982d215a51b4a77941eba4bbccf86fe8daf8ed8f61c945e28bd51faa094d5b94586b0a5dc972fe3ae525ee719e77cb6024a45ac6bbf7c9315d976ee2bd103a5920e0c95ca7fe13bfc1bdf52253ef9bfe65baac67c6b28d5516afc177c8723949a5fbea5d62fdf523b46fc2f7cbbb7c12fdfdc49e841977e5e6df3876fa98b520f25367af0c3778812efe5a314a014a214a164fce1ab112df9964c942c946c9d7de8a6745cbc44c4ee7fc7b7e4fdaff87a2de58bda3ff996527fe19b8ecb0cca8232501ea33c41798af20ce539ca0b94974ab6bc4279ad61457983f216e59df22def513efc8d2fca47cd47fadff32d9f503ea37cd1bdfe67af842fca579479a7bb6e3afd0fbee507ca4f9479cd1be50fca59947328e7512ea05c44b9847219e50aca55dde8b59bf917be83cf976fb986725d63ad4d4ba71dcb0de53bf3506e2adf720be5b664f8901d94bb3aee4383106345b99788beb6a683bff125cde3eb9f7c55fec1b7ff17be03948731df11cabe4616e500e510e50865e35ff82a62f22d9b285b0a37913f7c2965fbbfe45b6aa916d3bf21d0b2a39ba633022cbb528df91e7d94f9e42994d32867e2576d0395312a1354a6a8cc5099a3b24065a971446585ca1a958df2ad6c51d969fefe7fc59752d9a372d09c9aca1195d3dff85618b8871a49c788bf7c2b17f245e52ad10d15ca5d93f52a0fe55b79a2f252a0c4ca331486c57afead7c2b1f54b2a8e49466258f4a0115c687212aa5f84cf9cbb75241a5aa7c2b3554ea2c63fb90be262afc3ff0ad345069a2d2fac3179576c217958e50072b5ddd7d5af91645efc4e7e1930f5019a2324285ed0850612322540c5448d04285d53aa8b8ca57ca92e28379a8a45049a3924155d4feee825ffb5005aa635427ecdfc41aa23a457586ea1cfc2e09b7ba4475a57c0f6b54291b54b792ceeb04f361f195ca05e3b226e6a47312f0833be5382ba11a9704aab3153f92f05db1e603aa47544fa89e51bdc4e515d51baa77541fa83e517da1fa46f5836a16d51caa79540b2cbf7c13c4a816bf7c691012be2cab25151eff836fb5fce54bfb409a554a5511df797d4d557b5b45b5ae23c5d506aa4d5459551bd50eaa5d547ba8f6511da04a4623547d54031dc4390aaa21aa914e94550d544d1db14d9f7efd87aa85aa8daa834d533c5645e21eaaa9842caa69ca0fdf8c22ae092d016ae378818a0a59ab095e7d509be876449628c4da14b5196af32fe23f525ba0b6446da5c33735d6b6416d8bda0eb53d6a07d48e4ab97652beb5b3f2ad5d946f8d276fa8dd592adf6473ccbff1ad3d54122dfec35725f5e55b638d2f19f3de6f350edb126a6c31abcec99a8f9447ad805a11359e2fa35641ad8a5a0db53a6a0dd49aa8f1166dd43aa87551eba1d6476d209b00b5216a23d47c8cf959fe19ea409a1e47ea02d70cd44cd42c9dcbb9f0196cc9b05a47e7ca6a2e6a5e2c29854bfb504b8b7188b343d8aa4cb2034f2c50b834cdf5b12ea0d88b6a6e7d82fa544b52e69fb415f5f8a03e477d81fa12f515ea6bd437a86f51dfa1ceff3aa07e8ccf9c503f8bc78f5f50bf2adffa0df53bea0f965fbe8a982a5c67bd2f8548b8f5f7b7ac7fd4e14d70d7b37a5ccfa19e47bd807a9170512fc994979551afa05e45bd867a5d661fd41ba83751e7a7daa87750efa2de43bd8ffa00f521ea23d47dd403d443d423d40d4d52af9baac5753ebcad9317b7b6ee90d567e9a2eea0ced2433d857a1af50c1aa2ab4e1ae3d893fda0314163aa3a4ba08d191a7334163a12d658c6b2fa4a3d4dd742af79dcc4dca0b14683e5168d1d1a7b340ef19f891ce33f4f689cd1b8a07145e386c61d8d870a0d428395b37ca3c1bbf3a63934f26814d028a2514a24595f58fdaa70c2971049b35156b82c1b1534aa3168fe5943a38e46038d261a2d34088e7f76d0e8a2d143a38fc6008d211a23347c340234423422340c344c342c346c341c345c343c345268a4d1c8a029ba32a7394673224313cd299a33963a7fdca4f327baf862b94093b2d4a189e60acd359a1bcddbe57d9b5b34e3cd5be8d8ae3e120cd1dca37940937680d59ee295ed3c794e243ebea80d59b7d0bca27943f38ee603cda7f0c7d17cc553ee894cf5cfe61bcd8fc26d66d1cca19947b3a042a0cd229aa558ca6856d0aca25943b38e6603cd66225fbe09623479cbb6f225c76647e136f900bd58baf19f7d3407aac24db6728426110468866846681a68b27d169a369a0e9a2e9a1e9a2934d36866d0125ddbd41aa335416b8ad64c0633e5db9aa3b5406b89d60aadb5b487686dd0daa2b5438bdd4b5ffc135a07b48e68f1e08cd605adab8edb4ee2956fad1b5a77b41ebaf4d2ea62f556e2ada7447c96a3c672ad970675f48b5bef3891bfa0c734d3ad0f5a7140d1622579b40a6815d12ae194d7ddf76241abac7ffa4fb42a6855d1aaa1c50a1b6835d16aa1d546aba3945b5d3d68f5d0eaa335406ba89925ad512231dfb012bfeafb2923032dff876ff7dff8b2ae202e43b422b478bd899685968d9683968b96a74add4ac5c2c7c8a02dba64ac3d467b82f614ed19da73b417682fd15ea1bd467b83f616ed1d744bfc01da07b48f689fd03ea3ad5bfda27d45fb86f61ded07da4fb45f68bfd1fea09dd560ef92d75502ed9c2644a579415e06251d355fd735d6d08823f68e75954f0bed02da45753696acb38476196db22b29c47655fa6c5e4d29c7a21b7cf30c3db0761ded06da6c096b68a3dd41bb8b760fed3eb4c1adf860a823bf88d01e697254db4fe4cb17ed40d783916f3b443b12b71493652dc63ff97ecf9b685b68db683baac56d176d0fed14da69b4335fbe1d5dc586ce58c8b43341678a0e0fe6e82cd059a2b3d22ce0ce1a9d0d3a5b7476e8ecd139a07344e784ce199d0b3a57ac86e8dce45d42e78ece039d273a2fe98dd179a3f351bfb893a58fa1d90eedb466a91a5b9dc2b03f3a0a41077996523dede4d0c92b50cd2e3debba1f867c9d023a45744a0a71bfd5788165a7acd6b653896d2e0faae8d4d0a9a3c3eb9be8b4d069a3d341a78b4e0f9d3e3a0374860ab73342c74727402744275215ee182ce3f8a2632adf7beacbb76329df8ead403b4e6c7f2b5f734ca341e141c745c74327a596a19356be9d0cba6ac3d11deb79f2e5417782ee14dd19ba737417e82ed15da1bb467783ee16dd1dba7b740fe81ed13da17b96f907dd0bba57c9f8f1dece77c9b7d07da0fb44f785ee1bdd8f0ea76deae812eb50539eba39f531d6fcdf3cba05748b9ab45a65e5255d198101ba65742be856d1ada1cb0f3674a51529779be8b272ea23ffaba31c596a3cb6d633141e578ae876d1ed499a17f7d1656dbc638cb24b09d00dd18dd0359478d744d7d2f187ae8dae83aecb32e6dbf574d3c5011f8350d26084da13f4f0edd988f84bb9fa752aa83efc49f6a6e8cd942fb598407b73f416e82d63b8367aabf8e41abd8dcc7df4b6e8edd0dba37740ef88de49e38bde19bd0b7a57f46ee8ddd163cd4ff45ee8bd35c5b8f7412fab39c853b627875e1ebd027a45f44abad4b85746af825e55a33b9d4fb37497825624a9a29a080ddb1ae8d5d0aba3c783267a2df4dae875d0ebea4acc5e0fbdbe66e7f506e80d3506a39165599e6b54565e69d91b6934dcf3756ca1176862438f27796b2316f3876fa8cacb3f7b167ab626ef247c7bce0fdf9e8b9e871e71a4d1cba02fbaaab63f467f02fe76e8f692697f86fe5c8ffb0bd565dadffe12fd15faeb2f502a6c7f83fe16fddd8fecd13fa07f44ff84fe19fd0bfa57f46fe8dfd167854ff45fe8bfd1ffa09f453f877e1efd82ee2cc210a35f14aa49bf847e19137ebc02dd0a5ce43240bf26fc6afb75d5e27e03fd26faadf83d1453ddc2db5c6067eabc67bfad111d0deeb8a96abbca6bd9ef681a7abfab16833161bf8ffe4046a26118e1b2a4b5ed0fbfc2e3447ffb6c898f7e803e1b16a16f28e5be89be85be1d8b833ec978e813423a7e15e55253fcbef6a19fd1942f23a57bb50ef8931a633051be83a9aa2d3bfac11c8305064be5abfd7e198395f21dac31d828dfc156f90e76bf7c077b0c0e181c31386170c6e082c115831b0677f087327862f0c2e00d1ad04156f90e7218e46559d1ed1af495605d0c0aca775094774d5303d86b0d785fb6a72a7e1a839ad0f80cea18343483a437d52d90c99751498bf53731687df9d22090eca0ad7067bc6947072bd833ac18f82ca5c8aa78af9e06bb03fae6abefd6bdbc91222e6230c06088c108035f9d844180418841a4700746bc0f014f9adab95121267d0c2ccd2cf92b5f4d19aa9775c1eed1c3c0c6c0c1801c799c52833048fff0cde89f44cc4e4f53ad81e118c3494c76ab2a3c9caaf390c0a5b9a0fd1dce309c63b8c07089e14af90ed7186e30dc62b8c3700fba41c32386270ccf185e3064a44e052f6278c33c85e15d71174760ac317c62f8c2f08de107c32c86390cf31816742dbdbe9962aa27a520c118d79ea6f00c8b1a312bcab6221e96f48070674fe5fe786be4c6b07858c6503742c6b0aa64d591a87d3d87614dadf0a986615d5ddd212b69ea08993a0fb1ff306c61d8a62862d56517c30e865d0c7b3a853cecb38cf57738c07088211fc3c73050bec310c348bb32c66c43436d023dffa1f535c143a2e435accec39014d23f7c336043698e47c0688cd104a3a9b816d8bf8fe6182d305a62b4c2688dd106a32d463b8cf6181d303a6274c2e8ac0a3b229a9bbed86e71c7e8aa4bb40a3d8c6ed09ddab3183d307a6ac6d4e825fc318ede187d307dc79b6bf04659dde8bf60ebf0f92887515e07d5d89bd1da122e0f0897ce597529614b3d0a46c07b3ae085af7f16c3c5a8a0fe19cb5151115385e99f31421b953488a00ba15622c4a88c5125762a9a4a79548dfd330323d6508ff3d7e5277fbd6a62d4d034fc5113a31646bcba835157cd2e3577d4fbe53bea6b5f371a807df76884918f51a06637e1cbc862c41b47a01f323263be9638bc86e7f92917230f234249639451fdf545f74bf0c7f027f0a71a5f2cabf067aabcfe1cfe02fe5296257521fc15fc35fc0dfc2d7c2a57970e19fc3dfc03fc2316f5f8255607e54babba33c0a8e40f5f5eec9f639fe1a86bd8fc8b8eb1257cfd2bfc9b0611d4d64ef9ebfffe377cfd3bfc873a64147e19fe0bfe5b8588fd8ff67233b63fab8b2fe8a2c592acbf786ab2e2930f9c83cfbb16e017554fa9bc249bf065ff46be7e492d32f9fa65e5eb57d467f0ab0a9756d8afc1afc36fc0e7fd08a5fdd55fbf039f0fd983df87cfcfb271fcac0f3f801fc28fe09388099f8cdaf06d7de5e54c48565d34dff9eaafefaafefa1ef9aadb30e8ff557fd53854f81da4beb965d45fb50f69e54bb8d45f9604fda3bf6a1fe80ed38efb197d17130d6e10a93520d05151534e13b8897da86fd53e04a2a144a2bf74d4e8fb25fa4b8b144cbefabb7cfd9bfeea8aafb4ae000e6608e60816f1204359f5573bb4b496c112c14af597262258ebf843b041b045b043b0576b101cc05f00bde0e084e08ce082e08ae0a6f637b8237820782278217823f820c822c821c823282060d34b08ca082ad2b134320eaaffe8df6477d6fe2da8c995cda86bffa67bc25cbffd1b43387d9d83a11d1d23bad64da865ecdf160b8dd6d47fa8699950e6191ae5a081808fd042d0d6ae8cdf56d85155a5cffb757ed7bffe6fd041c0b2a7640991f1054d6d10bbc3ecd982816ea8110c118c10f808781cc68b035412be110203012fb510d8087ebcdd04314d0415990e2f5598e7691fd8bf05bc81872085208d208350744f142dc7082708a7086708e708170897085708d7083708b7087708f7080f088f084feaff8667842caf086f42ff3cbc237ca07510fe1ec3a7ae1b5eb510be10be117e106611e6b4070bf3080b088b084bf110c40d74e123565201dde1e8a9ca4b948c2cc21ac23ac206c218b49e61856d1068d845d853b7acceb6f51525bd8570a03adbaa48c47b0d118e10fa6a16c240c986a106116184d0d028233411f24f5bcf870e4217a1873085309d48cc37cc2012dd31261a239a209a8a794134433447b4509ad132fe7385688d68c3f8585fd89df1106d11ed10ed111d101d119d109d115d74d10b1f35ba21ba237a804f3be6f917a237a20fd8ee2887288fa880a888a884a88ca88248879910d5b028e882b7a88ea8a1eb031e155d1f90e4af474d442d21afa88da883a88ba887a88f688068886804dd7ffc89284014228a74dd4f8d8de72398882c4436220791abe3bc11db9f429446948121ba5b8e31863181310503422de7301630966a6d8d158c358c0d187f1b3b187bf513680a8c038ca326fc1a2718678dd98c0b8c2b8c5b22315fe30ee301e309e305e30de303230b23174b5ebc250c82988b3b89e1d2497c4b2d05a308a304a30ca3a2a9ea375657d535434703462d2e4b9afd67d46134603461b460b495afd181d185d183d1873180c1d68f60f83002dd3df2c10ae3354346a4efd4a857e439d0fc7583159a302c18b6866706c5d5f15fc383919274499768196961fc6d6470cec114856bb2ffccc01c6bc9ae8c94cd898236a7788d3548ab3e152edd5b73a62361e65c4d6dbb01c6291d964b982bf576cd35cc0dcc2dcc1dcc3dcc03cca386128cd60ebcd709e619544af30af306f30ef301f3c932e66bbe346a30df303f4ad0ccc2e467f214f16c9805d5e248b742fc1b5fb308b3a48be7e3b45fcdfc5d1c619675d39893a9b8cd0acc2acc1acc3a4cb6b509b305b30db3a3fe83c987e9c1ecc31cc01cc2e413fafa6ebe920333105acf35db17c28c740b43c6cda601937488c6d6417422be9661ba303d986c4c5a18911fd6c2c8d3cc686ab425ca91ee97059cca1a4758e3f8cf8982b6a6b066b0e63a464eb8ad06ac85968cd3686a89957179baa943e69d81060eec4b09d75ac25ac15ac7b25153c0ae8c4257c1e2ffee60ed75dac23ac03ac23ab18cf95a675817f573d98f756c5857dd14ccb3556a6cd6ed6f7cadbbf2ad0b2c56f484f5a2f2ea467394acad6b5aac378e3f7c4f96f2b53eb0b2b072b0f2b00ab08ab04ab0cab02ab0aab078411d56436e3d790f853f49ab098bdf041bddd681b1a2be050d56075617560f561fd60016098e60f9b00258212e45256b453ae56e199a776e99b02c0d1f180177b7ba16a5f9d43f8998badce1057c5256cb067bb0521a2cb06c0fe2adf774f73d854be5ed461af8ae785fa2c828d9a4efb245776d48fc30ba0af618f644d3526b77d853d8b34462bef4c0287fe10b7bae582954de587fe37d3c97b0172acd2e6c1eaf60af7589aceaaff285bd81bdd5f54389fe6e565ffdb577b0f7b00fb0d9ac13ec33ec0b6cdee5069bad79c07ec27ec17eebcbaae87ed81f7dab123d133b0b3bf7d55f3b0fbb00bb08bba4b33bf709ec1ffdb52bb0abb06b5fbed4df71f7cbd7aeabe626fa6b377ef5d76e6a26afdd82dd56b3d01ea83fab83b9caf75779fff0b53b6a0da8bf369fbda7426b60f7610f54b650fdb587b047aabfb61f2baf4a32feb050fbc092de024d2de1fe85e997ac915889b8d3638f6707b043d8116c1e9b3f7cf93cb6f2b575e9376c17365b968af9f2f1327044f74d4bf83a633813385338333873380b384b382b5d5f49fbd01a619bd3f9373f27b412750bce1ace06ce164ebca8d5d9c339e89a16e708e7a4709df3d73e38acfcaaf6c1b9e9e24a6bfc350e761dce5d2db2f380f384f3d231c9fa4e6daef3d6f988464eb1d238b04f3397bff6817e82f3d18105da5c271b23eeaaf2d2e6ea226e4f113b395561270fa7a09657555825e6db68c029c229e9c48f5356be8a72f9f51c8cc22f5fa7a2c2f8d8a9c2e123b1c5fc6c538dafd382d3d6359b4e4757b6385d383d387d38bcf750f93a2330967302b50f4e08278263c47c4d38c467c77c1ddddaa5bf45ddfeeddfca960eefb17fdbe47efb37c7d56df592fecdf1b45b7352707897cc6fffe68ad2a4ce2666819acb0f4dfbdac56d3370c7608fed4ee3d8a10b77a6643b71cf4671e7bffd1b7d5e976796aac2ee4a1153687ce930b86bb81bb85bd565aab0cb2bf7700f708f89c47cdd135c5e7ad1a962f7faaf7c15b17bfbf2e59932afbf2b5ff701f7a99bf7b9af2f5ff7fdcbd7658559b839b879b805b845b825b865b815b855b83535112e2b69c06dc26d295faba5ef46edb77162bbdb703bba5701f9ba44c00afbffe23fb80385dba07795d6836b5d52bd2f5f02a50a5373c997ca4bb854ea266f3ac4aaa531db238e7da9b07fe59bf80fee48cfd36830f0a5ff406f8c2aecfa8a5825801bc28d6259ab2e53855d03ae0986acae9d48327f617d937418535037fff46689f1256e35c757edf76aae1ed0fff5b66a7f95a62329030cab5c17ae2769f6d663dd0e22634a96374ec1e5779e8127ba97a237863781378537833787b700efe2ade0ade16dc03ad9b3793bb5b6d45f2f7e2757b602ef20e93dbc23bc13bc33bc0bbcabee2be0dde0dd75f19b77ffeaaf82fe37fd255f454c2890624aea4d35cde658c3626f00ef01eff9751bfee86fc297a6999d9ef782f786f78197859783978fa5f0f5cf4a7ca8a2aaf31fffcc2bc5ce994accd72b6bce03f9d23e7895d80e94e155d58bf81551b274dd3c46e586c61769135e5d7733daede035744da1d7d4ed28bdd6d75da32fecb5e175547fbd2ebc1ebcbe1a047da421bc113c1f5e002f8417c133e0b1420bd767c257f31f366f9db5da04f488414fd173e0b9ea9f791e3cde28ad69255e26f6cf5c9594a8979682ae5e4b8d919aa84da07160cfa69ddb54714ffbbf7c47f2d5dfd4f4d7f8a6664a999a4bb874d75273a41648f1fc4a1766926c6a8dd406a92d523b45fc7f11f75edb8eebbaa2edc7f05dcdd9d2a373ced96f9d929c73b6bffe02f2a89a61cdb5f7dd27ac530d4da5212b90dd300852242070bf7639bb37d983c91e4df6a44d5c24115f819b3dffd8dfdf7cc550642f2ab1828a18078d366f55afc56e64e5d39bc9de4df6a1cd5af619c5df896938ca4cdb64d56933d9b7c94ad1e5c179939562154db664b26593ad986cd5646b265b37d986c9364db665b27255c764bb825883133ca5ac3d93ed6b9e46e9146507263b34d991c90a38a9f354d7bc5da40033939deb427775d426e6b0d1f64d7e4f97aab66fd9b8ce1ac9269c62d669cae5c96806c951ad84701f0cf50d85d85f69dfa41dcba64c561e943159a1e19aac675c478d6fa7a3f14b5d8c6b8deb1b37d08173d9bef691cd5d1a37fcf12bc4ff7517c695232be3aebff22f7ce7919d15cfecdff0fdf698457f8dbb31ee5603c2b83b0d4e2b0a2bbf62f7203db79fc5c7eed1b827e39e75fcccbd18f76adc9b71efc67d18f769dc9771dfc6fd183767dcbc710bc62d1ab764a427e656cc7266dcaa66f35c5e34fd7b181ab766dcba711bc66d1a51345de25ed54106f1160e52b1b6713b0a5afc33b7abaf87c53f6b08919eaeab3a558ddb57c4ee40117f955a471eaeea9f8992bad178983b8a64acacc55d1b456fe3c52fd2aacd22b873e3c6d40f9b6575f9f6b79721ceaf5806f9358b6d7493c64d4564d35ff92b5fb1bf6e464c8176cf5c113792ecd73ea889703db512f3a5535f1bcfd1d851e2027be86a7931bb8bb9c634f2ac3abfd23ff67ce305c60b8db730ded2782be3c9c91be36d8db733dede780765ed1d8d7732ded978176ddfbcabf16ec6168d77375e9410fc9552bbe13d8df732de5b9757781fe3e574a1bb97375e41e3147a727e49675c6f86c62b9be5d9a9a97150cf6c5c325e45b7d2c590d641c8b65e725c1bb7c6c911abed55f5ed8370ecf6f565a5575311b7b7dcd0b7415edd780de3358dd7325edb781d9d98e3758dd753ca5edf7803e30db5e7e68d8c3736dec47872d5ec2b11df464e8daf748edb53b50095b3ba076201bcb98a9a82ab1ef1628e869a5b6aeb57165271e349b593c6132869e3658c27cf738de7e138e250386fd9010d1bede3043821ce026789a6205be36c70b65176cf3dce01e78873c2393b831ecec56c4738579c9b1397cbef68668027ce0be7ad2b58ee81699dcc49fefc3889318e2e7457b28b85336be3e44daf86537006317d3731ace214d5d40e7b5147ae20feb0be7313e56d8afbfcc6299b40ceafe0c899351d121b8ad991a2d6d1f0f24d9c96682e8edc595c80324e170d3fdcff524633a20fd1b4cc529209ba6a7446944150e4ebffd6156eabab8a19bf38a59d4a7d1d65b5a8e88e48632e8213d36c0cf52c1a6f591cf7249a02288de67e90832e8e28b3a388559f41636cf86888d4108d6ab844357c8d76fbb6e802c83de68006d2389989fc79d6e865ce5b175cd46298cb777e2aba98fc86ae177ea02b45e537ff36812ed1333b79564e27e954e5b43ca6a01105561574c265095336fd31a6a22fdbef5753954baae814e2baa9ef9d8c94ad817879fe444718a6134ceb27345c5c0ad946e71d75d137897da237bee83bc7b1a915301335b55929f91423d643fa4bd2a1973248b1e3687f4625e2abb3cabaa2bcd2c51125955e88e66011296d552a7b95083aea946784af531752d2428bd9f7502d8dc257cb7f9e0f16641b40080b58c20ad6b0812dec600f07382a5f4e70860b5ce106777898c95127e694debfe757c3135ef0860fe4200f0573971b16c5d442299ae7d0803254a00a35a8831c914f5b3ae3bc7931d5bc139307b541d45076baea21cca63af03896937b91f46100c34846308689d94915a40c33989baa9c198b240e0948420ac4d44a1d339005173caca33122edf7fd85c015fd8d9c5f81a3aa2a40457335abdbe66f5aacb642fe2c6fb016eb6303e76314a80db10be793c02eb12be793c2aeb172da16bbc3eeb107ec117bc29eb117ec157bc3de95af7d609fd897a966b1faca475f0397a5301fa71d333ba9e1189bc3e6b1056cf187affc0ca99869135b8a62a27735d471a768f652b732b682adea8cfe9adcbfa633ceab455d975209f4605d8a51c736c4b745bf21019dc6b6be88cd5dbecef1cf50af58de9994aaad537a456d6de7eb782962db8d104b957bd83e76801daa59b023ac147822db5f7c4b3a5b073bd5d42bc251d4f60bf7dff0c5ceb072237946dc1195b2f20cc1214cd35fbed84cf469d6894db12ed6c37734e6a7eaf719dfe2fbe690726243fc003fc45fe02f75c1717585bf12bef8eb3ff335abfb97af291ef037ba8448f8fa5bfc1dfe5e6342b6730aba57d1771375b9a79c763495a1c26d1ccdcec73ffd5a9a220f3d9bca14ff22a6565555c8fa57fc5bb4738f1ab486c0c57f98f81eff89ffd229e9d57a347673c47fe37ff0e5893d5d07506de0e7f10bd2a0e11795af5ffacad7fed6fe912f7e5973dc7c29ff3bbe7ec5f92495af5fc5affd2b5ffc3abe3cbe892f456fe377f0bbf83dfcbeb9088501bed4560a34c69fe04b9d67ff9b7cf1c53108ffccd789093b296a1c3ff145fce5ab0eef2cfe8b6ff237dfafadf847be11d914beb4e71335b842d676d538fc2ff055b8ff86afda073fa316c01782ee6fbee6de8b707ff98aca88dad64db947e0683601b1c98155be814f101084040b8225c18a604db021d83a83fe7fcdf76b1ffe996fb0fb836fb08ff82e4473ffe01b1c0814bada87e0f407dfe0fca3bfba73ff2236b1fd97afda07ff457051be819c96fee11bdcd444fc892fc1fdc73e085cb10fff05df1fe5cdc833cabaffcb4afc856ff0207812c8b3df486baec13ffec437c81314547f83224189a04c5021a822ce5020071b044d8216419ba04320d0e56be8ebcaa17134f1b4bafb4bfb160c0886ca376adf7ef84a6bf6ff83af6908d611c19860f267be0453d39bfef00d6604f31fbedacaf52313a1af82086204717512d46d982b621171c5820441524529ffc9fe0629b5bf41fa97fdd559391fe51b6494afe0fb6ff936e491590237e2eba9fefe23dfd051fd9dac088d7a13a175661b429f30200c0917844b42f9744d28c7b784bbff866fb857bee141231cfff61fc42c085f71a4fe6c1fc2e3bfe7bb34b507e189f0ac7320d52edd092f3f70c3eb8f28e59e0e3264c5431f9a54519bb27fc737bc11cab572dba77a66a2c2ca77f46ff92ad9f025f245fc97564e0dc52fbee1fb87afd887f0439853bea1902d1016956f58222c135608e5841a619db041d8246c11b6093b8452b81e619f70402804478463b512e144fddf88af98881fff2c9cfec157fddfdc0fdfdaee375f6ddffe916f38fbc537309549c4776e0629c25804341ec14d4464c5451b68181d51e188aff6d6c4d50d2e8449a2d7ec6a7943b936ad2288c38c9a88304b284c3c168e6af1e2eb9f8d7bd1da15699da62c8c5adb62a82961ff6c7fbf7cbf88bff6415cdb8565e1b308feccf7fb67e49fc947218b058b258b158b350bb96acb62c762cfe2c0e2c8e2c4e2cce2c2e2cae2c6e2ee0ca46e4fd15f160f11a73dd31892d1fa4d164f162f166f16f269ce2c13ea9fd95ffe59a9cf22affed932c6a2c0a2c8a224aa1a356b3155de4599458545550f2e6a5ffd655167d1f8d1df4553e507b1da87affeb268b168b310b7444a28df6247f996a576bd8878c4576cb11ae5e93fe82f0b29d980c590c588859463c262ea543651d65d213213f962fdb115a5b353144c73165293388b84da5ff1cf1622a9e8789a4586459685cbc263a90be5b49fb1b42c7d9601cb90e582e592e58ae59ae586e596e5ce145c967b0d2aab81ebd1f4168396346e4e3ccef2c0f2c8f2c4f21c2d6b1f21368116cb2bcb9b46e14cc9ce5d712f1fa63f60f944ba619595296559bef5559bee7c447445f64c2ecfb1ccb32cb02caaf15d9658965956588aa25cd41d5ed6a4d133f717cb3acb064bb9b33caecdb2134957cdf1b2c7b2cf72a0e662396429b71db394fd294bb9e734e2bb9c23dff952ea90701af24152faee2a8993d801a7249d37f981cc9dc49e654a8e185728a4cd531865584aa15d3508a2b36f41e9b172f48868f1ca68c76d6559f9ace4cf90d582d592d58ad59ad586d596d58ed59ed581d591d589d599d54513b3c4e3ce60cceacaeac6ea2eac593d583d59bd58bd553d571f5da2d6efb0cab192b67b1791bde94a9a957caae1f67ef477558a9cdfb8fabf1a5a20c5aa8c74a0575556b5e8ddf080559d55835593558b555b1d8955e7e75545428ada65d563d547cf1cb21ab192b2455d8cd59495706cab53bc9ab39223715609564956f2a0e8fd05ab34ab0cab2c2b979527c681f597ef4e1332adb573ab16598f5b27b115d6ac7dd6011a715a0e2e22fd959d25eb95aab31c59af596f586f59cb4df6ac0fac8fac4faccfca777d617d657d53beeb3beb07eb27eb17eb37ebcf4f30f5f8c25cfbac73acf3ce48ee56605d645d625d665d615dd590dcf334eb1aeb7a34f7bfc5bac1baa921bcb71e6bf9b3ad91031af2888ef6d6d65dd63dd67d39c87ac07aa8e364e985994e598f588f594fa21de9319f751b3f9b84a7c6c1b659cf584bad63ace3aaa46ba96392758ab51420c33acbda65edb171b467bc313a16b0b1b28df86e7c36019b90cdc291fef4465ff6b059b159b3115bbc1461b3d5948f2539b873323b367bedad6d0e6c8e6c4e6cceda8bdb5cd85cd9dcd8dc9dd79bcd83cd93cd8b8dec7fd8e4d8e4d914d814d994d894d954d854d9d4d8d4d934d834d9b4d8b4a3c44d25677267d361d365d333813cb1cf66c066c866c466cc66c266ca66c666ce26c626ae4abd49b049b249e9f84f454e4eeb1ca7ef6bcae8c50f9b0c9bac89497d5d1d441f88051f1a61b4f1d83a9ad74b77606ba3ad6f7a29b68178666c43b60bb64b1d1bdbaed4c86ed76c376cb76c776cf7dab3d81ed81ed99ed89ed95ebe12f1dd5ed9ded8ded93e9cbadc452e7e39c54047c0b6ef5ff2d1209eab996cd9e6d8e6d916d816d996d896d505de56d856d9d6d8d695f8b6c1b6f9c377db62db56fddd76d876d9f6d8f6d90ed80e4d461e37623b663b613b652ba59c472985b69adb6d17671b632bdb04db245ba96d9a6d866d96ad8b28e9ce31a2953bc30eb3759d81756a3e3b8b18845df0f3626d5cd59172d94e5eec42760b764b7d83d9ccab7336aeb35b0959f390fbacd96dd86dd9eda2ed9edd81ddd1a4657b6277667761776577637767f760f76427f77cb3fbb0cbb1cbb32bb02bb22bb12b7f25e2bbabb0abb2abb1938735d8351d37ceaec5ae1dd901159d927392839d68db35e7a49ada5def2ffafb8baf73b7ca77d757bebb01bb21bb11bb31e26689b395913f67ece6ec6208c15d825d925d8a5d9a5dc69ca50259cdf991e8ebc2f79dcbce63ef68ba38f17df796bdcf3e601fb25fb05fb25fb15f9b6e99fd86fd563537f562bf63bf677fd019bbc358b4ae6aa83b42b93f657fd4779771b9f0c4feaccb7d1e5d13bfb2bfb097eded4704eefecefec1fec9fecb51f6dfca71ff619f53a67bd92fb02fb22fb1973254d857d9d7d8d7d937641bf1dd37d9b7d8b7d977d877a58933624484efbea78823f9811b930acb39fd3ff8ee07ec87ec473ff6613ffe83ef7ec25e2a33633f672f28c78e34ebfb38fb04fb24fb14fb34fb0cfb2c7b97bdc7c141b3198aeb5dd79c35549d785207320f9683cf21e010725870587258a121a6ef1c3626f5e0b0e5b0337539b837fd21870387238793bea39c3cf435c46ba791877a737d0f246a2b709b399d38d28fe974dd7e4ae11ece1c2ed104865814ddb0a307c5381ce4a31bf22c51d2c343c91e9e1c5e1cde1c3e4af690e390e750e020fb250e650e150e550e35d9467c0f750e0d0e4d0e2d0e6d0e1de1eb54771cba2226ca99e7b8130e3d11c715ab2735ec6b5326f6e130109ace7ba5f6c1f007dfc350f91e46c2d7194a9dc71ce4cf29879949cbe3e61c621ce21c121c04628a439a438643d66c3b9ae7a394d65414d24d3ab81c3c8e8e263a3cc2d172f439061c4323b53d2ec42cfce62bcacb51ca7630dd3ac7d5dff9567ef195e359b9e79ae3c6245c8e5b7def3b939d9d8822d6d7ec11dce39ee381e3514dedf1a466e178e678e178e578e3287f3e5444a905faf1a96ddaf1c5f1cdf1f39588ef31c731cfb1c0b1c8516c4753da379df2e4c5a3f4217195f84753316cacecfcf03d9639563856d5fe7ef5f75853bec7ba1e11be621f8e0d8e4d8e2dd5df639b63876397638fa37c34e038e438e228974c384e39ce38ce8d58a7f9edcbd79948e963bff8c6392622be498e29d396a2a6396694afd8078de92fbf862dc7ac4e7caa9638ba3a31a7ddd419fd4256b4d595c779fa12fe175f9d299d96e76e15ebeb68c401fdf2fd4af6a02f7e4e8e26b03cc1c972f23905da711039859c169c9691ac38ad396dd46d386d55794fbbaffc7bbeb92887f19ff87e11ffc1f7b4ff335f4e87df7c9dbb94e3c8e9c4e9cce9e28c0b9cae9c6e9cee9c1e9c9e9c5e9cde9c3e9c729cf29ce48422a712a732a78a98054d68257cb31de57baa1a71ec84efa9c6a9ce497e6a5ba7b7e5d4fcf2752ac6a93bd2b239c38a91d66f674d456adbd2890d8368eab92016cd8daf7e4f2fe3d4d6779a115f350529294047df51caced74a08dce33ee2dbe5d4e324f51d701a6ac7f724951d739a28eeef7b36bfa8dcad1c99729afd977c4f734e51bc6f4d66e1fde6ab5372be8865a7f827bea7784433f1e5ebbcd3ffc237c9296596524af9ce339cb29c5c4e9e537d717694efd9e81ba2b3e5ec730eccaefd3fe2cb39d4e6ee2c8622c9792994355c4eb7c279154d405ffe4c8314d19dafa316fe0ff89ed79c37eaed9eb79c779cf79c0f9c8f9c4f8afb7c5611b7f77cd13133699ccfb7ff86af39741468c457114770ff908dff6ff99eef7fe17b16553d3bf2f33f3f390bcd37e70f67019a378922e70267d9963897390b8e2ae71ae73ae78606cbf847fb207cc53efce61bd9875f7c9b7fe13baaff2b5f55deefdc9cb4685ffbbfb10fbff93a3de57b6e457cdbff96af8e39484d3bffc4f7dce52c77e9731e70966b46c294f338ca3d16f11575fe2d623a7ef33d4ffe81ef79fa2f7c67ce472a3ce71ce32c774e20eec739c5594e164059ce2e678f8bc3c570e137dfbfb76f17fbc357fc30b1bf179f4ba07c75bb10f9edff9a4e4dfddfd8426795e9dcdec7577fb9847fe6fbbb7d53ac6e82cbe277fba68ddb6519bd7e8ff85e566a1f447f85a31807b11297b5f215e370d968cfe2b255fb70d971d92bdfcbe12bffc2f77254bed9d4dff84affe22be24d70397139ebe0d99ff95e2e7ff07d8cfec2f772e572e372e7f2e0f2e4f2e2f2e6f2e192e322752e28df8bf02a712973a97cf98a8950be17296b8d4b9d4be3cffe83a64a10cf49fc07f1cf2e4db5bf225ffb7b6999ca58edaf742252efbfdadff68f894807a6d3fff255ff4cfc07e17b54b58de640c6fef01f2e6d2e1d2e5d2ebd48612fd1d8588a4b9fcb20223bd426ee32e2223515c453f51ffec2f732e322df438c4b9c4bc2649a7fe79b4e2bd62f5fe3ff85ef2519d1fce1cb25f54f7cd35ca4da592ec2d1e3ea7035caf70a57cbd5e71a700db92eb82eb9ae8c3489eeeb87ef6ffff74f7c85a3f8675cd7cab7b9e7bae1aa9e83d88d6fff42d7adc502f57345792bd14c1c717e85f2d74afce2ab13cb06bff846fed90f5fb1c8dee00fbed71d5779ca41273608c7eb319213d733d70bd72bd79bfa6dd73bd707d7e7bff867d717d73757a9708e6b5e1d5e217b7ba8fd1587216ae27ef595557fc53e187193ffc6f75ae05ae45ae25ad623d70ad72ad71ad73ad706d726d71657296b876b976b8f6b9feb80eb90ab9c3ce63ae13ae53ad390dfadad46520f6e5ce79ac1e95936d2d9b9c6b8c6b9ca83925c535cd35c335cc55f4ee1949c6ea864db658de7f05a683087186a1c84a938bffdb84e7ffad5c5502b91cd7275b97aaca7dc1cb50c37a3f32f6e969bf4652e2a475dafc22de01672931396dab9b8adb8ad23d970db6ab76217752e6e3b6e72f281db91db89db99db45b611dfdb95db8ddb9ddb83dbd3a45adc5ec6a63531961e7feb2221e90edee4eeb2cd7393db15b995b8954d4fca54e156e556e356e7d6e0d6e426776873eb70eb72eb71eb731b701b721b711b739b70935acdb8cdb9c5b8c5b925b825b9a5b8a5b965ccb3e978150d1f57964764b9b926298ff0b83b9a24fd8ece1a912e8cd8a5bba8611d5335f32cf750a3184acb765f705f725f69589cd84aa7e1dcd7988ece9136731376b96fb86fb9efb8efb91fb81fb99fb89fb95f22b972bf4572e7fee0fee4fee2fee6fee19ee39ee75ee05ee45ed2aef0bdccbdc25d766adce5d10dee52b61677796847b611dfbb3cb2c7bdcf7da07ce372cd90fb48e7f30adffbd8c4e41613ee53ee339d247d9f738f396fa95e5cf9de136cae8e5629f917be77e1d53593347711b94a10b8dc3d1e8e26927fc0c3f2f079043c421e0b1e4b1e2b1e6b1e9b28bd5dcb24663cb6ba82655de3b1e3b1e771e0a12f78789c549ca22ecaaec9410d9ac3e3a2411ba4f3b61ef0b8f2b8f1b84770bbba4025f551ca66cee3c1e3c9e3a563928f378f0f8f1c8f3c8f42b453fc25251e657de5f3a8f0909bd714e2a3cea31149534718a43721066157e6d1e2d1e6d189e0767ecb976f8f47f787ef43f6fb3c06e83465cc6aca63f89baf26413719937e2116e021859bf0982adf872863d5796f79cc9d7ba07c1f311e711ef251d26ca532291ed26449a1333ca4c42e0f8fa7c3d3e8d4a7a7e5e9f30c78863c173c973cc5bbcaf05cf3dcf0dc3af115cf1dcf3dcf03cf23cf93112d7b9e795e785e4dc5fe856f22842ecfdb1f7c9f77e312816ef37cf0141d92dbbe78be797e78e678e67574fc598876463c8b919478967956b42bf1acf2ace990a340d49fff89679d67836793678ba7dcb6c3531edae3d9e739e039fc4ac4f73952becf314fb9d1d4aca4da339ef2bc98a830cfb8994bc5123c9346fa1a6ed22027a478a64d4bb61933d8eb80c333cbd3e5e9711868a7eee5f032fa4ef26579f99a2faf3f767a315e01af90d782d792d78ad79ad786d796d78ed79ed781d791d78997b0934f2fbcaebc6ebceebc1ebc9edabf78bd78bdd5268caa3af2704cf1fa68c427e1fbcae9d26cd15ff931bdf2bc0abc8ac254a7c97d95372e8f2bf12af3aaf0aa9aa6ecd778c93d1bbc9abc5acaf707ee2fbeafb63a0caf0eaf2eaf1eafbedad6d780d790971c1ff39af09af29af19af3920ac679257e4bc4f795e425a54cf3caf0caf2727979bc1d4dec260a2b70c502bfe16d75c2fa069d3e3dbf22f6e11d681cb92f5fe925bf43de0bde4be7319683bc57bcd78ef4dcde9b9e58f6f7d6f17d23bee47bc75b3e3d38e31bef23ef13ef33ef0b6fb9a71cb9f37e6856f2dad649be9d6c9bf793f78bf79bf787778e77de486fe85de05d5417ed5d52be8940d32e9562da73dbef7442c9bbac2bdec3954e86b4037d4f213b414dd312eb9ccf0661dc24073abc1bbf9bf45107711ee568d14f5227f88bc4752526ef8af27d5779d778d7d52b10c74bfa0eef06ef26ef96c27d4b213bfad15b2adbe3dde73df84ac4f73de42db788f4f72d2217cc78ff557fdf3155e177dc1857c7d222fd15bebc13621f94ef3bc93b85f8bf3aa216a8d1786778679d99dccde5edf1912feccec7e814c88f35bd1d1f9f4fc027e4b3e0b3e4b3e2b3e6b3e1b3e5b38bd6b665f9ecf91c743596b8cf9f239f139f339f0b9f2b9f9bf6320e7b6dd6a2b865aabf95f51ffafbb92b5f69d67e296fc477656cdfcc127c1e7c9e7c5e7cde7c3e7c726a707527ff4b0ac29a4f918f1c2ff3a9f0a9f2a929c7affe4aa749f4f7d3e0d3e4d3d28f3e6d3e1d3eddbfeaafd8df4f2fdaf6f90c4c561e3934a95eb46a706aa4bbf51969322c69d93e63752aacc367c267ca67f6d3be7de67c627ce27c120af723c54af149f3914b8491cbc723e790333af92667c9f9e4027221b905b925b915b935b90db92db91db93db903b923b913b933b98be3d5c85dc9ddc8ddc93dc83dc9bdc8bdc97dc8e59ce98c5cde34e4260568912bb271c995c895c955c855c9d5d4e0e6eae4c40e14d5a9d8cb9d9b3a3727d7d285eec2513a11fb67b4a8eaa00b804454859fca37d726d721d725d753f72bd727372037d4717469dfa443911be9b0646e4c6e426eaa4d5c6ef695886f6eae70652b7c7331e1eb78595dac1265dd15a6c257b1eeb65fbee4e2e412eaede692e452e4d2e432e4b2e4a4569ef38c69fb9677c81b9d479ab7e47df201f990fc82fc92fc8afc9afc86fc96fc8efc9efc81fc91fc89fc99fc85fc95fc8dfc9dfc83fc93fccb889dcdbfc97fc8e7c8e7c917c817c997c897c957c85731b2ad91af936f085fd3946b9be45b0a34dffe69dff29dc8f8467c9d6886a4f486f25d48ea5a2a2f5af1233b5929468f7c9ffc40ed437e487e447e4c7e427eaa4e587ea688f373e52b70a5439c8fe9b07a3e4e3e413e493e15495ab611df7c867c96bc4bdea3e09854978274d312fa9242275c5d34088117a76035159994b4e053082884141614966270b5712bac28ac296c286c29ec28ec291c281c299c289c295c285c29dc28dc293c283c29bc8c38008537850f851c853c8502852285128532850a85aaf1e448cd1ce46e750a0d0a4d0a2d0a6d0a1d0a52c89e46344c4821fb14061486d1ce88c298c284c2d48816176614e63a83a410d39d82d4224121a9dc0b290a690a199dc350c8ea0bf6829cef09561569368a8ece7310a742a7448e299ac8db2d51449db3a2a5e8530c7440a718aafe16171497145711e22fe5effbf9e29ae286e296e28ee25e5db1e281e291e289e259ed43f142f12aa22b588e31ed6b146faaa1f738c5bb19c8550f8a4f855b94c74837af68a67b8a1f8a72669e6281629162c919ca6965e3ca9f158a558a358a758a0d8a52dc16c536c50ec5aef22df628f6290e280e298e284af5a454538a338a738a318af2682958d2bca492298a698a198a598a2e458f9243c9508292a5e4530a2209292d282d557f4b226b9d985eda50da2a593226297ae3463a3b50d0df7924e254947694f6940e948e944e94ce942e94ae946e94ee941e949e945e94de943e947294f2940a5ff9d57f2b15299528952955285529d528d52935742c38fbd25e46a949a9a549d0c53a1ffac664d50e94da943a66b056152e7529f528f5290d1cf18b857269486944694c69e288d7529a3a81547246694e49ae9523094a494a294a694a194a594a2e258fb243d9e85cffb2a5ec9bcc9d724039a4bca0bca4bcd2f843e2e495d7943794b7947794f76693a67ca07ca47ca27ca67ca17ca57ca32c973f283f29bf28bf297fa40b67fa31cadf95da6335b5e23ff872799e72817211e93796cb942b2ae2b749fb56ae52ae51ae536e449eafec3429b728b72977287729f7d42297fb94079487bf25e25b1e511e539e509e529e519e5396c7c72927282729a728cbb333916429bb943d2a0e15a36b1dc4b7aff84887aa12525950595259515953d950d952d951d9533950395239513953b950b952b951b9537950795279517953f950c951c9532950295229512953a950a952a951a9536950695269516953e950e952e951e95319501952191951f6ca98ca84ca94ca8cca9c4a8c4a9c4a824a924a8a4a9a4a864a968a4bc5a3ea5035ba56a36aa9fa5403aa21d505d525d515d57574506443754b7547754ff540f548f544f54cf542f54af546f54ef541f549f545f54df543354735ff95886fb540b548b544b54cb542b54ab546b54eb541b549b545b54db543b54bb547b54f754075487544754c7542754a7546754e3546354e354135493545354d3543354bd5a5ea5173a8195d7852b3d47c6a01b590da82da92da8ada9ada86da96da8eda1ee9f2d68ed44ed4ced42ed4aed46ed4eed41ed49ed45ed4ded43ed472d4f2d40ad48ad44ad4cad42ad4aad46ad4ead41ad49ad45ad4dad43ad4bad47ad4fad406d486d446d4c6d426d4a6d466d4e6d462d4e2d412d492d452d4d29164a865a9b9d43cea0e75a30b67ea96ba4f3da01e525f505f525f515f53df50df52dffd96886f7d4ffd40fd48fd44fd4cfd42fd4afd46fd4efd41fd49fd45fd4dfd433d473d4fbd40bd48bd44bd4cbd42bd4abd46bd4ebd41bd49bd45bd4dbd43bd4bbd47bd4f7d407d487d447d4c7d427d4a7d467d4e3d463d4e3d413d493d453d4d3d433d4bdda5eed17068185d02d4b0347c1a018d90c682c61271c51a6b1a1b1a5b1a3b1a7b1a071a471a271a671a171a571a371a771a0f1a4f1aaf68fba6f1a191a391a751a051a451a251a651a151a551a351a7d1a0d1a4d18aa44da343a34ba347a34f634063486344634c6342634a6346634e2346234e234123492345234d234323fb95886fc3a5e1d174681a5dcfd4b4347d9a01cd90e682e692e68ae69ae686e696e68ee69ee681e691e609f1ea9b179a579a37c42b6a3e683e69be68be697e68e668e66916681691ce68b34cb342b34ab346b34eb341b349b345b34db363c218cd2ecd1ecd3ecd01cd21cd11cd31cd09cd29cd19cd394d39274e334133493345334d3343334bd3a5e9d17222d16995b42c2d9f56402ba4b588b64b5a2b5a6b5a1b5a5b5a3b5a7b5a075a475a275a675a175a575ab75f72a7f5a0f5a4f5a2f5a6f5a195a395a755a055a455a255a655a155a555a355a7d5a0d5a4d5a2d5a6d5f94ac4b7d5a5d5a3d5a735a035a435a235a635a135a535a335a715a315a795a095a495a295a695a195a5e5d2f28c50683bb48dae2c6b5bda3eed8076487b417b497b457b4d7b437beb0c3ab477b4f7b40fb48fb44fb4cfb42fb4afb46fb4efb41fb49fb45fb4dfb43fb473b4f3b40b9ae235902345da254d1f28c6bd5da65da15da55da35da7dda0dd8cd20fcb235ab4dbb465a7ab734f97d59f59a7ed1eed3eed01ed21ed91c914746224d104bd93947c4c7b427b4a7b467b1e89ecc468c76927682769a768a769676867b5ab261de2b64bdbd3ce5bc7d1ed6b46c7d0818ea5e37f25e2db09e88474167496745674d6743674b611d908aeeceb911d9d3d9d039d239d139d339d8b69ca6302f5c63a57339ed0b969fcc9bedced4ee741e749e745e74de7d3bbc9911c9d3c9d029d229d129d321a015d1e57a553a353a7d3a023c56dd169d3e9d0e9d2e9d1e9d319d019d219d119d3993849b9c394cecc884df0633a31b233a71333d2c407724e9c4e824e924eea67eef477d67427ad5e702743276b927289abeb86c50caed3ea2474bc08714c17b8769d1f91fd76f4b6ad6b90efa26b7590aceb6be7f872d08e7237d021b4d754b98b6bd10de92ee82ee9aebe12f1edae956f7743774b7747774ff740f7a858bf5bdd39d13dd3bda85e77af746fda61ebdee93e8c7c8ddd27dd17dd37dd8f065d1ec7644b374737af7cbb05ba45471aba6ec9ace42665ba15ba55ba35ba75ba52ac26dd16dd36dd0e5da9408f6e9fee80ee90ee88ee98eec4d037d213eb4ae56774e7cab71ba31b17c44e5698ca7e82755fe7a977933f7ca52bf19dfbff5d55217c056e5717047cf9e23f956f371dcd37f5e866feceb79b55be5d575fbc773d7a0e3df3c3f7b4d3555caf393dab0311a2d1c2b7e7d30be885f4165f89f8f696f456f4d6f436f4b6f4e4ca3dbd03bda3ca6fbebd93ea6feffc3fe5eba48c93ce3af129bd8b0933f4aef46ef4eef41ef49eceab46ef45ef4def432f472f4faf40af48af44af4caf42afea64e5772d07e5cc3a3da946d388b9efb5b82f756d45a4bf663610d0fa67af4daf43af4baf172d73edfd2ccc14c4a2ce42bcd7d7785bf797862312dfa33750b2bd21bd51a4c2b3688db694761cc94857baf626f4a63ac82b707b331d3cebcd7f10f7623a90a63b717a097ac9886cea2b5fbe697af280acda879e4bcfa3ef28d9be2a8deea8f27ef9eea2a54b56f9f67de956687cf088af19aeffe03b3dfc457ffb01fdd029c69c51d23c7cfa0bfa4bf5c0fa2bfa6bfa1bfa5bfa72e73d7d3928cf3dd13fd3bfd0bfd29707dd8d33a6ffa0ffa42f777bd3ffd0cfe9c4e97e9e7e817e51757655d161f57e897ed9645dfa15fa555de92a70fbb51fc4a2c2bdbe42efd7355c4e62af4bdad67135b2fd06fd6684781a2d238e642b6593cbdbf43b3af87b7cabe60a5c253bff19a51443f11ae98e742e846fbffb2f7cfb3dfa7dfa03fac35f7c47f4a54a13fa5345fce52b2658dab77fe14b7f467fae7ca553f467be7d297422e22b57a5ccc3d24fd3cfd0cfd297fa7b0c1c677c6560a2e53a9681cf206010325830582277909b0f360cb648177cb0677060706470627036e28a0d2e0ce4f25bb492b84e7852e283bba612cc66183c18e802205d2398ddfd20febd36689666f0d2393b655f8daf901dbc197ca29d5cd4ca894c74d6f420cfa0c0a0a89d341de16dfccc1df9cd77506250d67d413fa8fcf01d54bf12f11dd494efa0fec37720d7c8635a0cdaea2d086581abad5cc45744dc8041f79ff90e7a0cfa662cc8fa3f7c070306f2e0910984c898c184c19481947bce40ce8f339073e49e29065267e192652065f0183a0c4db492dd32f419060c43860b864b862b8d9b336a28dcbff195620c373f7ca51d13be430d1af94b85fb7fe3abeb52c42008d6fc48518ab60e7711e208ee70cff0a0f3fdffb7f80e8f3f7c8727e53b3c33bc30bc32bc31bcff85eff0a1f2af7c874f86af7fe03b14a51838b12c43518db4334a33cc31cc332c302c322c312c33ac30ac32ac319402088e26c3969ae3619b61876197618f619fe180e190e188e198e184e194a13c57bea49b13df0b5f234ef730c6501e9ad0e9398387c9bc35c0c097af68716c1f2d8c1faa8908e5b464641f1aca77bb62988a4c41c43782fb07dfaffe0ed33a31475f5b34fea77c336a7f8742c1d5f64df97a8c9c1fbe23a38110c45113bee257c8766495efc8279736c3ed97af999e18058c42460b23c51a2d7ef88e968c56663767b46624d76e19ed18c9090746474672d599d185d195d18d913ceec1e8c9e8c548aefd30ca31ca332a302a322a312a33aa30aa32aa31aa232a3c6a6afb366a316a8b52eb9b0b652d5775304d72f55f1165e5b95d5daa3978aa0b31ea31ea6bc448e9a38a9f20d6603450ca5fe3206677341451c4a391da5f69df466355e1d1e44f26184653f51fa47d13d5feda5f69df46b3bfdadf7b5f077f478220c628ce28c1484e9242a41965d4da8eb2ca74e446223b1e6347f86a046569dfa4bb3136ca772caef5d5b9079af9621c676c19fb8c03c621e305e325e395f18f8cd78c378cb78c778cf78c0f8ce5a05c7e667c412cf2f8c6f8cef8c1f8c9f8c5f8cdf8c338c738cfb8c0b8c8b8c4b8ccb8822f575519d7a2e46c6b8da3517b683482e6c748e7625c67dc30d9a552ce2e559dc5a3183719b718b775eda0301d771877c55bd0a581df364d7c0671cbc672669ff140d5d924180f198f749c773cd6915fa1fc7d79ac83677287890ea48da78c678ce78c6368f55522be63b93ec938c558486518cbdd5dc69e7abbe28d89c1fd6aee6f11c41307714927a87d9858333d32f199044cc25f7cf9e13b5930593a81ecac98c8c91b265b263b267b5dfa353930916b4f4cce4c2e4cae4c6e4cee4c1e4c9e4c5e4cde4c3e4c724cf24c0a4c8a4c4a4cca4c2a4caaba4868528bb6f5481a4c9a4c5a4cda4c3a4cba4c7a4cfa4c06d176c864c464cc64c264ca64c664ce24c624ce24c124c924156d1391a4996498647585d0c465e23175981a8d63b2bde8db8aa965ea330d54b5a7a1f63ea60ba64ba62ba66ba61ba65bd9467ca73ba403363d2098440da767a617a657a637a6f7a88bfc4ba68f489eba526efa62fa36d2719c7e547f67c679de99e6f4fdfc3da13dba699e69c1d957991699968c917b4ab12a4ce5488d699d69836993698b699b69876997698f699fe980e990e988e998a9947eca541e3d671a631a679a602a0f4d314d33cd30cd465b298f67c447de6f9939a67664669861a42b38b3465ad49965e6330b9885cc16cc961a345dbeb6d98ad99ad9267a4b74d7782f33b9c3c6c46ecc761ae93071500763b667766026b73d313b33bbe8eb8cd995999c7667f6d00928b327b317b337b30f33b9735eb611df5981599159494718666566156672768d599d598359f3974859db9174987599f59ce783595f6701dfe49201b3a1f2dd96f48de76cc44ce8c89d27cca69a9951aa3b1399338b318b339373a43229a4299f65986599b9cc3ce60e73c31ce696b9cf3c601e325f305f325f315f33df30df32df31df333f303f323f313f9b8a5c753152b0f9d5248c46adaf69901de637e677dd0ee34eec1aade5942e465bd315cb1719c6351e5f14319df9434517ba9c357bdbcc352fb9f953e7afcf5f6a97c556ccdfcc3fcc73ccf33a45555abf79411dbb79917989799979857995798d795db611df79837993798b799b7987b994a9a770e77de6835f328cfe1c29dcf998f984f994abe8e3c7b987fac2f89d623e633e57beb78ad107c798c79db5d04938f798b3953f93cce5b434f30cf32c73a99247cc2166a2984196986f56196201b190d882d892d88ad89ad80669a0623b627b62076247622753910bcfc42e08355a88c6c5eec41ec49ec45e1aa15abefbd89bd887582edae68915881589958895895588554d7742ac464c5c9724b186c84f78d4c4ea1bea97589358eb1b928f589b58875897588f583f9201b1a1b687b111b13131b9db94d88cd89c584cb611df589c5882983c20452c4d4c6a9825e6aace2ad6886fcc23ee10371a364910c72d719f7860a46ff6d5df5b9378487c11ad388c54b8245f7b9cf8d2f1c417793bc638fe86f88af89ab8ec6c11b7c9de11ef2a7e207e247e227e267e217e257e437eadf107f127f117f137f10ff11cf13cf1827648e245e225e265e2154d535aea9b459b78d55caac46b68d06c8d3069a4258c374c65a45bfda96932585d631497d2b6d453aecc89b775829a38dd71a9574767ac7e257e8c021f3ac693e35d9329ebaba3788f789ff8405b3fc11d1f6ac498f8485f2fddc2e8a3b14eb3d4b9c02a11dff884f894f88cb83c2c463cae0d5a3ca17ce3c91fd1fd88afaaf69ff84acfea175fe7b1fe83af1c89a722be69e219e73e269e25ee3a0729a247c22161a2d84b96844f222011925890589258915893d890d892d891d823163071247122712671217135979aa6994bdc48dc493c483c8d3325f132a5a2d90ccce34d42e4432217a579d44c84b2e59a7286159de35e779c6ec87da1f1e55a557d9d9cc89328d01ea9248abfa4a431d733059d08ecf4d52e7f0a24ca242a24aa246a1a45ea1b082251d7191409d9699268e932b944fb2b11df448744d7a4a5e852e83e890189218991aa6d62fc23825874393151139190caccd43e24e66a0712b1af7d705e4f127181ebdca349ab890409796acae9ca93d2243224b2245c121e49479a138d1d96b4247de384240392b25d905c925c915c93dc90dc92dc91dc933c903c923c913c93bc90bc529c3852c2e48de45de3af6b9ecd86e62eddf44dd82090ab1e4e3b6bf63ec9a7d3769de6d0a9c749be48be65ab6945a4c114eb9cfc90cc193141e2c369104fa298721d0d582d929413f21a6ddd95821548164996489649564856356c49b2a6512092759d35916c906cea4acfd32a0a51a012f14db64cfa4ab24db283de512ee82bcde480e4f0970c7ecc856cb56222639d16351ba9fd159aa7a3da87445c971bcaf15b458fcb379c9c929c919c938c39b6debbb924a59e099249922992699219e3de496649ca471e298794d1986d294bca2715900a492d482d49ad48ad496d486d49ed48ed4d4d4e3898204bea48ea14c999d485d495d48dd49dd483d493d44bc322a6de6c5db397fb7c34786a65a45dbe548e549e5441e3f769408df14f70390d8a36922e8974ff74097d141f463b23dff825b6af318dc294c6d7082e3fc7e5a0fcc852c568adcbe42b11df5449f9a6caa42aa4aaa46a6a0a36be624dd5493548357f107f1bba548b549b54e7bfe22b2622d525d523d5273570ac001a3a0bc1372235263521352535233527152315279520952495229526952125c85c521e6947839da40d69485bd23ee9807468b673d20bd24bb31989e535a5aae6866dbf49af34564cf5417a4d7af3c3371d859d94fdf40e5d061efb836f5a6e7e207d247dd21e87d7f8e9438be4eaca579cfc3ff3f573a4cf3f6641237e4b77e6f1133726b86a940221a9f18dfe937cd337d2d25865457f956f5aea297596babdd5eca63fa473ca7753249d275d202d3b25d265d215d255d235d275d2529f26e916e936e90ee92ee91ee9be393e3589a92689d5847aa407dad69526662bbf927794d8f8adb9775bd17e36291643f872d8911e6a8818e53bd2a457abc19ff88e7e890e5f10c47e1203d48a3ff18d22be1a733288107ff5f7ff1ddfb1735868fb969e447ca7a467a4450163a4e3a66ad538a4134813914e914e93ce90962352568f8c43c66864c78c25e39309c88464166496cad7bccc3dd46463b585717a2264a40bde26b326b331dba4ae9b3de9ea016dd0ae5b69d904b1347a64b664763a52d19693f7640e5fbebf112b6551deccf19ff98a2988f86ab68bdf7cc59110bee153df27fd47f966a4e9779d95d4f9ace1698309990b992b991b99bb235eb3c0cd3cc83cc9bcc8bcc97cc8e4c8e491b63b532453427ca3529a4c854c954c8d4c9d4c834c934c8b8cea2c998e792645c80814a12c0f1d706eeaa2a27ba8b3afcf555d00b3cd0862ede36586e20e9bcad4f1e4cc91c6aeffc69fb4ad5f5678fc138232bed3c0d4afc30f5fdbff1d9febcbf727be9170ff1ddf488347a5bff27f9f6f664c46804ec9ccc848e74cc8c6c8c4c908d3a4ce5ccfa4147146f065c864c9b8643cb20e59138db758b23ed9806c4876417649764576ad516ab31bb2db1fbed99d2056c9eec91ec81ecdbaeb545cb2a79f34c6b23d57c99e95f835a57e71ec63ea678d4f9bbd98514fe3f7f56b223a8c295835b8dc96ec55530d899b78b8aa9dfdc691d3507df97fe44bf6f6133f4ae05e8fff29bed9bbb3ed937d880a3b5bf953d0bcc8bec97ec8e6c8e6d1e8ec75b245b225b265b215b2c2a2861e94fa37c9b6c8b6c90abe2ed91e59b99b301d921d897dd0c85c59b9ed444594373b35fd2efb9539cbad6646b4555cdd2877b4fed91faa2f9c9d938d314c98ce886cdc0c136435f78222d691e228439674179944495ae43b4e0ac75f7110d3bacda6c426a846ff8edf17de357e9ff03d2dd40467857bea3fc33743364b56b4c973b66d6753c575708d46ca752dae6f96d28ea58cdde006b821e26cba4ba432d2257537e653c1dde2ee70f7b807dc23ee09f78c7bc1bde2de3478df37fda366807c6b92ee55d334f76273350878b7ae799c44d236cac75dd5ee46b7863885ee03a74c7ba89d37f719058c9ae8cb24ffa12296d769e9e8c4976f90fce12b1cdd97f2fdc69f74df7f898f78d9e8ba4e811bc90f5fa77a34d2fb743fb839edb9094437ff7f8aaf937f3af7a178be228e6d3bf78136716e01b7885bc22de30a41812e75ae6bac18b781dbc46de1b6713bb852871e6e1f77802b051be18e7127b8729319ee1c37664ae236c891b8ece0264cc332f5345f69f3e288b7e72675c4529a7b5a662097a74d5fb6723cab9d3757e07aaaa7df644de386a60410c914555e7b3c47e3cb47595954793d0da0ac9359cbe59f951adf8401d2450aee7856e7bb6b440895fffb7c3d1f2f10be8e2e3bfae82884717420c20bf116eaa2794b8d62e2adf0d6781b5395fd2dde0e4f2a76c03be29df0ce7817bc2bde0d4feaf0c07be2bdf0dea657c5fb98a3f4dfc678391df4f1f2ba68d62be015f14ad19be6ade93488e5a224dd2193a6060d5f55b01a1c1cafac1c13ab9fa4998278d457d10c175bcd64ec4a912a7ff0d5519eb646ab16bedf3c2ddfd19f30abef3b84ef69f98338d7fe0ff2fd8af255c1132e35bc3ad25e7b52c9165edb99c8f91dbc2e9eecf4f1067843bc910e077b826f8234d05a87395e0c2f8e973097b6913e88973455c12d0dce82f9c134e5eb1145cbe06535104f63a7d1c0cbf23817cfd3f8e0b59bbe7ef62fd6713463bc704cac3563b18820bea444ac632241f9268bd6b1246a42d63abe7502eb84d659e87a82efda0d3f6d9da57556ca5703751d94f2f6f09fe06b9db592dd0e544479393b2b29dcc63a5bebecacb3b7cec13a47eb9cac73b68ed4f96a9d9bdec57958e7699d9775ded6f95827679dbc750ad691da96ac53b64ec53a55ebd44c3d14b2d6a99b9adcad61a4cf66c5276b59a769ba0d9d3135907bca9f42a7639daec64f1ddc4d5620f694af00d5c46e0795282fb48a3b8f7232f4f53573b2188de0fc0b5fd1e8fd53f86a38c7f0f117be91fca7f8e63eda854bcb6703b1c2d6195a67649db17526d6995a67669db97562d6895b27619da4f311fa5279cd17639dac75e4120ff93e8ca3d1960cd6586b7c6b026b42e6c72f5f537d4acb66cdc29aa5352b6bd6d66c18dcac910b77d6ecad39d82897a7a99f34ab7c3665326f6bce4a737f349dc937a979843592dde2cbd79a8b70b4e6aa648d7cf7beb666e5fc374996ae9d138b217ccd5ddf875e86bfe53fc2d73c84af354f952f5fe97799b3355237399eb3266f4dc19aa271e548c99ab235152b1d3b53b3a66e350f8b506b59d3b646aadab5a667a384b6d60cad66681f6b26eec955a76e6baeeaa9d524b673abd94ae3510ea2a4d56473e24064ac6625727ff8ba4393956fc2fb83ef6fc4bba5d5d41dc60237f377bee6f6e5fb5d92f8075fecff53be1ad73eb08456831b48055696b565a3f6416312eeacc68f3b7ca394580dc973b11a21e26675b9bc94fe695e73ab2b6edf968fd58574794bc1523427d92fb16e5a5db351b13ae7bf66759ab9781272b06575e66cc7ea0cc89ea56feaf2b8c10f5f860a543a69def04f7c172a27395f9959e9ce7df90ad9d850b7be3c77a216e35116a74db9eb2bcfd92fbe9baf285fa7b2653113be96f9dff85a6202d7ea70bad8f88125a988e34992f2e094d511ad8c3887c257fc585df6964bff1e9f14be56ac91b40bf2abde8e359d83fef39dd843f9dac0dad05ad9595abbb2766dedc6daadb53b6bf7d61eac3d5a7bb2f66cedc5daabb53753985a7bb7f661edd3da97b56f6b3fd6e6accd5b5bb0b6686dc9dab2b5156babd6d6acad5bdbb0b6696dcbdab6b51d6bbbd6f6aced5b3bb07668edc85a29d844f557f8ceb2d6ca2366d68aa3168b5458cc50ec375f1d0489f8aa84d91fbe22dab8a973f6c3f71b34e6375f0d489bd88badb3366e6dc2dae885856aab9420a563ea8989ee6c7c6be5a48cb55912f2916bad27b8ac6f74407d5bd6ed3de13c86aabc2f479363c815beef2402a750b77e60fdd0fa0b677db2fed2d9ceacbfb2fedafa1beb6fadbfb3fede195cac7fb0fed1fa72ced94afbee5f9da47c7ab3feddfa0feb3f9df9dcfa2febbfadffb17ece8aee882af945eb97ac5fb67ec5fa55ebd7ac2f4f6c58bf69fd96f5dbd6ef58bf6bfd9ef5fbd61f587f68fd91f5c7d69f587f6afd99260411b2bedc3c66fdb8f513d64f9aa49c9cd2946319b973dafa190d6412e549a63dd324b19a6d68a26bbb5cf934abd37ffce2efe4383ff9719c8c86aa36aec072adefd920eabc89feea687a4bc40626daa21a2d6a67b336f06d10d820b4c1c206cb1fbe11d9487fb1c1ca794c6cb0b6c1c6065b6727b7ddd9606f8383b3ef3bd2fe04471b9c6c70366d63838bd541939a537edbe06645118287f4956df0b4c1cb0672f063839c0df23628d8a048b16e03f9b46c838a0daa36a8d9408e346cd0b48194b36d838e0dba36e8d9a06f83810da4d8231b8c6d20459ada606683b9d9c9cd633688db206183a40d5236482bdc206303a9a06b034f7c091b3afa72287d51273771fc99d49ebdb176bfebe5a4236743a39d8bf6f82796d43ff02d6a86424dc1227cc53c8a29087d1b06d13b37c786f2434eda7061c3e5cf1bcfd6dc862b1bae6db8b1e156adc1b6cc336bc39df3ded9706fc3830d8f363cd9f06cc38bb349d850ee7fb3e1ddd965ac3405e1d3862f1bbe6df8b161ce86791b166c58b461c986651b566c58b561cd8675671fb761c3864d1bb66cd8b661c7865d1bf66cd8b7a1947368c3910dc7369cd8706ac3990da56c311bca55f25029b6d43f6d4379a814cfb5a167178e5d18bb408dd3c2b78bc02e42bb58d8c5d22e5676b1b68b8d3976d8eda5af61175b931cdbc58e2021aafaff91f65ecbaee33adbeec5f05ce5285b87ce39c9513ed30b5b393adb57ff03f298b367afee2fed5d85a1921528f2191008500c7062384921b1dd1f40967c7eda1d43be5c30f7fa154ef65fe82ff375723897e2e3d05ae0167d1e58790bfd9d14fabbfee1bbb56dad291aeaf05db7ef2cb5daf3a97d1a70ee701e709e7697775e70de703e9a7fb13936765a70da703a70ba707a70fa70388b43382338633813385341eccc44319d391c0e8e79bb84b3122be19870d6703670b67076e275387b55e50c1ce058709845094e194e054e154e0d4e1d8e0e87b3d414b28e015783ab640114b6f92ec13dc13dc375e0ba703db83edc006e08379215785979dd186e52cc4b99b00a4b9b592515b21c1f336bb6186efa9dc9006e665f38855cd61ffa4fbe6d43a65a9f70f9739965b9f8f8f627dfa24fc99f7c37702f70af706f329aa5b710be41667f4a70ef70f9614fb82ffbc83fdf5acf84fb81dbd2de4bb86db5e2bb3a8574e1f6e0f6e10ee00ee18ee08ee14ee04ee1cee0cee12e447f5dbe6b059713e1d26ec404bb5bb83badce2cf6700f702db847b8fcac32dc0adc2adc1a5c2eb90eb701b709d780a7c153b26804d7a31ec13b81031ccf81e7c2f3e0f9f0027821bc085e6c47bc93c04be165f07278ec995de049fbe477e147f91a5f0ca315b8b214fadd6eafa49bcf5213eb1cfad284f667fd06efa65522e12b4b34715a7721e83dbe7d1ec43878cf1f13e1bd7efaf2987b786f781f782d78edaf7d80d781d785d783d75707cee500de10de08de581b99f02660e7df9bc19bc35bc05bc25bc1e3e36b78fcb82dbc1d3c4ef660f33be859f08ef04af0caf02af0f8d1357875783abc86720ce1eb35ed1ac332e06bf095ac26c53e884ff04f82d53fc377e0bbf03df83efc007e083f821fc34fe0a7e06ad6cfe15fe05fe1dfe0dfe13fe03fe1bfe0bfed4d15fe077e0b7e5b26058ef8fa8ea0dc2d7f6c427b655b9c5a97e5a7e9bd63c8a882cc96251afec6d7efc1ef6b9323fc01fca13d3bc01fc11fc39fb0af06762afd197c86c23958c05f0a77e6ebafe09bf0d7f037ca2a5c60ae48979cb92dfc1d7cbe80d3b1e073b2258d8dac5f86cfa971be6bf0ebf075f80df80cc240a02190e649f1d0d84b094e08ce081cd1dfc045e0d91bdef1110408420411821841225e73c06feb5e6ac220439023b820b822b821b823782078227821788bfe061f042d046d041d045d047c4b1fc100c11001273e463041304530433047b050f503822582956831bb6b0d7e96f9eb1346b1a6d3f86e1bac40571659718f2bc0e1446a3c19be61890a17f29d7fdd43b096e5b4830d82ad6d726e7608f6080ed29bafe8968ac0e29f088e22acca410941195c6b0555047c635d3a4258a6da734675040d047c8b815043a8648532f66b434278427846e82074117a087d8401c210618430469828af61b34d0c538499dde49d1ce105e115e10de1bd68aef46d8b937d207c227cd9cd31c237c20fc216c236c24e215d843df0fb140e100e118e108eed263f77624755845384338473840b844b842b8426c235c20dc22dd84f0ff7080f60f7313c222c212ccbfa22564306c34c39cd8aa034a4c613a351dd89cc66451faa9af486ff74c57bfb93af36d9d841247c437e3cc3b2d8040be2b08e5067c4081bf6cc2a7e36bf07111a8834444a9676e3802022ed7e42c47246e4803df3c843e4230ac0e62c8a10c58812f05b1665887244174457443744b2fe9b96f2950fb0c314bd10bd11b1d9698a798d5a88da6225a20ea2ae4c43e7fa5a7d237ca31ea23ea281988868886884688c6882688a6886688e688168a9066d442b4426a235a20da22da21d224ef980c8427444c489971155c0e8a31aa23ad8bd891a889a609f32d624a2ab6a123db30ac74a743696d5ecb8c69329416541f48ead6d2406e1d8f35c2d7cb883f4d32ee45ff88ac27ef9c6f4175f5664461c9ff8a0a8737c46ec2076117b887de98d9a0e11078843bb93228e10c7883943bc9f21cec155447c457c437c47fc00c79af10bf11bf107710b711b71077117710f711f319781531b211e239e209e229e219e235e14b244bcb2552cad4221276e225e23de20e612729ef7880f88f925e50c1c1197c0ee5d5c415c455c435c47ac236e20e622184834244ad6fde368312124272467240e12178987c447122009852f8773f548e662d79602970d4272fde1db48788b24929e965fbe1cd0fe93af2613bc2f91c4120dfe83ef8f0ac7a702740949822445922191519c4858ae486e48ee481e489e485e48de483e485a48da4838075d243d247d24032443242324632413245324332473240b244b31280dbea620c85a9c9848d6856c906c91ec90ec911c8a2f753df91f70fd9658488e4838578cf2a0ad39271524552435247524bac4dc490309a76620d5902a594891c3ef94909e909e913a485da41ef84d4a03a421d20869acb205584f99ef762d337ef2fbf7b5b65fbe56b35850faffc4374d7ff8b29e161daabf700b15beb37110becb54f8a699daf35b799259ba0e29d21ce905e915e90de91de903e913e90be91be907690b691b69076917690f691fe900acf2e908e918e904e9d46e71d96648e748b9544b6dbfd2764da42ba4a6dd3491ae916e906ec5b6a63ba47bf958d7e88a27971e905a488f484b02372d23ad20ad0ad6b486b48e5447da40caa919c834644a56a9e47a2b23cdec233b213b237390b9c83c643eb20059882c42c6efbc2d7c0fd6ff962f5771ffc11759a2754f7fe3cb6ec39f7cb3f4375fd168d6df2c13bedba6da16b3a0599cdd1cd905d915d90dd95d2aebec81ec89ec85ec8deca3c673647cb08dac83ac8bac878ccb3640364436423646364136453643c6572ec4ffcd96e20f642b710f3213d91ad906d956228b6820c621dbd9754e708fec80cc427654462a6f43c6392c23ab20ab8ae5cd6ac8eac874bbfe41c6c5692233906bc895fc77735b1a9172427e427e46ee2077917bc8b92ef5a451ed977d401efccd3efc9ed2f69f7c7f46d01dfe3bbe7f1987826f21f5ef887ae4a1bdc8597fbf7c91f3b363e409f21479863c477e417e457e437e47fe40fe44fe42fe46fe41de42de46de41de45de43de473e403e443e42cea59d209f8a92e63341c9af703e47be50363f62897c25a699ab35f61c54dbaef2a34de46be41be45b09d8f21df23df203720b39e7b384bc8cbc82bc8abc869c2fd091379037911bb868b828596bf5025c0897132e675c1c5c5c703076f17109644d69f61ffed77c8ba97cfe956f97d30d0bbe8dff862f2e913ddbe012e392e0928a7d60fb7bc970c971e19d2b2e375ceeb83c7079e2f2c2e58dcb0797162e6d5c3ab8740531d742971e2e7d5c06b80c7119e1329656b4cb0497292e335ce6b8b0ffc4b72f0b772d552b3ebb929f1753d36f52b9b175beac71d948f3e6656b73c575d9e1b2b789491d70b17039e252c2a52ced70970a2e555c6ab87011f8ca86345f5c380503574dab6f7155b2a2ed15b812ae275ccfb83ab8bab87a3f7c1bc95ff59b31b01bd5bfd56fac9557ff7fc1f71ac8f0c172a570c8f41facbff8cac12b5f13e11ae39ae09ada7bd8ad2aae19ae39ae175cafb8de70bde3fac095ff9f2b5c5fb8be71fde0dac2b58d6b07d72eae3d5cfbb6e21406b80e711de13ac6752210af53a538fd9968ee65c628d569c1646dcd5574fa822e1601e792cf4579f9df60c7b631c57581eb12577ea289eb1ad70dae5ce61dae7b5c0fb872ce8fb896702de35ac1b56a37e6b8d670ade3aae3dac0b589ab819b869b9275836fc08d703be17616beb1d859dc9c1ffb5bedfcf61fec34fe4b7fd935e64079b5fb3d82b9a8df2a068718b26a5e95537771f3447f05ee2fbe375fa4f0d2700b700b718b708b6de7c461056e2c296e196e396e17dcaeb8dd70bbe3c6173f717be1f6c6ed835b0bb7366e1ddcbab8f58a9d3e6e03dc86b88da4f3a4aee336163b706313b112cab7296e3321dee4ff16efcf6d39bb28b64bdc56b899b8ad95d3b477fcac0d6e5bdc7685ec713be066e176c4ad845b19b70a6e55dc6ab8d571e30771a19ab81962d3ef1aee0a775bdaeeef0476e4ef67dc1ddc5ddc3ddc7de1bbd817bdd8d7225ccbdd1c99fa3e4abf70a5f76a95dd2d252dc51c435746455f1391826fe7ac352ac59ab13aee32b3c68f65e098ed1ee21eb188d160bd66d7d8e44cc4b827b8a7da63a3d63eee19ee39ee17dcafb8df70bfe3fed01a9ccb27ee2fdcdfb87f702fe0de593a3f88b954aca16c61ef5d9bebbd7b0ff73eee03dc87c5886f2ef088635fdcc76213ee13dca7b8cf709f17b519676c813b1f5fe12efd4e7067d9e0cea9ed70e7bb0eb8f33547dc4bb89771afe05ec5bd867b1d772e6303f726ee061e1a1e4a16b77e000fc2e384c7190f070f170f0f0f1f8f008f50554289328a19c3f188587ea60e67d6bff84a88c1dafd88656c57f959d47232a15ac1b755c32311fbf048f1c8644e0d098b21b3406c1e3f63e6657077a918bc690bdf47ae7d9acc178f0b1e573c6e78dcf178e0f1c4e385c71b8f0f1e2d3cda7874f0e8e2d1c3a32f35fb83ab32c336f6780ca5367f8c8aed188f091e5365e678ccd482cb36c76381c7128f9576ad2a8f8b6de2b1d6567d6dc385dc88957f6cf1d8e1c1491df0b0f038e251c2a38c47058f2a1e5ca83a1e3a1e0d3c9a7818786a782a5927fc093c09cf139e673c1d3c5d3c3d3c7d3c033c433c233c633c133c533c333c737bfdfa31118c58567cbaffccce5eac3150aca1137f71e379b1778b9f66b6628046617f9f573c6f78def17cd80b4ef4291c17fcb0179e6f3c3f78b6f06ce3d9c1b35b6c7b78f6f11ce039c47384e718cf099e533c6778cef15ce0b9c47385a789e7daae701936786ef1dce1b9c7f32076e369e17994f6c367c93603d1be6719cf0a9e553c6b78d6f1d4f1e4b3cd62e5f4a2ae67af965f8ea78197264c5f0a2f5b3ec2bd08af135e67bc1cbc5cbc3cbc7cbc02bc42bc22bc62bc12bc52bc32bc72bc2e785df1bae175c7eb81d7d34e0ad7edf5c2eb2d5ff65e1fbc5a78b5f1eae0d5c5ab8757dff6775f17ad58c92154b3a94c80ff4ba3c58133363fac5b3355befdf454bb2c785bf07d0db46659f8be86788df01a8b07f69ae035c56b86d71caf055e4bbc567899c5768dd706af2d5e3b6dc499e6d21ef0b2f0e2bb4a7895f1aae055c5ab8657dd4e2acae2a2ea7835f06ae265e0ade1adf0b6e5fbe49bc0eeddfb8cb783b78bb787b72f2106ff1bde01dea17c7a784778c7782778a7f669887786778ef705ef2bde37bcef783ff07ee2fdc2fb8df707ef16de6dbc3bc57e17ef1ede7dbc0778f3bd23bcc7784ff09ee23dc37b8ef7426cf77b89f70a6f13ef35de1bbcb778eff0dee3cdd9b06c6fa62a8184181cc59935bc8baf9f7122acbf9ff40bc1bb847719ef8af458052728fd2affe0fbe63bb930fa2fbee61f707ff17d378a6d136f031f4d99848fc2c796cfb81f9230ec73c2e78c8f838f8b8f878f6fb381fb044ae3e3213e113e313e093e293e193e393e177caef8dcf0b9e3f3c0e789cf0b9f373e1f7c5af8b495c55776f0e96a86864f0f9f3e3e037c86f88cf019e3c34f9ce233c3678ecf029f253e2b7c4c7cd6f86cf0d9e2b3c3678fcf011f0b9f233e257ccaf854f0a9e253c3a72e9ff2d8f9fde8f834f069e263a0a5a1a5d0b2e5c3748bd03aa17596118755f5d341eddb8dea2be257c43fd66336854cb73b13efed5c934fcee7a27f2a5a2e5a9ed62cfdf06df93f7c7f1b875680562896a115a115a395a095a295a195a37541eb8ad60dad3b5a0fb49e68bdd07aa3f591169616dfdb468b6feca2d543ab8fd600ad215a23b4c6684dd0e23ccdd09acbd7a0d602ad255a2bb44cb4d6686dd0daa2b5436b8fd6012d0bad235a25b4ca6855c04e21571bad3a5a9ce1065a4db40cb435b495aca2de06da84f609ed33da0eda2eda1eda3eda01da21da11da31da09da29da19da39da17b4af68dfd0bea3fd40fb89f60bed37da1fb45b68b765a1534bffe960f9a5fcc52ded121711de89f8291d5161ef2acd98d52e6fffceb7ddfd8baf98da7ff015c4b1e86fbb87761fed01da43b447688fd19ea03d15beed19da73b4d9fab458d05ea2bd42db447b8df606ed2dda3bb4f7681fd0b6d03ea2cdcf2da35d41bb8a760ded3ada3ada0db4f929063a1a3a4a569def001d42e784ce191d071d171d0f1d1f9d009d109d089d189d049d149d0c9d1c9d0b3a57746ee8dcd179a0f344e785ce1b9d0f3a2d74dae874d0e9a2d343a72fdffc3b037486e88cd019a33341678ace0c9d393a0b7496d22ff8375f41ac7ef8f2f6cbf78bd8ac71ed87c014152ea4e0db59a9c6cd0e5cd1df8e59d887d27fea6f67fdc397a5b311fbd0d9a2b343678fce011d0b1dce62099d323a1574aae8d4d0e1d474741ae834d131d0d5d055e8dab6e94b57902ea17b42f70cf65bba2eba1eba7c3c4037443742374637413715d0dd0cdd1cdd0bba57746f82b87b47f781ee13dd17ba6f743fe8b6d06da3db41b78b6e0fdd3eba037487e88ec016a03b41778aee0cdd39ba0b7497e8aed035d15da3bb41778bee0edd3dba07742d748fe896d02da35b41b78a6e0dddfa4fd7ebfa41646bfea5c855f5237ff095304f06238afc9d6f5747b7f1c3974ded5fcafb77bedd26ba067a1a7a0a3d5b3acdf408bd137a67f41c819b1dd173d1f3d0f335aedc7a8154f43dde89d08bd14bd04bd1cbd0cbd1bba07745ef86de1dbd077a4ff45ec5cebb904f21ad1f11d07c7d1bbd8e80ee75d1eb15d2476f80de10bd117a63f426e84dd19ba137476f81de12bd157a267a6bf436e86dd1dba1b747ef809e851e67b5245f4ed9f9ed95d1aba05745af865e1d3d1dbd067a4df48cff135f69a6f81bdfbe86beb283e02fbe1c62fcc9b76fff8d6f1fe813fa27f4cfe83be8bbe87b02b7efa3cf957e8a7e887e847e2c88fb09fa7c24433f47ff82fe15fd1bfa77f41fe83fd17fa1ff46ff837e0bfd36fa9c7817fd1efafd1f61e2fd81c897787f58c808fd31fa938238a73c457f56c81cfd05fa4bf457e89be8afd1dfa0bf457f87fe1efd03fa16fa47f44be897d1afa05f45bf867e1d7d1dfd06fa4df40d0c340c1406b674b31a1006270cce7ff1fd5a8950fd6585ff691ffe3ff265cbcb70070e062e061e06bef01d041884184418c462197abe7de6530906290699b4790f720c2e185c31b86170c7e081c1138317066f0c3e18b4306817c2297731e861d0c76080c1b0901106e35fac077fb11e4c7e58b3760fa618cc309863b0c06089c10a03138335061b0cb618ec30d86370c0c0c2e08801e7a72c7cf96d185430a86250c3a02e5662a063d0c0a0898181a186a1c2d0966e6c43c2f0f4c397e1b25c6a3f7059d86ffb07df7fd887ffe03b3cff0bdfa1f317dfa12bedbf43cf66ca431fc300c310c3c8cede18c6182618a618f2053986170caf18de30bc63f8c0f089e10b43beec83610bc336861d0cbb18f630ec6338c07088e108c33186130ca70297b7c39908c3fd6ebf947f6c08a739c77081e112c3158626866b0c37186e31dc61b8c7f080a185e111c31286650c2b185631ac6158c750c7900bdbc4d0c048c34861644ba7c0116174c2e88c9183918b9157f0f544aabfaab5af2ffc751e387afee5a2b1472c01f47fd66fffca97fddcdfc6f73ff83e9f18f918051885184518c5182518a5dae18d51068e3846178cae18dd30ba4b9bfae88111dff2c2882ff860c447da187530ea62d4c3a88fd100a32146238cc6184d309a62341361b8a3f98f0cff1081fb4b460b8c9618ad3032315a63b4c1688bd10ea33d46078c2c8c8e1895302a6354c1a88a510da33a463a460d8c9a1819186b182be9d026d3a80163c2f884f11963076317630f635f46bf7c5d609657fc97ffcb71dd17eeef009add4deffa3ff15d25ff1d5f96718071887184718c718271aa31be7186718ef105e32bc6378cef183f307e62cca7de187f306e61dcc6b8837117632e4fbf9001c6438c47188f0b2bc14726184f0b9915322f6481f1f297acfe12463f36315e63bcc1788bf10ee33dc6078c2d8c8f1897302e635cc1b88a710de33ac63ac60d8c9b181bc277a261a284efc496beac13c2e484c91913071317130f135ff8d65ad211edb71d28e2b79fe0a26adba7928ca1fd46ccffe4abca3d4c024c42e13b8930896d73274a3a4930491114336efc21986498e47670c7e482c915931b2677e95a3a7960c277bd307963f2c1a485491b930e265d4cf8117d4c06980c0b196132c66482c914931926734c16982c3159616262b2c66453c8566438fd4f5d66d693dd8ff0cfc91e9303261626474c4a98700e2b985431a96152c7840bd5c084511a986a982a4c6de9133c254c4f989e31753075a5c5976b8ba987a98f698069886984698c6982692ac6b79cfcd8dfdf21c69ff51b5b896549e28b16a796b109965a2e7e14fd4b3c7e70cea2f16b3ebd607ac5f486e9bdd8de8aa9b80a592f456da70f4c9f8ab572fac2f48de907d316a66d4c3b9876a5a7deb487691fd301a6434cf9e718d309a6534c6798ce315dc8f785e912d315a626a66b4c37986e31dd61bac7f480a985e911532e6a19d30aa6554c6b98d631d58508577dbc231679fe4b7f179836306d626a60a661a68a51c4c08c303b6176c6ccc1ccc5ccc3ccc72cc02cc42cc22cc62cc12cc52cc32cc7ec82d915b31b6677cc1e983d317b61f6c6ec83590bb3b6cc0e717faabaabb62b194c1be7f62997b5bfeb16661d1659a7ef47b66ac52152c70e39922cea37adcfee06e786b52cb06f7c75cfbe71ba7dcc06980d5964b5160e4967a342c636bb44b389bde7624c319b6136c76c81d9527b54a46be96c859929b1b23bd42e7ce51ab30d665bcc7698ed6585c7d90133ced611ec65cfca9871ca55cc6a98d531d3316b60d6c4ccc05cc35c616e0bdf393027cc4fb215dc35e1cbca3b3f8b5ecf1dcc5dcc3dcc7d51db798079887984798c7982798a7986798ef905f32be637ccef983f307f62fec2fc8df9475adfe72dccdbf21965dec1bc8b790ff33ee603cc87988f646d337b8bf9f83b758c20b657c2f717e2df7c5539ffcb7b0bb5c2fece272cea98dbe7b7ed36b53767745a086b424d84462c98cf59a4d3ec7c810f177e69a7fcf815e626e66bcc37f69aa17026b8d87bcc0f985b981f6d8fcb59c2bc8c3997810bcfb0ea98eb9837306f626e60a161a1b0b0a5fbfe82b0386171c6c2117c0b571476e161e16311806b5d114fe4cb771109df458c4582458a4586458ec5058b2b16372cee583cb07862f1c2e28dc5078b16166d2c3a5874a5ca5df4b0e863c18f18623112be8b3116132c38cd1916732c16582cb158a9a62563919bb05f4359d84c6fcbb87abda32ac65ff1c52f5f426cb14cf82552f05d9858acb1d860b1c58233bdc7e2808585c5b190d2dfa50c991d3a477251cb0616552c6a58d4b1d0b1e09f4d2c0c2c352c1596b67d9eca67c725b0242c4f589eb174b074b1f4b0f4b10cb00cb18cb08cb14cb04cb1ccb0ccb1bc6079c5f256f867732cef583eb07cfec597f5972d03f35dbe8a0bde587eb06c61d9c6b2836517cb1e967d2c07580eb11c6139c67282e514cb19967cfd02cb25962b2c4d2cd7586eb0dc62c9a9edc54a2c0f585a581ec1f67459c6b2826515cb1ac35539df52c7924bd4b09f2f651403e71abe48c593b9bd2a9eaa70b99ad25cb934785bf05d69aa9960a5b0b265f4c78ab03a29a3614397c1337f17acce5839f2e5cd3c61e562e561e56315601562156115837d8f558a5586558ed505abab8c0b5cddb0ba63f5c0ea89d50bab37561facf8781bab0e565dac7a58f5b11a6035c46a84d558ec03b36313b19a148353821f13b19a8a305c46bc9a898eafe6582db05a62c5474cacd6586db0da62b5c36a8fd5012b0bab235625acca5855b0aa6255035bc9958e5503aba606ceaa015383a964a0b60998042ea07986e9c074617a307d9801cc106604338699c04c6166307316d66e9817994c468684f335d7efb6f01fd2aaaacdb5464da126efbe79837987f980f984f9fa87bc617e6ca76a6ff86c0b661b66076617660f66dffe70b60630873047f2dd2ce02c8e614e604e61ce60ce6172fa4b982b9826cc35cc0dcc2dd85d31397f079816cc23cc92185666679661560a85d585ac5915f94677664d10cb3575d16e5387d980d9944ad234b0d6b056c5074688415f13d6273123eb33d60ed62ed61ed6bea4b60eb00eb18eb0e6b309d629d619d639d81d5a5fb1be617dc7fa61b717583f8b550f07b2d459a583f5cb564b99384d6632e07bdf5f91f9a6d874b06a1752e8effaa3194759cd1425ac5b58b705e2a28235a7d2fdbbf0911ed67dac07580fede54b71d5b41e613dc67a82f514eb19d673ac17f23182fd8df50a6b13eb35d61bacb758efb0de637dc0dac2fa88353fae8c353f8813a9615dc75ac79a7114f51b5bf38d868d12b8acc2ec3cb0daf23ec3ddd8a2dd1b6043a2c59b1336676c1c6c5c6c3c6c7c6c02a1b909b189b0e19d049b54eeda64d8e4d85cb0b96273c3e68ecd03ac289b17366f6c3ed8b4b06963d3c1a68b4d0f9b3e36036c86325f305768a58c059b11d76936dd8a651ff8ecf8b7d8de44c4dfcbe4cd8514fe43f3208b38790775e58c32a68ef6a9ca92c6277edef4b7f04f1154b1996133c766611f2d6c96d870094d6cd6d86cb0d962b34387b3b5c7e6800d5f70c4a6844d59da5036156cf8f61a36756cf867039b263606b61ab60a5b5bc6a36d09db13b667a9bbb60eb62eb69eb4dd7c2b3a46cc7cf9201be8ad8f6d508c620bb1e58b636c136c536c336c736c2fd8f235376cefd83eb07dca3faceb61fbc2f62d88b71f6c5bd8b6b1ed60dbc5b6876d1fdb01b69cfe08db31b6136ca7d8ceb09ddb5c8d6f17d82eb1e51d93c53e1db15d63bb61b15dbe71cbdb626787ed1edb031e9caba27f8956fe08dc12a7c8afe787fd07fbfcb103cee5f16ff21bf499b355c2b68c6d05db2ab6356cebd8ead836b06d626b60a761a7b0b3b163939d6147d89db03b63e760e762e761e763176017621761176397609762c757e676f986dd05bb021f575faca73b3e72c7ee5128ef00bb27762fecde62a3771fb966309256cd5d4beac05d1bbb8eb460ecbad8f5c471def5e55fb5e31b87d88da4ad6ec76727c27737c56e86dd1cbb05764bec56d899f28968b7c66e83dd16bb1d767bec0ed85976a784dd11bbefb66c7395beab60572da4865dbdd8b2e88c5eb4bbd816f6b7c60f6888fdb575ec9ad819ea98a95b2e6e99531629fc33fbd4fa8abaaf6466cfb6060e3ad8f6ed95e23041664b02f684fd09fbb3f6b861ef60ef62ef61ef631f601f621f611f639f609f629f619f637fc1fe8a3d5f7cc7fe61eb1f69eade3fb17fc9bbbf7fcbebbfff60df2a4c842ebacceff86fbefbb6b09366cc17f61d69a864befb2ef63decfbd80fb01f8a1fc2d7ec473f7cf77cd744dacff653ec67d8cfb15f60bf94ffeb9e9f6562cf65d960bfc59e73b2c7fe80bda52c4b6d97c56a1a25457b592db5eec83ce3320ddde697fc4ce9a536159958915de372f85dff8d0b70b4bb5cce12f665ec2bd857ed90b352fb2d76cad9ad8b09deebd837ec073fbb5896812b87bd81838683c2c196e1a507c2e184c3190747fa4306fcd3c5c1c3c1c721c021c421c221c621c121c521c321c7e182c315871b0e771c1e76a78dc31387170e6fa9e2b81e93b6ca7161190abe1cda1d3e38b470e02b3bf23fe0b36c3a0e5db1128c983d8d430f87be5cffe5cbfa7b6019e230c2618cc30407be7e2635de618ec30287250e2b1c4c1cd6386c70d8e2b0c3618fc301074b264ab477f6f32ed21ab1e070c4a18443b9580751847d3896c24de6a757c47f387cbfbf1daa38d470a8e3a0e3d0c0a18983014b83a5fe105bc6e55a04eb04eb0ccb81e5c2f260f9b0025821ac08560c2b8195c2ca60e5b02eb0aeb00a45b6eeb01eb09eb05eb0deb03e9ab381d582d586d581d585d5d3d8f0b119b1fab006d2cbdc1ac21ac11a8bb55d145658e016759435813515c4d64c4c8435978899b59b3d65e66b2d602d61ad609945485d381b621f0ac4d61a163f7a2bfa6bed60ed611d6059b08e62c1ac12ac32ac0aac2aac1aac3a2cce490356139681a356882ab676b18342a8d89e8aed1947074717478fb705dfa38f638063886384638c6382638a6386638ee305c76bb173c3f18ee303c7278e2f1cdf387e706ce1d8c6b1836317c71e8e7d1c073872792cbbcde98c701c6bcf9ef46e3a4e34e214a638ce84f2718ee302c7258e2b1c4df9487e5ccb50a1e306c72d1e7cd90ec73d8e077015ca7c8fc75fca5bf065cb20facb19288989182fa515e258c6b122ca7bace258937e24c73a8e85c966ed3e36706ce268a0a4a1a424cd92cdee124a84d209a5334a8e16f0968f7b5285947c940294429422b0fb554a504ac1ce83488ed205a56b21b742eec5f6516c9f28bd507aa3f4e16dc1b7d442a98d5207a52e4a3d94fa280d501aa23402577ab265991432456986d21ca5054a4b9456289928ad51daa0b4456987d21ea5034a164a47944a289551aa201f481fc85255fa45976a28d551d2516aa0d444c940594359a16ccb6896325026944fc2b77cfee1cb6f375b098e35183157775cef959dc238b4846fd91576bdbdc02d7b28f3d900e510e548f872e8518e8b26a1a9085f39d9a29c88052fa7286728e7285f50bea27cb339def1749cba28dfa5235af981f21365bef28df20765ce5efb977450e6cb7a28f7511efc5d86288f501ea33ce16dc1b73c45798632676581f212e515ca26ca6b9437286f8b2dcbae903dca07942d948f2873d9ca2873a9aa28d750aea3aca3dc40b989b2818a266bcdba1d546c54a0dd8b41421552d15dec72e584ca1915de71c191e588f77db8336504a8b084a844a8c4a824c2b7928a0560e1d79c8d6925432547e5f2c3974d70e58a0a1fbf0be2ca0395272a2f54dea87c846fa5250df695b6341b8d66e0d0a0d245a527f6a1d2476580ca50ec436584ca189589a638f35331c715be986f5fa0c2fb2b544c54d6bf6483ca1695dd2fd9ff92032a9cd41195122a65de167c2b9cad2a2a3554ea76c2a9e8a870705cb54f6f9182907de6623459643fed6b77477b7d503150d550557c2dbbc5dabb8a2aa17a42f58caa83aa8baa87aa8f6a806a886aa47168578d85663541354535433547f582ea15d51baa77541fa83eedb882ea0bd537aa1f545b6282ab6d543ba8760be9a1da47752088ab435447d25e51e56b26a84e519da13a477581ea52f497295757d2e181f97e1133dfaa2926a5ba467583ea16d51daa7b540fa85a3274a07a44b5846a1955ce0697a8866a1d55dd0eaa3273d2be2932e6223464461a917321c4826a53e6cd9ec66a1a7da5e05b35a441bda64122645b191c44756c1ada5f6c3528a3c1821a157242ed8c9a839a8b9a879a5f48609f1ea885a845a8c5a825a8a5e2e870d876dc09af5a865aae6daaca69a27691812bb5abf238cd1b6a776dd9438d6f7faacd4de3f7aef692a9766a6fd43ea8b5506ba3d6418d8ff3657dd406a80d511ba136466d82da14b519d8c5e468825578bc1023505b883161df915598f92e39a9256a2bd44cf920c22e736d2d3687b5b8b6416d8b1a177f8fda01350bb5236a25d4caa871b6b9f835d4eaa8e9a835645af7c959591335f5d5792a92c46aa0c9cfaca5f657358a6defa38e25b5bf7de5bb7e0067baf99baf6d2b8e3250330ab8240d3d5a03750d75a5bd0d76dd98af0dc7261d75dbf63d8935ea60dcda9d506739a17e46dd41dd45dd43dd2fa63fec4366e3ada01ea21e49f7c8c742eb64dae225c35aeab1d6f6b4093f25413db543199c2581499d2547fd82fa15f51bea77d41fa83f517fa1fe46fd837a0bf536ea1dd4bba8f7e443e764837a5faccab8f01fbefa5b1fa03e943e25f5917c6a6223531fa3cecf9da23e437d8efa02f525ea2b7b7d92aec17513f535ea9cd416f51dea7bd40fa85ba81f7ff87a43d4b9d425357ca8bec13f1931ea659937902f38960b151629f4b75ef98b6fbdfa9bafa86abdf6a3bc7ff2add7a515b8aedb61c7665b53e7b336ea32d521ea06740dba826ecb44273a413f416694d5597919ee8f0aeb8ef4edad5da1bbd03d5b79d07de801f4b090087a0c3d819e42cfa0e7d02fd0afd2fd54bf41bf437f886eea4fe82fe86f7054a2b7a0b7a177e4db927ca95b41ef8af3c07c59797ff3d57b85f4a10fa00fc562e823e863e813e853e833e873e80be84be82b2e0d7413fa1afa06fa16faee2fbe4c53df0b5f86cbfafb07df7fd1dfbff1d50fc297e308e15b202e54f8cb57e0167c31e7c84767b8763a962d83e60044b7a01fa197a097a157a057a1d7eca62fe30235ab98bb28d6362e0bf4ba20d67519bba237a4a7bfced00dadeda2a1a1a1e04eeda80cae051a4083d038a17146c341832ff0d0f0d108c00e7c2342234623915e398d543cad4686462e3171e3f2c3b77145e326f6619308dcc61d8d071a4f345e68f0d90f1a2d34da6874d0e8a2d113e5e5b7ad31406388c6088d311a937ff265e320d3057ef9feb60f1c73fd0bdfc6d45ea5c2b7c1ffc083d463c2f7fc77beb53ff82ae1db98a3b160b17399e81e8d251a2bfb5e4583f3b746638306977987c6deae30a0031a9688d7fc22162d6e1ca51335577d8d12eea6f652da55663e2b2833dc8a1c6f70823534ea68e86834d0e0bb0c34353415b8ae6515e360a97942f38ca683a68ba627cac8ae18ff5f9b019a219a91206e16ad68cd443e33375334333473342f68f2a91b9a77341f683ed17ca1f92ee483660bcd369a1d34bb2ae227f6d0ecfff0b5c63f7c7b3bd5dbfec917cd815886c5f02bff27bef51fbecda17c3a62a6cd91fdac0bdf742c7c9b6334276872d96668ced15ca0c90757689ae28735d76872d9b65fc4c2b7b943738fe6014d0bcd632125c5d170b38c66453975a9f49afcb81a9a753475341b68f25d060c0d860257100660108c138c330c07860bc3132bcc8e84e18b67c6c657f4f70af6fc98ef60012314be4604238691c0e0fd0c460ee302832fbbc1b8c378c078c278c178c3f88039325fa3fd275fc8fc967ff0e583ff33dfc23efce26bfc977c8daef065cb10a4c2f7591745deeb307a30fa30063086304630381313185cd4198c398c45c1770d63f9c3d758c130bf88d5b4293188b196212bc606c696f9dac4ce4c086307630fe300c3827184518251865181c139a9c1a8831d1ecea1c1091aa469a429d26cd2c036973422ed54c819933d690e692e691e693e69016921691169316909b61fd252d232d272d22ea45d49bb1157d9da83b4272363e3601fb33ff912bf71de40e40fbeffe63f783af325ed4ddae74fbe5f17ed5bbffd85b8ceb96f91d6fef265151613116f6c87cbc08fec92d65311e7b24fda80342ee188b4b10c64652b56f0951dafc97c499b90369591f38c5877d83b266d46da5c1d3faa76d0fa5ce005694bd256a499a4ad49db90b6256d471a933a9066917624ad445a99b40a6955d26aa4d549d3496b90c6e91ba434528a05db9c942d7d4aa627522045a478e74cca21e51257b06699944f2a20157214442a2695904a4965a4727109963d59ee087d654d1928c3fdcd57968b618b217cafaa51968b2b102dae40f892bad82b4ee58ae983d4cd7ed66cf083efdfc882141f7cfc7c8b03e7e649ea25fbc19dd4bb98aaaf6ffbbe7de2c27c48b548b54975487549f548f5490d480d498dc4ff5613525352acce4b443d75afd8c68ad49cd482d452f4379b91e22326a9b5f0551b6dce19db0a5fb523b527752065913a922a9162229cbd2a297ec5eaa474520d524d7eddd0698baada1abf0064db32119b4d649fc83e93cdc75db23db27d74db24539185644764c7642764a7644b8f08b2592e645fc9be917d27fb41f653f0315c7321648f47d53bfcc8578b7b1b91512c73329695502eab82affd22fb4df687ec166623fbb12d3e6e5684b2cd39e814d2b59562df18fb0ad93dd9f77d811b640c9af7c9ee933d207b48f688ecb1fdd893ac1a3f2559a57c5eac66bd54af32c912c1a6c4c447839d6292454d37246b21ee54836fe7bb0e5af7aaea7ccad29e5d9235b44a248bf154b42d5f50255975a44eb2984083ec26151388924cf669cb6c762092c9d9ce24336fb924d319f9248da4bc1312229281bf091563ef4806755f4846c4de4886163e48066ebd4886dd7c48465fb4497acd77093d55d7189fa8ea8a03b53e6160eb7eb1d3ff4fcab39b3a56be52f0953e9823c2585625bc71ba13c2541df9a9339296d485badd59b092408eb78425c778623dcec5072431d3b0f9ade473f5aa7cb8db1eb5c78ee41bec9aa49d7c4bd8a915178c7d092efc410bb8c6e7539656e2b3d2baa78615b56004256dc5068779950915d6689288bb56c42d3aa65c1876d69a3f7cb96a13fbcaafba740922fe5b5944ecb3b789ce444e21ae180af2887ca28028248a8862a2842825ca8872a20bd195e84674277a103d895e446fa20f518ba86dfb0399c279c046fd28938fb398265187a8fb4b3a225fd68c382c0be2420abed423ea130d889145539596e5735100ad5595ef72b539d1485159d975d58c55c08519134d88a64433d5e07ccc55b54ab4205aaa8873bf223239de205a136d88b6443ba23dd181c8b28311d191a8645b3a5199a842542da466eb7c4b1d0fbe9d4f35d82213311a834e1a9d149d6c9960f1c4004f743ad3c9a1934b278f4e3e9d023a85748ae814d329a1534aa78c4e399d2e74bad2e9c666974e773a3de8f4a4d38b4e6f3a7de8d4c2b543a7369d78dba5538f4e7d3a0de834a4d3884e633a4de834a5135bb38ec469b3ab5dba2937d774d3a648267adf2c65de77967d2e62cd45564331cda7f9570abeac26a7259d56743235ae673a2746ac4d36da3062a1d3ba908d2af13ba2d3694ba75d217b55342c6a061f3cd0c9a2d35163672be31296b4d6914e653a55e854a5538d4e753af1650dadc98c9ac4c6faacd159d1d9963929d9da3f43099d390c71f7a8b1bddaa176a1f389ceecd86e4491cf0e9d5d3a7b74f6e91cd039a47344e798ce099d533a6774cee9ccb75ce97ca3f39dce0f3a3fe9fca2f39bce1f3ab7e8dca67387ce5d3af7e8dcb7d92fbecc9591d8b5329d594327741ed27944e7319d797f4ae7199de774e6472fe9bcd22a9c6153abd5e8bca6f386a558b440e4676afdf54ac4e25bb6dfda8fa5e07bded15916c6a2f381ce96d6f799af1dcdb49ea7aeae9d6f5930ebca54d9dd1b5a5cc26321253a73ce2a74aed2999f5aa7b3ae6e3751f90697aa41e7a6f2f8ac418e468e22c72607c55b7b22e74c0ed73326392e391e393e390139a14c746f67e444aa792727667b6dfbbc9330747252d45372f86c4ece859c2b393772f8ec839c27392f72dee47cc86991d326a7434e979c1e397d720628f15386e48cb03b695644ce989c0939537b6db31d226746ce9c9c05394b7256e470aed6ea3d226743ce969c9de2ba97a5cf69eed575ab22c3ae3be41cc8b1bea2b4358bac3ec7aff29c4d4a47f5d6855d2ec677937324875f587e6459a62878de953e65b85a2f90a9a2c3b79d9554b2c424d09a65722a768ff35725a7464e9d1c9d9c06b1b3e5187c8db8376c5bd212b91ab98a5c9b5cb00d24f744ee995c875c975c8f5c9fdc400b9f5a1a921b0a5f3712156677c28d05ae9b909b16ab706ec8cdd42a223727f742ee95dc1bb97cc183dc27b92f72dfe47ec86d91db26b7436e97dc1eb97d7207e40ed1e65b46e48ec99d305c72a7e4cec89d93bb2077492e3fce24774d2e3f654bee8ef81fe91ec8b5c83d12dbd9729ddcb2ca5f4af105155948eaf156ee558db82cdfb56244f8278b2c7dc4a77aa6bdd8a8fe5028f78bf882dc1ab975fbc84fd2c96dd8fc1fd3a776c0456a6a46cd0e9fcc5710c7eda29b7040ae61f766e469e429f26c996596eb0fefc47cc93b3362f21cf25cf23ce1ebf9e405e4858aeb742f222f262f212f252f232fb79b81d6c9c9bb9077556593c9aac6587b3fc9bb917727ef411eefbfd85680bd7def4dde87bc16796df23ae475c9eb91d7276f40de90bc117963f226e44dc9e3eccdc95b20d9c9bfca7b89f792736638872bf24cf2d6e46dc8db92b7236f4fde813c8bbc237925f2cac4af9d57553e275bd31a7c7d5da54f5999ebd455c34ce4d4b675af802b5bfef9155949a6cc39d19539fd4ac1d76b90d714be9e61c74be6ab19553b9a2b5bb15960b2e46b82387c17568235faa94d0e85522f18bad80a5f916ff305a2f29ea5b59a32af2f7bebf703f927f2cfe43be4bbe47bc49e9c1f901f921f911f939f68fdb6da31f78bdd4e6562128fad7383fc94fc0c3adf9b937f29e6d7e0ebafe4df882d86ff20ff49fe8bfc37f91ff25be4b7c9ef90df55d15b2c80df23bf4f0cc81f923f227f8c13df38217f4afe8cfc39f90bf297e4afc837c95f93bf217f4bfe8efc3df99c674bd6e94b5c95bd55f652c14296e8e2cac39aff16e52c6551a941b1b49463fe257df6ac62d6dcaffc9daf7ffc1b5f685fbe3f12be99f8972ff925d16b3e5220164916fc93555e35f86c59a575f22be457b55197fc1af9fc53279fc1356df6347d83028d0245ec8d0410c7c9bbdae90af73907ca149c283853e050e052e051e073dccc8eb0ddf22908280889dfad20a620a120a520a320a7e042c195821b71d4133c10f29127052f0ade147c286851d0a6a0434197821e057d0a06140c899d99604cc18482290533c57e4254a360ae9250f933957f543017e53d4ffe24fb0762f35fe47fe61bb6d495cbb6f857be76f8b183c096722e459d597f83d5ffc03730295853b0a1604bc10e552ef69e8203051605470a4a32937d854b5ba6a0424195022e649d4d87b4baa5730a740a1a14307783428d4245a12d335eb32f1b9e283c53e850e852e851e853185018da5c0d861185318509852985fc33a7f042e195c21b85770a1fc45a12be88f31c7e842c6b62545392cfb9203eb2876a12a3c85bff0af7ffc8376cdb953d859d9ffaedeaa86a8dc2ee5f88bfca5baf335f0ee8ffc957f66d25f681a352e65be677b322f621ec51d8a77040e190c21185630a27d0b8d8530a6714cee52bdc65a5b8aa0c17142e295c51c8055b53b8a1704be18e42ced8417be4322b87c97759141e292c5158a6b042619542ce2adfae53c80569526850a4b1874a912db38eb3471e9d283a53e450e452e451e4531450145214a9b2ae2e3d957d288a792bcba3269120661311b1f13555defeffcd374afee4ab354b14a55a17e28d3d6f326ea010c64751a6245e6715f6952c44c1c5c8b52e6737ff2ff946178aae14dd28ba53f4a0e849d18ba237455ca416456d99e0b054c67d41518722ae402cdc27b2e2f436476b65674d8a7a14f5291a5034c4989f38a2684cd184a22945338ae614f1bd4b8a56149914ad29da50b4a56847d19e22ce8045d191222e5499a20a4555622310d529d2296aa821678c1f61281ab03510c4ccd7b734a3afc2bd0a772ad88a63c06ec33fa5afff8b0c6652b3f5f65ff9c537d67efcdf5869fdd04e96b2444aa3c688bf2afcf57f35a3fcc397b5586cb1c670bfc2ff09397275b5e65e6bb06733d07aaef08df9df098948e313c5678a1d8a5d8a3d8a7d8a038a438a23184f8a638a391b29c5993ab429ce29be507ca5f846f19de207c57ccd4bd97cef9be20fc52de25727ee50dca5b847719fe201c5438a47148f299e503ca57846f19ce285da8c3583935a52bca2d8a4784df186e22dc53b8af7eace3a6e507cb0d55bf1bbc86a2b700f6c3428b634593b77286bfefe63ab86a900fd8feda2f70fbef151e20b6b417149abdab6c6f1f151a906476b3f2afc14ca6c2e98ef17310720accb7264e87e45e20ed66e0efcfe936f99e28ac67e7c5ca5b846719d629de206c54d8a0d4a344a1425b6ac1a901025274ace943894b8947894f894049484c43a95c4942494a4946494e4945c28b95272a3e44ec9839227252f4ade947c286951d2a6a4434997929eea5728e95332a06448c988923125136dd4a0644ac94ce99cc29c127e0362dbeea8805df88d682e5b649670f7c357d6f41cfce79651b2b6fec71673b10cb29ed7fa577cc17e6bb2a2c4a464ad8db93c1be5a44ad61c88be88590465a3f615e12b4d255dd16e4363a1642bfb7c3c63be074a7658f1c1bdf04d582c4a8eda802196282953c205ae5252a3a44e894e0917b5498941a946a9a2d496e51952a2f444e99952875297528f529fd280381e49234a634a134a534a334a734a2f945e29bd517aa7f441e993d217a56f4a3f94b6b44d9b52960ea55d4a7b94f6291d503aa47444e998d2899a65eace29b3d28db4e35b16a465b3f095bcadaebb82e6bf09d3fc17e9169afb27df7446a7a5cd2e513a67c756303563695b38078cb8687028f0d575a50c11cf1227b751a3d35e33741699a1e335e02a51ba6a6765551a2b76b3d385ed36295d8a0aa72b4a4d4ad7946e58b421ffdc52baa3744fe981528bd223a525b56534652db5b4e8a5c9c10aa5554a6bc5b64ea94e6983524ed3a04ca34c5166cb4219195176a2ec4c9943994b9947994f59405948596427ec510eb5e6cb8ef95f3e545a9bb258a5bee250254bd49d2f4e29cb28cbe96caa4b9fc35f59709d29e77ce58589db1c707bfaff52a47213b2bbaf147cb32bfc91bdbc5276b3ef07ec4bf6b9231dd965ac0be7fe5ec883b267312883775e94bdf908e60be29a377bca4f195b3551465de9738e8fb1725433c57c4e598b32ce6887b22e653dcafa940d281b1632a26c4cd984b22965ec7e3aab5b8d32be6561eb39654b4d71c957859894ad29db50b6a56c47d99eb20365166547e2f0272b5356a1ac4a19df5ea74ca7ac415c316606e5ffafb4336b4e5f47a2f8fb7c8cd1bb2a24ac354f402010b6b084ed4d3eac2190785faae6bbcf6999fc972433f7deb955a754c636b6fc73bbd5b21aa4cda5aae2b65e077095ea9ce01af53a35ef7c84c72a8a64121317a6e80b9471474d26f23e8c664867daeacab4d5bbba715aa496b3fbc3d23adf4f7cdd8dcc793199cbbff20d78d9a9ce4a70b74602b17bb83babbd3309edc78330758fb67c91f7eedb26dcd395b2fb6a7f15931ae70eee19ee05ee1bdc77b8ae79e2c578707db8812da9102e57c67013b8a9363c0e8f590743a23dcfd8b4e2195b70db701fe076e076e13ec2edc1edc31dc01dc21dc17d823b863b813bd56b329dc17d863b87bb80bb34172334d5a358aebb82bb867b03b700f756d55af2ba40e0ced58a87659d8bbac1a3951860c32d1bc3af54943312974a707fb2fcc2b70ab7064f3b7c4c3c05f9ad5f1976f6398a066b74595e9f7b305ac1dba85a59deafcb9a2dbc1da56a45787b133dc33ba81aad9e2b8faa06782ff04ef05ee19de15de0bdc17bb7a50bcf83e7c30be085f02278b13e708744df71530a2fd377dc5358c36b685387d784770faf05af0def015e075e17de23bc1ebc3ebc01bc21bc91a3623d5e295380f7046f0c8f6d1117a67a39235fa37953d7b4df2bdfa2671b2be298c19b99326bcb4b98c35ba88a31d535bc25bc95dc808f78f68ff50bdc0fbede5afeaaaf5090f1378ff7f6a4d3aa8c60ca805b598cd48a76ca8f3a234ad6be201f75c599f1c26e65044074e74ceb269b3bf3aad964f08a966fc9c27db3e22da9c0abc2abc1d762dabe826fe03b3280e06ff463579f4f7a50d423adb367f85bedccf422d1f321d8a5f4f7f00ff08ff05fe09fe0bfc23fc3bfc0e771dee1bbf03df83efc007e083f821feb51590642d78142431d62d5e179e9dc581f5218ebe94a5e89b5ab4e895734839fc2cfe0d7e1374c8d6513fe3d252fd73fdaab3f273b686f75e5eb84ac6e0b7e1bfe034cd3f84d9b0155744a9a10b9261f1ccab3fcf2114f71cd24eb77acba70fa262ec27f14e73bafc2ef992dabd857cf15e1eb0fe093d108fe13fcb19a10d604fe14fe4ccd357ca29cc35fe89b5b5de6c212fe0afe1afe8d560ded706b013ecf75079fa728c12f6bd3d0b71bf815f83c570d810619060681a3d5691cec64b8c78fd5a86e5e2b0836149b38ba603d6b2a372074b5b955fdbdd22b045bd549d4e8c11cee215fdc3b6a21c3680c42820325493a7f1eaea4a33dfcce3738227871922e8213023ecb3ce8d9b0c31ad0756961972b78b37a975f19ce7a5c96ad816be521f089989bc857c6ee7ef01d16c566830041882042102348ac099f557f41a37616e49222c810d4f5b08d80dee05e9fca74175c40d0d42d20e0420b01b73e20e82060651e759358598d3e8201822182118227046304130453bdd2f40fea18306c308cfc82998a3bba32125bd67d45c71a3cabe205c11cc102c112c1cad13cda9a882de81b996af28e352f4892e4dfe16b0605b3e495df22b883b4e04450728a9b1f2e42bc4420326623b26bae4969d63f185db2fea140eec2d7bd3520858a0ac7eaa926fe37a822a821d408154223738d916fafa77a6d19547c7fd0ed1ec28dee8ef5e656ef1c845b49a06816453781de5f10ee10eec1702a3c82e12a1fb8f015e15937ee1072eb1bc277842e420fa18f304018ea73a8274a99ba3abeabe8cc808c8104c3358491f00d63a578d204618a304358372f05845cdfe082ea6df57d196113e1bd6498fd45e7408793cbda6fd89279b29e58bfb6ba4c4cb872a60db36dc8083131850f790ab0a00c3bd08c57d60c306488de5266a327c11c2df7a0ac47ee49fc60a0d61e5488b08bf01161cfb663fcd8b7e2a186e23718b48523844f08c708279a9de6708a7086f05937ab08e762b9e142b70865897085708df0066141ef78f1b73a5b20bc13471116f531d4b7dc5442c84d1584fc7a4df3498ab4ae8f747da8970a91b253473b741aba5542047dfb8c68233d02c60fc10d4d98923ceaee596dda88b632f3aff09d7f15a2dd574922a57ee4bdc965f9467b99d2228e111d101d11bd984d45921fbca36da68e4626262a4bd0169d10bd8ab5466702350ef7bf38a35b92159ad19b917c9908d1bb84195ce36d10b9883c31587ade88571b200ac1c0d37b75c67b443c698228459421aaeb6d490286886aeac61ad13da296d86f078878b50f883a88ba881ef5f3bb1e76f4982ddb16510f515f9fdf110d100db5e13147889e543c653fc25ca08e9e7edeeb89463456310fcb9e6a57b7abea85079c1a6d47cc5603c92e5d5f04ee8392c474f1bf4b710e7ce4c5052f3f9763d664f6a9945c55496a472eeb1f9eab606815f1862c102d11ad2461e7de33bbb228476c1ccbf715d1dafa07c96b4774238869a402d44849c7ed1c9c798d37806b24d8880ae282a35bb1d9e8ee2af1bf3c69d1f2e561cb882a88b8a686582356880d624797eb88a19ff6daf4106f106f11ef10efff986f7c407c44fc82f8a42efcca2be2b3d203c4174abd1610bf217ed73717d56e18d564dc2a8923920369d3ff69bc6cf1c837cc183c207629532d7c2ac5ea79933e95741144dcaee4b2f61b7bcede43ec230e1087ce24d0f47471f4f337c7f9cf8ee96d6bf74e952ea291a7fe81262f4a7e116b9322ceecfa947b22ae93af982a818a5bb0e272dcb06a22be47dc02bb58c754f797881f10771077113f2226d63ee281de93d410f108f193f08dc77aaeb433fdc457cc9f7cf90cc513c453c4333538217e568f465cb0e9485fe362d480b8e7baf2a8fcbebc419ff418b70a5fc60c790e59c7fa84cb19f182c12fe2a5d5ea53c9bb82edf85369a3e0ea35a4eb4439df35e21bc4bc27b78825a1cf99f29a8bf96f8eaf7cd1b1e9ec92c28eb86455fe45152b86bd75bba922bf21d8d69de1400de6886bb62b616d36d1a2f0514d0e6af68244a9fe08899119351320d9c8bcd1779ee40596d648b64876e29acf5013eebcffc97777ccf96a3cfec637392039aad11909f73fa9f603925775ecaa7255f5943a75295de921e10e17246f6adb53781228f2687fb4fb84dbae49b7825dadcd2b92772bf773c93e31b77e29d99f5618e7a5e59b78ec1923f19104d23123e82444123995a1d96dec9f544b2a94393f3b0b5e001f5d866b7db32b7e2a25a3fd3c43c230f322ff2e351cca9a05e38a929a9d90a44239c9acea481a6ac4a8c357f44e4913c93d921692b666d096104a47b7fa60c8983c22218ebed1bc0103244324233deb0b5f6a3efc8d2fbb7cc91392b11a1e914cd4b98c64aaa2848d98a2eb4f58b7672473552869dedd2aefeb42494bd392e1f4244fd6cbdbae690e9780843e35e9995de353f9fdfb49969b7b354c652c63687f5f28a3bfc90ac95ad273921b24e47bebf86fd7dc489bc1e724732477488a26ae980b2b4ad0e54f25f747529189f6aae4426a35e2765e4a48b59a6ccc53ec5c3ca48ae2023f9ad5b37aaa2035481d7d6aeb97a3247da51ba45ba43ba47ba407a45cf982f484f415e919298d6e84f44d376e7ee52b53a87ef0d517eeff8ed455eb895a2f8d6922e5797dfbee9ca70b908632b646b8c721715cf9a6f689e6a3ddaef249a719122bd258a28b7c60e2cbdbf46fdfbbcbb8910c321d6404ef62ff1f1c69a2ce3c41ea8c79a919d23ad2868ee67656c2968e66f23ff6fdc49c7a246bdedf64aae37a292fcd3295c9f56ce9b065981df365b518ca9a6a572ddf4c784ba929e934d5d828394b931fcd652ae5db831a1491deeb177269216d237d40cafa74913e6a2741da43dad77d221e08df7478e5ebf484efacff1bdf94f4c9658c748274aaba7b65b86686f459de845516a6c2fb34575b2343eeec1c1362f22e2f158dbc1727d9dfe0a60b53dae7a36da634fd54e6ef303f972f3cd752f537b972be2b67ce1bbb467a83b460a21b92fac937341f5372b7ad85d674b831e95ea889955d4b21157e538a789ce021e76bea45eaca57f6e1d5de21e59a92ae7387b2a6934d5999fe385821adea4da60d2dba864c2353c88c0e2a0cddf45eebe349f8266b990739ea23833ebbc836c8b6c876c8f6badae2432a2f76b303b223b217c5703e3b89f5a999a8dd94e1867df1aaf1c37581eb29eec0277d734f94c85ed5eee953a92b937c59ed2411e2ba4ce3ed6f55f798cbf2cdce0aace505d91bb27764ac90f783ef754a636bc5f2c80703d994ee0550bafb217efc569ff8e6887ff0a58b9072e120f3e92290059a0e34ed5ba021b2681c2cc6ecc26631b2446f9f3ff8ae243e63fbf63ddf145986ac8eacc1a7185913d93db216321eff416d12c9c2cb09521f70917572fd842b37a02c88b73db2fb2a31d57c817c77bbebf27aa9c707f530565ec6d2c6bfd9cc647306bcc8bae46b0abb5ff95eedf703ae79e16d78344fa1c0ca7a3f65d97d9570b47cc9d17ea5af96be94bff0a5774636509d11b2a1aef3f8230bf4491be70bdff1777c694753643376ea4ca1828cbbf12b0b644bba57642b64dce70659e1ca77e17ec22a405b9dab72b26ca672b5cbb9fdfe05bed5b6be4b75b9cfd2f28d8bd2b5fdca97ee35e74be30d8d6dafa6cec5ff3b7c0937e74bc9cac9fa83efadea3d22bbd3f5b7ffc2b7f83d5f43b2a55ff9ea0a81d26c09ba6af9d650d7395ff5dc465d09df0f57207ceb8658c53b5bfdc6d7c603ff0f5fc2b5b2ff0fb3f67fe5fbc33fc8ef310d1df1d43a87038d9770d91c91afccfb4e4675fc9445f6555ff9a2bec911ff2fbedff887e2f7fe21e75bdfea75599bba3e6c50df7dc7b7f5d37ed548f8da7f5ffcb05c3b14547ce3c2d58a73d73cba27e2bc35fb26bfe423f524cf2cb92ed3ff768f62bf56fffcf7bffef11f813c3ff4 - - - - - pbnOK - clicked() - PluginGuiBase - pbnOK_clicked() - - - pbnCancel - clicked() - PluginGuiBase - pbnCancel_clicked() - - - - pluginguibase.ui.h - - - pbnOK_clicked() - pbnCancel_clicked() - - - diff --git a/plugins/mapcanvas_demo/pluginguibase.ui.h b/plugins/mapcanvas_demo/pluginguibase.ui.h deleted file mode 100644 index 24fc72f46c35..000000000000 --- a/plugins/mapcanvas_demo/pluginguibase.ui.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - - -void PluginGuiBase::pbnOK_clicked() -{ - -} - - -void PluginGuiBase::pbnCancel_clicked() -{ - -} diff --git a/plugins/openmodeller/COPYING b/plugins/openmodeller/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/openmodeller/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/openmodeller/INSTALL b/plugins/openmodeller/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/openmodeller/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/openmodeller/Makefile.am b/plugins/openmodeller/Makefile.am deleted file mode 100644 index b7f8e8e24a71..000000000000 --- a/plugins/openmodeller/Makefile.am +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libopenmodellerplugin.la - -## qt designer user-interface files -plugin_UI = openmodellerguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = plugin.moc.cpp openmodellergui.moc.cpp - - -libopenmodellerplugin_la_SOURCES = plugin.cpp \ - plugin.h \ - openmodellergui.cpp \ - openmodellergui.h \ - file_parser.hh \ - list.hh \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libopenmodellerplugin_la_SOURCES = $(plugin_MOC) - -libopenmodellerplugin_la_CXXFLAGS := $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CXXFLAGS) $(GDAL_CFLAGS) -I/usr/local/include -I/usr/local/include/openmodeller -libopenmodellerplugin_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) -lqgis -L/usr/lib -lopenmodeller - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_om.xpm - - - - - diff --git a/plugins/openmodeller/README b/plugins/openmodeller/README deleted file mode 100644 index defc3c24541a..000000000000 --- a/plugins/openmodeller/README +++ /dev/null @@ -1,12 +0,0 @@ -This provides a plug-in for QuantumGIS (http://qgis.sourceforge.net/) for -creating and analyzing feature spaces. - -The current version as of 3/10/2004 is 0.0. - -You have to hack variable as the top of ``Makefile.am'' to point to the qgis -source hierarchy; eventually this hack will be eliminated when qgis has a -separate library. - - -Mark Coletti -mcoletti@usgs.gov diff --git a/plugins/openmodeller/autogen.sh b/plugins/openmodeller/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/openmodeller/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/openmodeller/configure.ac b/plugins/openmodeller/configure.ac deleted file mode 100644 index 15800a8375e8..000000000000 --- a/plugins/openmodeller/configure.ac +++ /dev/null @@ -1,52 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(openmodeller, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([openmodellergui.h]) - -AM_INIT_AUTOMAKE(openmodeller, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(QGIS_CFLAGS) -AC_SUBST(QGIS_LDFLAGS) -AC_SUBST(BOOST_PATH) -AC_SUBST(GDAL_CFLAGS) -AC_SUBST(GDAL_LIBS) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/openmodeller/file_parser.hh b/plugins/openmodeller/file_parser.hh deleted file mode 100644 index 61058dd46b05..000000000000 --- a/plugins/openmodeller/file_parser.hh +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Declaration of FileParser class. - * - * @file - * @author Mauro E S Muñoz - * @date 2003-09-25 - * $Id$ - * - * LICENSE INFORMATION - * - * Copyright(c) 2003 by CRIA - - * Centro de Referencia em Informacao Ambiental - * - * http://www.cria.org.br - * - * 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 2 - * 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: - * - * http://www.gnu.org/copyleft/gpl.html - */ - -#ifndef _FILE_PARSERHH_ -#define _FILE_PARSERHH_ - -#include - -/** - * Read key/value pairs from a configuration file. - * - */ -class FileParser -{ - typedef struct - { - char *key; - char *val; - } Item; - typedef List ItemList; - - -public: - - FileParser( char *file ); - - ~FileParser(); - - int load( char *file ); - - /** - * Get the value of a key (case insensitive). - */ - char *get( char *key ); - - /** - * Return the number of times that a certain key appears in the file. - */ - int count( char *key ); - - /** - * Fill 'values' with all values associated with 'key' and - * return the number of values found. - */ - int getAll( char *key, char **values ); - - int length() { return f_lst.Length(); } - - void head() { f_lst.Head(); } - void next() { f_lst.Next(); } - - char *key() { return f_lst.Get() ? f_lst.Get()->key : 0; } - char *value() { return f_lst.Get() ? f_lst.Get()->val : 0; } - - -private: - - void clear(); - - // Aloca '*dst' e copia a string apontado por 'src' para '*dst'. - // Elimina os espaços, tabulações e mudança de linhas do início - // e do final de 'src'. - void transfer( char **dst, char *src ); - - - ItemList f_lst; -}; - - -#endif diff --git a/plugins/openmodeller/icon_om.xpm b/plugins/openmodeller/icon_om.xpm deleted file mode 100644 index 6200a02b7c37..000000000000 --- a/plugins/openmodeller/icon_om.xpm +++ /dev/null @@ -1,32 +0,0 @@ -/* XPM */ -static const char *icon_om[]={ -"22 22 7 1", -". c None", -"c c #000000", -"# c #0058c0", -"b c #0080ff", -"d c #58a8ff", -"a c #a8dcff", -"e c #c3c3c3", -"........#a#.a.........", -".....a#b.a#abbaa......", -"....a.ab.aaba#a#......", -"...#aaaa.a.ba#.b#a....", -"..aaba.aaabbaa#aaba...", -"..bbb#a##bba#ab#a##b..", -"..bccccabbccaabbbcca..", -"b.ccccccbacccbbacccda.", -"b#ccbbccabccccdcccca.e", -"#bccabccbbccbcccbccdbe", -"b.cc#bccbbccabcbbcca.e", -"a#ccbaccaacc#aabbcc#ae", -"a.ccb#ccaaccaabaaccdbe", -"b#cccccca#ccadab#cc##e", -".##ccccaaacca#a#bccaee", -".a#aabb#aa#b###aa#a#e.", -"..a#aaa#daa###bbb#aee.", -"...caaaa#baaaa#abdee..", -"....##bd#aaabddaaee...", -"....eaa#aaaa#abaee....", -"....eee##.#ba#eee.....", -".....eeeeeeeeeee......"}; diff --git a/plugins/openmodeller/list.cpp b/plugins/openmodeller/list.cpp deleted file mode 100644 index df5c5815e24b..000000000000 --- a/plugins/openmodeller/list.cpp +++ /dev/null @@ -1,884 +0,0 @@ -/** - * Definition of list templates. - * - * @file - * @author Mauro E S Munoz, Josue O Freitas Jr - * @date 1995-10-05 - * $Id$ - * - * LICENSE INFORMATION - * - * Copyright(c) 2003 by CRIA - - * Centro de Referencia em Informacao Ambiental - * - * http://www.cria.org.br - * - * 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 2 - * 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: - * - * http://www.gnu.org/copyleft/gpl.html - */ - -#include -#include "list.hh" - - -/******************************************************/ -/************************ List ************************/ - -/*******************/ -/*** Constructor ***/ - -template -List::List() -{ - f_size = 0; - f_head = f_node = (ListNode *)0; -} - - - -/******************/ -/*** Destructor ***/ - -template -List::~List() -{ - Clear(); -} - - - -/**************/ -/*** Append ***/ - -template -void -List::Append( T elem ) -{ - ListNode *new_node = new ListNode( elem, 0 ); - - if ( !f_head ) - f_head = f_node = new_node; - else - { - ListNode *last = f_head; - while ( last->next ) - last = last->next; - last->next = new_node; - } - - f_size++; -} - - - -/***************/ -/*** Insert ***/ - -template -void -List::Insert( T elem ) -{ - ListNode *new_node = new ListNode( elem, 0 ); - - // If first node. - if ( !f_head ) - f_head = f_node = new_node; - - // If current node is out of the list, insert at the beginning. - else if ( !f_node ) - { - new_node->next = f_head; - f_head = f_node = new_node; - } - - else - { - new_node->next = f_node->next; - f_node->next = new_node; - } - - f_size++; -} - - - -/********************/ -/*** Insert First ***/ - -template -void -List::InsertFirst( T elem ) -{ - f_node = f_head = new ListNode( elem, f_head ); - f_size++; -} - - - -/*************/ -/*** Clear ***/ - -template -void -List::Clear() -{ - f_size = 0; - f_node = f_head; - while ( f_node ) - { - f_head = f_head->next; - delete( f_node ); - f_node = f_head; - } -} - - - - - -/*******************************************************/ -/************************ DList ************************/ - -/*******************/ -/*** Constructor ***/ - -template -DList::DList() -{ - f_size = 0; - f_head = f_tail = f_node = 0; -} - - -/******************/ -/*** Destructor ***/ - -template -DList::~DList() -{ - Clear(); -} - - -/***********/ -/*** Get ***/ - -template -int -DList::Get( T *pe ) -{ - if ( f_node ) - { - *pe = f_node->elem; - return( 1 ); - } - else - { - *pe = T( 0 ); - return( 0 ); - } -} - - -/*********************/ -/*** Insert Before ***/ - -template -void -DList::InsertBefore( T elem ) -{ - TNode *new_node = new TNode( elem, 0, 0 ); - - // If first node. - if ( !f_head ) - f_head = f_tail = f_node = new_node; - - // If end of list. - else if ( !f_node ) - { - f_tail->next = new_node; - new_node->prev = f_tail; - f_tail = new_node; - } - - // Insert before current node. - else - { - if ( f_node->prev ) - f_node->prev->next = new_node; - else - f_head = new_node; - new_node->next = f_node; - new_node->prev = f_node->prev; - f_node->prev = new_node; - } - - f_size++; -} - - -/********************/ -/*** Insert After ***/ - -template -void -DList::InsertAfter( T elem ) -{ - TNode *new_node = new TNode( elem, 0, 0 ); - - // If first node. - if ( !f_head ) - f_head = f_tail = f_node = new_node; - - // If end of list. - else if ( !f_node ) - { - f_tail->next = new_node; - new_node->prev = f_tail; - f_tail = new_node; - } - - // Insert after current node. - else - { - if ( f_node->next ) - f_node->next->prev = new_node; - else - f_tail = new_node; - new_node->prev = f_node; - new_node->next = f_node->next; - f_node->next = new_node; - } - - f_size++; -} - - -/********************/ -/*** Insert First ***/ - -template -void -DList::InsertFirst( T elem ) -{ - TNode *new_node = new TNode( elem, 0, f_head ); - - // If first node. - if ( !f_head ) - f_tail = f_node = new_node; - else - f_head->prev = new_node; - - f_head = new_node; - f_size++; -} - - -/*******************/ -/*** Insert Last ***/ - -template -void -DList::InsertLast( T elem ) -{ - TNode *new_node = new TNode( elem, f_tail, 0 ); - - // If first node. - if ( !f_tail ) - f_head = f_node = new_node; - else - f_tail->next = new_node; - - f_tail = new_node; - f_size++; -} - - -/****************/ -/*** Exchange ***/ - -template -void -DList::Exchange( DList &l ) -{ - TNode *aux; - - aux = f_head; - f_head = l.f_head; - l.f_head = aux; - - aux = f_tail; - f_tail = l.f_tail; - l.f_tail = aux; - - aux = f_node; - f_node = l.f_node; - l.f_node = aux; - - int size = f_size; - f_size = l.f_size; - l.f_size = size; -} - - -/**************/ -/*** Delete ***/ - -template -T -DList::Delete() -{ - if ( !f_node ) - return( T(0) ); - - T ret = f_node->elem; - - if ( f_node->next ) - f_node->next->prev = f_node->prev; - - if ( f_node->prev ) - f_node->prev->next = f_node->next; - - if ( f_head == f_node ) - f_head = f_node->next; - - if ( f_tail == f_node ) - f_tail = f_node->prev; - - TNode *old = f_node; - f_node = f_node->next; - - delete( old ); - f_size--; - - return( ret ); -} - - -/*************/ -/*** Clear ***/ - -template -void -DList::Clear() -{ - f_size = 0; - f_node = f_head; - while ( f_node ) - { - f_head = f_head->next; - delete( f_node ); - f_node = f_head; - } - - f_head = f_tail = f_node = 0; -} - - - -/*************/ -/*** Print ***/ - -template -void -DList::Print( char *top_delimiter, char *bottom_delimiter ) -{ - printf( "%s", top_delimiter ); - printf( "Size: %d.\n", f_size ); - - TNode *p = f_head; - for ( int i = 0; p; i++, p = p->next ) - { - printf( "Node %d [%p]\n", i, p ); - printf( "%c", p == f_node ? '>' : ' ' ); - printf( " Elem: %p\n", p->elem ); - printf( " Prev: %p\n", p->prev ); - printf( " Prox: %p\n", p->next ); - } - printf( "%s", bottom_delimiter ); -} - - - - - -/*********************************************************/ -/************************ OrdList ************************/ - -/*******************/ -/*** Constructor ***/ - -template -OrdList::OrdList( char order ) -{ - f_size = 0; - f_order = order; - f_prev = &f_head; - f_head = f_node = 0; -} - - - -/******************/ -/*** Destructor ***/ - -template -OrdList::~OrdList() -{ - Clear(); -} - - - -/************/ -/*** Next ***/ - -template -void -OrdList::Next() -{ - if ( f_node ) - { - f_prev = &(f_node->next); - f_node = f_node->next; - } - -} - - - -/************/ -/*** Goto ***/ - -template -int -OrdList::Goto( int index ) -{ - Head(); - if ( index >= f_size ) - return( 0 ); - - for ( int i = 0; i < index; i++ ) - Next(); - - return( index ); -} - - - -/***************/ -/*** Insert ***/ - -template -void -OrdList::Insert( T elem, K key ) -{ - OrdListNode *new_node = new OrdListNode( elem, key, 0 ); - - // If first node. - if ( !f_head ) - { - f_prev = &f_head; - f_head = f_node = new_node; - } - - // Search in the list to insert in the correct position. - else - { - // Go back to the beginning of the list if the position - // of the new node has passed. - if ( !f_node || ((f_order*f_node->key) >= (f_order*key)) ) - { - f_prev = &f_head; - f_node = f_head; - } - - // Look after the correct position. - while ( f_node && ((f_order*f_node->key) < (f_order*key)) ) - { - f_prev = &(f_node->next); - f_node = f_node->next; - } - - // Insert new node. - new_node->next = f_node; - *f_prev = new_node; - f_prev = &(new_node->next); - } - - f_size++; -} - - - -/********************/ -/*** Insert After ***/ - -template -void -OrdList::InsertAfter( T elem, K key ) -{ - OrdListNode *new_node = new OrdListNode( elem, key, 0 ); - - // If first node. - if ( !f_head ) - { - f_prev = &f_head; - f_head = f_node = new_node; - } - - // Search in the list to insert in the correct position. - else - { - // Go back to the beginning of the list if the position - // of the new node has passed. - if ( !f_node || ((f_order*f_node->key) > (f_order*key)) ) - { - f_prev = &f_head; - f_node = f_head; - } - - // Look after the correct position. - while ( f_node && ((f_order*f_node->key) <= (f_order*key)) ) - { - f_prev = &(f_node->next); - f_node = f_node->next; - } - - // Insert new node. - new_node->next = f_node; - *f_prev = new_node; - f_prev = &(new_node->next); - } - - f_size++; -} - - - -/**************/ -/*** Delete ***/ - -template -T -OrdList::Delete() -{ - if ( !f_node ) - return( T(0) ); - - T ret = f_node->elem; - - *f_prev = f_node->next; - delete( f_node ); - f_node = *f_prev; - f_size--; - - return( ret ); -} - - - -/**************/ -/*** Delete ***/ - -template -T -OrdList::Delete( T x ) -{ - T elem; - for ( Head(); elem = Get(); Next() ) - if ( elem == x ) - return( Delete() ); - - return( T(0) ); -} - - - -/*************/ -/*** Clear ***/ - -template -void -OrdList::Clear() -{ - f_size = 0; - f_node = f_head; - while ( f_node ) - { - f_head = f_head->next; - delete( f_node ); - f_node = f_head; - } - - f_prev = &f_head; - f_head = f_node = (OrdListNode *)0; -} - - - -/*************/ -/*** Print ***/ - -template -void -OrdList::Print( char *top_delimiter, char *bottom_delimiter ) -{ - printf( "%s", top_delimiter ); - printf( "Order: %s.\n", f_order > 0 ? "asc" : "desc" ); - printf( "Size: %d.\n", f_size ); - - OrdListNode *p = f_head; - for ( int i = 0; p; i++, p = p->next ) - { - printf( "Node %d [%p]\n", i, p ); - printf( "%c", p == f_node ? '>' : ' ' ); - printf( " Key: %f\n", (float)p->key ); - printf( " Elem: %p\n", p->elem ); - printf( " Prev: %p\n", p->prev ); - printf( " Prox: %p\n", p->next ); - } - printf( "%s", bottom_delimiter ); -} - - - - -/**********************************************************/ -/************************ DOrdList ************************/ - -/*******************/ -/*** Constructor ***/ - -template -DOrdList::DOrdList( char order ) -{ - f_size = 0; - f_order = order; - f_head = f_tail = f_node = (TNode *)0; -} - - -/******************/ -/*** Destructor ***/ - -template -DOrdList::~DOrdList() -{ - Clear(); -} - - -/************/ -/*** Goto ***/ - -template -int -DOrdList::Goto( int pos ) -{ - if ( pos >= f_size ) - return( 0 ); - - f_node = f_head; - for ( int i = 0; i < pos; i++ ) - f_node = f_node->next; - - return( 1 ); -} - - - -/************/ -/*** Find ***/ - -template -int -DOrdList::Find( T elem ) -{ - for ( f_node = f_head; f_node; f_node = f_node->next ) - if ( f_node->elem == elem ) - return( 1 ); - - return( 0 ); -} - - - -/***************/ -/*** Set Key ***/ - -template -int -DOrdList::SetKey( K key ) -{ - if ( !f_node ) - return( 0 ); - - Insert( Delete(), key ); - return( 1 ); -} - - - -/***************/ -/*** Insert ***/ - -template -void -DOrdList::Insert( T elem, K key ) -{ - TNode *new_node = new TNode( elem, key, 0, 0 ); - - // If first node. - if ( !f_head ) - f_head = f_tail = f_node = new_node; - - // Search in the list to insert in the correct position. - else - { - // If beginning or end of list, go back to the beginning. - if ( !f_node ) - f_node = f_head; - - // If position of new node has passed, go back. - if ( (f_order*f_node->key) > (f_order*key) ) - { - while( f_node->prev && ((f_order*f_node->prev->key) > (f_order*key)) ) - f_node = f_node->prev; - - if ( f_node->prev ) - f_node->prev->next = new_node; - else - f_head = new_node; - new_node->next = f_node; - new_node->prev = f_node->prev; - f_node->prev = new_node; - } - - // If position of the new node is further away, continue utill find it. - else - { - while( f_node->next && ((f_order*f_node->next->key) < (f_order*key)) ) - f_node = f_node->next; - - if ( f_node->next ) - f_node->next->prev = new_node; - else - f_tail = new_node; - new_node->next = f_node->next; - new_node->prev = f_node; - f_node->next = new_node; - } - - f_node = new_node; - } - - f_size++; -} - - -/**************/ -/*** Delete ***/ - -template -T -DOrdList::Delete() -{ - if ( !f_node ) - return( T(0) ); - - T ret = f_node->elem; - - if ( f_node->next ) - f_node->next->prev = f_node->prev; - - if ( f_node->prev ) - f_node->prev->next = f_node->next; - - if ( f_head == f_node ) - f_head = f_node->next; - - if ( f_tail == f_node ) - f_tail = f_node->prev; - - TNode *old = f_node; - f_node = f_node->next; - - delete( old ); - f_size--; - - return( ret ); -} - - -/**************/ -/*** Delete ***/ - -template -T -DOrdList::Delete( T x ) -{ - T elem; - for ( Head(); elem = Get(); Next() ) - if ( elem == x ) - return( Delete() ); - - return( T(0) ); -} - - - -/*************/ -/*** Clear ***/ - -template -void -DOrdList::Clear() -{ - f_size = 0; - f_node = f_head; - while ( f_node ) - { - f_head = f_head->next; - delete( f_node ); - f_node = f_head; - } - - f_head = f_tail = f_node = 0; -} - - - -/*************/ -/*** Print ***/ - -template -void -DOrdList::Print( char *top_delimiter, char *bottom_delimiter ) -{ - printf( "%s", top_delimiter ); - printf( "Order: %s.\n", f_order > 0 ? "asc" : "desc" ); - printf( "Size: %d.\n", f_size ); - - TNode *p = f_head; - for ( int i = 0; p; i++, p = p->next ) - { - printf( "Node %d [%p]\n", i, p ); - printf( "%c", p == f_node ? '>' : ' ' ); - printf( " Key: %f\n", (float)p->key ); - printf( " Elem: %p\n", p->elem ); - printf( " Prev: %p\n", p->prev ); - printf( " Prox: %p\n", p->next ); - } - printf( "%s", bottom_delimiter ); -} - diff --git a/plugins/openmodeller/list.hh b/plugins/openmodeller/list.hh deleted file mode 100644 index 7b9491b33080..000000000000 --- a/plugins/openmodeller/list.hh +++ /dev/null @@ -1,329 +0,0 @@ -/** - * Declaration of linked list templates. - * - * Note: Any list element needs a constructor that accepts 0 - * (zero) as input, in other words, ElemType(0) must - * exist to represent null elements. - * - * @file - * @author Mauro E S Munoz, Josue O Freitas Jr - * @date 1995-10-05 - * $Id$ - * - * LICENSE INFORMATION - * - * Copyright(c) 2003 by CRIA - - * Centro de Referencia em Informacao Ambiental - * - * http://www.cria.org.br - * - * 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 2 - * 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: - * - * http://www.gnu.org/copyleft/gpl.html - */ - - -#ifndef _LISTHH_ -#define _LISTHH_ - - -/***************************************************************/ -/************************* Linked List *************************/ - -/***********************/ -template -class ListNode -{ -public: - ListNode( ElemType e, ListNode *n ) - { elem = e; next = n; } - - ElemType elem; - ListNode *next; -}; - - -/** - * Linked List - */ -template -class List -{ -public: - - List(); - ~List(); - - void Head() { f_node = f_head; } - void Next() { if ( f_node ) f_node = f_node->next; } - - T Get() { return( f_node ? f_node->elem : T(0) ); } - T First() { return( f_head ? f_head->elem : T(0) ); } - - void Append( T ); - void Insert( T ); ///< Insert after the current node. - void InsertFirst( T ); - void InsertLast( T e ) { Append( e ); } - void Clear(); - int Size() { return( f_size ); } - int Length() { return( f_size ); } - - -private: - - int f_size; - ListNode *f_head; - ListNode *f_node; -}; - - - - -//************************************************************/ -/********************* Double Linked List ********************/ - -/***********************/ -template -class DListNode -{ -public: - DListNode( ElemType e, DListNode *p, DListNode *n ) - { elem = e; prev = p; next = n; } - - ElemType elem; - DListNode *prev; - DListNode *next; -}; - - -/** - * Double Linked List - */ -template -class DList -{ - typedef DListNode TNode; - - -public: - - DList(); - ~DList(); - - void Head() { f_node = f_head; } - void Tail() { f_node = f_tail; } - void Next() { if ( f_node ) f_node = f_node->next; } - void Prev() { if ( f_node ) f_node = f_node->prev; } - - int Get( T *pe ); ///< Return 0 and *pe=0, if reached the end of list. - - T Get() { return( f_node ? f_node->elem : T(0) ); } - T First() { return( f_head ? f_head->elem : T(0) ); } - T Last() { return( f_tail ? f_tail->elem : T(0) ); } - - void Change( T e ) { if ( f_node ) f_node->elem = e; } - - /** Current node is not modified. */ - void Append( T e ) { InsertLast( e ); } - void Insert( T e ) { InsertAfter( e ); } - void InsertBefore( T ); - void InsertAfter( T ); - void InsertFirst( T ); - void InsertLast( T ); - - T Delete(); ///< Delete current element from list, returning it. - T DeleteFirst() { Head(); return( Delete() ); } - T DeleteLast() { Tail(); return( Delete() ); } - - void Clear(); - int Size() { return( f_size ); } - int Length() { return( f_size ); } - - void Exchange( DList &lst ); ///< Exchange elements between this list and 'lst'. - - /** \warning To use this method you have to be sure that the current - * node, when "GetPos" is called, is also present when - * calling "SetPos". - */ - void *GetPos() { return( (void *) f_node ); } - /** \warning To use this method you have to be sure that the current - * node, when "GetPos" is called, is also present when - * calling "SetPos". - */ - void SetPos( void *pos ) { f_node = (DListNode *) pos; } - - void Print( char *top_delimiter="", char *bottom_delimiter="" ); - - -private: - - int f_size; - TNode *f_head; - TNode *f_tail; - TNode *f_node; -}; - - - - -/****************************************************************/ -/********************** Ordered Linked List *********************/ - -/***************************************/ -template -class OrdListNode -{ -public: - OrdListNode( ElemType e, KeyType k, OrdListNode *n ) - { elem = e; key = k; next = n; } - - ElemType elem; - KeyType key; - OrdListNode *next; -}; - - -/** - * Ordered Linked List - * - * @param T Type of element to be stored. - * @param K Type of key to be used. - */ -template -class OrdList -{ -public: - - /** Constructor - * - * - order > 0 -> ascending. - * - order < 0 -> descending. - * - order = 0 -> unordered (insert at current position). - */ - OrdList( char order ); - ~OrdList(); - - void Head() { f_node = f_head; f_prev = &f_head; } - void Next(); - int Goto( int index ); - - T First() { return( f_head ? f_head->elem : T(0) ); } - K FirstKey() { return( f_head ? f_head->key : K(0) ); } - T Get() { return( f_node ? f_node->elem : T(0) ); } - K GetKey() { return( f_node ? f_node->key : K(0) ); } - - void Insert( T, K ); ///< Insert before equal nodes. - void InsertAfter( T, K ); ///< Insert after equal nodes. - - T Delete(); ///< Delete current element from list, returning it. - T Delete( T x ); ///< Delete 'x' (current position will point to the following one). - - void Clear(); - int Size() { return( f_size ); } - int Length() { return( f_size ); } - - void Print( char *top_delimiter="", char *bottom_delimiter="" ); - - -private: - - char f_order; - int f_size; - - OrdListNode *f_head; - OrdListNode *f_node; - OrdListNode **f_prev; -}; - - - -/******************************************************************/ -/******************* Ordered Double Linked List *******************/ - -/**************************************/ -template -class DOrdListNode -{ -public: - DOrdListNode( ElemType e, KeyType k, DOrdListNode *p, - DOrdListNode *n ) - { elem = e; key = k; prev = p; next = n; } - - ElemType elem; - KeyType key; - DOrdListNode *prev; - DOrdListNode *next; -}; - - -/** - * Ordered Double Linked List - * - * @param T Type of element to be stored. - * @param K Type of key to be used. - */ -template -class DOrdList -{ - typedef DOrdListNode TNode; - -public: - - /** Constructor - * - * - order > 0 -> ascending. - * - order < 0 -> descending. - * - order = 0 -> unordered (insert at current position). - */ - DOrdList( char order ); - ~DOrdList(); - - void Head() { f_node = f_head; } - void Tail() { f_node = f_tail; } - void Next() { if ( f_node ) f_node = f_node->next; } - void Prev() { if ( f_node ) f_node = f_node->prev; } - - T First() { return( f_head ? f_head->elem : T(0) ); } - K FirstKey() { return( f_head ? f_head->key : K(0) ); } - T Get() { return( f_node ? f_node->elem : T(0) ); } - K GetKey() { return( f_node ? f_node->key : K(0) ); } - - int Goto( int pos ); - int Find( T e ); ///< Return 1 if 'e' is found. (current = e) - - int SetKey( K ); ///< Change key of current element, reordering it. - void Insert( T, K ); ///< Insert element using apropriate ordering (current=new). - T Delete(); ///< Delete current element from list, returning it. - T Delete( T x ); ///< Delete 'x' (current position will point to the following one). - - T DeleteFirst() { Head(); return( Delete() ); } - T DeleteLast() { Tail(); return( Delete() ); } - - void Clear(); - int Size() { return( f_size ); } - int Length() { return( f_size ); } - - void Print( char *top_delimiter="", char *bottom_delimiter="" ); - - -private: - - char f_order; - int f_size; - TNode *f_head; - TNode *f_tail; - TNode *f_node; -}; - - - -#endif - diff --git a/plugins/openmodeller/main.cpp b/plugins/openmodeller/main.cpp deleted file mode 100644 index 3c44d5ab8946..000000000000 --- a/plugins/openmodeller/main.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -#include "openmodellergui.h" -#include - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - - OpenModellerGui *myOpenModellerGui=new OpenModellerGui(); - a.setMainWidget(myOpenModellerGui); - myOpenModellerGui->show(); - - - return a.exec(); - - - return EXIT_SUCCESS; -} diff --git a/plugins/openmodeller/openmodellergui.cpp b/plugins/openmodeller/openmodellergui.cpp deleted file mode 100644 index f105ac290d71..000000000000 --- a/plugins/openmodeller/openmodellergui.cpp +++ /dev/null @@ -1,702 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * Gyps - Species Distribution Modelling Toolkit * - * This toolkit provides data transformation and visualisation * - * tools for use in species distribution modelling tools such as GARP, * - * CSM, Bioclim etc. * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "openmodellergui.h" - -//qt includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// -//openmodeller includes -#include -#include -//local in this plugin dir -#include "file_parser.hh" - -//standard includes -#include -#include -#include - -OpenModellerGui::OpenModellerGui() - : OpenModellerGuiBase() -{ - getAlgorithmList(); -} - -OpenModellerGui::OpenModellerGui( QWidget* parent , const char* name , bool modal , WFlags fl ) -: OpenModellerGuiBase( parent, name, modal, fl ) -{ - - getAlgorithmList(); -} - -OpenModellerGui::~OpenModellerGui() -{ -} - -void OpenModellerGui::getAlgorithmList() -{ - - ControlInterface myController; - QStringList * myQStringList = new QStringList(); - // Find out which model algorithm is to be used. - Algorithm **myAlgorithmsPointerArray = myController.availableAlgorithms(); - Algorithm *myAlgorithm; - std::cerr << "-------------- openModeller plugin : Reading algorithm list..." << std::endl; - while ( myAlgorithm = *myAlgorithmsPointerArray++ ) - { - std::cerr << "Found Algorithm: " << myAlgorithm->getID() << std::endl; - myQStringList->append(myAlgorithm->getID()); - } - //loop through the algorithm names adding to the algs combo - QStringList::Iterator myIterator= myQStringList->begin(); - while( myIterator!= myQStringList->end() ) - { - QString myAlgorithmQString=*myIterator; - cboModelAlgorithm->insertItem(myAlgorithmQString); - ++myIterator; - } - delete myAlgorithmsPointerArray; - delete myAlgorithm; - return ; - -} - -void OpenModellerGui::getParameterList( QString theAlgorithmNameQString ) -{ - ControlInterface myController; - // Find out which model algorithm is to be used. - Algorithm **myAlgorithmsPointerArray = myController.availableAlgorithms(); - Algorithm *myAlgorithm; - std::cerr << "-------------- openModeller plugin : Reading algorithm list..." << std::endl; - while ( myAlgorithm = *myAlgorithmsPointerArray++ ) - { - std::cerr << "Found Algorithm: " << myAlgorithm->getID() << std::endl; - QString myAlgorithmNameQString=myAlgorithm->getID(); - if (myAlgorithmNameQString==theAlgorithmNameQString) - { - AlgorithmMetadata * myAlgorithmMetadata = myAlgorithm->getMetadata(); - - int myParameterCountInt = myAlgorithmMetadata->nparam; - AlgorithmParameter * myParameter = myAlgorithmMetadata->param; - //detailed list of parameters and their useage - //to be placed in a textbox control on the algorithm selection page - - txtAlgorithmParameters->setText("

    Algorithm Parameters

    Use the descriptions below set parameters for this algorithm

    "); - for ( int i = 0; i < myParameterCountInt; i++, myParameter++ ) - { - // - //first we add a new combo item to the parameter picklist - // - QString myQString = myParameter->name ; - // - // Now we build up a detailed description of the parameters - // - - //check if the parameter has min and max constraints - QString myDescriptionQString=""; - QString myHeadingQString=""; - - myQString=""; - if ( myParameter->has_min && myParameter->has_max ) - { - myQString.sprintf( "

    %s (>= %f and <= %f) default is %f

    ", myParameter->name, myParameter->min, myParameter->max, myParameter->typical ); - } - //or just min constraint - else if ( myParameter->has_min ) - { - myQString.sprintf( "%s (>= %f) default is %f

    ", myParameter->name, myParameter->min, myParameter->typical ); - } - //or just max contraint - if ( myParameter->has_max ) - { - myQString.sprintf( "%s (<= %f) default is %f

    ", myParameter->name, myParameter->max, myParameter->typical ); - } - //or neither - else - { - myQString.sprintf( "%s default is %f

    ", myParameter->name, myParameter->typical); - } - - myHeadingQString.sprintf( "

    %s

    ", myParameter->description ); - txtAlgorithmParameters->setText(txtAlgorithmParameters->text()+myQString+myDescriptionQString); - std::cerr << txtAlgorithmParameters->text() << std::endl; - } - delete myAlgorithmMetadata; - delete myParameter; - delete myAlgorithmsPointerArray; - delete myAlgorithm; - return ; - - } - } - // no matching algorthm was found :-( - delete myAlgorithmsPointerArray; - delete myAlgorithm; - return; - -} - -/** This is the page selected event which I am reimplementing to do some housekeeping - * between wizard pages. - * This routine is a slot that runs each time next is pressed */ -void OpenModellerGui::formSelected(const QString &thePageNameQString) -{ - std::cout << thePageNameQString << " has focus " << std::endl; - QString myQString; - QSettings settings; - if (thePageNameQString==tr("Step 1 of 8")) //we do this when arriving at the mode selection page - { - //select the last model used by getting the name from qsettings - QString myModelName = settings.readEntry("/openmodeller/modelName"); - if (myModelName=="") - { - //do nothing - } - else - { - cboModelAlgorithm->setCurrentText(tr(myModelName)); - } - - } - if (thePageNameQString==tr("Step 2 of 8")) //we do this after leaving the file selection page - { - getParameterList(cboModelAlgorithm->currentText()); - } - if (thePageNameQString==tr("Step 3 of 8")) //we do this after leaving the file selection page - { - setNextEnabled(currentPage(),false); - - if (leLocalitiesFileName->text() !="") - { - setNextEnabled(currentPage(),true); - } - else - { - setSpeciesList(settings.readEntry("/openmodeller/localitiesFileName")); - } - } - if (thePageNameQString==tr("Step 4 of 8")) - { - - const QString myFileNameQString = settings.readEntry("/openmodeller/layerNames"); - //tokenise the setting list (its separated by ^e) - const QString mySeparatorQString = "^e"; - QStringList myFileNameQStringList = QStringList::split (mySeparatorQString, myFileNameQString, false ); - //only try to restore the list of layers used in the last session if the list is empty - if (myFileNameQStringList.size() > 0 && lstLayers->count()==0) - { - //loop through the layer names - QStringList::Iterator myIterator= myFileNameQStringList.begin(); - QString myLastFileNameQString=""; - while( myIterator!= myFileNameQStringList.end() ) - { - QString myFileNameQString=*myIterator; - if (myFileNameQString!=myLastFileNameQString) - { - lstLayers->insertItem(myFileNameQString); - //also add the layer to the mask combo - cboMaskLayer->insertItem(myFileNameQString); - } - myLastFileNameQString=*myIterator; - ++myIterator; - } - //enable the user to carry on to the next page... - setNextEnabled(currentPage(),true); - } - if ( lstLayers->count()==0) - { - setNextEnabled(currentPage(),false); - } - else - { - setNextEnabled(currentPage(),true); - } - } - if (thePageNameQString==tr("Step 7 of 8")) - { - if ( leOutputFileName->text()=="") - { - setNextEnabled(currentPage(),false); - } - else - { - setNextEnabled(currentPage(),true); - } - } - else if (thePageNameQString==tr("Step 8 of 8")) - { - setFinishEnabled(currentPage(),true); - } -} - - -/** This method is used when you already have a valid model paramters text file - and want to run it without interacting with the user. - @see pbnRun method which is run when model inputs have been obtained via the wizard. */ -void OpenModellerGui::parseAndRun(QString theParametersFileNameQString) -{ - // - // Create a fileparser to read in the request file - // and a controlInterface to manage the model process - // - - //strdup is used to convert the qstring to a non const char * - FileParser myFileParser( strdup(theParametersFileNameQString)); - ControlInterface myController; - - // - // Parse the model paramter file... - // - - // Get the environmental variables (continuous and categorical) - char *myMaskFileNameCharArray = myFileParser.get( "Mask" ); - char *myCategoricalMapCharArray = "Categorical map"; - int myNumberOfCategoriesInt = myFileParser.count( myCategoricalMapCharArray ); - //The key name in the paramters file that indicates its value is a map layer - char *myLayerLabelCharArray = "Map"; - //find out the number of enviroinmental layers - int myNumberOfLayersInt = myFileParser.count( myLayerLabelCharArray ); - //Find out the total layer count including environmental and mask layers - int myTotalLayerCountInt = myNumberOfLayersInt + myNumberOfCategoriesInt; - //create a char array and populate it with all layer names - char *myLayersCollectionCharArray[myTotalLayerCountInt]; - myFileParser.getAll( myCategoricalMapCharArray, myLayersCollectionCharArray ); - myFileParser.getAll( myLayerLabelCharArray, myLayersCollectionCharArray + myNumberOfCategoriesInt ); - // Get the details for the output Map - char *myOutputFleNameCharArray = myFileParser.get( "Output" ); - char *myOutputFormatCharArray = myFileParser.get( "Output format" ); - //scale is used to scale the model results e.g. from 0-1 to 0-255 - useful for image gen - char *myScaleCharArray = myFileParser.get( "Scale" ); - // find out which model algorithm is to be used e,g. bioclim, cartesian etc - char *myAlgorithmNameCharArray = myFileParser.get( "Algorithm" ); - //obtain any model parameters that are specified in the request file - char *myAlgorithmParametersCharArray= myFileParser.get( "Parameters" ); - // Obtain the Well Known Text string for the localities coordinate system - char *myLocalitiesCoordinateSystem = myFileParser.get( "WKT coord system" ); - // Get the name of the file containing localities - char *myLocalitiesFileCharArray = myFileParser.get( "Species file" ); - // Get the name of the taxon being modelled! - char *myTaxonNameCharArray = myFileParser.get( "Species" ); - - // - // Make sure the basic variables have been defined in the parameter file... - // - if ( ! myOutputFleNameCharArray ) - { - QMessageBox::warning( this,QString("openModeller Wizard Error"),QString("The 'Output file name' was not specified!")); - return; - } - if ( ! myOutputFormatCharArray ) - { - QMessageBox::warning( this,"openModeller Wizard Error","The 'Output format' was not specified!"); - return; - } - if ( ! myScaleCharArray ) - { - myScaleCharArray = "255.0"; - } - // - // Set up the output map builder - // - //RasterFile map( myOutputFormatCharArray ); - // - // Set up the model controller - // - myController.setEnvironment(myNumberOfCategoriesInt, myTotalLayerCountInt, myLayersCollectionCharArray, myMaskFileNameCharArray ); - // Prepare the output map - - myController.setOutputMap( myOutputFleNameCharArray,myOutputFormatCharArray, atof(myScaleCharArray) ); - // Set the model algorithm to be used by the controller - myController.setAlgorithm( myAlgorithmNameCharArray, myAlgorithmParametersCharArray ); - // Populate the occurences list from the localities file - //myController.setOccurrences( myLocalitiesFileCharArray, myLocalitiesCoordinateSystem, myTaxonNameCharArray ); - - // - // Run the model - // - if ( ! myController.run() ) - { - QString myErrorQString; - QMessageBox::warning( this,"openModeller Wizard Error",myErrorQString.sprintf("Error: %s\nModel aborted.", myController.error())); - } - else - { - //if all went ok, send notification to the parent app that we are finished - emit drawRasterLayer(QString( myOutputFleNameCharArray )); - } - -} //end of parseAndRun - -void OpenModellerGui::makeConfigFile() -{ - QFile myQFile( outputFileNameQString+".cfg"); - if ( myQFile.open( IO_WriteOnly ) ) { - QTextStream myQTextStream( &myQFile ); - //write the header to the file - myQTextStream << tr("#################################################################\n"); - myQTextStream << tr("##\n"); - myQTextStream << tr("## openModeller Configuration file\n"); - myQTextStream << tr("##\n"); - myQTextStream << tr("##Autogenerated using openModeller Plugin for QGIS (c) T.Sutton 2003\n"); - myQTextStream << tr("##\n"); - myQTextStream << tr("#################################################################\n"); - myQTextStream << tr("\n\n##\n"); - myQTextStream << tr("## Coordinate system and projection in WKT format\n"); - myQTextStream << tr("##\n\n"); - myQTextStream << tr("WKT Coord System = ") << coordinateSystemQString << "\n"; - - myQTextStream << tr("\n\n##\n"); - myQTextStream << tr("## Localities Data Configuration Options...\n"); - myQTextStream << tr("##\n\n"); - myQTextStream << tr("# Full path and file name of the file containing localities data.\n"); - myQTextStream << tr("Species file = ") << localitiesFileNameQString << "\n"; - myQTextStream << tr("# The taxon in the localities file to be modelled.\n"); - myQTextStream << tr("# (Defaults to the first taxon found.)\n"); - myQTextStream << tr("Species = ") << taxonNameQString << "\n"; - myQTextStream << tr("\n\n##\n"); - myQTextStream << tr("## Independent Variable Layers (map layers)\n"); - myQTextStream << tr("##\n\n"); - // Iterate through the items in the layers list - for ( QStringList::Iterator myIterator = layerNamesQStringList.begin(); myIterator != layerNamesQStringList.end(); ++myIterator) - { - myQTextStream << tr("Map = ") << *myIterator << "\n"; - } - myQTextStream << tr("# A layer that species the region of interest\n"); - myQTextStream << tr("Mask = ") << maskNameQString << "\n"; - - myQTextStream << tr("\n\n##\n"); - myQTextStream << tr("## Model Output Settings\n"); - myQTextStream << tr("##\n\n"); - // NOTE by Tim: not too sure what this next option does - will have to sak Mauro - // I think it just sets the ouput file extents etc - // I am hardcoding it to match the first layer in the collection for now - myQTextStream << tr("# File to be used as the output format.\n") ; - myQTextStream << tr("Output format = ") << layerNamesQStringList.front() << "\n"; - myQTextStream << tr("# Output file name (should end in .tif)\n"); - myQTextStream << tr("Output = ") << outputFileNameQString << ".tif\n"; - myQTextStream << tr("# Scale algorithm output (originally between 0 and 1) by this factor.\n"); - //NOTE I am hard coding the output scaling variable for now! - myQTextStream << tr("Scale = 240.0\n"); - myQTextStream << tr("\n\n##\n"); - myQTextStream << tr("## Model Type and Extra Model Parameters\n"); - myQTextStream << tr("##\n\n"); - myQTextStream << tr("# Name of the algorithm used to construct the model.\n"); - myQTextStream << tr("Algorithm = "); - if (modelNameQString=="") - { - // Default to bioclim if modelname has not been set - QMessageBox::warning( this,QString("openModeller Wizard Error"),QString("The model algorithm name is not specified!")); - return; - } - myQTextStream << modelNameQString << "\n"; - // Iterate through the items in the extra parameters list - for ( QStringList::Iterator myIterator = extraParametersQStringList.begin(); myIterator != extraParametersQStringList.end(); ++myIterator) - { - myQTextStream << tr("Parameters = ") << *myIterator << "\n"; - } - - myQTextStream << tr("\n\n###########################################\n"); - myQTextStream << tr("## End of autogenerated configuration file.\n"); - myQTextStream << tr("###########################################\n"); - //for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it ) - // myQTextStream << *it << "\n"; - myQFile.close(); - } - -} - - - // - // What follow are the overridden methods from the base form... - // -/** The accept method overrides the qtwizard method of the same name and is run when the finish button is pressed */ -void OpenModellerGui::accept() -{ - QSettings myQSettings; - std::cout << "cboModelAlgorithm .. current text : " << cboModelAlgorithm->currentText() << std::endl; - modelNameQString=cboModelAlgorithm->currentText(); - - // - // set the well known text coordinate string for the coordinate system that the point data are stored in - // - - //make sure that you have no linefeeds and escape carriage returns in WKT string! - if (cboCoordinateSystem->currentText()==tr("Lat/Long WGS84")) - { - coordinateSystemQString = "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AXIS[\"Lat\",NORTH],AXIS[\"Long\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]"; - } - else if (cboCoordinateSystem->currentText()==tr("Lat/Long 1924 Brazil")) - { - coordinateSystemQString = "GEOGCS[\"1924 ellipsoid\", DATUM[\"Not_specified\", SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]], AUTHORITY[\"EPSG","6022\"]], PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\",0.0174532925199433, AUTHORITY[\"EPSG","9108\"]], AUTHORITY[\"EPSG","4022\"]]"; - } - else if (cboCoordinateSystem->currentText()==tr("UTM Zone 22 - Datum: Corrego Alegre")) - { - coordinateSystemQString = "UTM Zone 22 - Datum: Corrego Alegre: PROJCS[\"UTM Zone 22, Southern Hemisphere\", GEOGCS[\"Datum Corrego Alegre\", DATUM[\"Datum Corrego Alegre\", SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG","7022\"]], AUTHORITY[\"EPSG\",\"6022\"]], PRIMEM[\"Greenwich\",0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\",0.0174532925199433, AUTHORITY[\"EPSG\",\"9108\"]], AUTHORITY[\"EPSG\",\"4022\"]], PROJECTION[\"Transverse_Mercator\"], PARAMETER[\"latitude_of_origin\",0], PARAMETER[\"central_meridian\",-51], PARAMETER[\"scale_factor\",0.9996], PARAMETER[\"false_easting\",500000], PARAMETER[\"false_northing\",10000000], UNIT[\"METERS\",1]]"; - } - else if (cboCoordinateSystem->currentText()==tr("Long/Lat - Datum: Corrego Alegre")) - { - coordinateSystemQString = "GEOGCS[\"Datum Corrego Alegre\", DATUM[\"Datum Corrego Alegre\", SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]], AUTHORITY[\"EPSG\",\"6022\"]], PRIMEM[\"Greenwich\",0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\",0.0174532925199433, AUTHORITY[\"EPSG\",\"9108\"]], AUTHORITY[\"EPSG\",\"4022\"]]"; - } - - - myQSettings.writeEntry("/openmodeller/modelName",cboModelAlgorithm->currentText()); - //pull all the form data into local class vars. - outputFileNameQString=leOutputFileName->text(); - myQSettings.writeEntry("/openmodeller/outputFileName",outputFileNameQString); - localitiesFileNameQString=leLocalitiesFileName->text(); - myQSettings.writeEntry("/openmodeller/localitiesFileName",localitiesFileNameQString); - //build up the map layers qstringlist - layerNamesQStringList.clear(); - for ( unsigned int myInt = 0; myInt < lstLayers->count(); myInt++ ) - { - QListBoxItem *myItem = lstLayers->item( myInt ); - layerNamesQStringList.append(myItem->text()); - } - myQSettings.writeEntry("/openmodeller/layerNames",layerNamesQStringList); - // build up the model parameters qstringlist - extraParametersQStringList.clear(); - for ( unsigned int myInt = 0; myInt < lstParameters->count(); myInt++ ) - { - QListBoxItem *myItem = lstParameters->item( myInt ); - extraParametersQStringList.append(myItem->text()); - } - - maskNameQString=cboMaskLayer->currentText(); - taxonNameQString=cboTaxon->currentText(); - makeConfigFile(); - parseAndRun(outputFileNameQString+".cfg"); - //close the dialog - done(1); -} - -void OpenModellerGui::cboModelAlgorithm_activated( const QString &theAlgorithmQString) -{ -} - - -void OpenModellerGui::pbnSelectOutputFile_clicked() -{ - std::cout << " OpenModellerGui::pbnSelectOutputFile_clicked() " << std::endl; - QString myOutputFileNameQString = QFileDialog::getSaveFileName( - ".", - "All Files (*.)", - this, - "save file dialog" - "Choose a filename to save under" ); - leOutputFileName->setText(myOutputFileNameQString); - if ( leOutputFileName->text()=="") - { - setNextEnabled(currentPage(),false); - } - else - { - setNextEnabled(currentPage(),true); - } -} - -void OpenModellerGui::pbnRemoveParameter_clicked() -{ - for ( unsigned int myInt = 0; myInt< lstParameters->count(); myInt++ ) - { - QListBoxItem *myItem = lstParameters->item( myInt ); - // if the item is selected... - if ( myItem->isSelected() ) - { - //remove the item if it is selected - lstParameters->removeItem(myInt); - } - } -} - - -void OpenModellerGui::pbnAddParameter_clicked() -{ - lstParameters->insertItem(leNewParameter->text()); - leNewParameter->setText(""); -} - - -void OpenModellerGui::pbnRemoveLayerFile_clicked() -{ - for ( unsigned int myInt = 0; myInt< lstLayers->count(); myInt++ ) - { - QListBoxItem *myItem = lstLayers->item( myInt ); - // if the item is selected... - if ( myItem->isSelected() ) - { - //remove the item if it is selected - lstLayers->removeItem(myInt); - //also remove the item from the mask layer combo - cboMaskLayer->removeItem(myInt); - } - } - //if user has removed last list entry, disable next button - if ( lstLayers->count()==0) - { - setNextEnabled(currentPage(),false); - } - -} - - -void OpenModellerGui::pbnSelectLayerFile_clicked() -{ - std::cout << " OpenModellerGui::pbnSelectLayerFile_clicked() " << std::endl; - QString myFileTypeQString; - QString myGDALFilterString="GDAL (*.tif; *.asc; *.bil;*.jpg;*.adf)"; - QString myFileNameQString = QFileDialog::getOpenFileName( - "" , //initial dir - myGDALFilterString, //filters to select - this , //parent dialog - "OpenFileDialog" , //QFileDialog qt object name - "Select localities text file" , //caption - &myFileTypeQString //the pointer to store selected filter - ); - std::cout << "Selected filetype filter is : " << myFileTypeQString << std::endl; - if (myFileNameQString==NULL || myFileNameQString=="") return; - //check if the file is an arc/info binary grid in which case we should only use the - //directory name in which the adf file occurs - if (myFileNameQString.endsWith(".adf")) - { - //try to find unix path separater first (search backwards from end of line) - if (myFileNameQString.findRev('/') != -1) - { - myFileNameQString=myFileNameQString.mid(0,myFileNameQString.findRev('/')+1); - } - else //no forward slash found so assume dos and look for backslash - { - //try looking for dos separaters - myFileNameQString=myFileNameQString.mid(0,myFileNameQString.findRev('\\')+1); - } - } - lstLayers->insertItem(myFileNameQString); - //also add the layer to the mask combo - cboMaskLayer->insertItem(myFileNameQString); - //enable the user to carry on to the next page... - setNextEnabled(currentPage(),true); -} - - -void OpenModellerGui::pbnSelectLocalitiesFile_clicked() -{ - std::cout << " OpenModellerGui::pbnSelectLocalitiesFile_clicked() " << std::endl; - QString myFileTypeQString; - QString myTextFileFilterString="Text File (*.txt)"; - QString myFileNameQString = QFileDialog::getOpenFileName( - "" , //initial dir - myTextFileFilterString, //filters to select - this , //parent dialog - "OpenFileDialog" , //QFileDialog qt object name - "Select localities text file" , //caption - &myFileTypeQString //the pointer to store selected filter - ); - std::cout << "Selected filetype filter is : " << myFileTypeQString << std::endl; - if (myFileNameQString==NULL || myFileNameQString=="") return; - setSpeciesList(myFileNameQString); -} //end of pbnSelectLocalitiesFile_clicked - -void OpenModellerGui::setSpeciesList(QString theFileNameQString) -{ - // - // Now that we have the localities text file, we need to parse it and find - // all unique instances of taxon names and populate the taxon combo... - // - //first build a regex to match text at the beginning of the line - QRegExp myQRegExp( "^[^#][ a-zA-Z]*" ); //seconf caret means 'not' - QStringList myTaxonQStringList;; - QFile myQFile( theFileNameQString ); - if ( myQFile.open( IO_ReadOnly ) ) - { - //clear the existing entries in the taxon combo first - cboTaxon->clear(); - //now we parse the loc file, checking each line for its taxon - QTextStream myQTextStream( &myQFile ); - QString myCurrentLineQString; - while ( !myQTextStream.atEnd() ) - { - myCurrentLineQString = myQTextStream.readLine(); // line of text excluding '\n' - myQRegExp.search(myCurrentLineQString); - QStringList myMatchesQStringList = myQRegExp.capturedTexts(); - QStringList::Iterator myIterator = myMatchesQStringList.begin(); - QString myTaxonQString=*myIterator; - myTaxonQString=myTaxonQString.stripWhiteSpace(); - if (myTaxonQString != "") - { - //make sure there are only single spaces separating words. - myTaxonQString=myTaxonQString.replace( QRegExp(" {2,}"), " " ); - myTaxonQStringList.append(myTaxonQString); - } - } - myQFile.close(); - //sort the taxon list alpabetically - myTaxonQStringList.sort(); - //now find the uniqe entries in the qstringlist and - //add each entry to the taxon combo - QString myLastTaxon=""; - QStringList::Iterator myIterator= myTaxonQStringList.begin(); - while( myIterator!= myTaxonQStringList.end() ) - { - QString myCurrentTaxon=*myIterator; - if (myCurrentTaxon!=myLastTaxon) - { - cboTaxon->insertItem(myCurrentTaxon); - } - myLastTaxon=*myIterator; - ++myIterator; - } - } - else - { - QMessageBox::warning( this,QString("openModeller Wizard Error"),QString("The localities file is not readable. Check you have the neccessary file permissions and try again.")); - return; - } - // if all that went ok, update the form field and the class var - leLocalitiesFileName->setText(theFileNameQString); - localitiesFileNameQString = theFileNameQString; - //enable the user to carry on to the next page... - setNextEnabled(currentPage(),true); -} //end of setSpeciesList - -void OpenModellerGui::leLocalitiesFileName_textChanged( const QString &theFileNameQString ) -{ - // this should never run - I am changing the line edit control to read only so that - // file parsing for taxon names does not happen with every text change - localitiesFileNameQString = theFileNameQString; - //enable the user to carry on to the next page... - setNextEnabled(currentPage(),true); -} - -void OpenModellerGui::leLocalitiesFileName_returnPressed() -{ - // this should never run - I am changing the line edit control to read only so that - // file parsing for taxon names does not happen with every text change - localitiesFileNameQString = leLocalitiesFileName->text(); - //enable the user to carry on to the next page... - setNextEnabled(currentPage(),true); -} - - diff --git a/plugins/openmodeller/openmodellergui.h b/plugins/openmodeller/openmodellergui.h deleted file mode 100644 index 066209edf99e..000000000000 --- a/plugins/openmodeller/openmodellergui.h +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * Gyps - Species Distribution Modelling Toolkit * - * This toolkit provides data transformation and visualisation * - * tools for use in species distribution modelling tools such as GARP, * - * CSM, Bioclim etc. * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef OPENMODELLERGUI_H -#define OPENMODELLERGUI_H - -#include -#include -#include -#include -/** -@author Tim Sutton -*/ -class OpenModellerGui : public OpenModellerGuiBase -{ -Q_OBJECT -public: - OpenModellerGui(); - OpenModellerGui( QWidget* parent , const char* name , bool modal , WFlags fl ); - ~OpenModellerGui(); - - void getAlgorithmList(); - void getParameterList( QString theAlgorithmNameQString ); - void parseAndRun(QString theParametersFileNameQString); - void makeConfigFile(); - - // - // The following methods reimplement methods by the same name of the parent class - // - - void cboModelAlgorithm_activated( const QString & ); - /** This method overrides the virtual OpenModellerGuiBase method (slot) of the same name. */ - void formSelected(const QString &thePageNameQString); - void leLocalitiesFileName_textChanged( const QString &theFileNameQString ); - void setSpeciesList(QString theFileNameQSting); - void pbnSelectOutputFile_clicked(); - void pbnRemoveParameter_clicked(); - void pbnAddParameter_clicked(); - void pbnRemoveLayerFile_clicked(); - void pbnSelectLayerFile_clicked(); - void pbnSelectLocalitiesFile_clicked(); - void leLocalitiesFileName_returnPressed(); - void accept(); - -private: - QString modelNameQString; - QString localitiesFileNameQString; - QString coordinateSystemQString; - QString taxonNameQString; - QStringList layerNamesQStringList; - QString maskNameQString; - QStringList extraParametersQStringList; - QString outputFileNameQString; - bool useTheseSettingsAgainFlag; -signals: - void drawRasterLayer(QString); -}; - -#endif diff --git a/plugins/openmodeller/openmodellerguibase.ui b/plugins/openmodeller/openmodellerguibase.ui deleted file mode 100644 index ccb5689134e3..000000000000 --- a/plugins/openmodeller/openmodellerguibase.ui +++ /dev/null @@ -1,742 +0,0 @@ - -OpenModellerGuiBase -Tim Sutton - - - OpenModellerGuiBase - - - - 0 - 0 - 607 - 498 - - - - openModeller Wizard - - - image0 - - - - page - - - Step 1 of 8 - - - - unnamed - - - - pmAcmeLogo - - - image1 - - - true - - - - - cboModelAlgorithm - - - - - lblSelectAlgorithm - - - <b>Select model algorithm:</b> - - - - - tbrAlgorithmDescription - - - <h1>Description:</h1> - -The openModeller wizard will assist you in carrying out a species distribution model using the openModeller toolkit developed by CRIA, Brazil. Select an option from the picklist below to determine which type of model you wish to carry out. - - - - - - - WizardPage - - - Step 2 of 8 - - - - unnamed - - - - lblSelectLocalitiesFile_4 - - - <b>Enter the WKT coordinate system definition:</b> - - - - - pmAcmeLogo_2 - - - image0 - - - true - - - - - tbrLocalitiesFileDescription - - - <h1>Coordinate System:</h1> - -<p>You need to specify how the locality data should be transformed to the same coordinate system as the independent variable landscape and climate layers so that the two datasets can be overlayed properly. -</p> -<p>Specify the coordinate system using the WKT format (more information on the WKT format is available at the Open Gis Consortium <a href="http://www.opengis.org/docs/01-009.pdf">Website</a>).</p> - - - - - - Lat/Long WGS84 - - - - - Lat/Long 1924 Brazil - - - - - UTM Zone 22 - Datum: Corrego Alegre - - - - cboCoordinateSystem - - - - - - - WizardPage - - - Step 3 of 8 - - - - unnamed - - - - pmAcmeLogo_3 - - - image0 - - - true - - - - - tbrParameterFileDescription - - - <h1>Locality Data:</h1> - -In order to carry out a distribution model, you need to have a text file containing distribution data for the species you are interested in. This data should be in the form: - -<pre> -#species subspecies longitude latitude altitude -furcata boliviana -68.85 -11.15 325 -furcata boliviana -67.38 -14.32 232 -furcata boliviana -67.55 -14.33 196 - -</pre> - -Use the ellipsis [...] button below to select an appropriate file. If the localities file contains data for more than one taxon, select which taxon you would like to run this model on using the picklist below. - - - - - leLocalitiesFileName - - - true - - - - - pbnSelectLocalitiesFile - - - - 30 - 32767 - - - - ... - - - - - lblSelectLocalitiesFile - - - <b>Select the file containing locality data:</b> - - - - - layout2 - - - - unnamed - - - - lblSelectLocalitiesFile_2 - - - - 140 - 0 - - - - <b>Taxon in file to use:</b> - - - - - spacer18 - - - Horizontal - - - MinimumExpanding - - - - 100 - 20 - - - - - - cboTaxon - - - - 240 - 0 - - - - - - - - - - WizardPage - - - Step 4 of 8 - - - - unnamed - - - - pmAcmeLogo_4 - - - image0 - - - true - - - - - tbrParameterFileDescription_2 - - - <h1>Environmental and Landscape Layers:</h1> - -Select the maps to be used as environmental continuous variables. Examples of this type of data could be average rainfall, average temperature, altitude etc. - - - - - pbnSelectLayerFile - - - - 30 - 32767 - - - - ... - - - - - lblSelectModelParameters - - - <b>Select file:</b> - - - - - lblSelectModelParameters_2 - - - <b>Remove selected file(s):</b> - - - - - pbnRemoveLayerFile - - - - 30 - 32767 - - - - X - - - - - lstLayers - - - - - - - WizardPage - - - Step 5 of 8 - - - - unnamed - - - - pmAcmeLogo_5 - - - image0 - - - true - - - - - tbrParameterFileDescription_3 - - - <h1>Select Mask Layer</h1> - -Select a file that will be used to mask areas from the model. - - - - - cboMaskLayer - - - - - spacer20 - - - Vertical - - - Expanding - - - - 21 - 121 - - - - - - - - WizardPage - - - Step 6 of 8 - - - - unnamed - - - - pmAcmeLogo_6 - - - image0 - - - true - - - - - txtAlgorithmParameters - - - <h1>Algorithm Specific Parameters</h1> - -If you would like to specify any special parameters for the algorithm you have selected, use the form below. You will need to consult the algorithm documentation to find out what additional parameters can be specified. - - - - - lstParameters - - - - - pbnRemoveParameter - - - - 30 - 32767 - - - - X - - - - - pbnAddParameter - - - - 30 - 32767 - - - - + - - - - - lblSelectModelParameters_3 - - - <b>Parameter:</b> - - - - - leNewParameter - - - - 200 - 32767 - - - - - - lblSelectModelParameters_2_2 - - - - 200 - 0 - - - - <b>Remove selected parameter(s):</b> - - - - - - - WizardPage - - - Step 7 of 8 - - - - unnamed - - - - pmAcmeLogo_7 - - - image0 - - - true - - - - - tbrParameterFileDescription_5 - - - <h1>Output Destination:</h1> - -<p>Specify where the model should be saved to disk. Two files will be written - the parameters file that contains a record of all the choices you have made in this wizard, and a model results as a tiff image. You only need to specify the base name of the parameters file - the tiff image will be saved to a file with a similar name. </p> - -<p>For example choosing /tmp/acacia_saligna will create two output files : /tmp/acacia_saligna.cfg and /tmp/acacia_saligna.tif - the former containing the model parameters, and the latter the model outputs.</p> - - - - - leOutputFileName - - - - - pbnSelectOutputFile - - - - 30 - 32767 - - - - ... - - - - - lblSelectLocalitiesFile_3 - - - <b>Select the output parameters file name:</b> - - - - - - - WizardPage - - - Step 8 of 8 - - - - unnamed - - - - spacer10 - - - Horizontal - - - Expanding - - - - 108 - 21 - - - - - - progressBar1 - - - - - spacer9 - - - Horizontal - - - Expanding - - - - 108 - 21 - - - - - - textLabel3 - - - <b>Progress:</b> - - - - - cbxDefaultToLastChoices - - - Default to the choices I have made the next time I run this model. - - - true - - - - - pmAcmeLogo_8 - - - image0 - - - true - - - - - textEdit2 - - - <html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial"> -<p style="margin-top:18px"><span style="font-size:23pt;font-weight:600">Run Model</span></p> -<p>Press the finish button to run the model. The results will be displayed in the main application window on completion, and saved to disk using the output filename prefix you have selected.</p> -</body></html> - - - - WidgetWidth - - - - - - - - 789c5592cd4ec3301084ef790a2b7b8b905b8a2a22211e01c411097198b55dc1a14582724088776767373fb0add7197f9e75b2c966488f0f7769d8741f679c5f4b2a2f784f43fd3c1ebf9e9e6fbfbb7eb74bf6bf4e97fd45d7e754d2fddba9f1daf626d97a504ac8fd585c6ac8717b385056cafd8831242831d612b251962bfefc94290492318bbc1088da802af09f20c3081434fe25020bc346b20a56c2cd96bc96b89889aa6d1451168bab85140b7358b2cc2988e6e2a160f25c1144b8401379757ff61ecab44a4a68a36a9bab892ebe38c70924ce800ddeb3720a621e9e05a7ca69ae26716ff4a28252c4491647708f3d27cf6941bc23f6ecb628c209d2e6beb1a3526db045b6a7cd24b394393c43ab81e5fdd8de4aa35673122ca479fbdd116025ad8964ab272dc0fa1db435a6b7fd73d3fd02a57dc0b9 - - - 789c44bdc7722bcd926e39afa73856392b6bcb8248010c7a001000b5d66ceb4142510b5081c07df99ba4afefdb67db99ac9fc80ce1e1e1e9e1eef1bffff39faba3fdfffccffffed7c767f5793ff9cfe4ae7affcfff4cbf9e9f57ffdffffffffe9ffffaefbcd9fa4fb35dffbf51b61bff69fff7fff35fff7dfc99fe67f29fa4f1f7bf5f90f40f0334cb76197f51fd81e6efbfbfbfa8360dda01467fa0f5fbef17547b077fa0fdfbefef2f560f01ea5f34e2a1e33f90fdfe0b90fc81fcf75f3c74cba00cb00d2868c7ea3640b3d32e023c0568e5edd91f48a3e945a38c8625abc700cd499bd7befc81f2f7dfdf5f7cde05681559b463671bd0c9c6bf20cd76ff40e7f7df5f6f377f02d40f8d9face606d3684774ae5bfffb7b46f27112a0d5c8a2613dfea2d5cefe1a9696cb3f50d5ff3af1da1d832afee207308e11ab76be0234a7bcf62b3a57b51a3195d5460ee8669d98ec2e609aff4d54dafafe03e3df7ff1967f80be8c019398b9a40c091ab75ad9dfbc54a30290677f2dadb6e22f26756f6380de5780763689217c0654f92cfa720e18c73392fe02308f69a87efa01daede2ef19e951f607a6f5bfbfbe54bbd300cd31f2f17d0b98b7432c3fde0d628086d1b0a9c6232973c0ac88ce6dc7984edbada21bcf5800f22226eae4ec0fccea7fd1b06c1f308f99ab069d00f5bc20b8bb803c0bc15dc578ccdacd3cc472faf607ea2730ead367c00c71385902e6210e69b667f0377369e3d0601e83dc0c50773f24797b6cd00d100b685ecf6dacecd1b941f465770568c79aab361e0079cc6df27113a09ea818d3e9eb2f683624b8e9710a982374ad65801acda2e94702cd46f4f601d08ee5910c0e02d4af0d3db6ba3388a66f1f028a6c1addff0474f398db9d8b00f5a8c7aa9cfe4d76b3590ff2df78a4a7e7016a8472bc136836a32f0f805683eeaf02d4921c733b6c03267948f2ee2760167f911efea99c66ab7e4b48d0e1a5414ce5f13ea0c5ec5f5e0b345bb11a5a062130d50e208bbe543b8d00ad2633b77b05c859a6eb7340b71d2d1ddc022ac674e3dc207adbd45fcc6201553fb4b41ed3d01f9ffc45bb95b35e7a7fa05df7253a77786510e371f22ec0ec9f3f01ea7f311edf802c7e925443833f594f3642c6dab59c46c3fa97806e8c7a357f0354524a5d01fab27b0d1867b12a3b2f80194a69b70ad06e20410d9ade2e8b10eda3bfb5dfcceabe44d30faf01ed68697ab10bc862e6d2a3a64111e37104c8e9dcf44940cbe31e50346858f4366b95347d790190823db9014c188fd18f401e2baaf30c9832407d019463f2710c98e7210ea37e807aed87c0ac63b2b32cef94d1d2f51fc83551e9c193007db94e0c62111e9d017204e6e6478031bdbc32080d73b33288d71e3f028a784bb51d63fa6b3bc4989625a040d677794b6d0884d6ee55802e1bdfeeda0095b32dc052efcd0015d3f0b6004cf35895bbf4b61ec218f59fb901e2100d2beaf160085700cdfee1a6418c47e300502052a767068894fea2641a4e0e05a4d8f6009d269b38cfb0825dde01b01c93f7534027967a357a0254590cf2fe440081290b80c4f2e7123063c3d9e1b5f5d20e394dae0578c6720bd00aa14b1631d9b5deefc6001dc7cc951e8fe33740c9985ea7062174278f800e02b31b4db7a1586d6c0bb09df47946dddbd8a33aaf8039b35f4c03d4ea2206682b07d48dfd03df7d03f6db0f402be4a34aa606b1ab4f0b403b842ee92c01791156ce167d6997650c50750f989421741f8c477b5646e7d8e7caac28634b3a89a9ecd423121bce7162804e5e00ea7fa1b59f015d76d3e32f81f849358cee775a99ac8b0bc098fde56113306113dfbc1788514f2625801d28f9e12db57c84487dcf011903f4706d108a6db4049445747ff304d029308ce84b3d62a10c7e0059bb8cb77c3d02f24e74ff721750946c7ca150baf588c5267efc0ae822743bf7808a35f71dede8dad6dedc0174e86d670d9868084f0d6203deda044cd9e63b4f0658287ae83447f57d01e639066be8b16e2db8610577f6002d843ffd0064ec0d03811c43202ce91a1461f3277b15a0e4a1e5b641a8cf9d374087e5b179615004b80374e3ab20b93b0754f1da6af82310ab21415bd6360e2d2d7601d32256d4db1c308bf5526dde1a84e0de5f18603a854eae770696d82407743ad1db67263b6f7463bd9c86baa86a71404bcd015d94d2511b50e92fde0d62115e750d42c6765f0c42c68e2680315be3c9143009459fac4382aa7a9fc3ecf906cc98dbcd581e55bda262010d3f01591eeb657b47a088c9ee3c0072d4d664db20deb2d24f8a98cae4e51e50312fdb03c0988fc4c15c203ebd92c373c0a48c653a1a01e64cd4067df9b58c4249f700ad786ddadd1760657f2780ac1322d5d133f2d085d5363397959d509ff74c54d6ed44f75fc680aa13dae13504a6ca3b554cc328a672aca59e9edc01c66cc0fbb94108cccdd220d4c5c73760c2aebeb70f98867c2407b1cd8feb958dc9720698b1236f1c0be46c5a3dc03c76b16a772920bb30d6cbb8dd40c37c9c029a6c7cac975f102bfbbd218042e9d052e98fe4f35020967ad2b907687b5d7c19843278a02fb5ba882536d1433b18023727806e58e3d5a65a5af135ffa4968e79edd785414cf6531330e12755289471d628e327cf1b8092a57edb025401aa157dc9c69d5840b74d8318c2c19e406887ea7d0d9884e15c0d72812e837c6310c23f4382b2592744ea7a13308f9f5455acfd719ec54f92c92320ef8661b4190b6852cb1086f3016082cad95b1960195c00a648f2ee86413ce3a067c04e186a6b527f148692de9d010aacf1cb23c018295c2f003204b69e0073c0eeb980e4346ca9492da731404b1e5a8b25f6fabd40811341a0cdf75c670b20291c9d09605cf5ce054a76e43b40a967cc0d42700725a0c3d6d89d0ab0477d5c03f89048de52c004a7ca1da3de9e62c2bded0366c8fae846a00cb14482265903a5f4b4036886c0548f3c23cbcae8dcd73b20efc46bb7068002d15ed3f45af5c57ab97d058c3b31950513554b725828df1d8390a0d59500a2fdae8762c05773a6329b77427f3cc73e571b81b15e92f4d680afa418f5a9bef8d2e331608ce01e6e012688e551d780cdf31b30450567db06f1797ffc6210dfa647e78099beb48e0d10fe2bc01c4f4dc96b658f553b3780191fde6b7ea20f896ae7520033b0176b6e5acb7a4cf6d7b100823ba061b5f0c7ecaf3e0019bb69670628d90a7a4f02f13192746e011df6fd47c6b48d532599bf022a2cb6d12660c25b96e706210e3f67022ca077b5638a4ece6f0c709732eab56847e77a9706f193cb77c09c3d7b14ab729a3578ed4626109b783598009a7c03ad070621c96f7b8016edd8d917c076589c02dab12aabcd4f40861adf40e8ea41c7ecd90174784b3e1688bda15a3184f512c3bf8ec0d4fb4b6c168b03c0381e5a8dbf0c42d13ffe00269d50f4bd528025f6fe0c98b2477d6a8066f18cf4b22f103f49c6af06b189f7ef0c622a2f1f01f3687ada8b953dcd1b34ec85bed4eb3626eabb0168c57754b59c0bc41e55ad5a06f1172b7a9bb7a31dd590d9cfc755acb9e398db59bdb27177f401da92f63383e8edd71b602e8fc0cc20a6613bba3fabd72d260b3f69cd388f7a5a0a68ddc6429ed5ab327ef27d2c80c9d25901e493eeec00f0c0279d0d83908fb70380be6f3fdf0c627fc9e7801c9f416f1750f0da5e1750f2178333010ce76dbd459fc4ab1cd08dd550bda873553c2339ee0b603add3d01c6f19d9db419f55a1984484d16022ca0b15a3ae519e5894198e73b7ae88ccdf36dc7009f81061975915c3c03e674ee795380cfb7871b8398a84f86502b3b39581a8462fba1b7f5528f67bc3140fa6e48d61d0196e9eadd2024f963cf003fbf40115f38093e835f80fa7c0194b18927c521a0d3c1697f2c100b28793f02e873251d1984e07e0e01156aebbd651032f63c1060ed3f9e02c6b190934dc4a15639687e0de124b6e8e41159af554e347dbe21c0425edc016634ec2e13400775be00689864ae96cee92d5eeb59ad72a2a5cf9706d197d71383d00e37170298d6eb1f40b31b73fbb52150e19960b26b1d14c2bf8d58d6b6764cc3406fc9515b033d348f6fc26ad504947c794ef48c0e23f67a2e50c5438728b65ad361d444d3e7bf064780038156d841b36bc00cc576f06810cf38be05cc317bb69706615c6d770dd0a731a6f356037dbab767807fec0450b47121d1b0da648921ec5f19a0e9528398fd4e0568c9c41f00da984ebb63017d686e03723e563b3f027c357e0814fce4e1c2207461bf0328f129adce04f017eebc023a7a86fad241c3f4de015df91c197529c76a7d691012f4c2a8d7da32c6e37acb20daf17a0c90e76af02680a6fb2c0d6247de580366d8419be7062174c599418cd8e617608ed9d36a09a02dcb3b8390a0cbd82be7b5b5152d1ddd039a74ee507fd1a4a54f070631955fc869d6eae2eb632a6b8d1bab61414bebcf951087c386418ce9ddbe417c14ad0b002a38d9d93288ee9f20b8b5828dee375f0dd83c7b8012c7eed5bb001af7e7d520145b99013abc76d0320865f0de34c06b3d15e0a3e880d59075d90abed5b92e1f671f0d83f8123fd35b2a54df5d621053f97e6810f3926e02c668ba526f9123e2fbd92006a83a3488674c8e0450d2cb5b83f84989f0d79a3f3af7d63288ce0d5e0d4249a382e7f556107afd410f9da1607f4e0ce22f266b8318f5a74b8398ec86646caeee5f08b0ad4d19756f16c987007edce6930167276d40936fe4af3301daf1756f10ddd742ae4d5a3e67ef0c4239de2f05aaf88b1dba9fb72563ff0087b14d8358843f8940371a564d001942f7a996665db4837a9b557cd0bc1b843fe8fbc000f31c259d971527340f80ae7653b5a3ab5decc320c6f4e4af2ff5de31e52bfa701f306b857774eb0180359e1e1e1bf0693e33884ff3d371801ac5438ffe81d82b8f9f05d82b4fbe014d76c28fa5416c9e7b1706f1dac9b501eee3434045f44f2709507f898742b95d00ecfb7c04b4f94ce80c01196edb6d3d8398ab64ef0c50b013f6f704f8088828a41a74d83cd7f70631d9959ed1c501d01e09a0b53798977a8f8a87165f00f6a86a2480bd5e6d4e05f8ac1eed026668edd69d016eb97d8310294d76bd0361d19f19841eeb1d08946c169b01ea1d2806797221c086f3c564d75b12f11f238318c2cd2d013e029e98cafa7b3f1e9abc00b2d80aaa8db64188543703e49c139e168012b7dccf29a0db21247122809776c900d5b676746eb40118f3edb13c11083d562d4b0154f07b0a98f0357fd53720086b6cc0beaf874e504ab7db0661065eee00a6e8e4efca008d3b37e0184cafc5b597944f00dc0cc962df20446a3531e050b80998135452760468e9f8dc20c6744ed36b351eed78d815a01d2ffb06b1f16d9f19c420df2152b55ee71b686d1066cf775f40ed3833604bda3388011a2f0d62d4a7022da6e149cf68b1250d6e0d62c48602d2fc17b900bbc708b1acf57a2ce4d723401e03542d7f04426ba7a77a68c1f67a8f48e513347f9cbed57a6e8eb6dc0a496ed6fa3444eab402485b2e0606f1dd70e4bf40af479c63eb374c2dc6747265106afceb1bd08e4f8d64151ab7d9cea42d47000e1f93bd35002f7eb2d904940a5c3a00747133bc9f00b4c446f4b63d417f8ce6068445ef03a6399fb35702e8f5f7a641bcf6b2342018ec0b302b08d17c1090626b04c81ae8f58b4f01fdc510d0c487b2756f10a2fdb46f80a6e3b5591b0b76c83464192d5d9c1bc4023a6d09a0c79a3d408ef1bd313208a17b50d373ccd1426f29383cf8be3688c98eb0b51a74f849636d40c0e1ca2066ee52e3d145298d5f0cf06e4c0da261fdb6007e87389dad4185899f19c899716a107afdfe52204ca764b00b1863a0eddc198452da3e11c072dc78054cb0e81b370244329dae0dd8c59e0053daf1581ac4cc3d2e0da2fbf71ab1a93c24398083c364fc63c0e6d917e0b5f72d8350065b13c05c4e95278390d3b1ba3fc7b6ecbd19c45f3cd2b95a49c720a7f702b474de3608597ffe0762bddc77014d7c39df3d019afe363488417eba3008c1ed370de80b8bb0d6c921a75f95411824eb95805afa6c10638a3df60b88966379d45a3bb6827303b6a4af438398db746e10ed1832b7b5018f5376db209a7e5519444b97970274bf4800395f05bd5c206cfe6417e5586f059ccfed0bb0151c1f014a3ab7666e6b8b9e4f0dcdedb8426d158069c597b8666ec61e156edb56b3688f63f7d88fc96efd1ad7f1da2940db499caeb47e49acdbf0a0fd02f6a8d35383687a760068b3bfecfc00883fad7642d65bed16e7c83bd702da706847bd037194b609c815a6353688a53e6c000a369cce0450860b29bd3c0674704325b4d487c20fe780b10e857b06d1b0452ac041d9aec084448338f3acc194a62f1602789d16ef0628e904a0e3c9cd8e00e6f930d66dabde92623bd92a0c42294dbf0c883ebe05b4d84d7f2e006ded40063a1aa01d59c6de30bf36886744707e0db4033ded0aa0e9aed452b9d367fa498117fff4c3204ecece90c2da808f1d687c6dc000dd0884c64dafd6800e3e94fe9941cced6806d0a6d59e18a02d4f0df86ed04f2a36e09b8500ee9fb232c061f6621093bd2e0c62806e1e013e383c33089baef160100b79c912ab37ad58c8d9bd01a6d3540073343d30889fe49a5b7d4834870268ede78601273473c04c0d7b3488851ca73c7f203ab73e1160bf4d4606a4ddac0c62a93fbc021478f0d535e0f07166108e885c0f9da3c69f9b0624091c1a70e2ad699887173ff96679e8cca2fabe3220e8686910dd1f5d1ac4339e52034eab1f04625babbe18f57aaf0c05db9e0bb069cd338318a0cd0f03ece403039ce50d017c396774bfdef842055f5d19c478dcb50da273c9b74108ffcbd2203ab77160c0f7dc3ea0cdc657ce0dd8a2d70274eee5c020e636f932c02b8938e49cde27cf0f061cd66b80b49b5647063140456a100d2b5e0d6201bd22b8798ebad8d75f1095953c9d1b444b5f4f0da261777a4b1ebb697ac602ca0b5afa7c2fc0a8179541fcc552835ce0b85ba393eb5d3d04e673db209abed111c02b1901ed35d05963e3cd80c0e923037c9f6706b1153c6c08603b7cea27722046ccc41f08f97890d05515737b6c10b33f95ac4f2a5603435834c7b1c41e99ca22e32fa4c6ebad012b27768fb62277d2c36869bb3648c21171780668625decb70ce2275f5f0019245b6d405bc771e706a410dd08b462451d350c42d15fec019442b47d6b40b2e4a941c8d8d7c2204ca7af252027bc6118e3d16e671c61edd20e05b6556f25a02280fbad035050da7988433b6be84c9c9f38c8e6fd0dd0c242d93c32c0a576661052f8b10f6863a19c26069cad3d08e0b87bdb3688eee3536ad75faf21eb5b2f809c864dc60234fdfdd820fea2621aea7d3f26aa7b2880fdf17464c009ef1d807d3fa90e005ddc83df06f27e4d0508d45914001dea544b03ce815e0d423efadf06a183168706b1575e6e1a44c31a158090a2e466cf20d6edfdbb41ccfeea528096f6128368e9c9c28078ba1160a290c4538350f4e9cc80afd701608a4ebefd07a21dcf370228fad98e01b1b4338358738d21409fb347fb0631a6fd578368d8bb467d8ef3efba63103276a9a99421f030368831bddd32e0ebb56910e3f1c6bc385e2a9f1ac454de6702b294e60631c87ba541ac868f27812a9e3143b1c991994caf0cb0a51606211fb35b013e4557df027ccf658ca902b9928f3d83b0947e0e04188f3437889f6489418cc752e341a8577af16610bdedbc1ac4ec274b8358a6cb2b030ea78f04aa10a906ea22570ac0d69301718e7b06311e471f02f4e5eed1800ccc238398ca6425c077f6436510baf0a76d40a2a3da41c05072adf1c891b1ac6510b6f6cbae418cfaf78641742ef93120a6f74400733467a9d7c60402f36a10dd3f937c148cfaf3b70167053d8368fa506f29aab01c7fd4f41295f37a2f40e7b64e0cf05d68f6cb8a03bbdc002b676c103fd957f73b74ffa60fe8d2d2a3b541981bf7a7021846c34d03b4837f3226dbf8d6209e516911e21e4c7ff40c2c94a429f91863c36477063876170631849367c00413ee54dd9fd0b0c317039cb23d8378edaede32651a22fca5d52e1a611825af1f06ec2fbca56887fea838c46817d998d40c146c91330ddbe1946d97cd09a65368feecd7f1f2076eef016d2c94dbbe0116cabb00ee9fd30920e30c787e67c0e14147007bec30378876ecee0172dc3f53352c6f7140c5339cb9b4db03e8a875700128c9b08ba4de5fc0b9e95b1740e44ef2700998124184db366bcff0e52c3e0c70fff82f3059f663f6b3ac81b5b578033479cb221150c8c891014902fe09bb69fe0d6863f56d1e0ae0d67ffd31e0c8b72fc0b7692f0564918a903ce9a1e41524e503208f7624cb26a0c0625b5c1a84f0f7ae0570fc8f16067c023273f54b62c45235bd0c4b29fd7936209a527fd1a12f8f6a69076fcff5be4128a5d615a04bdcf8cfc280efb95d01144a979993db25cd8706d18ef68301714a630134dd72628009a7768c655a67063184d7850151595b0621b8b3ae000a76fa6d10bddd9c1884ca991d1a10a1aa01223e28bd6a1a90fb2629d499c5f8d2209a7e541884fef8dc044c31695fb60d08ce9f1bc4784c4b8358c845c72016e1ed064007cb1ffa0bc5071d0e0da832b230a0948b1a3663c3d9d25ff8e87962c0916f6ce2596db145c3ae2e0c42b16dbd0960d460f3ff8218d3bdc200afc2a64174ff1b81a90db418f5d99e41ccfef052001b77d4318896be9c18841e7b7c14408d2ff596163236bd3488ce4550fc1f885539bb13e0ab80e3b85f10e6d7edb9414cd47b05c097932ef59636b654fa6040225bcf20c6637c2bc04ef8acbf201e3799fe18445fee5a0698a385410ce1cfa10105a734840a8feabd1a1000a1d7e63ace57e7b0d8aaaf53037c6c97062185c9a741acb933030eebd77706c47c7f19505860052858a67c9a67b6e936d4f40229bc7a366008ff8158846f3d8398a8efb501996d13032a40e827d874d5fad520143d5f6bbf20baff991bc4645fa1b6e464aaee76052af2b3cf0de22fa4d86a9b8e4cd04c80e0eb1f355de7b7876a7ac5dcf63f0d48cdb83688cd625fa23dd67868d4c7584aafeacb04f9e8750ce2db14b77e0df04b2d0f0053b5636840a8d70030432c77b194f2391f783855323bbbbe67062130ab0d83d074c43a65450b43f18bbe146dccc063a6a1c8f84ce831ea453ea1d64db4b4b6a45ae195dcef00646d45caee2fc00cdcfb31202ffa1c50601746a4fd2fc083b63f3308c145e5e42d155ab888cee5bfee9ed85f76000565be5eaf0163cc9eb40d501c1b914cb9734646742e6b50eae7e21bd024a3fdf00dd0e260689d1bc444b5a78036b92b3f9f021416981406d1f491de9271fc343a3508c13d3b32c0543801e4c4b29c1e0ac87638009418684f7b02a4aa7cb70c4851dd156057dfbe047474a4f701e8d28e7d8d98029667a90127565f06f1966fbda5ab63f4d280bf60f6ed0e7b5e19c420bfbe08e8f81a19b3e7eaeed22024f9fc5580cde2f61f08853241a41caaf17c6710a23d280c70a98d01846aa4570d8318a0974480d7729cff0b28ac38318811eb6aa2088b4ecbd48073e4a141ec628d9141aca80b0d104935d572df005baa0b981367b0b96110c2bf960429e2eee0de2006797c6180cdcfccd5761067277d01994e2b8398fde18741347d485f146b9d0e2f04386d1aec18e0da7b320871781e1ac4bc2caf0d421cee055a72755606d197c79e0176909a4e44774a3850ae809074786510ea62898c29a23bbdba3488ce71c2fb0bc272bc52c37087259ffe0bb682b6de822b2b3dd41066d1fd74b06710faa3d53388eebfbe0bb0f1bd350d88c547f86b0b8595fd68107df9d937c084db328811e3b4e917106cacb9c5ca496e9e0ce219e70b036247f517051f34ed4783d81b3ad7064475360d2837f66c10737b782840f7c77383e8edf6d4008f332baa365942e82e530382d24e0d62f62fde0d70cb950631fb9d1b01c5e548a43accfeecc980388377033e78cf0d70439d0930a62d4d4397a96c4e0dc252bad77a217c3feda406d1fd0d4d76c5341ce506042e6d19849c1e4ad6656d8d8e0d62074a0a012c148ccdbcb6b6f05d7c1850f0e1d620a6f258733bc6505c6706d1749cf635c0ca696b3590bb527daab753d6cbbeda31ad624cbb03018cab1f2dc239e6d7177650d118531e8705543491e48d3d8378cb332daded319ec15b8a36e7959c59e44586e32e9b19f06daa67e4f8fabe591ec5387e929ec40015ad164eb7c31340863db6df3488f5b21c017098a587a5413cf4e8da2074e1ce11a0909f4eaf2d70cbe111f805b18bbd3c014a1a365a09f096e53f106249d85ad1eaa836c315a06a71b27a0918b7306a42828ab66a868e4a0372353601a52ac62e005d2a1ecc636f28b2064eb7a853f35b57901c89c1a30026cbd1009071a2f946f7ed1f2b7283d00e475f066ce26b40a1943bfda4c072dc1c18100d752c2097da1ca048a6ad3b8378e88031ad8dbcd83dca4f0122aa96ea5c172fdcd6ad804e454f0c6299fe3c19b09b32518e537a7d15e023318aaad640deaf56df80d384a600b6d4566910af1d2030d9243a9776f55079ae6e1b06d130bcc535605b2b1118253c54c396010334362018cc7f818572f16a102d6d6f18f08c04a01c89dbb541342cbd3408f9b8ed09a0c6cff60cb00bb70104e8a6fd2b835862db7a06c970e9c69301a6f5a501e7d98854ae1a3378f10b8525a5673702f2283e1870e23d16c0ba98eb274d7cb07757063140fd0b01e6e5ecda8008b3438368e9c54c004fde15cba336e1a2fbfbef0274bf7f6d107a8c5896c29918376d83f8de5fb1a2949a910ebe0d421c703116cad548fb370631518d1703f6b94d0139779886dac823fc656240c558353d43e8ca3783d0963f2706b180e65f02ca08b9330839bd574b731672f26080e97460104e8499262ac7da225cec17844ec60f53c82e4c863d01acadcd2783e8edd6b101d53c11edda840b095a1f1b20416f0621857b170694a07e15403ec8d32a6c061ea8b7a5d2083451fa24deed1a100ef46180c07c1be0753a33c0e7f82380c7e859c2df410a8f87065480280c387afe3188311d4d0c42d64b8954075bbba9bfe8a2830ec70604a3ef18f009782f80c9d2d688554cc3ecd9803468030eb83b0d833036075b06e15558dc0a8c49fad6ba1dd3b94d356c4c5f0e13037c282d03aad01c19e030536f27f4f6460223c7dd91447b8a7fec5baf9db1f6efb4f6673c742a9533c340dbd54fe698704de98f3976e13c3588fd6583e55134f808c8f604303609372d6acb9120bd5d406b127f31656e6bcb9192876f02188a57fe8b786dc277f62fe0cc536fc9c7d4856b1bc464efdd18c454f61e0526b1477da92fe538e6e5198d5b7478cbfdc22094d20be2503626a1e899fddae6c31c2518ac6cb5a955319c02e41e7cf83188a67f7d18840a9e9e014a2cc7bb9541ac97dd670122ffb65a067c465e003abc65f86010833c8a2da9ac4dc9b0e85705a08bf549966fa90a98c95c604afd533cbd657b4ec954c23c6ba03aaca501df2f619f96598314b3cd39a04d7ad87c604034c39b00d6d6c71120c31ce5c4aaaccdd150391b4706b1c44e47029881451b4089e164f10aa0ae42f5a09f5067b3226dafcc547288e8b0d235115ed439d9963b0b4045adce87b60185c0ee00a465a5970303ac2d755f795abdc200d37a02a01069d23e10c0c47f52d3551321ab0c624c67fe092a67ad864df11673385dca5f98369f0da8dc521ac42ed67a174005dfbe18c4cafedc378851bfd5a8abee57ebd380f2381a0f6583bdfd18c4dcae4b83188ff31783d085fd2783d05277d780392988c9a6015efc7703cae31c1bc4323dd813a0b7d3a6416c8daffb06245bab7373f686cfd030a592d0d2ab1b8318d3f5be00b6141f89a553878b8500c7716451944e1d9ebf1844d3cf1a021846a74b83f8c9de9641fc840fbc520ec474fd63109dcb3e0430e188d72e956296b62606a1a5fae706a10bafda06788c8e0d42e87a9901728a582ae72c79ec1b5066436fc9e40c3d3520a03d3708038d00ee52e7a6e9eeb941742eeb1b8431b1aba62b912d9b18c444659f0664716a1a0a84aed44f0aba2f7d5a83e8feceb901164a25c0f68ae1fc0ba22f5f7a4ba93c8bb94174ffe2c98060c18e412c42ce094b95d9487f7a06b108a3a6fd1f88674cd5172cc7eaf3cd00eb73cf80efca538310ba1fb59493d524aa47fd81e84bda35a068d5364021cd0f92a02e3276f66e40d8c9cc80a2998501323614c03c2fbb0631b743f5968899eae3c3806f318d691503945299e31744f773b5a30ac328bdd05b88c94bd71b06642fb07bd48662348cd4d05fc07edb3620d25e03346508db2706b125fd48074dc3964a6e860694a1fd02287b9258851a483e9606644048706758d23dcdbea28f5faf0c62c4baeaed1c913a1919a093b13f6afb345abafd0f9007cc329567b3225ebb0613fceb0c90e20b93e76d8188a64c36119822a3fb436c87fab3203a7790096016272d03dcb6884351609fbe2e052621b86374506d9fe200181a70d0ce64d7f6295f4961f6747edd90b125dd1b90de71072871a81e6680fadf1ff87a057471974e2e0de27b7f270c814ebb4d7ded410a20bd34219ba3a3c8bf8a44fa8e73235bc7801cd71e910835403b0cb6018532303f05700ff6ce04f07e552f007223d38b4f83f88bc1a900f6d8db2ea0a3aa2b9500a6d3f9bb01dfb72d4017c3e8740150a223ce8c8eab139e6c01c674bf7c35202f7a4f80238a7101505ee3f7a14108eed7b980eab24c014a63fc3810a01de4ae747ca07bdf33889fbc3e1bb0790e0072edbdec1a703bd48501916e7a06898ec9746c1062d99b0028a053f53473243a5669c3807c8fb501c7d76a3af90de9e5c880dcea0d83e8dccfb901aaefd620a69264da8ef31b66a7065c6bb66910f6181ef88e4e89d3e3c22066ee313720af400f55e6636b6180f3cf00eb42abc16503b490f3266e866902a04a4032df31c0d7772ca07486954128d88dd2000f2b6299b7197582f33bf206a6fd8541e88fb391000dcb060684bedd0032857a6d1850ea6765c07d055d03627adb06d497da31c0039f09a0c6e31e9a3fc04ff40c15dfdb191a509cf14580cfa6a804fe0762031ebc1bc4dc3e2506947368097092b8f26bb1fa6628699f12ef6c1a8424b7de0cc26421feb4a364c92a6d1ae0701f1a105e29a12b318bf3238310ba81de42c2657a9019e0a37f37889f1c4ba44af6db46c320b64662e03b32032b32973a4ec9ecef1ac410beec1984d03535731d8c9aac671003b4b365107b14a5c27e41e8d33b75bfab44a52703cec467069c037d195041f7db804ae03f02dcabb1353508f9e8f40ca273db6a07a96ee9913a57f135ffe8bfe05bec7864103fb95c0b605cad6e0c62f6cf0f0574e42bc125703a393d30a006d199414cf650633a464e3ffe81f8c95e6a106a7c22c11de32f1c6bc448a8ab52e98f0923763c30c0d8bc35088522ad5d03ca8c4ab427588e9d2bc0546b5f433845079d740d18a0b941c8fae1bb0109315ab7a4dc55ebbe018548358433846ee09fc84bbb61809f5f0233c3b3b9afcd62ce4722b55d7e4168cbcb0b83e8dc8786704e72cf0af9281ae8c2d687804cfc1d8310ed49d38095fd2cc0a7064747bf20ec53f2b33b45734ce0e39601b7ed9d1ab090cf0d4282c6ac064511a457b901f757b2cf15445257d58d0036ff752580b7f87261c0f5378c58914d48fa468fc9179cf4503905c95f497b2da0085576c202d5570dd597ee84cbb130158a0a597fd3005513a23a1f00e3311b5fb4b46b5f306738dd5fb7ec1f580e017869d3835b034a51f60d62e6f696802e26fec93ea0c2f53bbf3488a67fc686d36debea4df44757bee0e4f315d0a5e630874bbf175b915fb9099806a8b632c08c92322b9ea11abbd5ee0940d79b6cbd1ae0507d041484158c9e011d1cbbcb178358848b63803cace74700650acf9b02aaddd132208ab100c8d69e6e185095f8d380a20099806a1174014a0c7ec80c42c35ca9e9e40127f7db0631625d8dc78c8888a807fb0762a29a5f024a23a80c62173bea19100c76065025acd7ae013912fb0258d2586c5d670a1f560658e35b06b1b2e3bab95f40009524a8069cbe312fb5e18ce5782980d973bd6510c28f1eeb3a00f37ed380b2bca706dcb2ab9f70a94cdadd3508353ec80c086b7c3720f0a02f809177fa631033b73f36e05626b543c9c5d75d01b93aa7061cc89c1bc4000d5e04d8b4ee9142d51049c6370684d0b404188f832b034e23a706f1932db5b4cd06bcfd065044e6d995412894aedea293f7cfc2800a320920a773d7a54118ac8d27033c57a70618df23037c6c9f0288d4c07f11677c69863eb5e17cf36cc0126b1a7098b26b406123f5b6c0605d570624c34d001ca327cf8f065c783a30c0a19a0bc83e3d3588c93e9d1b70a8f36c10e3f1a6d5d04182fa9b06f1b576901ba02d352fd8c949ba6d100bf9f8ca8092cb0780ae2222ce0c282b712cc09e7d7661c0cd70a90161493b0624f73c1b50c25e9dab14d09e18c4109ebc19446f5baf06b1f16dfe1850b1fe5000e3bbf45bb02dcb6d8310873d015210d3831d8370973e4d0c8884fc12402c17a70631d9178f061414ea0960b06acfce65196ce9b51384ffe05b00fb74901ac410ce5f0c426df5f50c95b4ab2e0cd0dafffe22badfd3644f15cdf06a40b2a4d6fe8cb57f7e6540adaca641a83eca9ffc8290e4c31b032ea4d3cad60eb4d464538b31ed4a05cf591eeb3303aa784ba1ccb14fc73b06f11754a2e8d6366ef465b96b106a2bdb17a0fbc3a601a6c2c080330b368ba22997492620d3fac580de3604484f9f1e1bc4bcecd397da0aa69c831edac2f5bbb932209676c380bce89601b7a72363b5e11c2dbd5a086005af4a8109090fcc7e9131950dbd2523208434931a10ccf18dc12acf77f5722f809ddcd420177cf290f45d830919fed70029c7c71b01464cc6550d08e0565f3accfec3a101d54dd5526a2224cf68cb62c2540ea602132ae98503a05bb6d95f28f751c9f39db223ff8250281b4b4045f4715c69f8076237a552c92f8831dddb3540821a80312ef9c98d0197b84d00d3b0e82b8e4aaabaa108cc11400e5592367f6f1ea594fecc00877b17a06cb0035e9bb5c99b2748afca32eea26011565955127c9d1a10285c02c658e3447754cef1ceae0c62893d5e0214e57a3e35c0f83e15e068201d00c8cf4e2f8f0c6213bfdb33a0ae751f40f675dabe35203d3d11c00e3ad83508cd5f68c4b86724793b1420fb89a8accaf5fa88d7ae9c9f3ddf3588e5f1b163803b6cdf80a0c530142b7b9caf56064444bc0ae0dbba7d32e010f4c08024d6c480bbe22b0194e32b73eb0c6ea2182ba732b56706c43bb40ca22fedbe418cd8706c104257dd015a8cd8ecc420ba4fbe47e5c0d8f591007bb6844e81072915852b17f2b91f19b01ad48e361ef8c6b3803e460a83188fb7a9412c530a7f57f66bff0c0ce2278fa80b85bd26d37303729b72038a43fb2fb02ede5606d1175c6a9563589b0f0621a795ff0203adf505502af5cf874148e1c3d02086f0ecd280bab42303be3d3484aad797b501aa97834152d9709e6406d117ae7ca8147f9a0e360c10cb5b01ba4f19b85f10bdddd2447594a4d83508f5f9ad79213f3bdd5e1b44f739c2aa6c27bfeb275d16e1bc6780b3dc7fa190d53d03c280770c508eef0218579f9a06251a4c3540ca155d5c1b446f87ef06b12afb5ad9956e44191a5043e41fc02cde3588dd94b0932a1febfce5d120baff7664103ae84c2285159cde3c1944f75b33032299320366ae039830d94487d580317dde32a02ccd8d01b10a5a1ee4ab2757d2855396d8ee950107769aa829f6e9c1a501a75e7aadae795b68806674eee8c180d88da601e1730b011a96f40d425b9e69e6e672527f1890d8f76580cab93488af825e6e10cbf4706110cbb4c51ee588ddd591418803e184bf804a694d83e8cb665f204cb81493f617e0a3df33e0701a9d5c90d59aec7d09a02d4f7605b071b76606b14cd70f06610656ff7ec24df0e706642db269b96cc0eebd418c07b1b435c00a1ebd18e000581a50d2ff5900c72ee5e7abdab48e8fc4bb3383e8feedbe005f16832b8358a6d483fd05d13952327f0123b669104bfd06f97089d04b4d54860b9a58b85f10f3b2f25f105482cba42a94d5baad31cd318bab6783386f781d084cb88915bbb0285840379a8602f3fc4de3a1d0eae4526012e3f129d091357e6410b2befe3220bf4143d8e5b3e9293720a54a6259b1c4aab1005f3803d478ddd098db0b89c334fea27a64c32991f5e4a332e0aed678cbd815200e4f015d4c7c52767f0197946f00f0c0a707738378e8e50d60ac7263b7029c154c0e0c621a7a0d835006d327c084ef06cad2fc82505b5f3f003e2492f798b971bb9b1143b205984441f68ad3d971d65696de0e40777370bc30ce722e185fad0ce22fae66027c8c2cd702580627f700aebd4b371e011daa8b250d01825bf21701c25fe272dfd6d8a51848ec1b6763aa7a1d25022aa77d04989093b89d0ae8ea89ae005b23e195e37f375e9c1b60b0aae98aa9b97f33a060ee074097c98d5706b1b289821efba2d16c6c1023b650d35502a1fb0f700ca641a604427a9219c47efbada9d486b38c753b968f3e593c0bd0979b0d03529946067c7a350d08586635b878e7782da092dcaf0664f84f0c62a91ffdfb09d787bf1b5074f704a02209d5ad0141cf0d8390314a848e7ded5db5618023f3dd20c6832492b18a45554f9f0012ea92f15480ceddbc18c442beac0ca8c73630e0e46c6c80156cc0163d3b06a8ae427f5b808f335c2663d5974aa91a39767d292eb51bdb8b7f7f0520a439695f1b8448ddee1884961a6a08550a6aa330a098e9b101559a25305cb293bcbd0930b7477b06dc34712f8083682b3108f70f855ac679c98a7aec08d0fdce9501f7e0b50d621a1a5b069c8bcd05e44e2f0db85457cf508183e7910142971ac4449daa2f1d8e17e61b06e1985968bd2830e579d3803482ca80f41f2da02e36ff283388ad60fbc500495e18446fa71d8310edb59ade65135fa1b67295b6e1c47bec320a3f9afd4ad1c767061c840c0df8c2f1333036c9f21debeb24194ba18c75e1d8c22006b9f76e1022f563c017df5ec78030f14783e8dccb3f10da819b157e418cc79df4872e909e9c1844f7276f06dca7a5bef04193b65e0c42e82e1e0cf890e81bd039b6d7faeb84cbd23f0c908fb6014125ea2d15209273358cf0ec7457f2a142829870bf808498b541747fea9ff041f3a6953da72f07db0654a238312089a42540c32e2e0ca877812e2cc85d493829fa057cce8e0c4851ed1bc4348cc60278ad97cc5ca1ecebcfb600ab61d13460f79818502ec83fe1ab6087012a7425eaeac2802f8b5c80deee1e1a7030d435e0d4ebd480cc36e6c56536a67301be2caefb06b1d4fba706312fa32b8330bf16f70298c5d78854fd6541d45ecb20b4d46421a0efecb14174fff4cd20fa52550621521c0a8f75569052e87aec82205fa89cfa43221a96e50621dacd338149745fe6680d42c39c6b4c4b1e9a6a084bc4e12533401c7e0426646161f6141dd52d36604c37d706a422dc1ac488251aa00e5f8d6ffb0624174b1cba7c02268f06e1c57fd643c71c733ce9b5b3314545e22b69e2a222fb5d03eeb01b00749af0f569404ec042a0cd21c60b60c207cd6edf804cbf27c094ef97bd6b806ec82d57066471d2b0f6986b11af9706c4b2d0b0ac5de0ca6a030ace1bae4a40c53580bbfa09b710a5c314302615f29a01d2ada1c9430e50f18a8f43032e40791350d8c9ab01b5b2ee0114244b9e1a02bab8796410cb23e1a1ae44d17931c0a5f621801d744d4b55672299b60564081c1ad0b93d03dca5c780962ec3fe0708c13b372098e3c1203ab77b6dc0ad6e770661b23c4c049420c400296ebcea6d187013eb8f0056ce6ac78078babe01e1840b036eb6ee0960a0edcc0458ea3bef00a5fe752e05d4fd338310bad39541747fbf34887979df30886f8fbe464c8527de34512a48f6f465105f168d7b8350395cc3337159894fff048d3b45c61c15bef56e1012f4a3a6ab68c4d6d82096d84d6610637ab60fc0e19e246706b103514760e210ef433d54f51dbe530304a66310e6c6a6ff02af93148a5cf2c9771340ac75ba3a3788dd63fb42001fdbeac120a6e1f6df5f104184ca71c187b3b101572c9d08e0611d7c1890a13b32084d77fcef27d44ff64fd8e67f868031e6c6877aab9210eb860105a63b063184e59541cc4b96195098a40590f5d9939c4eb0940eda061c848c0c70db4e0ca878a055a9d0ea620b407e76b2b132e0ee053d9402b1c9f8d920c66374634036e9da80388337036ab96ac4660cd0c6b54148e1de89412ca07b0da10e524f5f05580d9763034ada5502f2d2ce0ce2036f9e1b10bedf36887959d197dafaa49cd4ae013179fb065cd53210c0d17df56610baf0f8cb207421b56e26b5391add3fdd37a0cec4990119ba7702e88fc6c22024e888cdb33658431cba5b06f8b64606312fd5a500e3916c1850bd12d1767836097513859d5455cf20c4722733209656032447f7c1b50117487f0bd0b99b5d033ecefe016eedba34201f080d53e89e91526f515111375d0187575b06aca88e413ca37104d0b522546bac013296bd198487759618c4100e358478cf132e3a9f14e434a7370f029c9d1cf50d3026fc9309f9eaac173bcb2d305df25e77fa06218597b901b7ba6d032a7cf4bd3b8398b97396586db0a261ae0cb84b6f5360cac5de9231e5237f9e18c4989e69a214a8f3f66440d6226aab9862d15fe81933e494538d49318ff1a8b8dde517e0776089958d784b4264e844c55eaa57d67ed99a5021045d58e6536e848d519fea16b3f4f60e30c14e26df635aff8b9f7c3c1810fdf36a10163d177efc8258d93dbd6586457f7b6ac0bdb31706a171890098ba740937e44e75d15772b602541401bcdc13c01e9b540604517c03c65c13b9d1074ca8f43cbd35888772dded2f20c6e85e8078ed0b7a9b4d49d9fd9e1bb04c5f04740726bdcd665c2bd22f046818ded1a902eb93e58301a7090b01f93e2f0dc806d35b14b498bf1990757428c00e74bf30e0824f3ae7fa74dc6c3d55318f8a1ccda98a79545f1b02b8908e3b0015f378280cb8dda534e04683a1007db9ce0038cb2bbe70a6ae06fc736c107fd1db166057bf7d0750bb2349870631a6dd7b03aa58b11a7c3d74d53308d1eeaa73247e264f57065c1c501844e7ae3f0530aeaa130075e1927b0db2b23829e33455b87a52cd0d08283b348885bcbd614029fda900f6d8e70c50a850cb9e808adf0c0df0d4bc19107abf29c08ebcbf34e0b38915e53ba8f6be0d623c4e342faacc31ba30e096cc330372acba06d476d110ea96aac1dc807818b5431133076f065c30ae86a9625ba28675f5b5b6320859af760c62c4be243024d25714cf9aaaaa46529d1b704fc081414cc35625a0309c0f031cdd7a06f594d2e1b50029bb9343033e45a706b13c46fe0bb6f9772d422a2e5595e483ca1cc9c1860125982e0da2fbc3b5410ce1cbdc805b762706a1d75f470238cc161a31d9ebaf923195fb98bd19c4ccbdbc18c4021aad0d38f53a12c0fcdad698ce9433a2952d07736f661062d96d1aa0930b8358731b2f06dc67b16980a1a8cecd8899c8246373557afe34880534d0209397949623835895ed89019f3c1aa039e63989d2d34229ffe55400e3fb7b4b80012a670661c37c3f195054841153619274233788ef86ed8501c71ca500f629b796ff020a715c1bc457121748d780dcc8d600d06221976b03aa9bee1a50476028402668a765804de79fe0c87c47af2b8b33a500c6d44556a4606b4012ebbb400c503ae81bc44f5ed10e85fc30935400d11e6890b9192ec1849b2a6226797b3588017a3831c0c984c014a421a5dbcf061c82aae9396bffe1d120563645567e4188545e1910ecb363c097d69500e679756d40d0c0c080402eb443fded1143f8aeee177c8bbd8f0d70320d0c507ddb06b1d4eff70470b8e79a7d32fcd31d3d03ff7a72db36a084caa5414ce5ba671053d9907c94615aa7bb8541189b334d54475f051ac28ed22a3e0d28ba9b1bc443d71a8f0ed90b4fcf06941dd1caee8e0936d6547649566868a9ab0efc53cf00c7ff89417847efb5f62bbe2c38c2fa055c2bd2378831e56860eaefa8e3330352ed3f04f8c0bb480da8a328eda08487e77d030a1bed19709426199b4c70ec4a0a67bcf65b4d9ff1d9349268cfe9ed04292c552de9732530e1e277e6b62ca7d1f4e75017b35a7d841e238268e6e385fd5303ce2c6606b1379c9c00663ce369d3008fe2b141e8b13dff05e71eab0e60ae40ae98dbfabfc7a7574271a4597b9cc598de863e9d654d9226d229a04d5e3466f14ca71a1517afceb20e77fb702033ab3fce7053d2b05a4971b7cfca80fcb91fc0849298670f0224d4f547802907217795015be3b700df0de7db8019b5d3476ad88cb48ad1c020a661740750d944be4d672ac25391743573891d4e9b66ca5ea87adf02b818f7fb06216357cc8b8bdfe413806e75fbe81a847668b7006df9d79f0c0816bc02a86af5ca40b7666c18e0846c1a8447603813200ee53331c01bc878b8c6cccdad41aca8b1015f055bdf06e8c29601b5c32e053025fbfe0996e3fa0550e862cd2f03f2e79e0514d8d635e0707a6140010c3f94a97c56c3b4e1503264a644d874a36d10edd81a1a70b1d523809cd56ae3c38044e98101859ddb06e49ced01745690350d88e82e04b0e97216b28aac249f6383d0524f9a398aac24e5a50195af73036e51d55ba8ba921c49925564e5f9dc80ebc4ba065c2ce1bf609f7b783088be9c5f0374a2c965b6bf802a23990147256b017d9ce506b190b7b70cf04c686e553165313188b9dd3d332046e0d6805b880606b1d4373e057042de69f6a998920ef60d880f9a1a7045fdbb00e6c6dd9d41a89cf7ae01b5b22474aa45f0fd6d105afbae3088cde268cf006f0f835cdbfcb115ec7404f84aba280530ae72361cc7c01fe92f9a48109ecd996aaa240fef06848c2c0ca8cfdf3288b97dfbf70caa141d015a74eef3dd804b2033034a203c0a283574d320b6a4f32d8370ba7da1e98ab62a3fb50c28863c33e0a0ec5300aff5f78f414cd4515b006b6b039dac4bfed2c35400c3f973cf80eebf0a604a1e2241aafe92ee6f1a5072e8d220846ee7c22026fbf85b00f73159e03399e7e996c6437efee1ca8004907f7f811fe6d200b3f8db80a3a32783d8f7b959a106b8c267bb06310d3bacca42f9517b0d03d25d6e0d42b40bb58374db747b6410abf26ad300f53930e0e050bd5580ff56cf20babf277128a7f8b5b1e9748891b49a0658b06b83e8cb41df8012901aa0ce84531e6c988228c6b4f52c8068b7f60da8b7752fc098be5e1a70d1d701a0c2d6fe7932c073a5d78e99b9bb5b8358622b033edf6e8e0cb8bbe50d30a1610b090ce71e09352167c594cfd9adb501d1a58f0604936a5e661c62502c7b5636f8c941aca8796bd20ea5c4b1e0bc356d87683fde01384d4849bc98dbb4a638740d78065ec9f9efbf3ff0120233af2de990a0de2120cf383c883537cf1a19be9c39a0cdd54638dde64a23482f7e001dead1571d00fb7ea5d7661501fed4cc983b4980a8ce5f40cce6123021bfe1e154804b876ebe00530a1b6ddc0b70dec05582f3da92464e1706a182cb6701cc40f270e6aea2395d035401f3eec6200668f165102ddd8a753bcf1bbce5e25480cce9e71783d085a73d409301ba7f12a00046ffc3804bdb33806add5ceaa12d5c6a7dc4c1756ab8a57bee8b027bff004544bb001d0d10273d77599af352006b6bb305c839c37955c372d5fb3c3320c7fb59006393820f73879a6f3f08e89eb313809258c75706147bd93288b75c540644b87f1bc4781488a56abb2417870664a68c0da2fbc3be41ecfba9ba2f873b49353560077a516fb94baffaf907a2e9eb77016cdceb8e01ce720195b2fd9e181064531844e7f8789f3bc47b676ec047d136809a2ad5e4dd2086909b69e72ea14252dedca1d523c987dce93b1b06a1fac69f06d1b0b73b01369cf6d02086b0af6750912b5def0ad097878e01f5e8a70684136a5ea6f883deb70c28dff80a504d95eddc8024b43b83d880f7fefd054bfdd920f697232d64cce274333188a61f6bcde9ae81b46b406fcf0d88d7d65bb83930dd39332045d53f614b2a985b0770bf9d1a2074730376a0c280fb81fe3d83f5b223809187d37e5e707d56326a18907fbb25800db3ff6c10e35130d90ee0eef704908fc9d080de1606848bbd1a845133427d2a5e3b2df70d381a50e71cfe726310e6e8d5a901c160aca84235006e060621851c81cf55a825c195f50b621327fa676e57f8899a9e61d26e9c1a7019037a5d8eeee47c22202b67614048d1bb41fc64a887e6132a1bb36929a23bfdb93788ce0dff01aa1469f6e582aefc0c6ccb75cb2034dd5cf2211774f3d320c472f3c180b3930d030edb52030a60cc0c28fcad512f491e7ddf047418b1afa600d6e7dbdc80509eb141f4b6b163c01d987a2d81e4299ff7f37acf2217b065809fffcb8018812783508e32260add6375f66d10d3b0b53420ec550b8864daeaa9300853411b706df472807926400c7cf5648092667bb50b7affc9009fd283418ce9a3067942b43e6eec5f40b5f937c094afd72d756e8a040d2e0c42d6478f06d1b93bfd444e849d7f20665fdd2f1b136a42d2f4521fcddb4c659987e73b9dfd2de4da069e109c7f500166d8c951dff2d7df8c5f7bef2cc0efdffc81388bfe0578addf124013f37cb23620fdf81ad0220ff8fdc2201c338b7180ac9187147ed38eac4949ff13de226b3c89f2f33528b8fb29aa13d6a0137f915ef40d42823afa8b0909b9a797009cd469630f308bcba0aadb4fc01c93f6f2d220467df825803f793817c020b9a42f791343f15ec011eefb06d41128006dccd1e954005beaeec920ccd1f77f80b0e80f019c5d9b2520e36e9fb849f117e02c1fe8b50a5db96e1bc487c4cf9b004def1b70a770a2d7aa06e2f3b500266defd8806b009700556eb9991b70a5d08b412cf59f7f7fc1c7c8b701a56dd430254b2e11dcbc13635a6daab7ba1066d631a07cd28f015969438358847b9702180283b501c93d1702aa45a0c9569defc34f01b6d7f69301e1731b06542ad15b74b7e0b861403c8c1e4ae663b23134c0bf7e6ac04ffe010a4cfb19a433dca30c1c599e9c0bd0fdc7070362375a06616b8f1201369cf36700655892d9b601a3fe2e80dff2d43fc1a67b5d1860c3686e397c4caed5398589c781dd1fe0720a3d54c508771e0d42491faae9aabab25e1ae030fb320829cc241f33c55d4c0d4831db3588694805c88aafb63a06e8c21d034e57b60c3879cf0c62a2e6770214985e1f1810d8c65b5c8665e3c5208cbc7ed3203af7de166080b69e0d6217fbf443e5756235d47632958e1e0da818db35e012849e005f1625925c1bce1cea1c1970a8f36410f3b2ff2ec0975694b7f8032185eb8141fc64e7440023ef04b5e5122a574383e8dc7ed780d38403033e355a06d1b92f754e97422cff0142892f05e8fed5a341f465fe6e107abdd336a0e61fdb7c41127c351e09609f2e4b83582fd34d03628c240e39e371ae87aa0ccbf1a501c5c4be0568fac69b01a5398f0d62377d9a0af055f03e34088199df034a59b09501813a5f06b8a0351ef205672303ea7f1c1970af977e822fb89add1b70fa766a1003f433322065b732c0d8ec1b10c72619232533ddb93688be5ca30c6ac399afb52b034eabe70631d9079aca2edee265d380bcc67f7f81c7794b60ca7eab96eae6af6c6d80b3ebc680d88d81012e79094c35215a4e6b1fcd9ff64706189b8900dee2c7be01a7e67aed040d33f836c01df620c0dc96fac99435d7513bb0c6d3d59d0137e6340c3037248533846e7064107dd9d930882d7a29299c4d6390df5300c93d69f7d4204cebef7d81090073b46ce281df641aca6c1a02b317bdad2d6dacf179c847b346d1d2fb1303ccf33d03ea8d7704da5c11fb0868b538f38c116b668d28835fc5c9590d547e6d790e98e01b3fcb00b38232a3ef0204e7636c365d526697bee40d2a82beb7002da2083ab900a7f77183d01fe006769aaef22755ffdc802a23cf06dcc7d7340839ed331eb59dcc97d68d00c6d5746880cf601b90f311b05a0a60072da7006a8854f35780fcb827a941bce5e9da80bb49cf04a8fbf5a3de76f08e4e7e0cb8a768db0097fc9100c644aebfe85296260ab3fe026ccb343388638e8fd280fbb43a06146bf81250c2e5ad4168873b3f033df6b169c08eac76547c15bcdf1b84589eac05b02dbf7b023855bafa0bae5a480eaf0430ae467b06c4c2cd0c42e8aeb60d7032cd0da2b733756ecc6eba21a1e322da6a5e0810cbf2746c104b7d4362a9aa1a478f064452ef1ac4883534c83a8edbfc0410e35cf5570604825e1b106225e157558d93dc8043bf3140f560877702b83a2359e10f10ad3f35c01cd554626c26bd9e0101650c61411056bafd28a0bcd7cc2056e5f18b00f6fad1850135ee760ca2a55fc8a9ca6ca4bd7b0342bcbb064cf6ae003be1e0d380b42c0457d10cc9dbcc80fcdbb500c6f7db85019e3c755f05965ece0cc85d793120f45e0344998dea65c380ebd53a0638edd10eae99315b1884f0ef7e1890d0ff0f70514f62101294b0a21c7dfc7563c0ad08890149acc706dc8e9d1a70886180e7ea40835ce073bceb18e0edf90728d5a169a03247f5f16e10ebe502392d9c77a251d79597e5cc20c4211918c4dc3e481c645b5ea8731d7d7b340430cf1bef06b1577eef1884ed30546f15281c39127f20a470740aa07647b2db3088eebfbc1a60a03d1810093917c02b59f40c42d1df3e1bc4ccf52541bad7ebf1c280ab49fe017c5b3d83984a6d5abaa7281d740d422c4ffa06b1573e2c0522d1b17a9658cad3dbfe3420f36068c0a1ce9641cc5c43e3319e90bf8f92ae4dc958403b4b83f88ba901e3516ab2a758d2df9a397969cfde0ce2b59391003ee98796411857d59601f984130059e069bf6d102bfb47c23f47606e4b036aebdf1910ad8fca291b346cdd14e0d36b3832e0e61eba5f1661d2a68fa1945ab529190be8f502d05248f3a641e8e4dda541acdb857ed2c6e31cf736fd011eba614081943340370cd6e42056542b2be222a7a43902cc4b6ea88bc96ee50d0296d95f5a2e24f8dd00682be8e60015f0fba661aa10928cf60114f3489a99418cfae72920571df8810071c15f1f069472614c55662349cf0c306a0cd80aae5b8052a97fcf02c44cf4d55b922692db0540aeced1cc806cd25b00f97369ffd58074977b014c96f3c480c8e11250295774661086d14f2a4040c8e6d280d2f13b0621a7e5850041143f3f8031d3d0cf0c624cb7360ca21d5f0f06789d34402a0e7d3a3020ad62621026cbed1b806a16c9f196007b545c7a58035c8cd5e2c4209669dc83f707a261673f06dc3a7c00501ef0cebd0145111f0ce27b6e4373ab5a158f4f062174f34d83b0830ee702a8cfbd1540b9c43753036a335c0bb0ef8fda06a1b5f97a6da91245da4f0d62089f3f0d882da661ae83f6f0651062f95809e050ed9d18c400b58e0c6280f618649795d87e36e0eea71f03ae05504b5529edd03fd1d95a47007dbabf0dd0c55607fb065ceb7e6d100273a596aa961a1f452dbb1887370621fccf087f41b671ba73691023f6fa6910a37eb665c011d65a8083a1af9601f9d9df06f193fd7300952892f4c580d0b7b14198a31c2ffc029c1985804a20e82d2a17b43d1450fcfa8d012ed79101a55cae0d88c94b0cf0c023b805d9c6e9e9830056f0d7c08072fc9f06f17ddb6d08b0cddfa194e41e4c375e0df0193c09286fedc4807a179aecae5c481706ac972f03528834515d65723d19103abb69c00da8ec2fae99b19b1b44e71afffe82b4ce9141089df65b596cc9596240fdc2cc80fc4a148a12c892b71703ae5af80762a2be97020cd09e9f810db3afb53f41a4961a0fe58b0d240e53e6b6fc3108d13e1e19c44f7eb43ca67c6a448dee1acc94b3aaf5224d7721ed40318fe4f4db209afe9118b0793240b5b5156f19360da21d8fb9c0949254a8f19208a2eaa56d40325c21403b9e055ab84b3f19c292b4ce6ac98a2a0b266a11e3d176bdbe8f014055bc0f62f6dbed469b8fe63ea0894d779018c44f965b8096e20ca602d885bb4d401baf641411fd03314051ccf417e0957c7a3708eb73b901c8b00b39b3f805dc6dfc01a8f5e7df00bd47f7eb3fc8a9deb00f186328f61e0044ca5663ba9f67849b363e0530e1222ee70f606d9500dd2dc84ed85621e32a82b06a80524abe3f0d6211ded08ebc4370ed75d38098895c403e25b5a3a3b3d71e003f5d4298c52f0825fdb616e054f4d83f616bbc7b05a804c2ecdd20144a676d40c5d83783e84bf522c08a5a7601633c8ab82adabaf62ef9bc32e0e2c46b015adad078e80ebb8b0c40d65132ff30405ddc0828e97b6210bd9d20522e4eb09b1a604a760df0f46a80548b208adcd780c202e9e5bb01d11d37065c6ca5b7e816e6e799013e835d017dde23ebba4cae7a7836e0a3f946401552cf0124f457ab5383d8b4f60706dcde31175026c69301c7c69700f2f7d3c38900f372fc0f10a5f66240ecc60aa05c9e93b9412883f58541346c9909a8da6b6210b2fef16880b5850e92a5540d5201f4faf181412883ced82086f0f056008d7bb86140150956a5ab7aedce0d426b3f6a1ac8bd4fb7f70d50d24d016ccbb8ffb606e4cda76c386de5cd279b1d8390d3b3a541e8c2eb3d0136f1bbae01f54fd174850ab51ccd0498cabd17031c88ef069471ba37a040ca930129442d0132eb1f342f1de5bee9191dc5f43e1ac4789c9f1b10abb010507182a14168ba1e5b921273aaaa10c0b1fbbd6b107ff1a90152ee7de7dc2014fde731a062213fef0830b75b2f060471f60d626bdcd754ea8e90ef964188f665cf20d4e78fd69cb2f36f3e0d6221afa51dc8ce4fee738398cafeb501fb8b265bf7796e69794c10a93c3188b96dbe1844f71ffd1356c3dbad41f465d200a8525a5b6239c51d76f76580255d0a84f32f39d53348b84cb79f0c42a4a6d706b1e6fa5a84337c7dcf1298d99462959aecb9d2b2d606dcc4aa76cc399c7e981b70b90d5aaa6cd01719133588111bb15994244ba6970b01ecf5c1c0205e3b4507950a69ded25b085e48f743d167bf39547f60164dcf543620ed7d015a984e71e5e51f08353e3d05c8c71659f135c878e8ce9d80d2b296063184bbfe096660dc44d2febd6f3d643db217fe4034ecf14400bb3012617f9f801978f823d00ed577a8ce75012fef06141688859c653926dc5aa05b30958c47368bebe5935526401a52154a29cb9bc47d16fc856eecabd6f780acc38596023991a1fd27010cb448aaf905b87f386bccf282c8d0b859f2175008acbc35a070de03401fab9b0d80eea1f9a90474235b66101bf0f61e40c7b55b2540c9e79f0b01929da6394099e4fd42006746f30240c1a9e4faca80ebe5ef04388d9c9c01a6aa71776240c8c8a141b4f4f94040b6947f820a8e4b97ff404ce5a1a65229dd1169ff0bd85f0e460039bbde340d645f577153de2f60a95f32b72ebbbaf96240da4d2980fa7c63f6958e5dfdec09288a7124c07e7b7469102dfd681b8472bc6035b816d2f1860106da850167169b02f8616e995b595bd5535f0093f6a067c055b5a941087f7f6d401938fd4457f7264f06b108ab4f0342245a801c3fdde19100e3913e1970ead51440e37eff03f1935c6fa14644bab36dc039d04c80d3b7eace20448aa3e74cb654325a0910b7d5473e94b19ca4cf065459dd3388ce4dbb02a8f1b5265bf9c8c79b06b19b3e6c1844f7092bc81c72d61a19c4f2381d1a507fec5a80edf547224582727adc37e02ece850161af5702ac86fd53017c170b89946a521f0c049897556140c5947d8082c10623039c084d8368facd0e000b256dfc0331510b756ea204900f8368a997c7842dba89ca290803ae1e8e0cc83b191b5010e41f08459f760c62373d95e01261965ea1b65c20f67329a01cefa101716cec738572df4e8606a1a45f1e0cb07111dcdafe2043869fd4d60539efec1e654bf9fbacdb12033edd0f81c95b13fc30919754efd8f2b27c8c05d8c4470b031c446f069c37ec00641910ae5e032c94c3b6017ecb7d8310cb5502285b14edbe078cb378cbbe7e422679b2a461d9b48801eac7ece77993dbe5b083f27abfa5ee6829c0d9c9781ba08cd4b30940d9a477cf029c8bb5f40c9247abc99600c771d917604ad85a54cffe03211fd70d03768f9e00c6c4dc8035b7fd0d908c25ea2d0997c9cea6007a3d7d300871b80ddb3297572179fc302003e2d4203af7f628808d5bd27d5dbd594d6702348cb8cfdc57d7ec1e0920eb7113fc1f88bfd85a195052e6c580a0a30ea0ad0b82370c62551e6c09a0a4dff5d04c21cdf7027c6aec7f1ae0ccf8312073faca80674c01c4c354af5706a8cf7d0362262e0d4871d7330a5d085309a87449c72006e8ec5000fd71f16140bacbc220f447a431fe8158959b88946b771ced0848d3a96114ce4bd25700e92ec9d3b3416caf98f8b9f309a362fd1f88863d3d18902b9a0114ed72796ec006fc69401996a101d722ee1a84daeaef012a45eb2706210e1f5f06a1e877d702040af76f014a30c4379e3b6464f962c0ad6e1f06b147f5d474d20793a9c452d9822f6f06d1fd45cf805a156a07617cd5c6ca200cb4e4d880cc5809cc9cad60a7300891eaf09352d7021c9e1a901fb5674039a9b100b665b532c0db732030e5e03007345543754700ebe23131e0963ba6b256fc44dd4c0cb896594d6fb3df76370da21dcfe8d33247d6f763472e7e3f46ffc0530ad0b7e9c1c420f6a8b89cb306055fc0fb138378ed740f50b279de3f189053b40274da8446de01a6a442eed2b0ac15171755512bab0639b710cd87806e8125fd0ca814385d0026054556c21e2b9c6018f778d780e4c08478ba4257c624647116794955620eec8afa3332848e989a5f80d3fe0a6097fc0c30e54babf5244030c7f63fc0c677032000a28aaa6fbf8073f5fb0b016d161383687a21a018d6744f80bd8163f4a2a0e65ff5f12980f0dfd0f4c2571b6d08e8f68e0ca060f4c59e00e70daf5f80b62e923c348831ed2f04d85fe6df061411dd36209d41af6deb34f20590b1dfce5283d8a289d62f1c01c08a2a5cd66afb08a06b99a72706d1b9b834a4060a68679916caf6a948652a7c7a7fb66b104378da3420a2fbce80c2acf702ec2f8b3e40f5a5961a427cd2e9d1ae4134ece3d48058164d4389d36dad41e60eccb4bf2fc04980e454b93ce9fada8093c44701b68249db202cc7596510a3feb8129852f99af5e2e49ec6ab0103f4ef2f38b152e748eea97e1a0621637b2380f6b9eed080e0eb8501895b1a420a4e55897e32c63b9aee1b7029f7c42096e98b266a4cf7071af531093184f0d653cb01f74a32c6bd1ad5dba941cc5c2181e1f43e899bbeff00a6b504579be7aa671063fae86790ec74844e762ecfcd9901f7df6e0a30b7d31b03fab261802dd536e09c108dab00ccea65df20b4e55e6c5a45298fd1f55a40fbbe0171b0292bbb54c1ed974b012222de99fd5285f31e198f1265909e844152d65b4ec8faf00850f2714636470dd81ab74e0ce25b6cf963c05dcffa498752b6bd570136bec9ca20d62d11bbf513a8a04bd0510dda5c0a11cbb4cc3a0541e067807116abe14360128edd2a3d12606bec86da2af366d40048073920e3c28fcd030049f0e9e61450504eea94b7b8fafe7b03a05bbaaf2f017836abf447006d4934769973c95fd53f3140a15c03a8259f1c1d0af029ba0ea12b0baeba4e56b900be2da4b054b45c72736c4089f27d00c9b455948eaf01890615813aa5af007de80a60e33ee82f482348bf7303845f6f51bdf1d1b30151f28843ad73a8193a34c0ad7f674082e19b008a7ed43088a9fcbc352083eac0200cd6b874a8063ad16ced19101c373188a9bc470ae5854b2fee0d7011a8fbfa7e39bf01107a9f1e69e674f9d160db80d4ae254071f4bd6b034aa8a8e984cd570f1ab1b13220ba0678f2ce0ca21dfdca80fa743301be0a8a358090f7ea5e5339e5038fc4bed231f051b3fc0f7078303588018a2b626ba0f3b99ee474269ff48f0129550d83188f4b813922d55a1810dea051570c3ce95065ad602959961850b8f755802d1a8d5bfaeba4d911a073f70301b69319a3ae322cd5f2cc804fc02b01f6ec31ab5225ca934dfaf2abc8e227e8d30eb1f8e9417c6975fc21f13537087d1ac5a16bd0e148efee43800f9ae9ca809b7afb06d15bf6974ead82892f3c074cda5c3b13e3d1c9ca8c53af7d4037e74ae567c0248a8727df9702447730fb9dfadb2304b77102a83fcf4205f705a2c261babe019454cf1ebc0314c934590214f3bdf1085055e26f3aa712c31511111d4763c795ec3550ac75736510eba53917904e6e0a6038477da91af856a6070134ddebad41287a0a93745c8ae1d200ad7d7d0668f2fd925c0aa876d800408c73f55902883eae480dedf88ee5e1d4203ab7dd15c0175ceaa139cf181d08a878d60500bf54b5f966106f21c9b9a3fb91d3ce4440f1965706d18e5d355d6557c9c1ab015ff31f0b80fc41ab7b03e2b54b83687aaa21ecb2c40af54561af874f02d2413b0621da934d805243b79702b474817cb8a86a2f35a0fb99005bc116f25150a43a696d1950fd6565402ac229409ede99066886ea3b56c314a13a1c1a70a341188a9d5ab185527a64f64b55c4385a0860c126acca523157e3d2209afeb825c0884d11bab2cb6b376257efda0c4439fe82f85c79dd0590ed9332d9bf20b6b5876d0322a9970621b87c0276db15da72fa62108a2d6e42fb03a1d7a3a072bb9b751423f006e8860f25397b04ccb937613f24a89b374a3e9bb60045d896e9eaecff12751eebade330187d18edf5c5456d99de7bbdd95196e438d5719cfaf44319e7c77cb3ba671c892241120451044afbc5e7bb0077e2df5f8092e0f3ed4200bb03ce1c559c72986e1a806a2fe0cd50792acaf509a0954e67fb5ce54911adcacc0a1002700350cdfafb1701b9de3350fffbf5e9a11207ee702af7b82360aa727fbaa7a100fbfe131fe7ee739b6a98cace2c109878c025418ade22d7b7df1d01149205f2e10efe1bf70228131b088c075c7e9c03142cb9750d50d5ae6e2c8072556e3a20805d6f91dfd69b7e81575620ccb572af2cb6824a2e56e161eec0f6fd3d75101e55c1925447a0e582b37ae51e558fb503ebf581bea5e586e67ce480b02ca450be4ee9f9b5031bca370d43d7d86bc7cc28997e93cbd681f5e9c3ba036b47a53f9143fbeb830029ed9e8300a55a2ac6561eeec921725a1012919eda5e197aa5c5c03740cbc571e3c014a3f61e10508cacd8e00a10c8b6e6808c3a770eac0bad005bfc672de3f09a039bfb6490897fc0bde9a37ea19bd5c30068475486b3a10c512f32497e2f0095053a86dd5f404d9ebc4106e8c85a7d604b5fc8d6720cbb1d20b31c77099ec3c11319eff1715955d1ebf447dcf609efd80434f8c0870580641e69f9eb80bc5f7c9c2705d8b87540c66946ce8fb356ee760588359f09a06d7d1f0046aae34dd37b4bb7f5d83a20e73661fb1c5060719e960ed0502a80fc2e4e0f1dd843bb2540cea478c9074feafef0ea804c255f02cccae763072630bb1380ac706f6b0ec8e6c9e8cbef333c2c1d58276f5e08283725632b0788a4f876600233cb1d10887204c0821666cc1777af7cbf12c023f3f809403a87642d71604d6fedf41ae2dc274464e480a40063c09062b6670f8011d6c0963e2d3216a53713ba7a54e1a3b8fd06080a4411a899735c0ad7fd1fad00c15f3d3055e160e2c056dc7f0130c194452747c05b26d70e6c8541e9ed01de9409403574e703011694c3da816dd10f3650f5b82c98c823404d21a79f1c801763c081bb8e531defc10dc0809c3b381ed4d9900c9895fe646427ade4fed681cd978b4d40460ddd8719202f39de9f00268abf5d0328dbc9fb3180fb9730e34ff2359c273f5e0124540ec9c001b5498f0043ce62ffe875bfdf3f6a0063969cd94280eb969f4c8053c1bfc481a91b9f3b02ec62cf088c2eeb036a600498b19f181737432df52d392e56ef07002a5e844eafe53621d9bd0128cdd7e1394077d1964137829a4529397760c3305507518b3379f811e0eae868e8c094bc3f7dad5c468ef50ca5a17d66b0756d1c7ed5740c33e9b63eae53e2ab5c801566c01453c987b03810c0d7a9ba070cb07facd31f7e5dfbc3d7169c0953ab3c1a2798b6d7c92360c28cdadd7660abc3f706a0c18cddbc39e02071e780ba6f47806e4440bf8ded645ce4f6711fdf8026b7f9f2639d3c89738ecb945dc008576272dc4db231b9083e786def75b402dd1380f25921790114584866d700f2c0273bb6474de25e4901b6998072219d0094f88a3c35939c52c6e1f546801985b239f13cdf859e2183ead7a3006e7c6f1d40916d2f8500728a93efc4efc5168903945e35ace2fc62053f7ac0349da5024cb13a0048669afed402bc76e300a0ac4db34d0155a4af1d583b367705288b783a07a8baed55eac0da71a13f912be09bfab44171de4682747594eca50eb0295d0294cc6346d3fd1e28a3e95171b63fd97520ed8281d2c13b25b06f528cf996eb2b0744c60a14fce2c5c6a5f16d8db4674dfc8f18cd3307380c9d3b2019f29fc098adf118d0ca45e2c981cd391271f4c0b668abdc139f40bc69607568b231336a317180ea5400b01726af5307dc6777800955dc5fee005a0b7f6c28bdcc6cb2234081f1b03c05f8354705c8e404be2580f9f88ea64749b67d6ef70da0f43887fa0559244273ecc05ecb459997cd4ceed40e99e477f701bac0ecf4273285bf9a3ada281025b9a2a56ea4c689b32f9b8903d51100094a4e686941407f7a3172c09e3d7760ebc7b1c9471c590486b5b0f515d70a7baf00fea71da095e9a67660eb3a99b07a40c9ed3b81b135ece914d0c9ae6d0213ff3fa7b5fd1b07b8039d004618ba770f019d99b153123bb7d91a1787568d20028afda4971b80968355b0d9d05764b3c5a03903e0aa91d43380b2671f2d015e0c2a05a89ac9cb184081be408e2aafec945865a751eb5ed05f7c9c87c9bf3f3ae00cf40a2099475a6e39c079926714b2185dee092899582ec059bd2b010325e09a38a0a8cc26406104877301ce2fe7a5039bc89b022a93706c7d1a879ad13ff900748cedde4cc06a3fa59b365fbab172da5fbc3a30a1fbf87160723afc03e476f51c824d8fbe760bee95c7808e809847938f4e4a6f527f0a7007dc160e6ce4ee0446ba143e12608b3eaf016cd1c1ca45f540de1d7c4b1429fbdae58e006969e6170e2846c9c7c54d9c0de7045062f8ff6c0438243e3c0288070a780e777ef2acf55a5d0bfee819ca4e78b82fc0124c9ca7d73c08535bc73acf9a50bf3820410abd5e0c9468f242406902ff39c08b712cc07cc9f89642d95f6e9e00baf17ed36b754c58a38314a5971eadfe248a8b2c46cdb581888838fc72603be134383019b3b4562b6073ce14811e20dabb470ef0b4df000cd83ccd9974056c3db57a9e2b40f1b49980d5144e76a606e231d2c4616b022848ff9afe024ad4d1b33b07e442ca00f1f86ed3b4054c14eab609e8f02fb4ba09e3b528fcb6b0cd9700d59d9d1500a53f29af008171795d07d42a0ddf00147b7ff46ca0507cd4012d2dc8b993e40f0e4c4ed7ff04b05d6cbd0032256ad14333b956770ed03e6b80d2d26ce8173a24ee160266ea0c93130046eaf478b58bc571ebc626419b264183281fd68eddb1c0d84e389377c0c0f4b1f4614780a5afd52f86c8e9c3d001abe5b600af3d3a018c10dcc32d0708ee2520cbec2d57d6c983de3dddd68f7b4059a07ebd012a04e66b06a0446cb07cb0e33ea9aa0df6c639a02dc975c3e7e76b1811ac66fd0a90b39c6f51c683f04517bacde06d2280dda1bc05644a8c9609e06bfdfa2c20dfaf1b003167e1bd0550922c6c3c00e455b1f501504cf331035570dd122c25550452d0f61a80f27d9a2d780548d03607a0b1853fde22290cc942800b88bb6b07f85ce92d3abe4d0a00a7b5f4d71e3aec57109b1e53c000093243c40a503c6d133044609a2f0116b6c31f07d61f07ffffc2a4703e04281d8c65475e014e273f0e6cf9dca905981ec702e331a7a47d404611c8a109cc509e08e195874649267cf0105015a607558f02661f4b3ff700ad9d3dd2fb89806af99a240f25b869c95b72550b7f17d065fdef062027616e910be061b65c0aa039da2d4f044155988f04386abcd2c9b9aa77cc1201f4c227464e36a5e4dae6dc5086ddc46c9fe3a15c125373138f4009412c195004cacc71bf2ea05bc053804243ff0e1de04fb7e780b4129900e7ec7a01d0c561b80770be0d8fff00a473483ec60e28d7b052d0a2b80c103aab8fdc07c523da961fb70f7947e8b61d301bccfd760548ddfae3c03a689901c6c8e9d103a01893efc29a3e8a1bb0c9c77208986083b5dba63e4a9ebb93740450e0f8772b8083cc8300492213f3e98d801490c939df9253713cd8293a02057dff540ef084fc0270f9987cf3f9794ba8ca99ad6323d92ec2d6a680826af61dd8167dc45bbcb0d5cf0940c704f569942053269200505e962fbd2553298e35071c9b188602afbdf4d8949af1a861a01e4c2cc7bea01c4e0418ecf707c05846c87b01d6b19799037bcb6c04c8581c9f0f056c2d4c2c1367fcf71a6566f7f893b8799af09bb53882dab6d7e43e0390cf20ac9f0970aeb4cbfa083afc0cac12da781c757e320bae01a8d619de7846aeb8c6d7024041cbf49a1ecbe54075730250f5747380188f0ba2f4d2725b80b96fb12b1160924f6f1e04b8d26b3e1c98d0cdfe01140c77d90028d1965a56e2d8a3a3b1ad96dffb8031bd6ede2e3d60a02687808c79dbcc1d9838ecec3bb0b77cea2d39f2f171214091614b0634ee0350b1273f029489e2c154a77ebf211aec0310a8736661f211506a2129d604f085b320c51e70f25ce7a13a68a65f3540f52bad5e41044365ac9f02c844113e720764e6e02d71fda0a0d41ba0e286e6794f80db59cb221181f697b36b01d49e2fbe36a7ae68f2fa4f4035a85e002a123ae7f3ddee303d064882767846912989f91640d5c2efe9d342511496e87a0550159e002a6ff27b2280f5cb7ce1e250a33ba4684a79fccfa63aa7821e9020e51c50207456417905b89efc0594ec2f9707800a4de9f210d09a8c259d095d9ee93c6769577b607716c13c2123c828313da0e95187b1ad71464be3f1cd56984d9bfb794e89b6b0be23c0ccfef702501e120b76eaf32cb05c98e770049d3cff6c07ca0b55622d4e01be37f0501dac928efe285430c82c5711a8a64e7327c00e34fa0090d63b354355dfe79c802f770123faf4f7079031505b43001339ddbd7460e3d24c0005ab43f3e3c056074b951eff59dab8847dfe24be84b4bc7780c254c9d4aa4147d0e22e66d5e522e8b89db510c4b8f20db0495b86a1088604e57df1da3896d61f6b0f00a50d58da3014eeb963aec4e3426b72b20c00e5a53d4a01f24f4e76009c1b8215715b01e2d61a40e0dc706c07abd81bcc97dd5d8066c374dd01be8167809281daff744056f37b07f6dacd730778ee5c032a9da25b40cd6bbf2f012d977e9d037b6d98dba1b98c33ca54dac11f6042fea05b1bb9d20b6cede400557739480115c7594b08d20334b6e91aa0c64ed7f28c82d8fbf0782c20bfcf3dc0803a78f93380ccc6e14dcf9013e737ed70d57ab373c0b7fc02c86097aceb194a2597ce01dcce868f2f806a1e58e59e1e704f78f5e9c0368b0f7aac20736dfa6cda78d5cf981538380594635bc6afa600dd26bc5d0b30e7de371dd87a6ac57d578029960002f3d64a09ae80ad0e87f780da24286ce780d6b4adf4c276d32a5b1be394f60928321c754e0025a7c68b25a02d5059ecf3ab7c541022c2d7c60595abc516a0da9316091a418b67e8eb8e003be10ddf12c5c15687492b80d7cd7803c0e12ccd5f00cab4b8f92dc04e58f21629ce09879108285bc52a1537135c8a7ecf0194864fcf5e017ef2cc1d90719afe28e49f8ce12ec47eb7765c758080b66519a77b80c0acbf38b03d2a6c016ae974fb0e886cfbe7c0a4f0fe0fc0055578338109d928b3875aa470043995ae3e7701758e47d502a0e25896ad3182c616fa808612a2fa65b3d22ea8c6c117e9079b40bdbf94b5d40a8c474016cdd4622323f0244d8d0053ecea01204dbaa30b8b5c77f34b0736a3cc113402e531aaef1c98f0af6d004a8e6fe64d19013756c1ea2644a0340a7b638092f05cd9340d251743a9d5f1ee078135f9b404d46cc097fb0e087779716002f376e500ebe8c8817ddc919e3161b08fa68086cd62ffca812dd287f6b5751c5b5b0ccc33b407540cfe3d04b485fdc981adeb75be8609c942ee56809454eb80a12ad33e03c82d975cfc02c8e9963c5e0002997c974f0298f63e6847ee61f23f029a732630b5a72b9cdf027438cbae014a7fb2f727808524e7f30b62abd38d0b07b63a1c1c09a04c982368044473a47bfa8582377e0e004a16f54f0f75b7a40700e92d528b248f0359cbcfe0422023d869099830b696dd6305ac1daf2f003fef670ef00fca1d60b5b6056512e7beb514f3e0242becee24bde24fb2807fd059004c58f9739b519338fac49b7e0114db845233892b3f6e38342c8ebe2d7de30f01ce738f7a06f993d34febd349813f5df23e13e0c6cab2acf6b5b17190b11caa11a06b27d34c407aa11eaa98f7c5a103ce1e7aa8d2b0dcbd03827c695f04945a6fec0065e20aa020c5ed35017cd0f68e01aae25ee8a1132e532c217b048acfb6a8c515b0b1b572eafd4467b0af5a40c39263a58c57c0969c87da81ad30ef130726969faf0eac93af1a40cb92b3b9e3c006ea3001746342546dfd68e279ce26e1e5114006444bd6b002d641568528821caff0fd3b80ce0d67b6c234f9100391e50a8f20e3dc6031121150623afcad39b005e5e89f0007bc9d6707a6e4ede8172ab372f0096854c1909616a48f4ece7e1dd8eeb1a4830a7266a4e37f02f8c334c181e9b8f34d00c6bf34bb01a8baed0d43e90a6bb804c80d67b90dc08922fd5b0288df4f6e4c43694a5c135273178b03d948d9fc15c848f15739208ff308d0eafef6c5817dad152d5b0192bb560e908f528095eee01120f70656dc1e9095d83aa8cd8648f2d127604c8e99976b4099d96c28d60558e9def48c405cc1a67ed15a5a9ab07705e8c8b6766873bfcdf19849867c6d3e304fc870b00518b3162e6f0125266894cddedb85e09e27005945c3e7398050fbb4621872a238d3cf7d404786d4cfcc81cd97353ab99023c6f41ba083d5670e5081be4e7f228fbbf11d8060a7d4dcf72320b629748c7ea1b0f0ab2f80aaa9fddb06d4a8d6bffa13ddbf9cf12d055e15e9a1ad305ddc094d0b3687c3081a04c6caeff5eb0b72ba792f90515f7d08e8908f7ad78175e1cba3038a0e6d0870e5fb6623d7c54391b5637ae68020e72f806a2fcc33408343fb9e9ed191e968cd3ebf8b1264ead76e02182241e6f7194141a4f0d7334045987eff011499627502c65d1c6ce4e310a082412743012e201e270015fbf97a7160cff87a02a80ccf986f29c85d9a8eef1dd80ab3d701944efbfe540005fee71da05c26070c76a138cf090f2d392624778c7ec9892fb5146e2b608bc1f6ea5be2a8b40ce5e5d84044d6d2267560126409da7ac092f3fbe2c066d4c51160808c999fe30ad8ded05d03c6ec62a36740919195781ba073d4f30ea021e072f62960f762c99f1ad699369eee9c1bc8079cb426b780718171780a284bae5bd6014a6bf53907748a9c7e355028f9af8d5c0403021eacda6f04230a6c9d6c3bc08abf0120837fb0920f11906c3f980a1781f2e267b702084cae762853ebd70220092af40c45fa2db70c94aa6adf1c0032d4af4306aac40f253107dd386e81996d757922e050945a89b66ce0f2f131010c185bf3fd5a0193312bf9d0031ebad139207e6e0018da92132c7f720fd8922c0f49ff07ac306717022685c9cb0250b3a0bceba11df55f16370276780ffb36fa83b8c298aaf073e780c060814141dab32f004135618f76e463bc5dcc4cd9dbdf91b1426fc15f2ab584973de032852936c86bd57fe16bf349c955da06a0c5243f573b74d96655bab38172da27815e77e5aaa54f8b313647b3a0f50077c2c98e036bc7fe86006be19b1e9a912bfcf90380cb486ac53a229001e0e408a075ecee16a0ec84cf4b01e4f4fad90149ff4f0c94d83e532b4718a5833c79a9e5ee5801fb13cb1db6025ce7b7809174a913c01829fc0d808287be7e004ad6b1970b40cd658a39c745203d6866633bcc07588ce6eb802112b478078c3122d8a5700f300e6fe680d2ee70d2eda1001e22533e3faf70c15bae01020db3aa7f11280dede63f40c74a37e72daee55cf38bb86c99e05ae59e3e7c0ce5ea6c0ac8f0753223640f5894cc0f250232fba4cb2f01aef41641802d69ef10a02092dd538022306717029807adb47304155e26f5ae000afc924e2e1411f24c074529440dd45b382426373f00155ecd8702b24cd80a13b50fdcf8020f8de2618ac0a67dfe28ae31d60e968b91af63e6f6baca744c8283a50393425ada031bfda74bc018c1b57aaf2b600bec96fe646caf4dc2212063b5b42c232b60bd6e2540b33e75ad7d7e77059005fe480f9d64d4d1d4b74c703ce8ce013af2589ad108a2d66f6ba14d8f514e3c72d8db17603698876a04dab3ad0a6204b28f1d1c007292785965eb080a5c24fe68474ed695901c39b01eb394fed9284a326947f87cbfb1b294dc7d20248e7e8f41802bacb203688b5e2e1c6072a5d70b4aa22696667405980d9f004a2aa7cb1f0704f6a91d442ea5f9a3008a8079ebaf8035fdf30ca0b8a4ad3d000550d22f536a4625c6bfb4b54569dc6ff4260e73c010293c7f008cf98595435e3944e025ffe1c0c6e57be2c05aba7300c890d3991e9ad9029b74670e6c665feb1901499e5e0be4b89b6e016a5e3b1f03261844922140a1b27bd61ffd4dbb1d232dd46d05ec19dbeb0e6cb03779469e15d6b0cb4d002ecda9151aed0176ba8b12d052b3ed8ba6ebd41876f8b828858463cf00cae33c1528545f2c01e08b9f6657021844da1707d663f52320e0db93dd092030e33507e4c9d35b94eba63872600dcbf42db5ee922e1cd83e57f3f905f91c93a406b4acc91705a093249bf6392ef1e74fbf4d3eb27e25b34e6e1c5057f41f00db456a19db5680e29cffffc246ce7276653d31f05b0820ebdf170ed0614a0704c31d03725e6b855856c03ad98a41ad8089c3b740c1045a0f006cd249770368b0c3ecde0a6065f9d36b5b1481db1f0726dafb021d7fb2e0f3e3024b1511faf47f0df60f3092e9664b804c36fbfa9391699f61ef1250f08cbdb9036ac7d163aee35a82a508ea82fca79d0086bb895edbb26acf4de8320fde98f1508566848f3300b12be939df52509a35a92e1da0389f022afe64f90b5032d3e50040d6a6f4b30234cc97e59f03ec857c7ed46091e42f40c7ba6ef1fb3d4065b1fc637d88221e4456f17305f0864a009ee89ab7b8cdd1e20afacc1ddc02727ccbfb1cf62b60e9607ac0043257e2152002f3105020b8963a6d054c1d7d5f005a1d684c93cea348d950ee6780219906da0920d336bf04900b291cbc021455b277ee8063f53b404773b4be3e380ecfe102404c40b2cee7e7e421499e6da07a1f235b3eb7ae00031481a31a30d42ff8b8a8d25268e3145072c2b1f4d13d9038dc0930949f6300d5e512f397ea33e9b3f25beaa33e933e725a2e1d70f3be09501aa7f44d80357974e8c0baf0fd1a4048559ae94f88044df6f52db2189d6e383071f83c0690cc235dae3b40ffb005258f8b34b56c2e1de050f6218046ff7902206d62c2d618016686710a90ac6f5f3a60be040009411233fef541f2283556ad338aed4827be574026fda3016891de1938c081fbd401de6119a0e096c7aeaf57c03aa8de1360b3989c3b203f6e0528758c7c72601bcee21650a1d1671da0cea977720198605439d32f5ade32d6c7b52846431bb9c255eb7d9a1ea72997f5db8031c919ef7704d0832ee8d3382d519dde000575cef6970278a94d3701252943507be21a5de020a376d444830df61c980465b9003eac470bc084a0efb52b01f2a01dea5b1aa52c4b002dd7e816a319418771e7ee5cc09e91deed0ba0c0cf4d2f2c7c75484f00cad8b6f73fa014e92300b7e864fb07d0e084f59c08a86ed3ad00974b1673b602d4a230e18f5dcc5123bf07e082979e987c94bdea6c423705e4a83d96e77b05707eba0448702d75da0ad85bb65a07043c9c014ae4b4d910608a59a2da153029bcd802c8090b9b630408bfb947ad8009ddeebb037bedd608805756325d0a600b9e083476d04c47bb00ec30c9f24500d1beb2dda38c4751dbd6f668ba843f313fb6153049cee9a05cf140568d31825c7a10af8dc24feab48103e270e8d328b8dc8a8e0104082517cf0039e7dfd163c58818deea5d0029b4e88508c65412d8655c0ae2d6925b01c23bd2cf2301e4747f1f505120e76208508e999f4f80d28eecd7029c91ad2877042a3c921602c829f3a5749d3ffbe7c01e9abd08e00e94d9321ed500b4ad6cee80d33c1f577a612b3a396e167820e602e4975ad2529f4057970e08325a007252fd585449044563fd91dc38c0d865db9a7bfea5eb1f0ed84ed6001527e0c9448065fcfddb01f3650c084c8f83770798b2fe39e03aee12509396f7151065dd76e4ad5bc080dc72e680b9021832ef1d58270fef00439c5b86bc369e1bb0281e0050f292831a50723ad95b00aa92ab23fd2230e732b5b4e620713d04c863e6434d6f5025db5d01e6cba813c0366eded82b8083ff1ea0c3e03e397540649b2d9f553154fc3e1fe79e08250355502c3d4c9f01d4030e964eaa07f8194c0f01f8f4a63f884354f238ab5702049f3fcd1c98048daf00aa70593400958a1b0640c7d11c8b51a56bc1749f6128558876f94f801de8e2d681edd9a77c7ea9b2dda39900af4d18861287c3347f03508d319dd9492bf8426f1e882b60c23f7d0404f96dfd0f6c463d9e3a40b7bc768043d93da0667fd90f0eb0055f01264cb1fd0b4043c3acf8513f9fc8b666a1193de0e2f09076e46be462dc1f0186ec0d075307a69e3fbf0346d8f9f7ff0194a7c6fc1c7b67311d8abe1c708ee26be31908d19e031af4a0d1bd035cabf5272d337b940bb09dfc6d013a54b88dcc011e66b68c87628d9454dbcf8001d3b49a0a104ff8cd430b0ae2267f6340ce45fbde01a04275dabe0560a80aef630754d86e00359b56f502204028b9cb1d50b59c6f291431b43f14d0591d192b95e51d5d2ae8249e5846d015b06ff9a73f19ea3276e6c05a6a19422250ea92c51250c8c0bce60083aabdb6ee17725bc637015ad7cd6f3c829add83d5a1765937afbd1530d17eff744032e4b903b2362d0013a64777eac066e5f017200f913c08906ab0fc70607f32da01746c38e73c231f6083353fa508948cd062ef2370abd3c0013683ff7f610b1b8b41ed57ad5ce8d63ad004063b0266e5fe3d80cbd870b007c86d6627cb14506822ef3ab065fc60478079bbad8796d82e0e0e01952e85e9a09c90aae47529c0338ada81adb8e5c28109ee03f291d7b2c37c0b708efad8024c508b37908f38916dfd48ae1cd8b864363dea38b3f1c6ae1cd8d7a6bca5a0727172792980f6595c0386c426dcdc01c6d861767f1c58273fd0d22263e35b2b0001fff5e4c781b574c0b714a48448afde0054624dc76a472b279b1b07543f1e0154f272b2eec0fa34b1134e5d2aa2fd8b3f295596f9b015c00f76f0e20093bc80e74e6f0430ddfc9d3ab01df97ee680cd932e94692fb9503b70df4fc7cca878e6612d4482a23a6afbed39825baa4a95f98ef640f9d76d759828bc345d5f77806bf50ea06631b0026c2b80a7fd296082d965d2386061fb73402e460179426271ee015e48c700b935b68f0ef04379017468065683bb07d81cad667d36f1f5c3dc092318a3b05a35e81ec890b9e6c046ce5274459073dfb046d3734fccba2d403ec7ec0950e3aa519d3940f80526ecc867bcb618107fbbcbe7c719650d4b1e1c6086a2d7e38ca238d68d803c213380b6d7d314804531b1dca53de0b66916002d3ebde77c9c1bddda2f80c2c386f702288accca89bb1459d99908e4373e990214246019b9fa5c7ccc06cbc51885a1e634ff9a001a76a0d37b07f818650eac839e720726c9786535518250253b0778a97d00e4c5d8ce1d98689f350e389bda8c6ae2c1cabe363d070cd8f8aa4fc0104571ef1b309604e9194a8f333f00706a0c9ca31ab7b1bdef030271e2377b00e50078dd1260e537afdf08266c380f6a6983f353aa87ea1cb5a987b69ce7d65e0430c99f240e4ce826ffff82e2be260e4ddc4ec8c89508e076c279ae89c26fb3619c0b20daa7f45831a404d7f18100398747370e6cdfb77cb01194d4e44a2f001365f6a1a5f11c85e59bfe28a8a29a3c0507f68c57354c39cbe7f469a924f75c1e34a5ea120f0e013a0365ef0ec8d27c06508d43070511105bcf80bac15f6a0a20be2139bc76c055bc4df536a3125aba7f0b68107e6e015b9f2fbf7f8056f7a6670e6cd59e6c3ab0b5d0b2abf7ff649a5ae452049a40969776056cf7d83e71c09cfbe7c0e6cbc8f6fd56ab76c21ed546058dc8e91c5071f6c07ade46e5ca647ddf813ccb83038ed57300658942fa204052b39d2f4083a962d7d6f5b6a0be47fab327c0438f0780814ac57d03862685e9c62980e4bfe9e5d28109ff30172068023f83b6c850aeb21180543f89b9cd4750b237943700223102ae6fad8c084961eb7a9cc6ca84752ac0f9e5fa588065fcf2de013669bab0c45d2cb168b01e280d7e0350f5d2ecd9011a1b3d16770f0ad3f02d25d53b92db2b07b6b09d320ca512d52ed53079c97f5baf777e3ae966804e3734070e6c7abc7f39c04375299023c9a64b75f1bccfe16cdb81f5faab00ae5ec96d2b80097ada0132523120b8ddffb7a23307e830fa938278424b0e1d8132a5a10844a0f3fe2720104b8c0740974fb0495fd7001ca7d3ebc481357d4f4de7dc903cf09678dec721644ba0e490f808207823595e00320c66a75307987ec780828ac1f8a1448063fdd91940692542009013322df550dcb3933713a9ae243369c0c5ca9de2d3eb4b8014785c9b3a377671a5d745b1a412ebaf038a20300c65c66184bba40826f86cfe007295bddb74606f1914005d6096c858d48328b095025425221f013ab245735ddb5543a669b33a3546a1946d6bb601d06cf87803a846c87ce4c086d29a1e559a35b41cbbd25b0132b6250e6c1826fb026c05dbfe0cb3a0a5dd3160c07cb19cf6fdffcfa81f7502d06d64f224809c0ebe019962ef07809c8c3a376a472ee5aa01941cdeb72a40a02ad3c72ea0e68a73560394acf2fe17d0e8da6743800206357d2ab5277cbf037487b3b33410370bd3e8d37f02aa9f7d0318701bf99101862cf41ffa858c196ff45891f1dad99f0056eb215d58502f29dd3f04c8ccf08f0e52286478be0474247c38e4f3e3428f01e0c581c9fadf0160488c44f22e8059eee44d800c108fbcb64fbc618bc1bd00b33263a04ab2678717faa32468225932d825c1c5e1ab764035f9ff7fc1bde91850ca57417fa29264d3d58292f73101a48fb6af1db8acd73960c066f1381360b3d87e020cd92cc67b0e6cc3d94900b25c7de8171a5b732a89803aefe9e0149073b2189e002aaee20f5a018e09b35d4043122f73e6e83724d9a5ce04b82ad9df75c05da3da81e53b59b72e1cc862142c2dde0ae07dcc33a2245334e4cb8189f675000c3978cfe9f56244cdfa948645d1b629f6a85f14acb8e503a0a40ad1d3b900826b850223502e46bbc0ec812ac1d3a7f199361b4efe003517ed3f6a298e5cc99a3ebf539a735b9406ba9b4fa6c8872c46e91ffda15341e86e1dd8fe92fd08d8ba9eda09270285102ddf0468c7d199806a3d1f0194f8eadf26005ffc6472e080c2457c6da9d469ed9a032e63530718ed9120b729addd0960e8fefb74c0d1eb1d50a98ef7850313ed9f7d00d9b4925b81ae31595fd8a234ecf78f15b044712b4050ef8e031c972e0003791174023927be0430c4f25def0b30f72d7bf60ad8505a65851520ab97fe64c4b696bc3ab08fdbd46b47f86cd26343cdecb0efa0e070a66f29f896cd0650b2a05c9500d4c0c43240ac8009cc8d5e1b5850c227a02141fdf19680520f4c012d2b4ca1872a707c8b3f29f0c54fd76b40ce5b1ee7023aab8f0113a592cb00781184ed00d01dce05af751bece8cd018926796ddc81c8128038c41945c614be25ce17e2a3b61c702bfa2dc029fa7e0020df4532e45b4aea9da49673b8072ae1a767281f4a5908705cd91450829463842e9ed58924b71d7994934e2a7dfc7680a7ca0360c429babe166036bc6f3b2057d61a40bef8e8413dc0f171db8175e1426fa1147aba3903e0f49cdc4e0588af1cfc00b05ca583dc812db0e609194141b9b9dbce81b5f4e00f4068793a387360ebe9cd9600bef8c5c001f65381c029c9ae1623a8d91aa7e70258aeea77c0449e3beb02b6e1a41701d0d2f4bd21a0233387c556af00a9286dc319c5e9413920da11b7355b9347df0eec2dc363c098abd64bbeb6c0e32e512717cae56a45a97ac03e6775cdf39182e192e37b003954933bfd62883bb265e65801a25a370123a2065883fa62cff696847189d3836be38903db2c4aff4543f639bea5cc949468cf81ad8537850087b31c292c5581fdebd30117dc8c8b54b8f4e0c0015e8cfb029cc59e98626530479de4af0510bd90e67340c79f6c333daa35a27ddeade9e3b89dd86b37a78011fe30973960cc29e92c73607f62b92a5619203914dd38b069bafeea8033f22140d5a13e1de09466d91afb3f60566edd032a369cc197039beafb9b026c059b6a5820b1d19ede12788b1d457b75950de775ec80cc604b07360c5b3b800969cf6e76010db94b1ff416a217d2759b62f1bcc7cc7e5e3830295cdc093091873ca318d81e955e2402e400d87c040ce9a0d1950332a66c01c8b814da6b40c62fd6687a5436b99f3b06548444bc9e082897c91ca07c28e76a694dea01d6a008b8a1f9fb0768d1d703af8d331bf3312317373e9b0d5669228221926c6e7c116065091b4180a3575509602dbebf04e4ccfdd100a0fab7e74702ec95192d95d12d4ce8b1b8add9dc7ff8e7c04eaf5f6a58d758179edaae3eae06fce2c62672d61f366cceb500cd170b985a019b7356507b054c6539fb0664e863c7c101f9e88f05d82b9ffe3930497e1e383091da6a00397aa1a54ceda31bd8e76eb601157ad08b5a5ae3ca53df021a6694d525ee9540269065f28da0c301e263e8c054ebaf0707146231d1ce0ae554499e05884adba81c90ccf44a80139f55328a00579e74740d1872096abee7791f088aad2f07e4dcef6fec024a7e912f01819cc3790698b08b997f61ef86a102f4bca51ce936f2ca816d05935c80a3463e7560e2b0f5ecc01efa5e3a203ddf08a08497b5fe841b9a50af0bd8f4485a3d0347d0e497c12e29409feece04ecb812ccf92902d56d2a2f01d46a4db38500d6c0c70dc0447bb67ea1a2cb6c1659a5a089cfdc01f5c5ee004336ad4f9b1e79bf5d98f02f001992bc3570c0c5f21340716b5657a307ec51f5c881ad30763bdbff133bddb6de52a09f5ae2de1560e3db0494b2c0ef03706c4b6e034076bab55b8012c65cbd02b8464f0f0a019cf4cc97a557465136f3da017e4a7b8096cd62780ae8d01cb76f04b807fab25999c7fd85acc4df0ec8d8c65ba21a4831ec67c0088be25c20c3fff47acb0191e46f004a81a599de52a05b5a11a615209df60380e2f1213914c0ebe6f411c0fd7e48e9d382d2acc9831eda1117fd63d3342f87643bf944604a65dfffda00282be0c9bd03db4dbfae00aad19e4c0454272015608afd3b071444fa3d089464d4b97b1490d7cd25403596df1087f817a4505913c09be1fbc40117dc6a47ad0b5d24b9a2aa4a3ab7cda250645b723b1140f839cd17516470f2ad1cd833fe4a075ca4be01146711d60598b775e180b35823a073d41240b5f0f4590fad5025bf060e687a022030271de82d133c5427578086e225962322020c88c98d690645418294e47608c0f8975ac9bafe008875c3a228fa86b3e1e4db024cc27ccb819d1b0e120726a7b73301321c9e7e0114abc149ab07e41cee003a58a1064680839da5a0ee9d6fe59af0eb005bdf0f80ec40c9fd95032286d430d2b0a45b3c23aa701800e88f722035f00cc0e12c49370024dc0edfcf024c31cb8f9b176e2caf4e0119732edd75608b418d14fa7d9415418880e49de14bed2810fe6f7add0d77ff10cbd2132b5e0328789a247b02e8745b4f800e937c404e2bca99a6bb66ba29fb9394cd8667408efaf5760fd0ee6165ee570073fa07a0948d7e4b00e17f7d77604389edb3cc2b14c5973d0176c2d113a0567ea9096082240fce010d5bd2207180557213d0ca8a6fc7d932ce178a1def0208bc08168fdc03b29c71e22be304b25fb4fac508bbf6b8058cd95f2e0f1d98c02ce8b182328089391ef451499c5f162340c92e765209f0271fb503938fc509a0c21a581e383029dcd29fa88a483b00042ea8dea70e4cdb1abf08e0a8b360f4a3e6685f7baa2e54340706e61e60a7db14e0c66ae47fc259cc9fd172f47a5c0774a4c7696c469532eb87e75f01e65ccde8bb45f117a12be5e57a3e145015b35d01b9372074a5eaf2dcf1f9f1e845a5bc85037be87126c079ae61b04b1507dfd5436bd29dbef2b5a5fc3f2e05486799e67461a58420c7db8001dea5db6f8071430cef2b4089bf5148aa7e43b18fab0538787fbe003836a596063f828aabb4702ec0dcb7a4002b600bbd4551ac80095d7e29c024bc7803282264674f80dd7479e9801c66fe27982a6e1f00b5f24cdc0b70d01c1c033020a6efa780168b62f7e3c07498375ba5a2868bb3cffb2e809356b03cbd3d28493ab3ee80f2d0b4236e9e947bd971603b90451cae00a5ae6f01639567cc0199d68f1250e02ff5aa96ead6bcbd1050f5d27d0009a742b80390933a59e3f38b9addf4e9c001ee510b40c77291d8f259c5add10037de55e94157a5806a82060056c9f08e48954a49d5312eb228a697af00a593b2a4332b605be316bd5e5604d26fe92d15e6d26923805f5f4e27c79d1023e444801935b6c5a0924531580ec408e4af6dc5d2a30c96c8ba390cad80c97a7d0350f21bab0fb4022415d97340c4a1fe44f11e987f2260364cbe1c902caa0420c9a99521ee27070d5bd3433ba470f92c8017f41f0d73b3dc5f0e20de235d5e3bc0145e086044f8d19f2860aafd03643233ec02720477b1ee806c383f80823c24733eaea0f664727500a014476275685680e8a757404092db5bc0844dcb429823e0f343bb2940fee476cb0195d07e1cd889efd636e010371cbcc38e01ca8e8c5b41f0ed84752c0294bc0f1e5a664aae963b2077fa9e03b613fd89aa00b42da0e07036a64f4beed5c3cb0e8074c9e1615f80c858cb651281aafd7e07075837ae00cae8970d1c703ab90774c4df4e6d4d0ed58843e2fc0530c620f2c243ab8c6b63acd6b5fb4c307275bfd4db7c593ae02cf60420b43c7d9a3a30090a17809ad9d06d38e0aee0da015114f700454058adf81e6054797c7340d288430011ed49ad8661fc4bd76cafac8b814287cf003a690d4a07b88c38607a1cf2715195c4a238038c39f17178af0b821483657c5c01ebb19c96c639c75bf8da82dc3fc1b28bad00b9082e012a963e12c05d3d1d7d09c880780498304daff427d4394b87fe0baa22b43700c5460e9e05a83abcc12f4a320ca5689f75a9840fffb61c505873208082364d1dd876b2858c9594ed4e590beb386f6d4b7ad80364687d5d0320895772b70b50462e738bee01d60dcb7e1b0116c5e412912a9530e66d1fa08ca0560f27af2b4e8d69631234e9d77e93e47f8009e6c1d03a208b55ed00494e1d9838ac0f000abcc07f2c02369cd7ce0161f2870039925bc2a915e036e1d6813d744d2ded709dc58d6fa2aba3f01a0023dc92cef60044a4a6f901000b5ab0cc712b806ea93f2931a79733009b45fab504d438fa0d4702d8d7db2b00994ad263be368a2529433e1cd8c85912c01e70f4ba3976601a4a923ac08d4f0f5539f5733aa85c431f1b9f3bc0e05e0148ff9a665f0288e5c50d80da4fe15d80b08af0c95096aa94b77c0504fe643601d4727e3a77606279451796842185ef3d0764157d01c8eb37a3c7a22ec52ec6e7578ac17b315b5f1f10c340dd01a4af1ffe03482cb9a1e901da56e3800a53eb0eb8373d0128e70e16a3f8ff59d717b61534b28fa5ef23c0003de89a96164385a9fd017294efcf2700e13f69be0fa8b0059f5c01823cee36002c9fe1610668f8c52d9f5f2857d6307140b19f9103d6f5cc81f5e9b60356989b6f0065ddc3c1a6036b69a2a69362272d2b01ac5f1624d0875d1089f12a30c0d6575c3ab0d772c3db036a5fbf0970093a39068c11cbef2520e75bae2e000a9a781a0048bc996ce92d64df0fcd9103ee5f761cd88653abe9adea78bf033a0af5cce88f0adf8d6059bc7bc0d11c17de08ec98105872e2da4036adf33f0744fbd0b08a6c27c92e521835256e346df4dba8f620da7b000262d2876f01e64bd6021a4ef3a102905820ad270e6c9a5a1d89fe9fd8c6df870eece3168f007232a5435bfada6288fffaa21360022d5e1d5014731b30e232765dcf2084289d1f3bb0cf5f4c014af5739b02321efa7ee0c026e1fb1a801bde64f70a103856ffbc3930935a4b17fade10060264589ed385c544e7ec3b40531134f1ea00e3df25001f81343b7660edb899033a16e9d61683b6545cd2f006403469c0b4d79614900ef88f45c056707fe2c046dfa2f47a8777d48d6f44aaa4aa5bc27edb4a8709f34701ee3c53c4a154a2dad30f0035ec42a7d792093c4c270e2832aca66b467d320c1506f7f4f05600c3ddebbd031398d375c00023c2cbb3037bcb5d0618ca365e3ba092e2b6039b0dd55c80d309fec96d35c2028fab791c4873054ccf6c75e8f21c73185b74e7a782df054093f0e51e80cf6640b43b9f62f50cd031b339def7c0dec289af939f413abf7760afb5fc85bd63025be3e24a805d6c1e0072aeb55af12b807970033094d36221a059f9e4c0e6fef80c8001207dcf1c501bfd0230e6199633740538030507d641966fab071c35707cece254b773250b5bd7dfa5d9f67a00506e4a4b9c174160667399d24525cf843f3f7740409d3e0e2375f2ac3ea5304dc020d2151dd3f4ce16a52e9e3dc8f8483be234e5baa50128d97e493b4a927825ac0e5de909851602b83760fee9e2d1dc960b2eeb7bc0c5f2cc81cd867fc8693c5998488d2f05d0d8a66a3ab9d393bbb10354b80b016694a584e8b3d1a3284e1301e67e180186cc97ea1fa05045944ca0b1f5b4434eabc0d6f8beda4ea21ccbb6753e03285349d830d0ffc6265029c02e6686bb15c02b7c1b30c02230193ac0ede40f20bff1f90e805c26e9fc143096a2983b30d5e9c97f811a383f012827f5e2d90109d96b0164fdfd105010ec6406f7084aae5adf8e01449524e54040cf3802e8da785e3830b1b47a38fd498c53529502b89049efce001d60f7d3404909f224690132767df2273254a5a30b40817d6cc25b4ad2ad87c7910017a96abaeef7d38ccf778dcd9c27236810ed426f69753467b025c9c91d6ff1bb932f442a4a32ee7385009bc51b3256294e7c7f0a183594cdfc001082985e7e0ad876921634bdcaf042ca17809cb3d8a98ddc204aa12d8eaf5307b6f2d7ad00b3e1f3d901c9b36ac01049de3c76601db49809b026bfdc02461c8ae68700d26ca4e5b303fcc67f0199f25cdd0be01230b800e498b2acb2756f5e66be8cf40c154e9cdc014a0a0758cac3fe5e1553d6e126a0e51c75b3e1c0966073192906f1d06c4bb0d59f5b01aa440c1c50fbe901a06c38391d548ee52aba14e094f4a93fc1a4965ce700bc7f927228807178cec7c56f338d6d310154c49a577aad4ad4570f0eec5b9e2b80125d676a18d7f9e191fe28490f9cdc6d19a8d694d20e09aa282895ac330c15c96fc2f7ae00b6e0af730758f111cb4a79ad2d85ca0ad8a2f4cdc755b88987eec20105503a01123c8e47809233d0195d18b702ceea2bcd208a2dc57ed28b5d8056edb90304f7f1173044cba90f04d81bea7f0ed81be60e38efbf0214abf150392015c39603db81da0290b17b985b630f506a1eff07a40cf916c0ef737f06c899958b17016cb0f36d40810b4dfacf0157475f021854f78f01b58e3cfac504d3efc71fa0219d9495dfeb812e536caa0fdd2eb5f50018b0e1586c6404239c6caceaf00a907d2e05e8e6fd808f2b091c4ff6f4d00ac76916940828d06719ec22c0192c7cd0d272c26bb77e0508863bc8014a087264abf6306e05ec0d9b00c59adf0d019a0db33b00052d93fba503d2057d0b1016febd03c8d0c70e33808a97546f80b231156e9371a970e04e376d468ddc94f5f60aa0da5e6a4553a37e82a12ad9ef1cd89f9c1e0214016195267ac07652ff38a0d4e41940f10d4fff032a5c2e1cd08e0d07f65aab64d45f8073e4797f07c8b30b7d2c9ef6b9c4b0448211543a261c0082eabed502088c15c9e82fd151e0cdf36f0538ab3bc028bba4a5a5e25e7753013494fc1a3064e5af27027841ff9c004638c82c3e04c88950f02d71e5a728e637a0e2ac6ee5a2fa98231efab92b806630665c4a7252a7d5a3809234f17125a9e3c3b416604d9ef28b8a5084f07509d0223dbd00e40d3977f6008a8e5b43e82a45ea840b079c81f8fc4aa96dd6ac0bc76e31b2ca3dc5d80d4456cdb537edb0045b2dbd1540f94e1d98146ecf01f2f8b762c73d605d6f460085ba2dcf05786dd5006aa92c4b07a62a1c06c00475a35e005a6ece7253f2a282cf9dd6f8dc01d6c00dc0a0c235610c182937d481033b140d784b5c1c6da098eae39200b2d0dc02e45c3bd26b6b62349b3507687d7aed04092aaf05085539b0956e1c550582cfbf1cd87c31cfae0870254eb70f05b87abedb706087d5bb81035bd8ccec12819c8d5f6947257f7e4b3cb102f89f7e00b8e00e1d0253555ab5ff01ba86fdd62650140694def91e40ce0b47af80110bdbb212203463d77fc1f18d9356e60bdbe91120d37a7a2780ac37eb0e4ce8ec7cbb021c24fe1cd0d27d07f69613b5438ac0fb8900aab595582a5649ed57e07bdd018b7409287147b6622e3de02d8b0b80dcf7af7e01b2908c1e1c1030a54e6ed8f797ea0f32a3a73f2674599c0d4472ed3b207df43760c0555afa0c18a15a2f3604b89ffbbe042871cd151d5466dc8cdcbf39e06ae00790b359d8456aef9642f6db73fd821a76c14a3cf6e77034faef4f408dabc6e71430c147f1e45a00494e678086959f935626e7dad47243f5d93f9851e51760c45dc1d5d481ad74e68e1c41267fdc4707a60759d2dda2cfc9cd9a4cd32bd5687fd23302cab7996efaa591e5f3af7040a2da27808ab82d0a072630cf5b0ef075ba011472919839403dffe780fbb95301452ca70e708c6d01327758b2db7e2e2074f7538032920f0e04c8a437aa0028bde9df08d0902eb93d07b43840bcff0f30630740a7d9f0edc096f14ddb92f2928c4b49fe0590c96433114077b06ad011107e9cdc5e0a709c3d9b00c61c780f5f05b88e1bd2c951f849c57020805273cde7c7d9600f3dd69f50202758f1b40830aa24a7ff031ba8ec1340b1d260698bfa00331c20cc9bb2076c056fdb0ec820f30820b55e72b7e6c03eff670e500aa6bb3f40a150950b40a9daa44b402bfdc356dca25f2f57e06113a0f8dbe79103ee928e1de09357000a9489e98e036edf82000b7ddd3930e16f1b07265276a359f4f141c46aa81d15c9912c82aa3fdee9c4b726a004e47f00524224dbdf808e1537e7f34bd216259674370256dc349b02862c8e9c5ea32e8e8c7d55000c22c9fdae80c2a18e009c5e93cb7f0e6c5cac38450f58c6bf8203eeb3e9a02896f62db3a9039244de038a40d1905740c92597f98daf8035ac9800e4e19eea4f2a9c7d2c1eb977ab272159f72e8011d232c745d02a7edf267211576d6be9df0b80721ee96224c021d1aaecae002acb3a2057e9ef7b0736e766df02981827634041de8d9f890007cd9739a0a461f77f0252d07e1d583bacb2c22a1ec6d6c2e219a0a0ab3b7d6de05e6c470d6bd8c50e6cbe94be6a872b40c99c9b3c38c0e37f0a9013b8a54c5d01dc4d4f00014d89e34a1997717bcbdbdc01b12b3300b7b3c9af9ec16c482cc5ce0a60d9b4f5a38cb3c1364fce0d1170381bff0148a1921c3f38b055ea896f898bb40dd41ffd11a70731eff4475f216705cef52739fbcbe80550c823621b50aa64cc810353f1bb23402081b055d8eeada7e4201a8e1d58d32d2742ef134eacc6e710a094a9035b61ca8adcfae9b0030c6576791250f2df1c304282c6bc362ee3360ceb19a0c02a794d27cbd61766cf00054dfc1c0bc890f9e3c01e6a31127d7c3f3acc8b7d7e55507b217dc9015a60bb01404e14e612b00284339c09b06ad71f0eac4f0f0f009ea667ee807496a7801a8348b723807275a38629887550393049b638e01e4870794b49106bb0bc0a3d6009fe370110721716a70e4cebfbb90164da0af61cd8e81fe94f720a59871f0764d05d020afc1dbee9c2526148930e5011dc83592eae385c1d5936be3e240f7f070b205b0194ab75014e7c1ffa8542ee4e0e01a4fa49b87d8b2f4560ce03a0d251f41bc03a161e9f0035d60dbb468f0bdd888c075bd6c9c1ed0e16fd54f4cee8a608cc5e0181c13e7c17d05a78edc0fac30a8caf80f5c7d39d035337a6b7007277a4e35d0778646e3ac06366cb01aa821eda71b5c85e194a12d7243f47808213ce8886c5230f3e6877029819c61d00cb55d8d34303cae6fd0340e56fac5e7404f8c3a4cb47408b2a69c9a22250fe4214d650ad91a8f6e1039061aa585b1790ef060d8b9b2755876f1dd8d6386f0005cae65b0b202940b23804e8eaf9c57abd8e836dd3f4f2042067f4a75280a1fc9839201d9d7ea163f560ec8082529f00eaaca6f5af03ebf566cb0155ddd601f2e99dbe0ab079369503ebc27b0718331e0a80ecc9e7df02ac52acc93db0fdc5caf014b5f26b870f5b726a3776e59b009de6a723408e13c50eed70a133dfc0de8d9cccf9568d20820a17ef051d14058623e01aa0430f5ab3895c57b8bd26d7b4b40a5c94dd4c05908f53da51a9faf1cb12d012086b191ffbd82733c9a716d31c7b54736efbd881bdc5d23746a061a82f1c50de75e8c0bee569cb01a5e14b40c372c19a1cff3fe3f2bbe7808dcfa6581c599409ab4f18c1002fe8c125808420c1ea47ad00ebfa9d0069242def577f42c6bbd412d5f64ed15cd6a73980e404a955cce9ddfb036979053813a6e367c00865e23b038cf1c59f8e1d7033f222c04548f5eac016834a0f25943a397e07905f2abcd502dcac8e3307e852f469dc0b4c2c77df0035dac5bbb5a329c850967edd02145c7cb40e507071681ce09f5c39c089f3d2814dc2f54d80067b36706042d71e3820b44b0f6da5166f013ac21859947a075ddba2f7a680b1ccd81340c6343da7617d54af8d7e0108e42c1fae39c0c0fc05a0dc4bf2c0432b7296a767fb80018e7e9f17006539fb79058cb4e1e8174a40befb0050a6e7bd002038305d0c01144b4f96746154146db9b0fa734513546cf0d9fea48d8db72ebcd801a8f6e4eebe03ee919f1de04b5b3bb0af0d2f02acb8e35380fcfa66d7020ca58596af00c991ce057080f8b06f89438db1eb8a5f44258fbca30980a34658f0161d3592ab0f4041da117c48da38d549327b22607e6ce18186c5b5c006caea37ac807d8b79baf5f7221c9b4abd859a7ec9cd9500cbc5866d3851c3452f5cd60ecc06fb7ae5c0def2c15ba27c5827a3b2b415e1728965f35c015be9dee8316906e9f91ea04260ce19fdb8375094bb02e80a6bcf968bcee7dcf2cc0116f817802eb9ae660e4862de39b0cdc2dc0957c03e2e1939e030b22740af5fd899b02bddb1edd9013767170eac61475b0eb829f267104b3cbd010c106d2b89da4746f2b5777c4b2907cc37beb6541dbcf407901362664967222838bf84a180ae388f01042887dd43c0041f81fd7540c336bf7f0268a9c6b8f871c0a2c46be392833e76e480caa313c0407b542280aab0f8052815f6430de0c23f741520238ae26f13a0904cab4610016697744f0f6d09c6b7f4494517e43ff6b45a4ffb71a39307470069f4161e1601a7c664760ee8d8e62d6a208e2cd9c5d28367078442de3860955a0ab04a855707265256a739fe532e676f770e28787ae2007f98ffff84444fbf00f9d47c9f38a09aeb8b031b86872301847fb700506e2efdb701c0ca925a02bf5eb0b1d40cdf004a7b364a1cd87271a8d7563cc3123b4740107cbaf8162004a0b8024cb0d47cee011a0e45cb6d0744b4d78096dc501feac21629ccf42daa6533bc007414527803444936b17c6b00a4d44db7f40b8a84269fb4b41af2f97ffa13453e862700a29d2ef61de0277d0c1893e4ed0f81f1b3d8720628e406bc0528b98c5d0c000ac65f6c026acc949f0c7635c1e668f1a6bd8b1e01ca92f54a4e9c1b8f029cd64e4e0d04d9a56e7f05d8f70fe8f5a0ec7327f6d0414131dbd402502350eeb0f99901bfdfdfbb0248f8bfbf1cb06a7f0a20b8cf4b803ccc2e4b07f6dad995035bb65e5f1dd804faf81f90ce72434005724e1c907eedde8109dda37e316266dbaede1f12284d628b740fd8d5cdc8d4db46f9b87d7d8bec96830f0794bbfd0628c7ccf84d4091f57a4bcd11f0e21a40747ed87780ac9fbe031abc291ff40b5250874e7d8aa53758619a1eb048ef8d04981e16cd510e2a2cbde93238e03ebb0110d09f7efc73c0b8d0c995d2be7fac39a028c400a0b3e9232255e5f8499b03660405de1df5034039ed7fc78089e60b235735dc34bf98f00f82ca116eda9233d435696aa5af7af94173b45a14513aa4083c740045a35f360ec82cf822c0f4a8371d60ec7a7660a26d69e07a7595bde1edcf01e6d233802242ac2ac20a70f03e12a0e983078022da2dc1410484fd26effa16c5f05a96911e60aac87280021d2de96e0f30b8bfdab80c2b390a8fa700463f6cd3b038d8a4b0ef1c98c9b5de05e4042a99312302d6c274f9e080fcc99903d3942ca56e044ab6bfa587762adace6087352a6fbc0a0c284f706d43398aab940df6c113401176bf470eacd7ad72f10aacda716e052e7ac0c2960c1c90c47ce280c4aca780b1d6b175078cfea7037aac14400f32cf8cfe91b4f4fbc80149de9e1d989c3ebf0a20a7b35307acb819801a65e9ecd00139986b01dc09079b80429ee51580325e89452ef527314e5a2375e104837bba06e87443c343e3ae6e0f3d3f030cf11e3477c215c0e59d8756f8c3a48b3fc01883d907df1217141b7dcb4bdb03fd620c2809cd586c39a0a88c7ea17c398b1d80121c58e29a15205ba39a8ebb7a783900d4f89e7f6702f8b2ecd8f2390a6b8a0237911af7737b05b62600e51eec5e008a17b3c8e91560f40b071ccd0f05b44a7d38307108fb0e6c7518d50eb0d36d03e4c8f5d03a20f94de1002bedab0052d83e0172a6d8fbad03dc2b8f0184eba7bf1940e7ec23f547c5eef1f827c00d9e835a35ec1a0091e4e99f3eae21e0a13e05746caf3ba60745c59a4c033f89003b72360410e39d54170095cedbfa1660b5fc1839b0656be71730c231e5e811801132d99b38b0872e5b01f6ca9f6b402e2324e25029c2eee3d801cab7da217fdc0fc6a5aa38352eb60558a417bb809aa8a32b75503d214dcf3d00dfafe4404d27417df249d3e389cfa4d0a27ca374c8e1707b53806dedfa13a078b1d9a503f27f0c1d987c348d006b72281c587fb41f0e38694d00f2ec9aed38a0c0f8930334837f804229dcee1d58173e1e0b28af53e3c0bef653df52b0233f0e002577161b0b01c4212b01d81c936bf5d8848fb3a8811e70c07bd52f64863297d51eb0cd5b92845e95605d3fb0752cab94d4ecfb0dc0369fa47f0042dd92e9a90093309b013279fd3e39b0fef8fc76c012bc0ec809c7b62cab11b08c8777be256e2ff86c3ac094353c70600263c9a27ac0add703e312970fb3b23ced0314d2fd8d5856c4cf85390213147dbdc99f84b1e5754a5f6c47ce4b05176f0e0019ceb5470702ac41dd23403eac4f6f0e4802f8e98092750b0156edc9a503bc4cae1c989c766a1895e053738fea015bc1407f42f9ace4ee18409aafb03f17e078ff637b655ee1fc14cc35720538ef3f0b707ddd9400598c8a00900bded7ba0302836958dc5e49d43205908625ecfc0126e8966d06201a2cdd37b1ccc390b3c76726c0ad46de0146288a5ffa1395577bb1a6173e728311802cbce9ef31405147d7fb0eb8e24c0498a6c9d881ad4196366005a886a48796c8c72c1760e436ef1c100db606a8581c9f3604109827b54381b027678056defa80b8f1991e743800289dd4640920635bf27703d050567c4bc5c21676ff1cd8c2767a01285570ec1550638719cf004aa0b3750da09064ca065c8435f3ba09ef8c4b90f9a7a5e9418791d73f01ec3056093e82311e99d7b64795a5e24dadf2577facd2ee710ad0043a380750db273d9c3be0467357003dc83c43578079bbe7009dae01c80dc7ca11ae808dedc34880c3c8f5890316a52b078cfe3d2020a7dd9e0352c80e016c16e9873eaec51f66ef4f0071e0405396389425565635be9500d474a703c82fe7fb09c0fa912e1df0507561546ac8da44af6b5d0f7b0c5445d6a684edb5ac3c40884eae08ff493fe8a02841b65c5822b0debf0ca5e691af8d8b81ad746f343da812bc057ff5ee2098b117b626bbd351fa720cc8b5180c01cac8357d0654fcc29cf456c0846ef74680b10db70e4c1c42e6c026b2d55d5901930f0caabd1712150dd600ee64f32680249f0e1d98acef9c01e486737f21801db7f8034c282d70afb790fb38b1943211b40a6304c8f929b1ca70bd758cf4e28f7c4bdc2c6c4baa5a07f6d06ffa236a06dc7a8d00135d840c05b8375dec0148f890e67472c0933a69794b50c4e19efd22f80432afbd15b0cf6f7207e4621c3860bfed00728ebb5a176031589e3ab06198640e6c3148fe07f62ddb7f00a50a5bdf1240a42e0e05580c262307b6e460d70e25aea269bb2780d04d3f010d4912725b3f82ce406129a0b3c71ecfa86411b09a6dfd9d39072bacb4b18f15b83507b404808c687a8599321d8e1c70e7498f0585a8ee2d01638ed5bff68bba54641b26f9dafbe3f5c10113e8cb81352c1c38c016dc08e86cba04c875e5fa4c804eee3e1d90185e7f227f874e0dd3cdfbdaa5031bfd47b5a3250146abb7742cd2dfb9032efd6c7ad43a57a6ac52755c6099d96b00a6586071ac2b65171b6e030a942baba01c816224d24340c5bc7dff10e01070530102973a97343dce4a93a09d7d07dcf20400ce71e1890eaa9475c51270ad8009ddc86ce375509cc5074d0f63e5cc98394033d8019053363c8c01050ac9c6c4818dfe762140e65a73478e23ab00b2f50b804ff54780e6dc65ebc0c4e1690e9053da74db81b5e368c3011e55a9036cd2e70e6ce4662f00c9d8c39900ebfaeb9b03d26ccc1d70f7fa27c0eef1b90e9033c7b6f5d8a4520dddcf1d80827bd61c7004dc5d0246cabe7f28804fcd7b25a0c29a05608c3afad138205f8e9e31e64edcca554680812819ee026a7954310c321fa743b5b463df7fb1957f12549f90b53002eeb3474700654c993d00945c7ed3bab0f1b98f58363e72cf1b0274f2db11a061d93a5d73604b8e25ca5f01a26cbe1d50cdf5ff3fb18f7b2a1cb0d00f00f2dc39524b35b6ebef0ea845d13a30f5abd915606cdf1b0057f1c93f13baa8481268b0ff0f30e2a0c9057713f706fb936ddee2e7b98312a0243cd909a0257fe1a90d5413a8a29abc7c0050f1d3f11300153f797a706023f7c4d706921384052d0d2acafd43af070af5245f0264e6485e3307f627cd05604262e7759ba6ad4ff5e70ea03977b1e7c004f7e750804ebe5e02e4e9367d72c0fdedb9031b394b72bf0236d8e1cf81c9a965f6e9ffc976725c00e486c3aa1d8176d33b07645bbb74401a6bde52c9e3ee7302187126c403a0ad3226b2955ae80fa2ccdbfb6307589d3e009594bc2d40901fac408d7574aed74e945a4faf6d9520d614c536e8ce73b4142078744a7f4419b3b14d5e1cd88efc7e2ea06c058f00120b246c27ad1f24d6a60ec83d780590a1ea79171090a0818943e787334b19128182f1779600eabda6ddab03ce0d470e6c75b080fe15e06baf045894ae4d2ca3b221a19b3b20bee10f400851fab4e3c084ce0ae246c0e8a7872d40c6bf6208c8e5f47c0a50f8316e2751c7c12e65a5387ac0502e3701e4934e262780069565ced7ea08980e4dffe8c240c94d7207d61f7f096088eb2cdb490f6c4d1ef1d0a0122996f63d029d2ce61b02d80b37697a205623dde7f3e30a43099d5f07b64abdeba1558b13c5aa83e220e83c67c53a22a05e636af9e922203754fafd0ed034bdda7080f5fcde40a5e28b2f63073850fd38c0816a218058dafd4bfca71c42ae4f05d0b5af8f1dd844fe3e07e8d66bf7c4019a925e2bdf8df21150a0c15aea927ebbc1ae7dfc0aa8b14ada09a707dc56dbf5750404e684253d16f717dc80f9b840068874fc001830f73fe8a04039d3645601941b6ac4d706f23b247f7c5c14070e9a5380bcb177687a50e2aba7b103eba0fd1180eaa589b9bd46d010e2fef809909efcbb12edd8e725cbf8460b9083ddd11b40fac7f5c0813dc392edc7a3fb1a2367495622d0d8d66f0ec8d8f62ec082f2141cd86c98ea1743c472d638c0edf54600bbc3194d8fe28057f818808b4472f72ca090aa35404694efa9be45479ef72b80ae5bb64c700771f431439d38b0e5623b714066b0c601739faf0d24ec4f6cc9894059f0461f00026183a5b5ea9d70d870cca1bd0768171b9f809af09f337abd5ec33abab019157571d5bd3f3350a9ceeae33b4003d5fc03c881cad25aad80cdfd7a2ac0540f13075c2c3f39c064f20690cfc4c3ba031c1f9f1cd0d22b07840f6e03c87791b62300de0c89ed1e3dc080d8ec010a8ec4a72f0e4cc96b360081e040f3a38f4041ce563e2b824ed74fb70602f68f74ffde817d9c154d8d40f11efb6b80b1a249f704b8f0ffa20be3419382eb270228ac76571041492df0942e0c0df1a6bf0646b1c74c0ab7cf1d583b1e06024cc2247740a2965b805c02ae771d60316a1d70d0fc726012f4f802d0cdea6c0cc819ecb50b808adbbc2702f87f9c94004a80a6e6e7d8030c88db9f0085ddfce92d9df2f658af8f82a26c0e0e0199aeafe9a090e361963d08709ffdae3fe110105eb601254bf0de37a0c6dd639e0910d4fbc6b78409ebc713df12d764b27a59af8fff3f455f01f02208cd8e036e8aee01f20f7a583ac0dde35240b33277c0d8eaa11aa8df4307248a9b3bb086d90d6f0f98fb966029027942ce4e0410a9d12380c8b6e47202a850d06e7701e4300b969ab35fb3b9f47bbf004cf0fee98200213356b1af3ffe63643afb02907a205869c5def6c5f1cdea574650b05aee7f002a65d23b00101d977eaf0e017df7e05a6de591aafe921c6f866d002573534badd7df77d3853b2300eed9e9eccf01e150bb027461f87660fdd1dc0174e5bb79e080d2247307a4a3bb1260e42cc46c0530edfd39a0e8d02b40b791ddbe03b3a0d5c70268f4cfcf000a6a27ffd430c2a0c3c70e00e785d0e8a1352602f388e801b57ccd492f820911fe09fd114f6b3694dd5c8099bdf900c08414580b7b604257050005b5936e02c83041ef0f00d2b6f21650e3499d0e1c1073669f1fbb982976f5075009f2db350186f27001d08c7a983a20aef1c6818d8ba55ded2b09a229ed3d3bc04debd1818d7eb22540c32c2671054807b3e6c024e87a1ba0d1bfde72c0425f0b20fc6f15806096f4ee548065ebed13407d8f64a67650fc28f9d42f5ae54f7e156031f8d19f744460eed8029b074a5ea625cff0b33a07895c47af602ecd11c849cfced92b60f2b1ff03906a7d4d078596adc05c46e2c78f99c86f6b00e52e5d3f75c075fe2520d775dcc801914be70095f2795c3ac0b1fe4d803e0d870ef0c57f04943231ee0948c62e1c50e1f2d601392232800a062d7307e8632920f071af6a297948d2a17e51e360f739074c54ac740ba07240fb6a29e50843b309c03521b1c37b047268b798f7fe00c889cf6eef7b5502174d73e38b40b11a1f8c4bc899fb167c5ef5f1faecfbdf002c79c1b22347e09e6e6f0e6c2dbcf80134686c96dfa1775b629b7fb1f95256aa8d7e3d0568025d7f004a7add7cf25617bc367293da01a6bdc401f3760ed0f5e4efa7034e6be70248e1da9a03acc52920d08ed71d076610b13a673d601d7b28014aa9bb3803285efd4b5fab1aed3ba6289671a06cb35817900b6ff5ed0017cd0380c208f60e0139b74db76f80c039fbf80e407a8bd492994630615cb25307a41cba04744a14c7b8d44352646cf371f518ffa023ebf5ca4f49ef338066d44b7060d3e379d381cd284b8e54f584e8855f07dc235f083072eda103eea2371d70a3b9e38083d53740f7c8c753073650cf2f028865b7748077690550b1b066db812de347fac584fbfd5b011584f18635587a7fcf01848705cb1ab902949eb04958c563b5c9c7d60f805260c9d11d20c7e77b3f039484113c1e0130ff24bf5f0258f2f64d31aafc14bd75031830d8335ba5fc823b450d0c3ee7bab100e3f2190054de48eb0d01e66d5238b071e1a8d103eef77f00ba8b7e791240c69e8f1ce0a7f40698f0da934d012468fae7806f19021a94bc6d7d8b02505f1f016cd129a7b51064c5ef1602ccec8717073681ecd63c02b9799ed3b0809b67f27209e0a41576ef0115f77376151f016e05c9c53ea061b02d837f0f70d4f9a1c7e2266e0d7b554b5b4e6beb2663a1263a2ebc322e515e701ab091ab7d8b5e3f0128b95af30ce040937ecf013513b97b13908a3f744034e9cc01c7846d802e0e9f7e05989516fcb502f6712f13014c1583ff01ebc70b40d782ebc702ccfd8d330794ac1b015a96f146cf206228b5048f2b60f3f691af8d0b3d019709a0e03cf7fd21c0191949ee818dbef94cf4465b4b4a94ecdaccae7d9a1e99296be207ab972d019afe1300052beed10250f2f9ff6a800261cd472082c0432d7ebf9f2d1c569b270736d52fe60e08866b00aaf8f9f4eec07aece4c601eaf9950332a6dc3a2095ed9103fb96cb3b40cb0ef47b20c06bd78f1c70493e73806ddc5485282eccece21a209f6f0bf98f808a9f69310254dc9b5a4df2de988ec5d9d27bc6ff3de42a6df34340864c06aac63323a06c4ea26e45f8a0e9748d443b7d9f0328899a86ff0157e07f0e0844b904b48c4bfb0cd02597393eae001bdf8103d3e9e6f62d8d3a2839e717ae7d1e9c005036937b5e2b3b6e08330726966b1980d8b7e4f202a01bcd895e8b636cf2a167508638cc4c636bea4143747e01201432d40235b74dbfb68ec5b197e6b800b448e1cd850394cde08073e50b404e47dfa68db7813a23a995238c805bc080f0b741e12ee77340c6edfdeda7031becd11f4097c2ffa680821b9ab50f4089f967a487068e80a3850077af5698b7f730a2d7cd11341e3347a8f88f0920e02162d5b1e3b736eca6969bb207f4479508708ffcdc02247427fa134a4da66f670ec8b5b7ee808c18770ed83dbe0458c6a7b6387681a2a9e9d1ad03020dce1cd806bcbb2380fdd4f2d2f68f644b7aba76805b410618723372710cc86bea04fc020a649d2b8ab811e0b19bd2f4a05a475381404118ab571001fa58b2a1a64f64c93b72801141cf98600ab7ecfb11a86cb7f94bad808983a5fbe88dfad87266b6f277f51895c592fff680dbfb573aa82e5b1b6c4b35187b14d529b14bd00894db65b60ed0f430c7c71ef00babf6dbdf253072d3dc0153ec58804d7cfb19a0baa24fb70ef00a7f73609b4533000c352baf1c98d01ddd03462449b0fa953de09c7dfd081807b2f155808ccde28fcf8fe26003f5d43a30f5dc120847a024099f2380d4f37dfd82b467e16fcf8189d47e0308085da28f6b5520872eac55ece7f55400713862e46a3240a4993d74e013797e2ec0e9d52e0ee332cf044aad6ef50ad82f920bc080699a9c08c8bdf2c101779e0bc010f9b0657c05b85df974601bf0f44380441c3b4780111274ab5f20c9c132a3f7ae2df2d95c0214c4bafd02607f09b63546a01cee73fd023d3979e1e3e2fe62f336ed002314813f9a5ee79cb32dd97ef8ffa2ece90920393db97540cdc763c010e14f7e1d603279078c106d73055c01ae7cbf04707bb5c457118cd9d6badc81ad5256bb25021d230fd5742502b342921194e8b81f5380dc5e2d3963040129dcd72f745d5bd9e80f6bcaab2596657505eca10faf8061c3bdd800906399482f0138a5a5e7746154944d3fb5ecc8bd97528306bb5ac7626f10dc933ece01e830a9e5948d4037bc166cbd0226851f950052f89801468cad39c6ae00d90a860e1828bd96e247295fdb03ebf5973b40464b0f9f05f03ddf4800aa723705d424ee0ddb8f00152e7a5d03c8403437291cf7fb98ed84d6c9635f2d4f7e0094994d0f82034a605400a21752abf9d803fad46e9b5680bda103f02dc9cb39a0c4f29d6e08e00969c9f722a07e65b0dc61bdb90c55b2381140a486342cce4a320bf2b5754635d7e72b07f6da9d3b018ec496443402b9ad5d340025dc7ed3332a05c1dbe867fd60aec0fd3a40637bad5f50b43dddd810e0646179cf23c89020abc1bd02e8fc8f0e30a86e027206eab110e02d9ffe0be4f4f2c3011754ff00152275fe0b90fd23b115268b9d4c92957f0eacd7ef050845480e8700ba303c0850cc256957fa476cb8d4c06dfbfc5cf291eee50eec4fcc6fab075c70d7af00456224370e58e93e0005c33058176013b76abf7d6f70269c9e09d0c9addaa12bbd179a1e6aad966aba0a7e24021d35426a9bfb79145c9b84271300d5c3c2e63d60cc4d401d1c50cee31140819ce4fac381a92c0707808298917f2702ac9653d32e0a1787b31f075ce80a14085db2ee800d5840d9f7afcf1dd8b8ac0d1ce0ec33fa8fbd375b6e65c7d5751f26efffb0adfe5292fb5eeeedbb6cd5f7bd9e7e93c40f0ccfaa5afbec38abaae6a8598e6038eccf52269349022008820664bc48b27dff12e8c87cd7dba6d41e7244ac03f46d6129efa59630fb7edcfc22a8d092de941450d2e511419d1df73c21687092d8fa2448e954395a13e40c682fc9db778f4615fd764f50e3e3cbb144619f9274baa86e80076b26040db6fa6bcb007db0b901c6297d11d886ed294142552029877c8b6ad29907053a8d7c27d0d89e8b13029d02be940524659d78b3eadac7e2fd90a0caed83bb8501e9ebed09415d85e33581c68d3f9708346e5cf27dba67d515ded7328136e1eb86405b2cfe34200f173d18a003b162807bac1430513eba9f06a491af170698fd2533205d4a762f38a0d150e298f1d63a6d4b49c5e080eebf7d280878666c2cf92dbd78a5013f7b55c0f6185c11d0728ca91b1a89ce2bd38e029aa39f7a176ed88e25e2ce3f2b25dd2822d02ed5591a90a7edef0c70263e23e0991888618039320f06980ba9a9806b8dbd4b82845dbb543620b71da4061844b126d06897970a41cea14e71e1ee41e128fb3d1cd02d339f5704aae607af043a39bbb825d0fd0d9c37c46eec33edaa3c6d62dd41b6ec06206fae7da1800b32d12d018f5ac04aaf915047ed6704a9ce803303d2ea72ee9bf7b75359d096f29e5eaedef70954375c8e0918bb115df11a4995eeb0ad7ea5c6608e5695a091d1ef201d3755bf147a338298cf727e4aa02feab56740aa9ec6043c0b0b832e41c657c981ec64145fc342a465ea06108dbc4b03d262729291037a60e1b2ad80be7149bf160023669e08d4625bb01e0917b8b1ab189057f9744fc04c47f1fe91206626f0c69c20d12d330941ca3127db7f3c609805c494cccc1e3b7e25a0e28bdea604f407456f7d8284537309c4f09d8183f0b643c02c78c87203dcb49918a08efa22d0a09229147098ca8a950374cc442f32a29ccdc7469693e11c38a65dd82c1194e873941c110e3468f5a50b056c0f712139c0b9070e1503ccf52baa204b75470835616e5aac3f25a08b317aa9196050eb5e011f2e3d27d0a5f8a830c0c5837702f539d2cde08076dc9d02ce6f5f0f06a44b9d8957214f8ef85e7a37066454be1c1330f3751ccd0c70c2bb26d09d5c33dec50d7526e07a34c017f5a5805b336e7a04154a07399ec00106d7c6a7b7041c0d51552faa8b18b2a9c60135bf247b9403396304de58d3f48843ace0e3a73cbb166fd24f0bed74c80a8242ba6547367d07c03d9af22c856b312615b922508f51fbc580c80f4916e5801e38f65021d02daa37a704cc031f1d5509f4c08f874b029eb31adf3c1890161b8140f38ed2c62d52ee9089e5506e0f7874efd78e80794763894f76a09e8bc8790912d73d6bc6a17edb26606c0fa61d03dc1a3a37c0267c17906866e32857409534c8088e29725ef70ad8c7c4fa0c800af89140b3cf956a06b857f4cd8074eda391028a71e9855e7a68b071894057bc8f6704359eea36b82468e884e65a806b539e973424d0e459f320a5dca3f10c08c8b1eeee498ef469b70a183e9744044c98db9113a63c602ceda44f70a23ba8960a38d4af0b821265d063d780bc86da174195264bf79a20e6d3365e09328ea826af91d24b1b4ba49b075c79bfa91394d433d12488732eb7c8274ef465635c31c08d28c704cc6bdd59950dc87b79792228b1c5eeda06280b9b0628823f0934f1d5cb0701e394e2db3e010fa38c97a7043469a373fd0a2310e36641a02167e25f778039aae2f420c0f50f1951922cca1b81dc79d09b13f06931ee1960f4609b805aacb3ba3320ad5e5f18e089c12b023de64dd61a0360ae9b2f03d2eafd1302667e4277af8076d0995e83e779c6d984409749afa6045cc08c448b39c0559e58269a1eb03dde15e4944172b077007297162feae418974aa4179655e174e434d700b89efd4a50a13018dd19e0d3e60ab88821fb700290f98bece6f06b4d7c95dd16012de9f8f244811e67ba2148388d94f3b49cdae3926ff4cc6ba45cf28d2428de81320f729284a8becdd91dc4500c40048a587d0ed0a7d459fd0294966b035c8d3c10f058e6a87850a042a96440aa7e7765403abfc46e3850e7f090a4660e30f76074b735c0542e538282d25252b7bafe73c41e342908aab277366e9e10e801b0b108834aa64df81254a3af381d99dd9480af12ab1a01e75110df56005c24ef1ba07fec854013914a0095073c5af1aa63803beb7f7d42b4c7a444d0502b6748a06b38322b70406304e490e100e83d1f1810a5759210a808de1f1114b41dce789794fb5ee38974989a7af220e173ae9e546b10476638b6890eb3cc0067273b058cb8cb63024d45397b2068d020692e0974ec9fbc12a46ce4b9c8d35aaa47a3c9d93e0e70dd2396253d6f16e57c951702b263d94c1bcf456cd513260481049439506513f67a06d8ea55059c588dba048c64829cd91600dbe39c40d31546a901e9c9cfd7047a6e53654f90d2f977d357c0c5e9f22341a62e02698fba1b0df2950508b8da14d35272804be0957703a2099f63020d7b2d5d10681a053944d6810a579be40c193fabe4106b9e29a0ce8ef42b9afdb61da6098977ee88123fdf10688c51170638c4e6043ca7a8b3aa18e05695ad0179fb720aa207eafad5bba8a7e6e2c380b4e989de56f34cac9a0a282e4ea48fb94b72bc0c5382130ae9fbbd01c6f65c1094d962ed8ca02efd346a1d133069442ca94add24f2983df9562ae65d379cbd360834e165e9c4805c74db2668b0173ecd0dd0102808786010a29d0191b8f5214142612067b43b602e573169ddec96a361fe6c40da54b2360520b2f0fd89a0c436dd1d13d4730670770834ab862c2e25c1ab22daa34b90e43c2d5c2a9678b1242db621d083354f1b045c9dc5cd0d010f63e8ac7e0186269c2ae0b35c9708529a3d2fa90276dcb7b201c605e704cc4d195fee14b07f48ee5207721a9bb53501531f459f7d03f26e2ba25fdc5bd15c591d023d3d5d16fc3dd0b9588d80a939a3bbcc80d4e33621e009b9a83e10f0b0f4f8202227c98e7206938a1d94fa1e2243ec8a4035d07bdf008f7a7a5540b5468d9c26ccd8d659950cc8c35d3c1064ecc9dd8601b9cb556a4074c3ed50819e437344c023fc305450a8bd2e823e55f1194bf23d075413b6e7047a8c060de734adeaa6de570514b0cd09418302f67e4c90b0af9f8bad9d3a952492ee5ddac33b88a4ea8313025d078a3a06986ab049c0f405e84706e4dd3ef22b29d39dc6b2add3034a98de9ea022358d5bf7047a4ef38b74982c3bc9e99792979deb74056fe704292b76fc668063bf4740a585b737034cb6df21d004a09248d0fd59502849ceae244f39bf8d8e87066478347851f7b432a23623023d98b7fc425093f8b1e8be4a50e7e34fbf08324aa9b1886037afa0903ed4094a9c8a4ea51e851ffdd2c712024d45393d27d00c54d1d200b7db4ae72ff459620958f640257f4670ac89491a041ac5284bcf0e70393f92a3271c68f05099cb3b82845bcbaf455c14d949211df7e294a094338624741857ad82bd30bf37c09432b10087e4cd49f25f0f38802462260069e4f4d60063e14e08b8ad1375fdc4319b707841c08510546a049a86a57a47a04b03cd5401c5a7e4b7f43765904da34210d3fbd57e2748f514d50601f77ac5729a6b7ae4ba8358d2d31305b9e82839f3d181e39c0748cb458f130db1ba8d08722e51c88928fecdb207bdde1890365da40a18d31b7f11306d514722a93da0fcb8382638a1266cac09aa7cdafe52414ebfc339418dfde3bd43409325de2aa0ff34924c140e98f1cdbb6427e21e8c25aad38112b5c7bb7487132feb02584b9b9ea49a6d2d6a1030c51fba47047a4cd3d196803102c81e15b03b342e092a1cc8b244e180ae358e7604755df7b82050c70cca048c4e8f1a5503dc95f6a920a303b14ea06abe714cc075f578219dee24a3291989a7d781927498f8f045406511b71f08524eefcbd21d4a8926cd14e79f13053a3c5efb0618201313689e9a283120fdf4ad6280eb953d82b2cae4950106f83f29e078591604554e46def42e351d736582baeeb06b1890f6685c11a8d8ba9912f020eb48e2e902106dda3827d015abc63501df4bd4b821507fd0754b40c67cd2984b2ff44e15790db75b030c277c22602fc4cd52018dabf1dc805cb4fd46a0b929a39e011ec5f10bf094dd3501573570dd35207d7d78a2802b12bd6b023a992271dc794067d74cebc17976b4e91ba0743825d06c1692b42a0036619b403b7fe3cc80748786562ca384397c2aa07abdd567513f5d6f69803d48fa7ad9894fa947eb82e024a75d981394e513d1f9394195b9b2de441854525d297a8101f9841c5f1100774f1e115452bac3ae0d3097499da0aaf3ca27829a0ad81201b37a61f34c1073ec4b18b0033c69331e6a4d731517b70ae80aaf49ff703a3da7e9248d5cd59a223910a8674226de014897ea1e136834d4706380edd121e021a151ed8680732037772660d0402c87c707208fdf5e11e8bb952d77de41c0ee207bce3c50a7ac0883aa137d3c2542404d9706f03e20a8f059ae2704fab4c99a800bfe9dd59301d1628d0f03f41944047a3ef2f5da000f4b6f196082c70702f5c23596041439f1e18a20cf18032f1da696a99745c26fbd24cc991bfb9da05150358ac8a97bd126aaf1834033c7455b032261860703f25ec4c3ea01d38d3d5d136858d2d725010df8a85123503d2799271dd023842536d081823239fa3220338b1e3fe1e4a91802fb5702a7b60290a411def86297925dad3e0b2d9b503c1369c8552a7dac4f90aaf6908edb706f5f84e37641c0e016b49b04bae4dbf832c084203b03dca1ab17e5723ea28501beec4f033404de0932cac2872b05e2ed81c43a39c0c97b9c4e0c488b8d7951d540f1ac4e50628b8d4e092a9474bb8301a65b3f21309bee41019b70774e90d2a2ff0c13092792aa3a3cb604358dfceb135059e0ae67805f6919a02a38324055b057c0933762058c8543f46a8047e8dc18a03c6d2ae02268d12150c7cc474190732d5a6638de73415b6a764ea087a54b3a07ef512a782cc00741a656309f363fe1f61fd9019126b618dbeb13d4f970bd810191c9cf1d02aa82a85127d01c33a34f036cb18302de252e1324145b51cb00f7bd8e0cc868e82948e93d3fd3bb50234792b2dde9f4237a25a335c1098dcde196a096333650e4479a327425ba1813247cda6c4e40ddd0599d18e0ee965b03d2a6bd67828c8b3a67625a3b7b4ddd832088f92a25c98a0359ce0382e52e59aa699ce4206b07625ae3b22fda8184f578af19907a748e0838e383e4510c40bae591de25e39b9345f20078cc7dcf00d36ad60c707a7f47c09d4bd1837e82ba32bab924d00519395fdd0b602e94c93e2d078e35ef689da0426746494195427af269403affcb3b414d5646a2ddd600cf6bcc09e8108996a90231bfe2ec86a09133286d4a907000c949350e14390ffb91b19fe525eab917b150f294893870714dc06913d227829c6f2eda18109173dc2128b4c3c86bc85d7b30754997a046992ca109be8979d1e69b021edd2b3b0ebd884e19767265805979ba0a38f6bbfc4a76c40e733c37407ff239818af19b1d418d7364c9b0ec0073fec5d0afd4f95e2e3e0962790d51a5499089df01d762e415391d11f8ca08d4b842a8baab164da74842de7dc5391a4e220206fa41e6730ee4eac5af2ae0e34f3706388d7c27d0838a072f02fc67a44ddf14d042e95d1910d1d7ef131c73881ded094e3879bfbc559031a7ca1381ba08ea0d05147db37705f4e45dea456b1c1e111bc8756d9ec3bb20508759934feb1a999939424f76f54cf92c1f09012d03c4f702320650756461d90336610e02dd26dfce155048cf2704aa814a1f04658da97924a8d0fa9443201da833ec357955208640bcd24f2419b38a9e11147465ed4b02f293427ad07e4c40e5898fe055c84eac7f3414145af54f01ae1179a0f62dc1b12aadb50119b79b1702e6d8457aa6808d1cc506a43d2e8f09b82711dd1b03f2f89266c303becaaf25418dcb71273b823aed31c9fee21d59f4e4d5de08982a0c8b1b03f21a0620c838d4df260445ce5051790d2779bd609611e952ae9e941f5f2d024e9b50ed08f01d33807d9b80d10c182e08b84713f71f0ad862a35f80e6d794802156885606b867f59ea0ac4afcc80057132e096a5c9f93a3593de00092386907d4c7c617e52c5c4aba768d4035e1b3d6b4c819e2cdafe4159ab403799565d5ea5157c64b39d3dd93a791016607aa119474107e1294d983a2b90169d3de9040170fe41c5e0f5853d99d1f0017fd9a04554d91b120d010cd3328e0a89cce08eaec6325bd464cadde792248a80a2438ce819453afab8602aed054ab0a649846173d828ca24f82171c28b857b42517add8ec64fba1806d2a2b34990fa1a1a48b0c48139ef508b44dabfa091adf9034921eb08f89f519801857e2810f80c768b4091856103507040d3e4bf246c08db0d1ee9380aa3196350baf7e456ac7fa09a71ac5a891c36c1d600055249bad1da8b317cab9a2deb462d5937b02ee3c40d4374057c5d2808c3931f2dc9fdccc82c98501fa619e09ea6a3be835ea149f9f7a5b9ac5d1f115414a31dee65774fe121dae092a94eb6b01357543e1231590e9dabc1cf5e400873afa3302c67f601413e8e3f7f51a35becae4cb80bcca51d3008316c704750d9b8701792fa95e5427de975a8f980256d2d00620edf1704cc0e1115d694d33f6a076df807487be562ccf1945c0bbe49c46464f03030cb3581034a44b4515e9307537f6a591254ec903ae7b5cd608b481a247823adbb4776680eb625b0372d1979c80d3ea38fd24883903bee0579c852235956322bd7ca12cfca813a8a950bb26a8722d7a1b11d40b06ea48c51a19d74d510181567df46e40daf4eac5008f33d5af343286f25c1a90ee30d2af30ed6a8c31817af1eb73822ce702b7562c67235f550df0fc28516bcea2d38888ba02beecf180e058ece4e8f599e084c2603f5740012b9b033da01d546a109478db69d3006369af09ca8508d89d56ac51f00c6ee9b8b11707a2c4f704bad1609d1810a92d7b35fcbbe757e233026a0fc40f0644164af0a4fbb3e0f46d23023676edc1f5a898e0984f2b59effd002be8c89c1094e98692086607e8818f0e23829402b67bac40ba5474228d9ca8e48f69a124aa2b2101650e3428d824318903aa1a9f8e1530d04f366c8708096e72be33c0e5eb3541ca8e2bbb5b0210036d9a28a00d73d127c8396e8f6a06e42becc96efe4b8d2c87727b40f921d9811ca8704b446f6080338b23822ac30abe3604755de6182a2864d6387e2448d971d962a97698783621e01987d1e79e20d608b3d800676b2d03223ec509e980ce81ee3b0638572f13308eadb33a36c044936f06385b7b25604efbf894f530b125c9d41da8b04bc9117e01c86464d73620173d9f28e07445020e1d50ffc7fd9102b6ba9c5c1c80d4a3bd25a8cb5d2047d43bc08358e23e9fd6f564b13e8f45e464aad6a2cd3901b5183e32029a2c783f21a0d2c27b998073b1a8dd22d04c47ddcc80a882bb9c205383e4c800636a9e0d307efdca80bcdb9b9440377d5f41019fa5abd7602c6d3c9b11149cae8c360a58f52379d96e06c4afe4e706687fac08ca74551c8e0cd08d3d24a8524ac95a740052f5cf0981faa5e430b900c4b43ebd266814326edfa4c5dca3f1f1fb0638d41f1302aebce37d48a02befb2d12000d1a68f7b020d80903cf00ee47cfbb254128008d8b30d41c1612afed30018bfbe53c091bde6279c1663fac6a1023a222a29c1318563cc8773529b19308f082a1c62a3be828262fcc9805ce3e699a0c6f8a0e31e419daff2f694a041a7ac84f139907078dcde1064055d4821cec03d6bced1509e29a0b4ec9c1a10212d11440e147c0d69d50023ed53059c25c5221dbc3b4c7a909cc0eeffcf69423726e054239e3c2aa05abb5b1354e974932cef7e2e9f53045f1170fa168f6e1470ea2539cb1d68508cbf5c12c46cd312dbc38d4186786f08b242ba43d123280a7a48445c14c5096d879b30c45cefc8a9816ed70a6818a5b9008f02d8c60aa83c7b20d0e8630939f3804a0b5b82133ecbfd8501eeb378252873a675a9d7a8a8801d11d4d8612e1f157041e6e69ea02edd32969d3af95171c4b12f27b0fb7af2edd70604aab3b72b824ce7d947042ad8e480600fd8eab74d0574cc7ce404052fdae1355c134a7718e60664644b866507b88f0ff1a901a60a8b14f0bdc8011701307ff28701ee267d2038a130c86e0dd05b5c21d0d9aba47e7680ba32aa740d487b8c4a046ab15577042a3e25d99c07b4fa3ef5133458a3f31a41ccf752d3878b69a14cf6040955417a6d4084e371d073ded2a67571b452c03e763c20d0ae1d2ba0b444875fc9199f1ccdcf0dc8abdc8e0c50157c10f0bd44ef3302f58f0d4b0a726e1f7c35c043109e0c88b9717546c0468ee635050513e5eb57a8d6a2a7d800b7cc54096a1c40a77d827ace03c752020a9458cec20a409ea5038284fe8f8b2141ca1135281b9039d096a038e29beb4bc54a6a3b44a523024aeda87469404cebf767017e28874f5cc70678b0c42d01f7e14417bf00e7403d0273eb3714701066f609dac9cd7703cc5f784350e250ef140698c779a1801da61319a0087e30c0508d4f82322bd6af19609e9a6b822a1b797e46c0fd0d5854091ad4c88fda62bac479ab354dd883e424120f38e6767b03d21d2e9704295552fb5481c8b1f85c1b28e3354abc68c1f712bdc9e3976dd22cd9b4fca3b1094b30c08314ae04a84d87a76782138eb98fad010ad87b821265f2e05d01abbe7d2228d374eabd286013a65d035c917837205f11e3cacf4cd96164193d0019628556acca062a3e096a6ca0bb1901e350204b2501f0f88a5b0554f39102fa83e29b33825815df31414273f4a26d40bae56c4f90539b4a6663070a1a68a772d18a9f268a4c4e0478b515aef112119474449d1294a9e665e75200d2ea8707035cf12e1154686d71cc55fc65e5351406786ed307019d5df1a44e50a3066a97097445339b12c4f4a0b55604851a9b625d545c3f65f2df67027a26a2930dc10987e981f528d4fe9849ab57cd1aff90bb54bdd11240e540a06b059d07027a3720599a03e00e88b9016942d966e2a53ad7d63210547512f0a240daa3b33a32202f6abe30c083be3e09b8368ff59101669cae1368bc9464d174a021966374541024eacb291164ecfc978901b9863821dde038a201df7a2538a6615491b15f536757b4a913e8f6e3e78280561fde4b064425f5ce093466f37c6b403a8c44a73bc0f539449f0af85ef25703f2705f7a5b5dc1935c591eb0f37f9d1be08ed48880d981a2af0f028d0f8a1f09520ee4337dda54fa692c995b0210f1d9d3a72dd840cd5305fc44c426748dcc83465706449d2c6604546bb19ce2ee00fdb8f17ca34043bd1a0a788dfd09418582ede985a0c64f48a26bd75e9cbd46f523829c7a7fd550c0315796c7afab1d14ef1e0d8895534e084abc06e71ee6828e46730286f062d056200d84eb2941555dae5b03d21d2edf09b43b7cf40c482fec6b4d9987a423fb8003e0107b3520e3e52c23e0926f74da3320235b0ea30c4024cc684610735620fb0a1c480a461fdf19e06eb02541c61e941c19905139d736cd39f33c15d157d7fe116f790d270b39f77850409b4ed27d78f39d16db754450167334da8ac9d2b0c5e99389005527d1e33901bd70b1ec6b0c8049126e09aa6cf563fd448de385bac1037996654d015ff6c79a802f2a464c404f0d24854a4847cf0e5336c0d584ba0151d192ac32002ec6de28a01c7bd14fc49441178f067834eb1141429365aef550d39a9366073857bfdd1170ed359e687be41cfb72ecaeab05e56974c6062aaa8528f10fbe9782e67924d9b35d0fb39da0d284b1794729e962d50db87827a0c98269c90093dc3f13b009e371cd80bc7d39483200e6543921d0342cbdc880d80ecbb10146fde60409d5fcb5d65457ab378501d674479051351e7709728eb9e199025de0d687534b692b6fce09f182418b770427fcc419ebe1c4a7b4fa434f0147250e06b869b36d4046d4171ba8a02110ad2f15f0dd0eb60644f471c29be844227a591054788dfb2b821a8dbcf29e40d781c6194183ad3ead181073e34b41acd645ac80634ea28fc37e4b7af12f0c30b9fc0741ca6b4816cd00445c74e60698814aafa1aa31d57a64acd8b44ca0ea046b056cb171c300b7ff4c080a76cb2d2be6642113d7dc1960a2c93702d584f7094199dde1c0d7e0542317c95953370899abf388a0c16b7ccab8b5b50254b7046aa01d62034c09f14aa0065ad226d063dd9b0705541612d2ec40ccd7204792052083703650c089c4d73b811a791f1b03dce2be2048d961a28101c6f6c40678eadf1341c68bce0a03d240f39c20670f1a5e1a9061ba4a09b834004948e6017583840379c03737191a6050bcc864274db5af4706e42e149f6eba2bbe8be8eec200772d960874983ef32ef6b24fdb069885774fa05ec9de1b415d073208627ee54cae91a97338926c27bebd68a17c3d1034a8e7e653030c13ef10a8065a6f1470a5b9bf30c078873d0175145e0df0dd9e0e0cc827e488360fd8e9664f042a93bfca06a4afbf7d1ae001179902562cba20c8d871e5549500688f250618c0bd25503fbf1cc11500030fee0c706d4d9f2567d5a729011dffa0abc2036ec8fd3220f6c7576240c4d6b5f4b1ccbc5f6356cc690fa60a6b1270135abcde1130a439be1e11e8cc733b5020f3a8580ef8f45e188a2d498011000f52e812a8a5341b18904ed762d5fd113152533e6da1d3950ba9696e36eee3058146311ee504318592ecbe0e808eff6b82946feef6c980bcb9fb4f0554c04f5b024a07cc5606281db462193590acf0064027c29280462f2218908ebb1e2a28e8943d2528543a488bb9ffd323505b19e0a1cb7b030cc4e06d55c2c472b293b7d7d8a6577303d24037ac878a9c78f245409d1d4b9e1a07b8b52bee6ac5629de0497b1439a3f571fca5807dbdfa49a0339cd72141c6f6f8d829e068f83a23c8d91e720aa2076a6cb60cf038a01a01034290ae0c3006fecb001731660a38f6e5a816efb861ab370d70004d78db42d79224f155003c79b44aa0be9c8b67056ce4db4b8212e72fcf7b8232c5b89c98e395094d85a7530554f39c571605ede4181d056ad3818056704c83c4011a35cd6303a2a3e45c4007120ed3325f54418f00aeae09b8081a8d832a288e7496141ddd12d8302d08127ee2f489403dbde70d03625a7fe8357410deac08e851c4fb8b02caa0d996a050217da780fda3f96140748364e42a8ed42d876c618001fe2d056c31c9311300639cab04c76a6cbe1b10692939cc3c60c7dd0c0d509b7608b8f818ddbc28d095c44b82125f94e4fe71a0cc6bac4606a4814a5a750d2a11e91000f7bc170ad4f5db3320ed5106419546cd411f8e623c6e6b7be8bafa616840b4c7c587012ee86ac5d41cdd5d11a85d28d36a0f38d19ca706b80551ef92d0d7379c11302a0b325b2bfc1a1f9376d709382b886797046a194c3305ecebb30d81ee4ca93f1a10b52607150720a3b2af9fe0622c2a7503f45bce15f0cd953e09b8c90892e9d903ca42d95d1b80c820490e1d002355ce04a8d8c26c6980078ccf0d70dfdab502d643ce3577e0386764f98b020ac7edd2005779f42bbaa35d42ce0290817c76ab8092ae724cc0b969f4f16c808b4b338232ade05ddf00f3c2e9452b1af8d854c0bb24f60976dcce88a0ca811c9f19e091db7d03f22c35b67aa15eb8454450e73546ef06a46b9fea27120e7539edd7818255bf94a17ea2260b2444c23720bb94a8680f38d4875f04994aba3541ce9e2ca9e303a0e76a4a50b081ae0a056c8fcb5f80279089083ed1a9687cdd314073a34aa07a6ed635209ff8ba304067d795024adccf26017dc19d95de96797b105d1ae049358f0678a61f5bac28f1b6c38a0166f2fd54400fc9f5dc00b7636b4dcb54e2276505948557fa890a05fde29e40574525a161006217beaf0c508c9f13d428b6a6cf041aea75adedc1f8e4585646bc79c67898e30f82947affe38620d31892b602f6c21ebb43a141363519732555c0983408f41ae231f20d48153d9c186032c2678242df7e6e80f9c74e15e85c4c5abd64b6d4f38e4057cde570ac00e4dd5ed615f0ed6b4dfde81701fb6040ba763e24a0c881c4f50520dd611a2b60c5daa706c47573b930200d94e85d3829eaacba066410cae11401f07c42b687eb524c75bc35208d7cde53c0aadfee0d7066714b50a1706c760cc8e39f0f083416ff736580aaf143013bddd9bb0191c9b26eeac7023bff411b88cbc6b1ec080940ba43ebc980d8966ffa2c5c368e25902b00eeceef1aa060d3a75537764b1b9953c0484e1df63e49f6e4bdf68f44cdaf6b035c9cfef50979d99bb5010e427d0d29efd2f93220dd323f1064ead73e33c02352ee080ade762ccf52ce79d1b8bb26283849945dad0150234b8b956dfa26292102a0a7e64101db34dd10a8c4bde15dbc240be0a36b407ae163648089bffb06a43d1e9f08545abe5d28a09aefee0cd4a5f31f08744d2b1a19e096993703d283646f64000c8fba30c083ade6043447f1a90f57d129e08901eeb08b0c701e951a906e39d64f54d570be35c04d467d0322c6c5fde380ae45374f0c70eaa577511bf7746d8041be5d03f22c4731419d554f6f0cd0a8d919600a8483017951d75f040db6fa67df80a8e89bb2017996766a80158b0c48c7bdd6bb24ba72f66580dbc366048cc58f87fae6527d73470419a5e57849906b6ccfc000a709f704d40d71fbc8000f85b835203afb4b2a5631975a452c838aae13c69266c303be97f3670374302f084e74b965a440235576043a135fd60d5048370d70d7d13d8186f2c842bb07ecb8938a0166f5ba3320fd74b027a8501844430505b3364d0df068923703f46cd60868d2a2ff654006f26c6a40c4b81c651c8018359fda40eaa7cb5b0a54169e1b90a1fe39344007d19d014ef02604ea2d9ee9575459dc5c1b109574f3eb134c291313a86782c3c3031e67ba30c083245b06588f2b825837285f1a90977d563120cfd24b0c70f764c7800883f2ce808c97b72e814e459383011e6fa2adcea0459c740d3066b34da091e513ad7ace6bdc3f18e0f6c1c48074edf8d727e41a63ada93a443e8f15a835be3740c7cc9101191e871303aca97487aa2df867d704babe5f9367a99ac3eca96a407a103d46559d1544872681fa3fee6305bcade455f0429caef05d6480091f5e1450e148d44d009cf06e08d465f2fe6640ea217bacbc66e0882ac506988af2c6007d5b6582aa7a8cce15140c8fca0c7083e1b50169f57c4fa081e4c77a0d2ed960706640da54765f0720fda3b53440abaf65804efb39816ed7ff1c18e06eb0d40093669e1a901135d0bba84731dd29a008beaf1910f9313a334035afd7d0fc1f99b63a63ad516a1be0d146bf3e217dbdad9fa016c3616e80e1c86b033c3ffbd757a4ea9299230079b87e8f2055a93d34c0a4cc990169d3997e852b45f14d4501eb71fe64407af2cb8840fd969faf06a41e9c7ab94924d5bc246a09808b7e4d03321a366706e8b5ce0dd027fd6680de401860d626a998b371b87890ae09d4fd33cb0cd0031f119ce8147064405ef6498f40bd3deb13032282cb5b8232ede4af53032282ab8501a6c33d56c0fe310301030f2069140a0b17c34b6c80617caf06b8f7be6f40ee527f22506d5a9f19a0de2f19905e582406e4598ecf086aba00d1545030c5dfd880c8e4030c888d2b29648b5f916ea7faf8ea86baaa1b908a0d4e0d7027c69301e93072206e00cca67565801b0c1f091888110f3f15f069e59cb300c4ea1bde1890f1d2eb1990ae9d29504fefdd5e011b79f40b48d5775f069897e58d80714aa8360d70aa3131203a7bb224a0028ede3e0d88debfae1990fef171678032f99220a394fa1c1b6020796a409ab03c20e0a25fdcd35e483b199f3d0374c96b97d2358be36303d2c8958301a66ccf0c48c576bfae41a3776c40c6fee1cc803c5c4b3abf05e9a12223bbaedee2582222bc01c7f8b1fd0301fd74787934c04d35ef04eaa7938dd21ed052babd3020824d0ec90880ab2b7adbb2fa3e5303dc8dbe2460fc188edb069874462ba64e95dbaa014611684dab1c842fa7066410e6a901bac33a041a2053d216d3504039503b000afadc0073ba750dc8202cee0cc87bf93a22a8eb2af1dc00034167069839ffdd80342197d2ea36afdc54083457e7b43020351d3f1990c9996c720e401efff4c600f338c706b82d6b4ba06abeb83720dd327f302015eb6a9b6a38d0f3cc00f36ed845d501a0f5d0f88fcea701790d12f71900d7814a06e4b691b6baf9832a06e4e1eaf706e4bdeca6040c358f9e1303d293cfee0cd0f97746c0e049b4f6064413de4d0d48c7fd7c31c0092f080a6dc295027aadf79101a9981c031880189bf55f40145fbf62808ebb4f0322f95b250322d86e6706e8747b34204ffb2a62cb1981bc8b2405f03d4c7d172503cca1da26a0ff14ada60276eda38a017a7b6606a45bca7639ef0ea10927d92b0310419fee0918e41b4b7abe00b89efda8806d7a7f69401efff9ca807487fc8580ee52dc1f0c484de5c00faf1839c40e9101e9965ff706183f7662406ecb95000fb829efcc00b54742d050aff5c600638b870644590cde0cc8dbbf6b1ae05c6c47a0f1965fb70638c3691b90715b8e0c304eba302055afdc18e0bed73e01836be3421b99233bba9c1b10e57994199056ff2c0cd0455026d008e6e2cb003d02c706a4ea9f4f06e8c9d326a42f38da7e1aa0ff3435c05992f6530d5d194f15e8c4fb179051396a1960bae44f038cc9d3fea11eb42235c0f88f6b03cc8c5e334073e3cd00b7ebbf1ae0ae81d800adf1dc00cfe33b324073541a2856af35245587ef1dba66716a8073f598a0a26149cf0698ad606340e4293d9bb18e5b1c7515d05094a455013022626c800eb33681aae8cf8d01a66dfe05e4edd35f18abdb16931b033c61fbdc800cd3f59501e611b82650c3f9f3c300f7f05e1a909a8e0b033cf30006b8dda54410535a7e69c5384c3babad017af10706a48f5d1506b8a4f76280f6c71d81eef4eb7f1a902e35bc32208f7f480c484defb44d35bc72fd658089d1ea0618153e31201af946afc1159a48b6a905206dbac90d507c1e1b900124c7437b094453414e510d805dfbc500a71aaf0485c66c1e0c48c5decf14b04b1d2506a4622f0f0644030d3f0c888abef9f515c6a1f40df080adad01116ca70303528f8f270322a5246b53002271e5e0f700e8c9938b261a09199544c026c531439a270ae8858b933d81868a5e3d1170c365f4f96080e7d0cc0c483db27b051a2aba22504777f56080ae9b5703520ffab55d1fe4667c49a9eb0185e3fcc200dd506f0644f27f350c704fd1a701e9c9f33a013ddf9164bf0d802b1289019ef87942c0ad2ab1ec0908801b619b0a685d1ccf0d709a703020bdf0469fa5a14efb8e0179d9e74b03d2c89baa010ee4630255d1e3dc803ccbdb9501a68f2e1990aadfdc11303610657db884cf12570c7011636580e1fb7d03223efb1f0664103e0c0c70e9e89620e588ba7d3620559743a8031081f23c35c015ab9d01e9eb137d0d1ac2fbd037c063997706a8c4370698d35e817af29ee70618d7f768402a36ed1a60c0907e458328865a753affa2d79a01998bc55b034c81706540445febc400377d5f1ae0699d070322712f0a03321ad27703f2a226af064459ecacea7c73c74706a4d5674d035c9011059c5ae0236359525db08bd12428692c6d5901ab7e5b2760a04e3cb826a8a833a34740877bcc309c5f7b245a91011a8a4b03728d2a08d403ff9619602c4bd900b5c7d6009323dd13709b5ab43f56c03777991a1049279b5902601e8185010ec231813adc4f52035c6ed918e0cca26e801af99340a3e4b36303cc559128e0dbef7c1890a7bd3b18908bca69e15e6353572e73051ca65cd04dd5258fcf9101bad42a0618593e27e02eace87a61409eb69b18e064646f801166b98154c0990146521f196034549540c3a324a79b0734ade5c49c00e459866b030cb1ba3540b7fe9040c5c5110c70dde3c8004302d606d8c7760638d5d09aaafc90fdd901702155fb7aa1813a5d03d284d73303f490740cc89b1bfffa04b7448c0c50259d18a01361628055bf3620159bc845331bfbe31601570262398bd3038e9743cd00f78cd409d432b81d1354751f9f5e4317c9258b7700f2f61929eb77a6f018e26303f22c8d4481fa2d0f06a47f306e2bd3d97cc42971666b6bd39e01116c8bc4000f82db18a0a95010e886baa39d016e85fc32c093bf120322c65b31810ef59db6983adcbfae0c308e6d6580ebc82050fffa65c380888bd34b031406faa254231f1706b80bebda00b777bc1b90dbca3ef190174d3aeeed9d01518dc5da0017537e01e60d1c19905ec84973660bed33bd0b670551de3420da74343340c3e8dc00a72b2b03dcdba417d5c4df34e1321b73723a76007444fc024c2ffe6540decbcbbd01ae14cd0c30fe746d8026cbd680bcb9f1c200670522c7721b62ed3b038cda9b11a83bbdfea080da34ba27e03258f4323640857349a0bb06a6b70a68394a4ec800a46272887d00728dab2302cd1ed5d38bd2f31d75ae0cc8e3ef1606f8f863037251d9d8e75fa4cae49e012e2fa406a43b3c8e0d30aa626b40ba14831673f36b339625373736d55aae6eec68bd3420d6c5ed9d01b9c6a84da09917fa990169756eabc87ff9c722039c3629a036c5a867806935fb06284f73824c27347a0dd373ef06a4177ec0002dc74f03b461aa04748547e99b017996616680cb1c3b0354e285019141c3b2010ec217023acba3db9e017951157d2fea3d9713d9021009535b1a908ad5eb06e82f9c199056df3c19e09ac5c100a3e59e0d507eb40c509b7e19e0cee91b030c79bf36c011255daad095b3986b3885c6c3448b0b03f295f88d40a7e6ad7305fcca6bdd0007e12701854194660ae8d6efed08aa9a24e1468126dfeb1990094d7365408cab4ec78098c5575f0618516577d1e5b85f40f4fe44afa1816d1f4303f2b4837b057cb78f1303520f6efe2a6cbe7f981a9057d9f932c0695362402689c59101fa5006049a9d309a1a906ef93052a05b55ee0d30edfbb301f16e24c706a4e35e9f1810b175da31205dea61688072ac64802ffb8c4053319c6b4d35fe540e3e0b80bead7303f2e69e1203d2d7ab7b038c3219196096f7b101268c7934c089e6a701fac61f0862f5b2e8b3e85e6239403a001ee8b033c069f5a9010ee48e0119c8bb13030c6fb0dbeafce5d1807487deca803cdc7a6140fac7f8d2005fc3b3019ed9b637c0ed1d2981eed16c694d6da9e4d6004fa7dc18e0de959a0146fcdf19903737d819e0ea4ad9803c6dedc380882d49f0180025ffbd01e941ad5f1795a73d1c1b90a79553aa026014f492805b43e3fec0000ff9d341a893c4f78d018e97cc00f3e4f50dc894e7ae658029ed4e0d70ec9f1b90498064260d401a687167805913ca06988eeed757384b7a37207dfdeed100f38f2d0cc8d34e0e06686bebcbd6e404cd9101aee0a960a3251d7dc506b80fa76440e447b9664084e37164401ae8ecd735a407add706b8dc726d80a6c287012ea6340d48034d1e0cb0817e01a6703b33c079e59d018e97b901ce917588e9dea60b7d2f9673e7cc80b4c7d1ab01268a6b18605ccea90186ab2f0c88c4bd3e3620edd13a186087890db03d9e0cd0829d19e088fa32c0259b9601ee7afe555379fc95f60fb5834eb706e892ef1b900e535115adbbe2278f069873a769401aa855334027c2b301e9309313033c57746c80ab5e1d03b4947edd9693c40b039ce02d0d30c02e355008c0b7127dfbf9537eca7f4389bf953fbd323fe5a7fcebca3f10efa20312a71742c9c2cffcdbcf9ff253fe0b4b11ca9f5e8d9ff253fe89e5bb60cf1426360f707f74fff8d19ff2537eca4ff9297fb162e25d043ee701bdceaadf590d021aea279c1d34fa293fe5bfaf145afef49afc949ff24f2c36b515213f0862bf67f38081aa08f9dcf8cf56563fe5a7fc949ff253feb945047ba1b38181cd0326e16f47a77ffcc44ff929ff0d65f4cdf6ffd32bf3537ecabfae98953f55213ff9be1e209fe8ebefd36f03e3a7fc94bf70f93e592ebe0d983fbd623fe5a7fc13cb543b76ff9b95ff2b2ec8d028fc9cfdd9faeaa7fc947f5bb141f2a7d7e4a7fc947f6911c13ed23ff3bf890bfa5e46ffbcbbfe94ff4d29fef87bae458859af235dd52fc2cfa9fe2eff358d2e5f943f2d0aa0f8f62ffbd3a683f3ce6ad1592d3bab55284b2debce6ad3596d3bab5db8ce202c340dfed873f6e1933bfdca21fcdcff0f8f59fcf131edcf7ef85d6a9beb7ffba164e1a679b8a940b9fbeadb7da50ecdf0f3fb63b6f45eee5bedceea54bf35529fe99956db3de3797858b9e65c5b7e16ae660db2d306cfffd194e2a7fc94dfa1fcbd60c78f0ef8fd8b889bc11fa123179dd5656775d5595d7756379dd56d6775d759dd77560f9dd56367d5e9ac9e3aabe76f5f1caa64cff5fddacf910ac756b8f24b67f51a2efed659bd77561f9dd56710fa7291afceeaa8b33aeeac4e3aab5267550e37bd0f15a87456d5ceaad659d5553e3a11dc50156212f97f7ad2e9b7df4da3b8eb8c11015184284694204ac3bd1e116588724405a22ea21ea23e22d17c4b444395fba6b7f6a24210c953bba7a8bb0bba5642e4ae3f41340d825edac75dcab5c333a239a205a265b885bb571e6efd106eedaefce26e14ee253ae0ef9fe8470dfc94dfaafce880ffb052fcdd2f4e30b510ad116d106d83f4ef0489ef04f12da29d13552a919d9cda233a206a06655057f376f88f2e2e26b613674e075c226a3ba9e7e47b9074a788ce109d23ba40e4b4c251b8bbfbc02edcd1ddee2648c6b2fb70d001f788ae105dbbfb22ba51f9380f2a44a602ff701e60250ff594ba8d839876a27feb447fa84f1a1ef62edc3ad33f1fc39faedc217277770ffea8a27fabbfac824a709f1f21ea04b99f84e64ac34ff7e77378c697d0bc6e381c07d1ff1a949cddeb2e14f78c15446f88de117d846f7dea33fedf5fe24ff9297f7af9d101ff61a5f8638096b33abf9cf919144016e4bb93c84e5a9d2072f2d14961279baa886a88ea416236bcb11c03b113a34e988a216ffb03f36ffe0af1a2b410c788932046f788537fcd38439c232ebc408fbb887b88fb88078887884788c78827fe93f1d47d25289e9d4c4abc791ecf10cf83dc3f0f66f2564df2ffcf07efab207e0ddae8ce2b957881788978e51f365e87df3788b741d9a44117060de4ea1fef103bfd77116eba0bea4734817bf659d013b7e19aef880fbef5e22662f7ec6dc4a788cfdcfcc6e909af1ee273c417e1192f115f217675708d30089ae03a2842076f11df21be0fd71ffc0c9c9ff27b971f1df09f57440d3889efc4ae93b03d6f717bb9e3847b07f113e267c42f885f83b07e43ece4da8737dee34f2fb8e32fc447888f113b49e744673948e48dfaca6ddb88fce23e5c415c0d52f580b886b88eb88104482224b1d72b4e49240992144986244752f83fbd4416f5731726043d67447b29e9bfe5d44629b8831adf4cf2ffe96133adcc2b12f7a455afba9ca04ffaa11a7d24032443ffecc908c9d8ab4027c4bdaeba0b3392a760bcbb4f4e904c91cc82d699abeee17dbddaf07576759b23592059fac74c565e59266b24ae71de916cc31db3f0af5d78ccbdd73aee2bd121cc7596a1866f480e489a48dcece1266cbc1cfcef5ef74ff929ffd2f2a303fec38abc8581cac41bef7c48da41fa8b027072ea14c91992732417482e915c2171c2f72608c15690c2b748ee9c687332d1eb86e41ec983ba68e4fa3621c8c4a20f2e6ff72d276a3b489e903c87f2e2c5aeb397fd2d5c7d9cf87b0f7fba2a7d7af3dc7dd8a981380e26b693ad5f488e9ce6f01a2b394672126603cd2091fffe490badcc9738a382aa9b7a019d94fcbdfc935e073550465209a58aa486c4c9e886d7135e34df06afd10a29fcc3a65e6f0547cd3c38a09ae20d431a87c9c46df0ef3f78ede5d5402d4c80de902641a1e6fe16691a4ae69fd7930fff2fd7204e8b3885e1eee5b4729a7b9de1ef758cb408eeb2e2ef1eed4fef483fe5a748f9d101ff61c5efda43da0d6efa072f61d39e177c4e0138419cf6910e900e918e908e914e90ba0f3bd937f7f2cb4d0ed24510fa333f0f886e902ebd288fefbc884c576136206f595608fc842318d487b0ae7bed9d39ce4c76522f5dfbe27fd920dd22dd21dd233d206d869f2da46da4a7415eb7bdb1ec3d54b7de8d939e79ef4a7a1ee628fba006649df6efa56458864d2fc262c3d24bd8f4d23f697a15261cd7485d718f708bf44e9ff71ea913c18f483bde54f7aea16a68a557aff6d227af08dd24c9d5c13fecde749ef7a4a5cfc19f7313d4806bd597a0c636618af3161ad655defde284fb07d24fa45f488f903a297f82b4e4beee26046136e01ebcec1f2dadf8094ae46603d1dfedb1ffd1013fe5f7293f3ae03fad20ad06b77ed93b2b9c9cf296efa7b74cd35a108275a40d64401679ad90c55e7e6509b23498cc5bef17ca32643962675f7f222bbc199b7591f5825348161b44078cc27ae91bb27ef0e95f0753b7e26d7f27829d30cd06c886c846c8c6e1e724fc39f53f9d2cce66c17154f5c6bb13dff1c14f23b2799876c4c1417feb754fb608f7fd9bde35d2d0d213efc989aebde3255b065fd3ceff92ad90ad83dc77b7db8467dcfa794fe6febbf76a203b206b7a0de45ac989f5e410e4f20259cbeb3fa706928730fff011a5c1a5560a5aaaeb6dffac8decd43bfdfded4ac8cec25dce91b9eb5f2273ad7a8dec26fc7e8bec0ed97df023ed835f280fd3acdbe02e3b0bf3a7b73095f9d966ff537ecff2a3037eeb22ae6409dff472199993ad3e0cc68b18ef0c7132b783cc097127915f90bd227322fb1d9913f44ebe7f213b42768cec04999365e520fd2bc8aa61b9d8c9af1ab27a67e53edc400ee49106d77fcf23f8e0e5781e234fbc2f3e4f9167c873e405f22ef21ef23ef201f221f211f231f209f269f873867c8e7ce1d721a27be4cb70df2288f5e00e7273887c857c8d5ce22f2d0c74ac4f7d827c8b7ce7e713fe8e5970c4d7bc3ecbf7c80fc89bc85bc8dbc84f919f213f477ee11f36bf447e85fc1af98d5fb9cd6f91df2177757840fe88bc83fc09f933f217b66afeea17309cf88ec3333a519ebf217ff70d9b7f20ff44fe85fc08f9317277f112f232f20af26af8a586bc1e16d8eb61d2730861a31bef07cb1b2880224211a39064ec2b1f8a5afce9fdeaa7fc142b3f3ae0372db6309b7edb9c554791a108ce8a380b6ee8160a2753ba287a28fa28062886284628c6282628a6286628e628162896285628d65ef4171b1f3be4247be10ce10e8a1d8a3d8a038a6610faf9b795e199ff7c1c8545d128f8caaf50b482e9fdee9d21451bc5298a3314e7282e505ca2b80a7f5ea3b841e1eee5cce42c3849ee50dc078749254431b96f3da07844e12af0a4fbb92c8ff928c42cb92b3cfbeaa5eee95e50bca278f3d39de21dc5078a4f145f285c1d8e519ca028a128a3a8a0a88667711fab7b1d90147e225234d005ba11ba31ba09ba29ba19bab9fabbbe82b7ea81a23c7d46b740b78b6e0fdd3eba037487e88ed01da33b41778aee0cdd39ba0b7497be61bbabf0ddae571e712dcc27165e193835d95da3bb41778baeec15f8bf47c1fe949ff2ef2f3f3ae03fa0880e28bc64e9eed13d0417c7d23b643227d19ae8b6d06da37b8aee19bae7e85ea07b89ee15bad7e8dea07b8bee1dbaf7e19787101b530e9e99b60fe88c76de2dd37d44b783ae337b5f7517ae88e35188eb7f0fd21fc149d2f42ea0ae93922fe8be7a05d07d43f71ddd0f743fd1fdf23386ee11bac7e89ea05b42b78c6ec5eb0f378d883ffc6aadbfa093ad55746be8d6d16da0873f6622e9a317f9e55c1f9633452f0e6b1e855f06e8257ec9211ba297a2e7feccd12bd0eba2d743cf7d6b809efbd7c83f6f6f8cde04bda95f05f11799a137476f81de12bd956f9fde1a3d997f04afbd0f96bde37e0277bbde16bd1d7a7bf40ee835d16ba1d746ef1489df6a17bcfc89ffd93bf3814051e6aa1a426fdffdda72d60e53810a7ae7e85da0e7ee7585de75b8d73fdc35f6537eca9f587e74c07f40f11e21a4556f4df76ed0bb0d3ac0492827e9eebd17a8f780de237a1d2f8b7b4fe839f282de2b7a6fc1d7b141cff10ff43ed1fbf26231390e5b994ed03bf2faa0778c9efbbd849ed30d0fdf3289a75e1c677d1ffde93797edfdec213945cf49b72a7a35f4eae835fc17fb403f0a71f475f463f41324273ef4a89ffa40a07ee6c5713f47bff037f5538132fa5df47bde1de40cf67e3fecd4959947167c41d7c1b2ae8570a646f0eca77e85a33f407f88fe08fd31fa13af00fa53f467e8cfd15fa0bf447fd5591ddc4f643df4d7e86fb866dbdfa2bf437fef7540df7da0e9152475c0c0eb9b2c3ca98f075df8c8a27e0bfd36faa7e89fa17f8efe05fa97e83b517e16d4e458ea19627e2e42e8d155887daa05cd5a0dceba04fd6bf46ffc54ac7f8bfe5db8d7ee671cfd94dfacfce880dfb77c4f8fd3176313fd7bf41fd07ff451379913671df49fd07f46ff05fd57ef5a49ee9d3c45ff0dfd77f75df43fc215dc273fd1ff42ffc81bc5c5b337c6dd45e2b077d799e7e92bfac7e89f843c1312922f3ae02b6c0e388435cf5530c69d142e791dd07772bc827ed54bffbe93e375443314ee8e0d0c78f804069157068318830403f76716dceec7feee6e1e30c8312830e862e094c1c5b7f4e5cf615ff13ec468265e0738a13ce86330c06088c10883b15f918e4edd95438e8af1b76c3c52edb1573f4ecd0c26184cbd0e18cc309863b0c06089c1caeb80c13af882f230d7d9871d6db5303d72f5df60b0c56087c11e8303064daf69062d0cda18b89b9e61701e8aabb32397be5565cf9d57212b1f4d9bc6a1ce57185c7b4fd1e00683db50c9f537cfde4ff929bf43f9d101bf6f31b9968760d03b2faf077718dc07cff80b060f3e1073f088410783270c9e3108890d06af18bcc9453078d715c89d97567ed7ebd2c7e744ef2104fe2ab8e9ddbf3e30f8c4e02b6caabafc264c2f838f3bf2d6b19f04ecfca6b3cc09c423bffc3b38c6e0c407170d22ab3606cee86e980243e6c46ed9df227312bf122e12f255a44e2b54fd546050f35ea3540eb113f95809938faa8fd51105e08b93a74eaa3630048611863186098629865998ee38c97e81a168916998333d7a9f8cd35871c34f748605865d0c7b18f6311c6038f43a60a8a9879c0270b7f31144e5106ae5ee32c67082e114c31986730c17182e315cf9bb4819aebffdbe61d4531c4275a323ffbb535ac32d863b0cf7181e306c867bad7fb68cfd94dfacfce880dfb4fcf2c88785d94e70c8d4306c61d8f63a60781a22206ffd5ae5f00cc3730c9d30bac4f00ac3eb506e30bcfd76a9955703c33b2ff787f7c1a85ffaf047efc27ec3f001c3470c3b2109cf97e61c4dbdd73b5984edbe65af009c81ec660fc3270c9f317cc1f03578c6d95582b239d3b2d4c4703e1f835f65f5138e29bd58fe1727cadfbc0e18befb2501ea80dccf3c7cc68bf7a0abda187e60f8e975409cfb70cce1178647183a997e8261c9e297302c77564ee056822fab169c33073f6b1956435bb976ab63d8c008deab9377308a308a314afc24207f0d319dd5b0adace4e3599da21aa5186518e5181518757d10d1a887515fb7195baabb65c846771ec281eec27e821df3558c06180d311a6134f63ac0af078c347bc49fdebb7eca4fb1f2a3037edf2202aeef0cf3b02a7bed7d23a30946538c6618cd315a78593c5a62b4c2688dd106a32d75c06887d11e238bf7675e048c9a18b5306a7373d9e8d42b835eece701a3b3300fa806a33ed7adc2b72177c202a373bf24eb1440e22e72e1fdf8a34baf06465718c96ae7d9372fc732f84998abd9fba6dced9ce59edf7a5749d1f27193ee82a31bbfbf6c748bd15dd0011212fa16b6a185707ba778dc746774cf4d61a3078c1e3172df7dc2c83db8fbd72b466f18bd63e4eaff89d197f73bf950d4aaffcae8082327cd4f302a6154c6c8b55ed52f068c6a18d5316a60ec3bb977f17b095ef575f38bcfb9573ff923c611c631c609c629c6997f9071ee3d5de3c2ff9432ee869fbdb04f380a5ba377fee99cce1bf7311ef858d2f110e391c6052dbf65e8fb293fe577287f651df0870a4b7e608cc7184f309e623c0ba37a8ef102e3653024dd7f5718af31de84b2f5a6f478e745ea781f86bafbd721fcd9fc5756dbfb7f5cc59cd4c6b8e51d38e336c6a7189f617c8ef105c68e5c61ecaae1aa778bf19d37abc7f7183f60ec24570783f3f0684f183ffff1b203ef538ad7de49327ef17e92f12bc66ffe67dffdfe8ef107064e667d6a7ecda64f9fe93311b97f7d617c84f131c6ee03251f27332e635c09eef8bf395c489a7df92d1fdc79480ef1ec9722c6558c6b18d7316e60024c224c624c124c5266789e6498e43ed1828f5ebdc4a4f04bdf7113932e263dbf5760d2c764f02d27f67d588ccd4358e79d7fae6e0593a1df44969cf9e4197e3b710d931126634c26984c3199858584011345f87d61dbe0ec2a613267babdc90213579915266b4c36986c83832bc524f487c9deb7b3eb3c930326ae6eadb01adcf1b396a4e4e3ac266d4c4e3139c3e4dc87904e2ec2ece16f227d7fa3e23d5a13d7da5798b8a7bb09e32294c9ad2be296a4da9bdc61728fc903268f9858233c61f28cc98bef8193574cdec275de31f9085f911eb5c7e4cbbf623ffd0ab34cdf9247981c637212baae6bed92dce24f6f90ffa6f297d501165f3ffa46669894317132a28a89930b754c1a9802d308d398c587942c7c20cd34f1be85698a698669eefbe8b4c0b4ebb485fbfd5f5c7377a35e67b5c6b48fe900d321a6232fa4a6634c27984e319d613ac7d49125a62b4cdd27377ef575bac57487a9d35877616df6e29b452fd1f79721f1a7fbd8c1cbc76913d396cfbe306d637a8ae919a6e7217f83e43d768d73e1259ab3d9875d4c2f31759fbcc6f406d3db1061899080fa6f9c1bd2e03bf596acbc9726ad783550b8badd791d30bdf73bb046aee51f30750ddbc1f429d470e3c3969c1ccf32ef089a3e7bd19f54fdcac7a01f3627bff9bdbe4e88a797ded6167f915f33d879e13bac7ad33b7377098b25d901d3574cdffc76e2a97ba11f7e436fd6f0114a3e23b4789f46218b6a1af22015deefe41721724c3f31fdc2f408d3634c5dc3967c86be691953d725aa98d6fc4fd7c8d3ba775e4d1b7e3ae5aa3443c86651f1aa6b1661167b1d304bdc7c2568c4bf3999e7372a5e8ebb0e33bcf686c22cc52cc32cc7cc3d45f78fa5174a1f33f7b12166a3301cc67e74ccc65ea6cf26e16ab7984d319b6136c76ce107d46c89d90ab375f8fa06b32d663b3fc19ded313bf8affb6515f7756f5d61d6fad31be4bfa9fc657580d5d9ce42c991b8fed7c6ec14b333ccdce0bcc0ccf5c22bccaec39f375a5c0fbe0b3fef317bc0ccf5ef0e664f9879b31ab3170caffe95750e3a60d6f2fe9cd92b666f7eebd3ecdd0bd0d907669f987d617684d931662798953073ffad6056c5ac86591db306e6c03cc23cc63c31cfbe3442486a167c3bbdd8afb2c661dfef3cf56bcbf3ccefef1dc43a0f98fbf04a9f7374e705f13cc7bcc0bceba3e6e73dbf0a3def633e088b01b9563bfd96e86dff6b12100d7de5e30f2fc1e743cc47988f319ff8f9c47c8af90cf339e60b1fa73f5ffa40d2e9c16f5d76f3156756cf575e94cfd7986f425aba2b6fd73b037fbec57ce77deeaef279c38bfef91e73f7c926e62dccdb3e2e737481f9a94ff030c87dd0d4e0c9cf03fce130d3909d429a65c6156fa7510af7c533af54fc1dcf31775fbff4a987e657985f637e83f92de67798df63fe80f923e6ee5f4f983f63fe12b258af307f45b6f495efb9cfb8877df71eb3a286f9c7b773d08adf709700e69fdea29f7f617e84f931e62798bbb753c6bc124a35fcacf9e246cabc8e79030b601179c1eda7c81d2c621f80e074c922c122c522c322c7a2c0a28b450f8b3e1683709d3a16432c46588cb1986031c522ccc817f3300fb8eefce8807f77f9cbea80efb5953da863bffd67b1c0c275b815166b2c36586cb1d861b1c7c2f5dd26162d2cda589c627186c5391617585c627185c535163758dc6271e78343825be05f56820e7066d1c2d5f6018b472f3a171d1fe6b878c2e2198b172c5eb170f01d8b0f2c3eb1f8c2e2088b632c4eb0286151c6a2824555c243bfad2d07bf878f5f5c0627897bd29af7802fea3ee466d1f09b6c9343c8a7e633ec87a43737417677b00496119631960996299619963996c5b7b8febfd1017698e206cb6e9807ec7c668b65cfeb8065dfafd02e077ee7edd24147c661e9fbc53fe672e2c5a8b3c78b172ca758cebc4c4f0758ce7d78e872e1b32139d1ef14c0721964f40ecb955703cbb5b7fa9de8cfceb174f7dd62e9feb5c7f2806513cb960f9d5ab6fde689887b20fc61647188ea7112dc4d358a37ef8372b75b9e627986a5bbce059697585e61798de50d96b758def98eb1bcf77d63f980e523969d100bb40c4b17a9cfa6b77cc2f2d9ef975ebe20df86a3370bf13786b2feb347c7df16af009c285fbe62f986e53b961f587e62f985e51196c7589e6059c2b21c86461817cb0a96552c6b58d6fd9295f7405e04a7d01d960dac805584558c550277f155066781b91670e36bd5c5aa174a1faefd9de2775331776b373c8b344c444661fefae7b7c97f4df9cbea807f107de17d20ab0956533871e3ecdcd502ce0059ade0e49d13552bf7df1d567bac0e5835b172fdb58dd529566770c6ecea02ab4beff75c5dfd8bfd954107acaeb1bac1ea16ab3baceeb17ac0ea11ab0e564fde53b17af6926ef582d52b566f58bdc309cdd527565f581d61758cd5095625ac44e8980ee832863d29425ecfb6570071c8f4b9aaf8a5cb55351c27c09372b1aa853c0d91f7c8afea5835b0860faf5c4758c73ebc729d7c5b0c1869e5bfeb8055581f8efd4a80cfa359c63ac53ac33ac7bac0ba8bb5bb5a1feb01d6433f0f70d239bfe63c2049b01e613dc67ae233a116ef584fb19e613df7227ebdc07ae9b771ad57e1e7329035d61bacb758efb0de637dc0bae90358d72da757b06efbd4a1fdba9e03bc0c2df31c7c4a1bdf143ed6f6d4af07ac4fb13ec3dadde502eb4bacafb0bec6fa06eb5bacefb0bec7fa01eb47ac3b583f61fd8cf54bc869fa89f56b082dbdf69953d76fde47b476d5fef047fd0ccbbfb50e58bbca7f617d84b56b2ed70225acddcbaa605dc5ba86751deb867ff60db089b089b149b049b1c9306e85e5ab56287b6c726c0a6cbad8f4b0e96333c06688cdc8b7de668ccd049b2936336ce6d82cb05962b3c266ed75809fb3a60c69fbd101ffd6f297d501b6c16af42b563d76fd6f83cd169b1d36aebf1eb06962d3c2a68dcd293667d89c637381cd253657d85c63e33aee2d36aeebdf63f380cd23361d67ecfcbf9d7bf5bfa9b91b454fd83c63f382cd2b366f3ef1cee61d9b0f6c3e7d2ae3cd173647d81c6373824d099b3236156caad8d4b0a963d3c016d846617ca6763418b661bb6f32c736c1360dde95dcdbd4e91bb619b639b645f093c8218b2bbf20ec04b7b36a932ab65d2fb8b73daf03b67d6c07d80eb11d7d3b83fe6f74c0ee575c5012f9dd00fe3a97fe0add02db31b6136ca7d8ceb075f55960eb25b2d701db15b66b6c373e2e68dac4768bed0edb3db6076c9b7e7fc0b6856d1bdb536ccfb03d0fe502db4b1fcab9bdc2f61adb1b6c6fb1bdc3f61edb076c1fb1ed84add18fce1ed7631278a67c38dca6ec93fc24eeeb4ffe67d1f20157db676c5d655eb1758df38eed07b69fd87e617b84ed31b627d896b02d635bc1d6354e2da48858625bf7e1b359ecd757b60d9f3a299ef91ca5d1481540f1ff7c6edabfb56007efdc9f16d845d8c5d825d83998619763e76017bb1e767dec06d80db11b6137c66e82dd14bb59f8fa1ce319760b6f27ed96d8adb05b63b7c16e8bdd0ebb3d7607ec9ad8b5b06b63778add1976e7d85d60e73e1fa2b3163ee236045c2c7e74c0bfb7fc657540aaa27fa06a20f7f130bb2becaeb1bbc1ee36f4ec3beceeb17bc0ee11bb0e764fd83d63f782dd2b766fd8bd63f781dd27765fd81d61778cdd899f07ec4affe26a177e72ed8ca95d19bb0a7655ec6ad8d5b16b784b730fef19df47d8c7d827d8a7d867d8e7d817d877b1ef61dfc77e80fd107b7b65ba18e0634c8fbdbf7b3fc67ee20d7c67b1eea77e9370f703fb1992233967d1bbe69367bf001b377c82a0fd1cfb05f64bbf2d79bfc27e8dfd06fbad7ad5bfafbdcbb463cdd8f9f1a73fadcc5dca49c6e4c2cf27dc3c60bfc37e8fbdab46137b57813606afbe8699abfc29f6673e1d9e33cce7ee31cfb1bff089a9f797d85f617fed8debfd0df6b73e36a9ff8cfd1df6f7d83fb0ccb3903363e2bdff69c9a78ddb8784d5d1201c2e2fb39665980a6cbdbfcbe777abf855e5f4caaf28c475ef5cdabbe21ed35dfc057b578737ecdfb177edf389fd17f647d81f637f827d09fb32f615ecab5ef4bbf61c1df979c0be86bdbb6f23ac154ffcf997077c6b9cdf520738fbe610e110e390e090e290e1907b4be850e0d0c5a187431f87818787210e231cc6384cfc5aee61ea9701664d1c9c0e98e11042090e0b1c9638ac7058e3b0c1618bc3ceab81c31e07f7b3e975c0a185431b87531c7c54310e7edf7588c75bfc86eb257fe9f257d60196045ffe1cf86d56870b1c2e71709dfb1a871b1c6e71b8c3e11e87071c5c87eee0f084c3330e2f38bce2f086c33b0e1f387ce2f085c3110ec77e1fece1e45f59eda0030a570d77a3320e151caa5e461f6a38d47168a0096f98372334633413345334333473340b34bb68f6d0eca339407388a63dfb38489fbb1000e33e39f63aa039f18bab6913cd299a3334e73edd66ef45c4379a0bbf12e0edf1b24fcddf746485e61acd0d9aeecf1d9a7b340fdf12ccfd8d0ee02191fe981a37092876de8f1f3da3d9f4cbdacd96d701cd369aa73e0d43f32cecf50d3aa0798ee6853f1b327315bbf4f395e6159ad768def8f4447909cd5b34efd0bc47f301cd47343b683e7d2bee162fe1984ca0f98ae61b9aef687e84ce60351ca9209e87fc6e47de39d6fcf46bcb491dcd2f348fd03c46f3044d77bb329a15345d83d7d074ff6da005b422b462b412b452b432b4723f7b1856d12afc15dc63ba566d75fd128bcf95fd8afebbae210d7e531de08478ab87561fad015a43b446688dd19aa035456b86d61cad851f11ad255a2bb4d6686dd0da7a1dd0da85f0d023b4f6681d7cd76db94bb5d06aa3758ad6195ae7685da07589d655f8e51aad1bb46ed1ba43eb1ead87309ab6eebb4107acc392c06fd73e7fe9f217d50112cbac7f064fc8d87568d7653b683d791ba4f5ec8dbbd60b5aae67bfa1e57eff08e513ad2fb48ebc6ba8758cd6095a25b4ca6855d0aa7a4ba755c3e41fce038a6f0ea8ff1fefc03456b0d95b75b41a6803ed08ed18ed04ed14ed0ced1ced02ed2eda3db4fb680fd01ea23d427b8cf604ed29da33b4e7682fd0763678e75b3ce2954f8e9f3efbb8c9791bed15da6bb437686fd1dea1bd47fb807633f8e5536f20776fbc4f2619fb089c760bedb68f9b4cbffcca411f58bffbedb8edd33fce00be378284c15cf860d3f816ed33bf2bb87dfe7fd8fbae25478e24c88ff1773768f108a00a5a6be00d5a6b8dafbff002ba392477861c2ef78e7bdb66396d3540a1322b4578e81000a4324c6599ca319557aed35481a9a21763bc902e285562aacc54454aa15495a99a8a85a5ea4c3598b26f5b4a4a9a6a7b15deef5ec5e0624d668f90924360ec55570e30d5e176a4d475d8bf03237e49d9ffe99e7f97cf62aa2b7dd7da66cc06d6973d605561cabaf03365cf093215622acc5484297bdf1853713a1423ec80ce80ce50e99b9c119db12cd2ce84ce94ce4cb3eacc95940235cf7d76f1eb64e0ffc03a62773a0b3a4b3a2b3af6761b3a5b3a3b69479d3d9d039d239d139d339d8bc8ba73a573e3d6d3a7ed667263937b6842d1d4cb161d7bda83ce934e824e523a2527a553660c96e3d071e9a4052757bbce480431a9d7c97afe45f69c86171cf3ff7c42fe77da1706bc30c0c9bd31c0c9d329d0297a9bb544a74cc70e79958e6dd3baa889d37879b0fdaefd650c78c7037f4cb26040f9ee9d261d3b4e36b60e1d1b588f4e5f393b1d1f1d3f9d009d209d101dfb2442274a272655b513971ce0922ee80e3e546149aff8fb515e2bc6e78ef77487744774c7742774a7d2abb833baf3173fae709e59d0c380ba7c6fdc851773bba46b6d4577cdf956a10652e04c7ffd22cb4f7ae7e51dca29fb9b71f4eee65dedcbddd2dda9dc8dbb572a9e8be760ea1e3ed4e56761807bd4df5352e2cec5ee3f0978b62edd33dd0bdd971aa7a984749396a2deacd985543d49d59e54dee98d6cb0efa4499e1a70fa9bd99628c091bdfb4dbe4fee9dee436d94932fe9ac41f749d7866dd392123bec3a746d0069ba19ba59ba39ba79baf6c3a230c0b53197552dc0ad082c2f7651a55ba35bf7ec0dfcc628f55f8b016ee36fc300b7f98501ffa4f685012f0c705b520a1906b876dda1db95f0ebf6e8f6e9fae8faa5d3740374838a1195b8fa2f8ff15f3bdb9fd47ff4629f6542744374c3742374a3746374e34c9369303d607ac8f488e931d313a6a74ccf989e33bd607ac9f44af680f49ae90dd35ba65599cba341397904192d3609e0e2e86f7acff481e923d327a6cf4c5f98be327df3523e4c259b5f528a231b2ea52149df3d27a202d30fd5234b3f994e78e97a5e1af6df97819c7811587e2fd76954e0914eea21b798cadd18f0a4530280b90dde61da653afdf1ee77c57fa5334c6709cf5c91ce79fde699b6bf45153b4b97bc04d1ab5f075b4dbc917c56221b79199e1b9fd3fb8131dfd2e2138717b9a20e5ad238a5cbd28f1dee72404a5798ae325d63bace7483e926d32da6db4c77840186b5e92ed33da6fb4cfbbcecd60b253e9aa799f60b2c6f36fe00d341a51b52b59cf5af27e72fef93ff68fb1318900efdbb18900e331df9c2807f58fbc2804f0c4847df1860a240dace799c1932036606cc0c991931336666c2cc949bdbbfc1f5ffbe2d3e07f956048da6cccc989933b36066c9cc8a9935331b66b6ccec98d9337360e6c8cc899933331766aeccdc98b933f360e6c94c8299243329661c092eab9257c62b2c6be7da7ee58aac4fbacca499c9309365262767ff4c9e99c2c748d2af582d550b4858bf450ed3aa319029315356a1ae4c8599ea8797fde8c31d68fd510778cc11df92c7e12200c8d498a933d3107d3cd91b35996931d396f629d3e17ae1e5b8f6b027d3556eb8a9bd484fba20f5de67c62718b84799f13313f002d0261f62c7cafbfbb9161244bcea052646f8554b40e2c827067c2a823c0c184f24eb0c6c784166424282b92d7498197b41eb2bc64c9c59320b6607cc0e991d0903b2636627cc4e999d313b17068c07c2e6ec421860f89a5d32bb62762dd14a4566f6df1c9f7fec21fa230c48f68501d9cddf8001f724b35b614076f78501ff80f685019fbaa04f0cc8ee993dc893217b64d676ea599b3e7b61f6caeccdb6ac9747e16fc480cf38db575b132d66adf707b34f6613ccda994929e971d6917f7dd665362da273d8316b2429cb6c8ed93cb305668bcc96982d335b61b6ca6c8d387b15af22a2c5d9bada66215120db909767b6c9acf5d556c69eacd1e2f9c7488e4ad820ff9cb047d4ba4ab993ed31db57f283ac8f593f177dcf7f63f1a1fa9fbe431046110ee71e005ce56df9ea3455931c900d301b643624457936cc6c84597b6c8cd9f84738db8939aafce4bc2c1880abd0dff185393037606e28936f6ec4dcf83367e737ede2c5a36d541872081529cb4d64d93640cd4d7f870153e99d2605c901c390a40d4329eb6b74676ec6dc9cb905734be656ccad99db30b71506e476ccede52b993b307764ce467bf666c965ee220cc85d952b3477537d1b7bc7dcddcb62bdf82658fd1f7b887e8801b9873020f7fc773140edf88501ffb0f685019f18904b08035e1a21bbce25994b31e73067273ccd5c86b92c73765bdecb37b9fefb60e0533ff0f2e05c2bfb7caec05c91b9127365e62accd92735e6eacc19116c32d762aecd5c87391b6a8f393b9f3ee6fccc05980b3217622ecc5c84b9a89710eda8e8a7d54d4e962604e462ccc5a591cf536578f3607e204bc08e5ec698904068311271cc0fa5c14ff4991f0939ec3a3f667ec2fc94f9994a1128c3e84e0973463365a5c6c2533a9d54867e5155e0aef565fd1e63cccf392a316f4f5832bf627ecdfc8679eb62e7e5647e61cfc2ab7563dded458bf3078e93b2469c0e0a121e53daa154492591f34739dd9f664486c38a9a5d281ad965fe24d377feac80b2598ff90b877daef3320f4c47dfae97e7fc4acff1c97e7565fe2699635567deba7e30ff643ec17c92f914f30ef3764f9af98c38d97c96f91cf379e60bcc1799b7f72a2b3585a148bea240e57c95f99a1294e6eb86401f00f0adc6ef1fd8fe08031c7bd906f3cd7f1703f22df959e5db5f18f08f695f18f07b0cb0f60b06d881ef30df65de088a91271ff37eefc97f23067c3ee4c52a6614aa9ab716643ec4bc1d9808f351e68d92c659200b6061c0c29085110b63f9efef362c4c5898b2306361cec28285250b2b16d68a5d325afca8b1b0f160c02eb6f27d2cec58d8b37060e1c8c28985330b970f0c582a7be8eea9c467bb960cc8852b0b3716ee62cf0b0f79915ebc5cd6852711f37c7282b573411aa7714a9ef287bb486a21c142525cfce8c9424afc75c161c1551578c38083759d6621e34de6cb17702c5dd032c342568aa0555b0aa8424ef66493244671190646d669de63bd771c26a4cc394735daa14d48818394b2ab0e7b5e8f4525ec5c1aa60eb8f01c4fdf25d5def60061c6702327d4c348e4bb5092423f653353569db24285852a0bf6799d85060b4d858f145a52125e5d16da2c7458e84a9554e8b1d067c127a43481696a9ffb39eec9203c297bf5d146df646dfac71ea21f6280dbf9c280ff7fdb1706bc7d43dbbfc2006b6e8b85000b4116422c845988882217a22cc43e3060fd7760c06f0c8653e9529646c4e32c9245b0386071c8e288c5318b1316a72cce589cb3b86071c9e28ac5358b1b16b72cee58dcb37860f1c8e289c5338b1716afa2fea30a8b3716ef2c3ed46e75169f2c26584cb29862fac6d9e49b195b7168cf715874e593534cb3986131eb952bb0e7e4648a58ee941ea7e89534509a84a1628f4dda4878f4da7a2c16de1830eab05864b1c46299c58a0ac117ab2cd654c2a558f750e7e5adef7a5d3f942bbbd850629f1cc4fe67fa923f4c0a59af38b25135596cc96060c837182b9bb481c1e0eee5236a2909d26da4bca1c5b6ecba339b818ee40005218f98fbd66975a2f267c3b5d2e119b615bb02b98b23a377b1c7629f451f8b7e16032c06590cb1186631225d5031ca628cc5384b64094a43541ab0346469c4d258968fd284a5294b33e5c22bcdbd823ca36f2a024dff562de2dfd8fe2f62407af98501ffa4f63f8101afca015b96162c2d595ab1b46669a3ad59b20f772ced151f503a7c03006d968e5e3bc914563ab37461e9cad28da53b4b0f99314b4ffd953df3d5d7f22fc4b628ea7855e0d36529a1eb921191144b0e4bf6499aa50c4b5996ecf33c4b05968a2c95582a8b372f5558aab25463a9ce5283a5264b2d966cd8f6225d967a2cf559f2b1e46729c05290257b8b304b1199974b5eaa38a3dd8361edecf7ccaa9f715e77a5f99cfb95a84ef973aaa2e9b9184b31657728c55926cb6079c0f290933ecb2396c72c4f589eb23c6379ae7639b1bc6079c9f28ae5b57e5bdeb0bc657927dfa4c1c05319f1c396fb491f3fcbdd243c45d390a387f4488604c6a12ff2922d8cc896f72c1f04060609891ccb47964fba3041a17c66f9a200b499f57e65f9c6f29de507cbcf6f48f0ca4b11b192f460b03174842e62e103d29595132c5b1729961d965d96d32cdb875996ada33ccb05968b2c97582eb35c61b9ca728de53acb0d969b9a967598e5969c82ca6d963b2c773fec257fa3d4f89f392f9ba3d2bd957bc280b22dab8f653fcbf6224196437293330c28dbdb458401e5e8773140b9e7ecdd636f0c28c759212bf817724065f0e517f4cf685f18f0630ca80cc50a5546ac8c5999b0326565c6ca9c1bbe532d7eb4df454bfdb9716e9fac2c74782a4b5656acac59d9b0b26565c7ca9e95032b3686132b67562eac5ca5e2c88445f42b37f9598e1facdc59b1bff61c7b489295142b0e2b2e2b69e550ab64944cad926525c74a9e95826a4f568a0200548883173ab0fca6ccc045d5e19532baa9a0277bbeb1ff099fa8bc51f64a8995322b1556aade7f6bacd4755d6978cd2e9aacb458b113de61a5cb4a4f597d2a7d567c5ef32b752b6cae32df844d7db64f0cb878301062252031c2daaaced141b47e696f119458637cb7fdadd83d61b597aca36f23ac446595adc45889b34af99e56f1eb1c825e84301c2fb99bdfb339c7581db03a6475c4ea98d509ab535667acce595d0803aa4b5657c280ea9ad50dab5b5677acee593db07a64f5c4ea99d58b921755afacde54b6be7a67f5f16b0cf87f7f2ebebb0fbf30e07fb77d61c08f31a0fa943db09a901c504db29a62d561d57d95e7fd4889c33712147e3ad795ce4c35ad945b2a9f146235c3aa519c1cab79568de214a589ae96582db35a61b5ca6a8dd53aab0d56edf316ab6d563bac7645e8ab3d154ba9f64513ab3e56fdac06580db21ae2fcc16a98b38c1c81f2e0c4a8ff94b87c946f5c7ca654f278e4aa2ca5db99848017c1ad46588db26a8432ce1a59331e7ec0da90b59138fdda5860539bb03615e458d3b733999d6b7345024f6aac2dd46ff5ae5291f2dcffe4ca27df10c7cfecd30fcf387ce6a02c7dce76c3da92b595077e13b5da5a66ed57abd9b75bd676aced593b08ea6a4765245d7a515ab593ede36f76c22b9ae12ec7a76146a2833df6ddec15bc74d3356b77d61eac3d594bb096642dc59ac39a2b0c28c6584bb366ef9865cdfacab35660ada85756d725d6caca62749ac8205cab7c80eb17067c61c03fb67d61c08f31a05665cd48899de7066b46d45aacb559eb78bcea85cbb497e3f0acf3633dd6ba3f3d4e3b33b59e620ef4f33e6b3ed6fcac05580b4a615a0bb116662dc25a9435a33e71d6c93a581fb03e647dc4fa58ac6b7dc2fa94f519eb73d617ac2f595fb1be667dc3fa96f59d02b21e464fa1c473f53deb07e54cf61ce7bf51c58cde7a92814f393e0735e946ac4d6622b5f523eb27d6cfac5f58bfb27e139b5fbfb3fe60fdc97a4214501749d6531c3758775877651aada759cfb09e653de7d51be037e9a6271ff0e34dc52f9935571ec41e946fae9e5716a37a81f522eb258941397bcdb292489fae22dcf50aeb55355dd758afabbcc1b4a700b4c5533eaff58627074cbe71ce390be7caf62e4dd65b7a66bdcd7a87757b23ebb1cfba8f753feb01d683ca096172c00b03ea21d6c3ac47588fb26e331967836c4009ab1b0336866c58d75d36c66c4c38b3afa6ff158aa0da1706fc4fb72f0cf8310634666cccd958b0b16463c5c69a8d0d1b5b3676ca73dbd87b89ae92222bdac13fbd77f5ab869777d70e4fc3ba3bb17166e3a240cac6556aa8c68d8d3b1b0fc52b349e6c24d848b29162c35159ab86cb86dd936123cb468e0d1b52810dfbbcc446998d0a1b55ce2732ff1a61ba2cb8b087d4d8a87fc4d9ae7f5ddf6a29abec28cd6197a3b1ccc8091f1b0d369a6cb4d868b3d161c3685c8f8d3e1bf6959f8d001b4136426c84d988b011955be42321934323c6a95f05dc1b7136c926d81cfcbabb6fc9a2cb45f71b1858bf5258b339546c7073c47996b33de77125916e8ed99cb0396573a6de0b3b36e75c3e5491c6d06e5764d3de34c3e6522e4ff3ebc74e987e8495dd0430837eeddc51b2bce68ab383eabd4cb34a4fdd5cb3b96173cba63dd6be3dbc31a07964f3c4e699cd0b9b57366f6cded97c28df6af3a9ec40e33e9b09b93c9998d54cb29962d3f9fb7c07fec3e7e50b03fe77db1706fc18039a2e9b69368da064d9ccb19967b3c0a6519992aa666faeb2e84a14b8fdbac73f3d4e3b33cd329b15ae876c56d9acb15967b3c16693cd169b6d363b6c1a95e9b16924c6c7a69fcd009b4136436c86d98cb0196533c6669c2db205b6066c0dd91ab135666bc2d6542aa0d68cad395b0bb6966cadbca2debfb15eac3fd254ac143935cc2b62567e449e2b516bcdd686ad2d5b3b4efc6cedd93ab07514a3dd3a71da67ebaca44346fda7f6fc8b22001e25a9625a57b66e6cddd97a1841fc9093a6bfeb7daa1a52d3d13755563e3e5f8555d5b6651d25d84acae5bf9562cb61cb55cab9569a2d7bbbacf28f9677f23a6de514f460d4bf65df16d82a0a0364135e7e23ee7866e7454c45d3e63bb64a6c9990641715b6aade7f6de475b61a6c35d96ab1d5fe050314e26483e9b0d565cb0663ef6e9dfaa5f2b2ae8dfab7026c05d90ac9f355fdfed325808f7df88501ffb3ed0b037e8c01ad305b11b6a26cc5d88ab34db6c1f680ed21db23c1c03bd5edbf2107d8be3718688fd99eb03d657bc6f69ced05db4bb6576caf55e4a0bd617bcbf68eed3ddb07b68f6c9fd83eb37d61fbcaf68ded3bdb0fb69f6c27d84eb29d62db61db55eeb9769a9b11d77691613bcb768eedfcef4cb29f44f9a89a01c38e1c724c0290aadd7a2cb05d64bb246eb76d43adb05d65bbc6765de105ed866a0bb79b4a8fd36e7196e5daa6a8cd7687ed2edb3d45024f9af21a7cd75f9b7ea31ef9a86fe32dd6af8b6d7db2cf5e18dae1c411b9b027f71523a6be9aead7e0cd06a0bf4db67daa6cd3f6b31de0c244abb1821e56eb8f9df07ac7d547fd803887252fa79b4d5d50392ada21225d3b87d9b616613b2a0c68c78401ed383b6407ec0c142cd619b2336267ccce849d293b3376e65ccf583fb0b36067c9ce4a2117fbfb17067c61c03fbe7d61c08f31a0b36667c3ce969d1d3b7b760eca26ddb1cf4feca804361bbb972bcb5fc4003b339d0bd74f76aeecdcd8b9b3f3505e8a7c528aa08e7d9e6027e98d24c58ec38eab7176ecab0c3b597672ece4d929b05364a7c44e999d0a3b55766aecd439b6eb063b4d765aecb4d9e9bc8dd8dbceafebac7daeacf1dd4179040d431c6d05009d2e3b3dc9019dbe0aff767cecf8d9b11908b2136227acf22fd63a1176a26aba36f0a8b313578fb5ae9a517f2f108c5dfeab0473de3c2c3baf08b55f27f85c73dbb356f3bcfb3d03465f3587172376c1ee80dde147b36bfb70ccee84dda942cfbab34fc72defad3fdf77f1915bc2d308ad4c2018282ecf30063d5dccf3ecced95db0bb14067457ecae8501dd0dbb5b7677ca22d5ddab5c4ff7c0ee915d7baf33bb1776af42bbee8dddbb6aea765e3503fe0b00a0f68501ffd3ed0b035e18d07db0fb1412741322b2c92ebb497653ec3aaa28f06c8822775d76edafd1972cbb3976f3aa25d0952e4875f8ba453b093f3348af56ccd6c76e494fe896d9adb05b65b7c66e9ddd86e400c7488c91a196887eb7cdae0dcf06d663b7cfaefdd0cf6ec0cbc365142ac86e88ddb04af47523ecdac0625c9dbfdffbb749375f465a2580e3f02a0c188d7870d88d4b02e8913db037606fc8de88bd317b13f6a6eccdd89bb3b7606fc99efd76c7795bb166266af4d6ec6d5e429288bb93f5bca76a9aaede96bd9dec1fdb1a7b7bae2eb204fce8cc4f7fd7045a5c3aec1dd83bb27762efccde854f1be795bd9bc22cde74ffce6d51cd866104ce006673d67f7b770fb90d60faec3d44b9ec86de53e5708d841d4bec25d84bb297527c40cf3a72d9b38b0c7bf66a39f6bc2a283d6bf628bbb9cc5ee58fc6ff9bff5ad715f6aa229db6517bb5375c65e31acca5c75edd932f47d21076e9edabfb47fb7434f2aaefdafdaf79b69fbf6a302cd322c702d4bcbeb21b449aaff25efbfe38ff5b30406b64ebdb6bbc05473b38c5865727c37d4f88bdf2b6c99eb5965a3bafb6ed7fb8f079758fed57bd36373b35e3c0c484dd55bec67efbf4b3d75199107b1de9784f3fd6f17a43b56d66bfeacacf5b8566ed8cd80af6d556857785e4cf665df47cecd9fd01dddf0bbeb6eb7ba5de4a85bbe710b1f5b665482c542fac63f2da2d7a42eb6f35327d61c00b035e45c40c007a11050cf78c5ac5240df4e20a24360adba7ea0cf7c1fe80fd21fb23f6c7dabbb629b775ade8bef9435af0fbe661407fa245b54dd9b7eb19fb73f617ec2fd95fb1bf667fc3fe96fd1dfb7b6140ffa05c0586498652fda39ae0aaa7f3d9eca81272ffc4fe59410cfd0bfbd7d78efce1c27f9bd4decbb13c9eca2bd4b57e6fecdf2504f41f5e7b7262c348b09f643fc5bec3be2b86b79f5602d14d4f6686be0dc0a628c7beedf500fb4625bbef53645cfcb22d12fca24d8d9dcce9ebfb074bfef8d979fbb83ebfcbd67b4e592240398fc21a1dec17d92ff13830a187fd32fb15f1e9262228c7519fdb3037137ddbaf2a32b9fbad77ef93fd1afb75f61bec37d96f896cd5ec7dbd42437f0503fed5bacb2433d2c1ce7d9b29c41bf932fd4d16bcb1e749155346bf7e877b5bdf2efb3d519c7edf7bb502fb3ef6fd1f04abebc15efe4d2275ddf448f3f18f68d97f0706bc473bb5d317e02af76adf4cecc3db0f17afd9060e723fe7feca7e48b3d70f3363db32c27ef497c81e1bb0b57ecce8ec077016b551572f35eff2e5f9fddd91f41a9a815e407ffb7181d3fc4a1fdfd1a3d67c30564c7fad6d3ff88c73883ef94748316bbbd437a46f44df58d6b8278440d6f617fa26f44db95f9804acc3e59bd137f714b9a32f0cf8e3f6d3186074df670bb61406f856f4ad455b3b65fa36c200df96be1d7d7bfa0ef41de93bd167eb6a8b243a2b22f2e2c57cb79f19a4470b7c5e416ddf9dbe077d4ffa6c1849fa52d23827ad7747206442407ba71196ac6bd71b559abe8c70cb8667c28a46985530812f479f0da3409f5d97fe88bffecd9a7a59972f1d65c31f2de9b35e2af45505039d2e7d35faeaf435385e70d854e52c5f933eebb74d5f87beaed77af4f5e9f3d1e7a72f405f903e3b7b51af7afbe87ddeecb0e9247807efa5e4916355e3a7d7d7667b3afce599be30b7651e3ce6cbe88851769fad6394be98d20a0de3f4c5e9a746e807fd03fa87f48fe81f4b7fe53730386809fc536f3037fa67f4cfe95f285d60d24fff92fe15fd6bfa373f8f01bfacf5afc6efdfbef7cce65560e026767275a17f47ff9efe03fd475974fc27facff45fbc615fe9b7b1d9381ff43fe94f706aff4dd29fa2dfee74e94fbf994d7fc6131d5e9cefed2552a8d3b73de65fcde77f0906d09f9528b9fd60ab254585e9cfbd8b60670aac55e8cf736e7358a0bf487f89fe32fdf66195fe1afd75fa1bf437e96fd1dfe6c5b64187db829487b67fec69feae44737b117ba96d4f9fa84872fabbe3e95524071b276764fd25cfd95e926220f96ebf011bbfedc0fe5b80f3fb2428ec16f4fb357b6225274a6de20fd01fa43f44bfbd5a847edba231fae30c500539026060f085017f8246fc2c06186d354a1a18323012fb2fc54b4a301018ebaf9d81fb938109af776180f1da891803530666de61bbbef509f7fdcf0cd2c38097d81e9833b06060c9c08a8135031b06b60cec18d83370901010383270d26072494142e0ac2663404e2011b8bce500c3001b9b61c04b0ef863bdeab73b69a9cccfcbad72018dcaa2fe812b0337b5bc8dedcec083019b8404034906520c380cb80cd860320c6419c8319067a0c0409181120365062a0cd8436a0cd48d9965a0e1e165c60bb17e7cc28088d4e6a77468defabe343c9abaa6a4697b949d5577c0408b930b036d063a0c7419b015ec33e063c0cfa38d3cc04090471b79888130031106a20cc494f521106790522c04c1e080c1a1d27107470c8e199c28543b386570f6ef61c037594b25d14fb5736c422405f6199c33b86070c9e08ac1b5662fb86170cbe08ec13d8307068f0cda30ce7a91e085c12b833706ef0c3e187c32681f26c5e11a2369a4c777137932b2b2ad7f93c2c4fdee7cfeb76080cd5b30e5d59d3f8989f6a04e1e074187b0c572194c33986130cb608e41bbb9c06091c1128365066d4aab0cd618ac33680b6dbf6a31d866b0c36097c11e831e0f718a4966fd900bd5cba6fafd79b307fa5eb021312ee86730c06090c1907cd88261af85d4f2474eadd308835106630cc61922436068a0970a0d191a8953098d199a30346568c6d09ca105434b86560cad19da30b46568c7d0fe0b03fe048df8695dd05d35038cd1ee3a0c1d183a8ae0a6e2d20ea9ae405bc51afb6bf96b76d3aaa9ddcc327462e8ccd0453ef5bb99baf82b18a01dcfd095a11b4377861eb239879e0c2594ab2b9494b6279462c8112532c6bfdb925932e44a5e4976194a0b069239592c4c4cf9095dd06f9cf4bdc14c5a0c6518b257cb3164fbb2c05091a1124365862a0c5519aa315467a8c1509321bbb9cd5087211b468fa13e433e86fc0cd9f8830c85180a33146128ca508ca138c364180c0f6415e8fb191ebeb4ba1edfeafbe979eb05a44dfa64afbae46ac2f088e131c376316578c6f09ce105c34b86570caf19de30bc6578c7f09ee103c347864f0c9f19be307c65f8c6f09de107c34f86130c27194ec9292bec30ec329c5621ad70e66fc380de45a4df702b9c6538c7709ee102c345864b0c9719ae305c65b8c6709d61ebb7c9708be136c31d86bb0cf718ee33ec63d8a631c07090e110c36186230c47198e311c176f2bae5ff67f936f5e30f02910fc8bf3f2df8201764f3afd66cf23f41a14f8121930326464c4c8989109235346668ccc19b1af968cac185933b26164cbc88e11fbed8191232327b96247ce8c5c18b972654fb83172b7f762e4c1c8d33323e58dcdffee78ce79ae6f32e14412f25688241949a91278c461c46524cd4886912c233946f28c141829325262a4cc4845a43fe2b180911a23368c0623f68416236d463a8c7419b1c7f619f131e26724c048909110236146225f18f0c7eda7312012652426d54a24ce281905a30329dca3432f9f689bd191f20444c77214894e189d323a6374cea897f57eab6a2ade91f8f3837c1185948e4d74c9a83d76cde886d12da33b3ea7ea31ba975012b51b8eb25a474f8c9e19bdc8206c1065f020b5555a18f02907bc74417f2c07ac7f3d92d7455b18b0982bbf74f42a0c88de18bd336a5d3f194d309a6434c5a8c3a8cb689ad18ccc24d12ca33946f38cdafd45d5578996182d335a61b4ca688dd13aa30d469b8cb618b5d7e9885e588b763f3060fbc359fafda4adb96d498eeebf34fb36861ea37d467d8cfa190d301a6434c46898d108a351466352e644e38c91f72663606cc0d890b1116363c6268c4d199b3136676cc1d892b115636bc636a27a2678c5b64a9c19b345a9fc1d36e1974d3bc3d89eb1036347c64e8c9d19bb887ec5ae8cdd18bb33f660eca98d575df369634e78939c632c29a59f069f62cc61cc652ccd983d2dcb987d9b67acc098dd5062acfcb2317a1870a9fdff8101bd9ba4c95845aa9b5895439bb71a6375c61a8cd92cb5186b33668bd565aca78cbfb1be42bb633ec6fcca139c5eaa824d2cc0589031fbd6be8a3016652cc6589c71320ec68d4d49303e647ca4b7936176f6ddf1d83abeb452b609f767c6c78c4f189f323e637ccef882f125e32bc6d78c6f18df32be637ccff881f1a35e367e62dc7e7561fccaf88df13be30fc69f8cdb00ecdb14e38ebc12e22ee369c6338c6719cf319effc2803f6e3f8d01e5a2b42bf102e345c64b8c9719af305e951e4672404f2e3af11ae3755e73c2807883f1a60e6dbce561404fd280e4ee3f3f488f9f8db7756ce21dc6bb8cf718ef33ee63dccf7840de3eb9878a9a19069810100f321e623ccc788471afe4998d2aeb0d2f1e1306fc9c3d60f4ebc28adea4c1c66387806cad41d4ce5b700015e51a716f8473ccf6199c805328efc49c41bb588026ab26c09517d0e0b5ea128a11d880f6841db8070fe091cd1b7802ed21174f555d950a7e73f5e4e81fccd26f27cd060c5e6baf13b8ad83f6d83bf880f4203692249882923cb85009e68c88975304b382015582540373ccd9f0f236db504d06bba10425ff348a55859222d9930dba6ce44d28faae0dfe059bf06fceeaab90c092be2be4dfda83dc0c7c90be3f00e9a142f2025021a396491ef0442788d78d8a2d28d80d313ee746a804b7d72c6c9dec5fdc0506c01018016360024c811930f7d42677f92e7b6e51df3d2fff2d18b0ed030b60c9440b58016b60036c79de01d64c14de0307e0a815c709380317e00adc803bf0e0dd66e60924802490021cc0662f0d64009bcf1c90070a40f18dd3bfc499ff8b06943c1bb2f558062ac6f20355a006d48106b347a009d850db4007e8023dc05ec107f8a5779ad8980340100801612022dd8363af1065c7061903e218506b3b186030c46084c11883bf3703d51706bc30a093c6608ac10c8339060b0c96ec543158799ef86951dba4ad5c4cdcc43587c11a830d065b0c7618ec3d873cea98fd050cd82730386070c4e084c119838bc901224983ab30201d9305d83020d9c1e086c11d8307064f0c121e99e8619034f4c220f5affd82fe00033e5369be44dd3db5c31c0c5c0c6c3632186431b097cd6360e3b15e4a189431a86050e5d5865dc3a08e4143c0d9ed0b93b207a6c318343168316033d3c6c086ddc5a0c74700833e063e0cfc18d8751083108fb6adc39284becf9f7e77de56210c225cdb62453188611057c54ca381c3018643cd5be389e148f1d5464c4b470cc71ff6f3be28daf32e254f2180a1415a03c32986330ce7ec45305c60b8c47085e11ac30d865bb102e134863b51e7bf01036cdaf7185a3b6068033b6178c6f082e115c39b043b5b71133b54baebe01573ef6078c7f081e1533a4037a3b871db1bc9a309371826304c6298c2d0c1d0c5d0c699c1308b610ec33c86050c8b1fc90d7f785efe5b30a0b76773886109c33286150cab18d630ac63688bd8c4b0c55b0fc336861d9de86117c39ed7fa9295539e8f5fb2e54db50f433f86b601821886300c63684b1fc53086611cc60e19791f0de47375df6334fcde7830f2dc130c0346638c26184d319a6134a761c16881d112a315466b8c4c084861b4c56887913dd0ee3f6274c2e88cd105a32b46378cee183d307a629460f2c05e16a3247d76bffdd0c1c8c5288d510623fb3cf785017fdcbe870118e55f3564302ac8e9fba3860c46453b60c6e8d976c1a8845119a30a46558c6ac20093128cdd0ed9afea5274a4f6bcdb7a34306a62d4c2a82d23672f8851e727a77ee1999b62187531ea61645dfb30f26314909f4fd6f68a3d338451983e1b7904a3284676739c8d07c614c3371e603cc47884f118e309ef2608a7309e623cc378fe9d932f1a8af1c223be21dbc1182fe5cae99b60bcc2788df106e32dc63b8cf75e3b607cc4f884f119e30bc65771c4e31bc6778c6d184f8c131827314eb16b3f713076314ed3a9c944e1388aab88dad8329af37116e31cc6d66381b930c645cf967bf4fc6b5f6edd5b455abc3cb83dbbdc8797a477d28229ef36fb7909e3b2110e8c2b185731b68b3ac60d8c9b18b7f8acd3c9dbd40999020769cc1cebd4c6dcc1b88b714f5696420be33ec63e8cfd1807300eca01b7d616b206ec954318dbf0225e7086dd137d21ae5ad4a63a260c08d98bc731a1f1dc3ff41d9c4a67b56dd1377819b131196032c46484c9189309af5b4ca698cc0457b9042673c581f70f982c6c84da0343bb73291cf26504669315266b4c3698d80f772ad1fe6c6262826c0413fb95dd70c2e48cc905932b26374cee983c30796a563d92fdd20bd53c0fcb97348649e29f86017ada7afe0e9b581530497ad3686f9ac2c4c1c4c5248d4906932c26394cf298d83d453bad98943c96ce64a13226154caa62ec26f6791d9306db363ff69096a484495ba37ab430e9c8fbab1db35161d2c5a487491f131f267e4c029804310961127e856e6012d1cbdef75ad9adef6d30d8d6a4a10adac0a298c430b1553eca76f8e8f3e695dfb13de95f9a982de9addb9490361d603ac47484e918d389dc8e3f0354adbd025403f6ed14d319a6734c17982e99b7dfae30fd7b49f11706bc30606a4c62421830dd62bac3748fe9413e4246473e31206a0772c2dc01d3a3c18048c0f484e959bb56ae298f9fc180b75e18d30ba6574c6f98de317d60fab4138269427cbdf8c134a6494c531adbd4c1d4c5d43ec9609ac53487691ed30203474c8b3f8b01bca8be15a625cfadbe866919d30aa6554cedba8ea989b1294c6dc3b5ec1a539b1f9b992ea63d064e3a6cd33ea63e4cfd86075294578ca3b10f039806310d59f30efcc16000d3b06ce9d1b19d314c23984631b58b386694ae6236c06c8899e7f1bdb9e89c077dd6be19f9dda3598b0fadeb859b5bed7cc66c8cd904b3296633cce6982d305b62b6f2acf77976dbc2804e4ec7c916ce44a5d91ab38d9a41e66c8bd90eb3bde27e553f2e2941aabb93fddfa4193b7b06f6b303664723bb62020c4502633d5632d94f6280bdd1fae531fc0a83f06176c2ccc67fc1ec8ad90db3bbc8a22f8bd903b327669e0fc2b384998d218599633086998b591ab30c1b77ccecce9cdac4ded736b37d5b101214634c6d79bd8bfa94fd98d92bdb43ca985530ab625693e1c40e85c208eeb5575a0e15d79cbc7c73ff7118b0adbf0dfef637689ba46ee3c4ac815913b316666dcc3a987531eb61d6f7f4a57b8f689ee9b755f6496be7f3c22a730f4951339b9080cc424691558de3c47b5946fe9c9de8abf82d9bbd789dae3d3cc8a42d4d08b3306611cca298c5308b2b9ae415e1a530c3fedb4e605ccb77304051448601ed95fab2a94b87ad2fc1c09c9803f301e643cc47988f319f48f8eb26fe050658ebe5309fbe72d7633ec37c8ef902f3e59fa6335f18f0e73160bed2be890ec57acfd7986f30df62be13061809881eec641a8f86f95e5e9bfd15e626ac15313f627e127730f7a29f327f523afb264f4ebf80b9adee15f31be677cc1f983fe5876ac2beed6c372d9d806fcb7814f304e649cc53983b98bb6f0c98a78501f3cc4f638018ea9e4117e659ccedaf3dca46626f54c2bc8c7905f32ae635cceb9837306f62dec2dc66a9236dc9bc8bb9bd721f731fe67e6b3a5ac1a98101e601cc6d0243debc1d2577cfc33af63d1773fba1bd450cf3381694527731c06288c5088bf1b761991f2e8c76ddfb18f3e1ededde5bbf724e6031c1628ac50c8b39160b2c96cc5060a9003acfb9cb248097864aaeb427c1d56285c51a8b0d165b2c7658ecb138bcb52eb2f7e4dee730d9d51e581cbd306c9f9e600060cd48b368cdcfca017dc56df5e3b25b2c4e589cb1b86071c5e286c59db508160f19548c1e19ad5f3c0d96b048b01b104b3b1c6391c422858583852baf30d7a49c3b16692c325864b1f0c66c2397e81395556691a7e37a35efaca30216452c4a3cba5894b1a888a47aaea8bf3bd4a77f1c0654bc88451b92ef2e1e655165ccd6cb2e6c1a1b5834b16861d1c6a223926a33fc328c69ed6a82cf450f8b3e163e2f8a3efca2f558f8a5d15d04b0b0f50d09d43dd590263fe993d78091ec94c97f36b7612c6c69a258c460a2db9258c213d91f2f46e4437dbafc1106d842b4579eb451d006b361d8da2d07580e192f6039c2728ce504cb2996b3df62c047ae1a2ce7582eb05c62b9c272cd9c83e506cb1ff8507c61c05fc500e565b3339f5678b03060b9c3728fa5b1fcf937069828d0f5785e5bd7a5adcd09cb3396172caf58deb0bcbf3c85ffdcf07ef115c1f281e513cb0496492c53583af2fdb8d7a419b04d6072c02284a58b651ac6072db358e6b0cc3367774a0b8f6551bcedb2f4d318e09961d9ab6259667e8b65054bbbae6159c7b2816513cb16966d2c3b5876b1ec61697df9e425652cf6d2cf8891bf12960126af0cdbf08258da38c35846b08c4adc9e6e05606e5b168b7b55273f6b531ac332ce58102bc230d786ba1a6035c46a84d55851bb1facdf9b7a56d31fe19a0fcffc9b78111dac26584db19a6135c76a81d512ab15566b9dea544cad171700182768037e61c06a23038688a9d766290d2fb0571ed66ed7ab979b173175722f18f0a2f03edaabcaf44b1af8590ca87a8e8cdb27565bac7658edb13a6075c4ca8674b669c1eac26b4241e9cf2a5657c901afcd964b48a335133e6175c3ea8ed5032b7b4e02ab2456290f215cac1c4f477410a1718a58b932c8afd21880a52b5619acb28cacb1ca41f12b472f08f99573e263845e92be7f1c06f46cba0ade5a17b90d6055c2aa8c55052b9ba51a567551c65543ae134d9b9fa6f47592e1bc357a1d9c4941e7c276e6ca26b98d5507abae9c29fa473e8b22b2afa675cfcb4a141d3169d3d563d4faea63e5c3ca8f95756d4f0829c6b89f63a4ea6586787bb2c9b1ed7b18704fc9fb4812f0c8a3303daf0aa92d5018ab085651ac6258c5b1a60c6c6bfc8201afcdf68901eb01d6436607c280e913eb11d663acbfebabfa97da1706bce400b68401b924d653ac6758cfb15e606dc729f5c6006bb6578c67347ea11cc17a85f51aeb0dd65bac7758efa552df16ffdcf07ec97e83f5016b5be913d667a5298e0d784f4808a89664c2323ad529637dc1fa8af50deb3bd60fac9fc28079405ccf0b03d6899fb607aced4df758a7b076b076b14e639dc13a8b750eeb3cd605ac8b5897b0b6de6d8f56b1ae615dc7bae1cd4f13eb16d66dac3bde8c75b1ee61ddc7da87b55f1af675406a346b9ed55ab6d9aacd55508aefa9cd6d08eb30d6368751ac6358c7b1213650707ff9238478436951f6eb7744a831fe9b81b184220a9b21362355dac985b019c3847443cde6199b2936b337fbdfc91951c066ee81969dae1a360b6c96529a6d56d8acb1d960b3c56627597bb2d264decb92b78c597bc340efdd8c16b7b76ffad28bfc340674944c109b3d36076c8ed8d8f8cf6c66b0b9607365f3e80de62638dfdcb17960f3c4c6a8bfdd9cc426858d838d6bf32642fc6861939687d29accda307ad864def9429c9c87b565e0cc7a049b2c36396cf292ba36056cecad4bd894b1a97c38022cbef10870ff8918608fea4df5d86d179b2a4c14d8d4b16960d3c4c6e6a18d4d079b2edb7bb97e6d7a0278633b4a87d77ec3c6e6d3674d67d6b5fbefb2e7db44e51e62cceb11fad61ebeb698b629f2dbe6d19c4f6dce03d804b1b1ad15c626c2b83d24cab08dc16e8b2bf24eeec87913fd3569624abe630fd892371f065e5c917a89cad8b305b603257ff4793adeedd0b3f9b73e76a90700aff6c227c380ed08b33cb6636c27c280ed14db19b6f32f0cf8fb3140fa44ff4632e33c84ed02db25b62b6cd7d86e74f26b11f9891b75300c28db0d5b396c6d77d8eeb13d606b4b7552e8d3b6f73383543d13f66c75cfd85eb0bd2a02f96a8438284dbacf8b02338a96552e236c6fd84ad4c0d6c380f640237f96603b2f94622bfcd372801e659bd236620a5b075b175bc31b7b918c7aecd926ce4a62dde6b0cd8b713600d816c414bb1d6c654f83edfeab3da18c69ca73164ab2695f55b0b527d7442b67053138be2db6751dcb91cae060dbc0b6896d0b5b7b82dddfc5b6876d1f5b1f94782bfc8ecfec978501afac00224f7d1e15f1046309b7416c6d09c2d846b08d621bc3362e5f8be55429b50387f7290a9c3d3b5b95cf0a76148f6c63d8418cb6ada6495a86b54e0c3b6f26cb61397d1582fafc79d77e505ea6f65b57a0a4811f42fa4f6280b7044dec86d859ef63ec26d84db19b6137c76e81dd52028ac99a8afaf6e495dd4a30b0f3649a4814e3809c1d0d59771becb6d8eda402daedb13b301dc2eea849b6360f0bc00cc6ac554e1ae4ce1e75c6ee82dd15bb1b7677ec1ed83d99725ef959bd32a2f78ffdf08fc300ecbc3c77f6d89e2d5f12bb14760e762e7669ec3282f39dcd434ee2d12e8f5d013b63869212a7aa25ecac95c51eedecb755ec6ad8d5c5b8ec1ad8d9df1676b6be7559689dbd6d8cb78bf322240bfcaea303beeb62d793a7d0ae2f27c09d0f3b5b8280e07ce94502bdf30c76be8b014bfb55f0170cb09d63eb6b4bb90ccb97cc00a99bf29201db1b85940f58dbb5fb5b0c3031da306017c62ea22dd7cd30676f1dc52ef68501ff010c30e1711757669844147bc2d88b791bfb01f643a682b228ee47d82b6f84cedbb389fd04fb29f633ece7d82fb05f0a03ceb91f8e6afaeb39345e6c8cfd0a7b7bf806fb2df63be9cdf79e75cb24c797fec1c94b45b03f607fc4fe84fd19fb0bf6f6c94d98d4b44feed83f7e1a03947cd1fa7d629fc03e897d0a7bc7804de463ef4ae13373e477b44f639fc13eab003a93b2e53673969fe23e877d1efb02f645ec6d7fdb6c94b1af30699f57b1af1969e6d57e5b974dd8c41ab72b0c90eddd26ada15086eedea3327e433eec6d3e5bd8b78de2bfe3069ef8c801697240c18bc0f08cd8fb0ef65dec7bd8f7b13769dd2efc4c58ef01ec8374226fc5bd9db7e0448e5e137b6c08fb30f611ec6d6563d8c771a03cc80f031c864a0c65fcf56184c358910d7d3229c2eaa956bcf68281575e713b9c3f6d135ee330c1618ac30c87390e0b1c9638ac70582b03a03db0bfc36163233719cbcb536b2d89c396b1ad7cae0ef6ed5eaab9c30187230e271cce385c70b8b216c6e126eb54d1a6da95aba89133430239bf36f8e8e370c7e1c15800077b4e02077b6c0a070707d71bf052b3fa3611fff3ec014a7b27c7301cd2386470c8e290c3218f430107db72ae14e587120e65097c878a84808eab321b59e581c7a18a430d873a0e0d1c6cf66c89db38d8e75df9831d7ab2033f0dfb8338f4e5bd53dd78cb9d97f06a7318b2e9f2e1e0c7c166cfee09e160b31dc121ca9e5dc77ec9d5fa5d5d90c36ef6170c506e47cf5df510570e023b2647e208c5f92b29e4f1b718d0fdc080e3c0a46a49cfab348e430904c7d11706fc4730c073257cc8707fb4599ee0684c6516c7198e731c170280e352aed9b273f645268e2b1cd7386e70dce2b8c3718fe3e14f60c0b725d4959f07477bd409c7338e17263772073e5e71bc494234a6dbcb5684e31dc7078e4f1c1338268501c7148e8eccd4475718704cffb42ee898c1d15ed0f6621ec7028e45d96c8f251ccbcc3da5b43956c4323feb3856a566c149ea3293618f351cedc3068e4d1c5b38da36ede0d8c5d1c6d9c7d187a31fc700b33633411c433886e521fa6cc86e990ee31891efd0d1461ec3318e1315c7731ae034c46984d35839174df03f49e3f972167a5b83db399ca638cd709ae3b4c06989d30aa7354e3abd386da5f099eda515d9df95624fd9b61338ed70dae374c0e988d309a7334e179cae38dd70bae3f490782e77527bc213a7845c6b8c2e9c92520d2ffc7ab2c9378e67137ab59fc580a48d21859383938b531aa70c4e599c7252f14ded228f5341d6e971502ce1a9885309a7324e159caa38d93cd4716ae0d4c4a985531ba70e4e5d9c7a38f571f249688b05e47a3bf7fc824c9a31c1cb966cf6909feec28f939fb1104e019ceca5ec228c5304a7a837e0f53b55d1c20b6ffc87610026619b3d9c6238c571a622bdce767f1ee7a1a4e4ec1036b7a935ce63e9fdce139d17c37eb984f5192fc276b81daef31ce705ce4b9c5738dbcd1b9cb738ef70dee37c30bcd7bc454b381f4db6b015a77384bd8ecfc5f98cb301ed0de72bcef6f78ef303e727ce099c93387b3ecabdfa0f31c07a743c13fd3718605b745bc26425c7b3b3cb544c3060b28b93ff2e069c8a746a984f31183133c0398d7306e7ec1706fc1b1870b61d633ba980b347f5365efc57318a73496e3fe7b2d4ebe70ace55f66d73d470aee3dc50e49e49f493b51cccf776ddc2d936ba2d468777db615d9c7b4a5f230cf871dd282549564a7d4feb8d731f671fce7e9c030a083c07c5440f47da1c863ae710ce619c2338dbf062f2f23ec771a1c21e2f0369632e43a938e661713ddfc580dfe484587c54d14ae032c2658ccb0497292e33c66bb8cc71598882442fb2f15e96b8ac74f8635dc5585ed6b86c70d9e2b2c3658fcba16647eb72c4e5a4d45a5efa755cceb85c70b9e272c3c57ef2c0e5898bf565e2fc019794982c794c478d66e9ec5d8c0ad8035d5cd2b864701121c025a72c8ccaa4f8d4018bb73d435c05177b7e0197222eb65807d1eb74442e7776c67209660f12356a362d655c2a0ab2bd5471b197aae3d2e0286252973709938f39694a1cb8347169e162bfeae0d2c5a5874b9f35e3d7fa42594f11240db2ac056959bc2fbe578c182efe6f63c4bc61075e5bceb0ea951f5bd797202e3693615cecb7515c627a5ad23a8de34a85afda76ba0e701de23ac275acb7b84e709de23ac3758eeb02d7a5a776782546161ce2bac2758deb06d72dae3bb9005ded21f6c323aef6adfdf7e2a9c5464285eb559eef3efbfc26c274bde3fac0f5a92cc4b609630ab39023a6346f1516ebb826704de29a52456b67f7b76140742445abf12bb3bc2705a6b1ed8add3618780678adbf1308f6ab6f0c30c96669f393c635836b16d79c226c87767f5e32e5b5806b91b528ae256c6ca2cacaee9eb3615770ade25ac3d55ea4816bd353794d3feac779946164ffb51b5ab8b671ede06a4febe1da67d4faf2291dc04bf5d78be0ea9774180be26a9cf8529ecd57bb0ee11a9643ddd5fe1b7da56215e3a24f62b8c671a342926f03ec8292d26cf65e18f03209dc865248de46b88d191de036616e87db14b7196e7319846e0bdc96b8ad786be3b6c66d83db1637bb676fd21e76f6fc036ec7bfb53edd1706bc30609115064ca76f0cb89df8dce376c6ed82db15535bd71b6e77d9708ccfbad9523d714bd0a9601166c7ee4fbe0ec01fad8d17eef4d27aaf87b8a570737073714bbf304087d6089961800de3661813e6ddfacae296b373825bfe8d01b7820e959b944f9bc1c09fc280cf82014a538c5b5122f6ad845b19b78afcd83277c5c7ddaad28ade6ade6eab2b5221691f36706be2d682f66507b72e47e7b72be77af176e3d95c71eb29ecf966f7fb983be1e6c7cd8e7701b7206e2111fd5bf8ed9ded1415e37a8be016154b6814ea66dfc671a76c2486918d9dd2a96ffbeffca0cb8ce2fcef03dc87b88f701fcbcd74eb1d30132f4c381306ecc56676ca52e5b70fb84f709fe23ec37dfe4a04ff310f9f85856d51d7b82f60286ec4f16ed71b550ceda6f99c089cae7171af26bbccc3d2ae18b3d63ffe0003b896a5ee5507cdfb3b553cf07d8bfb0e77bb30bce9e37ef4f84d0f5657d1b7e5dcd8bdbb093a5ba9b6ef67dc2fb85f71bfe17e57625165afbcbc74622a87d2f5928d1bdcdac6b83f714fe09ed468bb598592de53b83bb8bb9e5da425ac0d2868401cf43d2d0cb8db4c6671cfc9c62e46e42cdadd5bff3fc3807b5ef33f49bc430136de735e19f6ede67b01f722ee25dccb72d9bc5770afdaa2e05ec3bd8e7bc373acb4b76ee2de9237dadd66b2837b17f71eee7d8fe3f9dcff8b8f75b74f6c457cb8fb710f606b5d04710fd1677b268c7b449a409b3ac38041539bf61e553e89bbbd91fd2a8e075504a9e701d5033f8d018f017d4b3c86788c24bb848e2a5592ec9bc46fec001e633c26784cf198e131c7638187ddbcc2638dc7068f2d1e3b3cecb63fa4335f18f01730e071f482f21b0c39789cf0b0b391c4e382c7158f9bf1688cd9fadd7580dd8ec8e2e381c793dd0c1e0969661f7673cab3177d6f6d3ed3f65e5eb57c39ac70682b6dddb978a4f1b0476545d39b268f5ba73903246399f1c8e351c0a3282beea38447198f0a1e5559ae66774512fc590cf824821bd1a6470d8f3a1e0d3c9a78b4f0f098d3414adefd335742eba3c362448c76b28d47178f1e1ef6d63e4f0aeeeaa0f66d60fe37c95be5df2593b6ef8647008f201e213c6c722278d80cc7f088637579c713e84ddb8a1deb0f449eaa493ca93c2ecf8167af0ee0391445f0c244256bb79e788ef01cc308f47285e794c9b2c753b7deb9be0d039c029e33f5f29ce3b9c07389e74a5a8e776eeae9eff7b0ec22e5a7a0ebb9c67383e796d11c9e3b1807f03c180ce079543e4183167b7eeef15d0cd85c3da4f9ac57ec55b6818de784e7194f938da28a2e7c5ef1bc29a98609f8a3209e77165a4cc715f03598e2f9c0f3a91c38a771ed9597d8a6e29978578f5aa9249694d1bdf5fb93ad0f4f9b372f84f0e9e0e9e299e6d504af9951462fddd092f789a29f5ea2c0338367164f7bc157e6fdc67b7a23894f0ca0b312063c0bcc6effafc901bfc500af20179e453c4b7896f1ac28efc8b3ea65fdeb49f2b3f75500470fb6518d277b360409cf269e2d3cedcece6b37da16fa58f7cf157f7b552ac4f714c5b38ba771fdb6ee7dde8b749b4cfaf1f40906ecb186fdc9a3d2c3183c3ced73db93b664213cc3ecfb3d23cae56731e01500287bc03382675486bd670ccf38125406a3c4008921122324c646afde609f9820314562c6500d8939120b24965f18f01fc080c44ae5da6d8725c348ac91d8c83fbd9041628bc40e893d120746ed048e8401a1241247244c5658227166b380c405892bfbc5efad8d47235ed5d21fdae51dbbff86c41d8907124f24128af04c24b171e59762074c5add828ef16d85440a0987cb3412ae302091f6d207d654c3e05e1706ecf83d0cf828cf3bf9a48052b2af3b48d8ab6591c821619bccc65fd4894a94e4b0bcbec8d2b07848613a4ab063bd5ba71524aa5e21c6891709317833a42bcf6fa737557caf8cb7867009c1dbdee6d0b66c1d8906124d245a48b465cd4b745417e115a86900d65e2a0fabc90a892e1236803e123e266d39fc0a643d675fe9229008201144228484ad4e8476d8125125744bf65fcee0820123d073fb56f10148c49124362ae72b1962f9f07077f54d9abc975a6c812414bd9534e0492039447284e418c90992532467aa1c6744aa33102e3a4724e7dfc300e51230a27c8abd4b022896edcc410f49eb6289e44a124f3927a5e295f25f4caea504486e90dc2269177bb64f481e60444799ddd6dc1f6904dd777f951214997e25cddf26c4c2b7735cb6913c299b4df28ce405c92b923724ef483e907c2a699a41cb340486651f4e26647bbfa791b4ae53483a222ef32c92ae56501af9db2706d059ffdfc500f76d0f30f9efe91571f401c9341765243348da2073326c14426cccf59c5e4c5a94641eb60ac9a27c8e9325184390ac2029d3029235afbaa4cd4cfd63f37fd2ae895739752567ad6403c6f7245b302e27d991ce27d95596c3b96d30e7e5d22681d50b1c63c13689ada6cda40f8613c9004e134f7ff5937240d27a09c188cc2a8a6404b6d5933124e34851f9eb524a2882d410a911526395068aed958a66dfc0d473323eb8484d90fa6d2af22f0cf87b3040b69ad249e6d6d40ca9b930603d476a81d412a915526ba436486d150d6bdc476a271fb5d41ea9035247ad6bea5552ee7b1870f3a2f3e3220deb27373ba4ce485d90ba227543ea2eb2927a609257a69d6e0783969c441b0fa49e487935638d074c258501291ba103da906c43a49554f28f3160e931a7abd71890b2916791ca2165cfb47e8b4895e419f5f0826b56516520988691b2be2a485591b2f7ade3fa92240ed2d2bc02e55fc56c95bfe1f8590af56d699cd94e6d8842a59a48b5906a8b8d4a7590ea22d5934f9e7c19ab260a187952969b541f291f527ea4021875c49b6b9cc157da00a46c7a6d3c11a4a2aaeaece6d8bc4808303c360078d57c761b928d0c0052713834f15dd1b92b2faef85dd7e19d9fe3db3532b91ece40b11d76deda1e67ed0ce18ce08ce14c78cdb3328033559d51c36367f65d39e03515ebbbf2f52b75e005ce1cce02ce12c659df2a30c2ea6c304d2adaa07187b385635defd9b1a11e6000e39ce018f54f7e535f53150d6134d71eded8bd1341bfaa0ee88d3cdb80898cce0d8e3df001c778675705885c1f9f2d3a8e002038a51395da6d9c51160427a15044270927252c3996a4857f6180ef4667f92b0c48fe7d36e1ef6180324a7dd8849741159af67441705c3869381938593839435065f773f2da36261c98c0b78acb4fc11820a7a4441a4e198e49634f38559163a7a681ed3ff59f8b97f0fd4910f4b2b6391dd975e1d8ca36e1b4e0b4551ac4b8b16d8cf9b46c0cbead4437a703a72bef20c7cbfae958b37de2f7e4959fc400e3fd9d009c201c7b5a184e04b63a4e0c8ed1abc17b7d3793572e0ab87c17ddb3154fefe0c20b95dfc21d7c61c07f0003dca1dcdedd9130e04061c04ee540e18ee14ee04e714e4b4b6018f052c1bb33b87376d770ed1e3b3925b82ba320dfc780a4e8af0f5ebdf53d5cfbe106ae2da72ded5ea6c84716ee4119d96e0f3905bb47b8271cec9e335c2ff9fb8670af706f70ef701f709f6257dd0498fd1106bc43166e1fa660176e126e4af4d475e0da7fd37033e2aadcac226b4641d984ab6b1552bf3fe1e6e0da579e64ed16df497b8229dc6d0c2595cef04a157e93f873e2d571edbf69b75b865b815b855b836bff6db0d69029f81e79b90929a4c0b30ac06dc26dc16dc3edc0edbed242a8a25356296ee0f6e0f6e59c67d4ad72f83fec7d59731b39cff58f39f72cedcba5f67d5fbbef20a9b5ef9b25fdfa0f872d3b4e269e679c37c94c7d9514cba5d8ad6e3609e2002470805c90fa489d096240df6ea977ecd980de24845c18b90837132e21765bf53bb7bfbe2b27535d4ec8459ff9c95d5bd063ab37d107c5a943a73a0209ea412ee03de1f6230c607dabc093ed4eb164a5e39644de9093382fc88fc8f7921fe37682f1187e969fd0951c7570cb21ef213f457ee67300b078ac763b3f7f6eaced53c8bfb92f647c63c11c6d3c2ce13863b2405e6fb8427e8dfc06f92d545ff8e725d9b80d6f755997d4963f427e8ffcc10c7bc81fedfecf00f993d5ddff1206e4cf4f3f60bda0bbe3ef05a91f90d7e1ba22ff82fc0df93bf20ffb2e471ef9840e3c2c353df332340f1d37bd49da1c1de433c6b9f9357b91cfaa1c229f7bdbfc798dca7b4e3df14faff42bd06df4413a3205da22f9a2b9e97896b06fdbba4c5b4682e91c7907a360902ff354205f41be4afdf00318709e3035c1306300796d75e41bc837e99039035b168d35f2906f21dfb69c740fe43bc679d83a9753f23e915731f507037e3e06984c9c6b32df65346e5e5748df56298920af8b6488bc63d409c8bbc807783a6f12c80791d72bc346f5695e2f8b221f433efe2106ac59d28bd5a5d5b55febbcea1d9228189296af3728080a236c0a288c519898b27ef018115498a2304361aef6ac6a4314164f0c282c994d5658a1b0fe1f18f04c08f223c12fc480823e6e8bc20e853d0a07148e5c48bb0813e8af699e4f5eb50f27be66e18cc20585abe98adaf5cfbaf05f69fcd793e1c590aa76f94699777a3210f0af2f2868d33edf517830b14e35fe61ac2e8ecdb9dbe3764421654a3514d22864480456c8aa3d8842ce8fb5a53b5cc8a3a0ef5b44a164d4422c94b9b4d4469334e376c8b6562117c576cb9380420585aa716935a35063ea1925c1fbcbbcacc998f60ce0c9bd0acc8918767151a8a3d040a18942cbf0d0551fa423d6fe10033826240fa7c9b6d577e998431b852e0a3d14fa9c97800ef500ab8465a468a1a0afe9a0e09a870e4e0085200a21cb48638362e7fe38976cc579df89f1b9f3d64f185ef969133aaa61dab3850866fab8280a2a33719d5314122824714a13d11920146118d5704593a568c8935f141447b6feedc816617e62008a63624071c2b3fadf8001458f71413e06f8e701d50e8a53146728ce51d4de2e99935f5ce92d505cdbe9ce1006a6111437e4e52f6ea1535fdcc38ba278e05eebbafc4637f26ef7ef0bf073de372d148f963777cdbdc7e209c5338a1714af28bea078d379310563e332a34ccf2edee97c171f28a65812a098a682de984f6340318362d6be4b0e45bd6d01c5e2b368e533b6e2f236c5289688d07e9da595f5321d5b8b78f3672fe81760007df3cc1dc5b2e90688014526a9eab750aca25843b18e6203c526735c0f13145580da28aab0aa34e8c52a88031487283a1fcd0d8aee2b06a85807500ca21842318c62840509762a792ac13114e30c3cdde8224c40957ec9b0a6c578c0ca8b6af1958418501ad19abe1e511aa33461699464e5ef30807ae464366d8b0403943c94a628cd70cda034476981d212a51579204a6b06a83045566fbec17984d216a51d4ab66aa3ae96d6906b755ba3de5982442e1b793ee5adf975d2d70ff5f1e92bb0dbdaf4862794cee6b662d11435331503d20392caad2e2869bba2f4c2d4cab9f6ed86d25dcd5be38479f37016a50774fd94d266984329635ab97718d0e32161a068b227538da294c55aefacd7e71868a836a6dad1a5fc9bd27f9d9167c4086b7c3f098a2fe47550232ba6d717502aa25432b9204a65942ab4dc79385ffa08039e551b8f1c196e2f94aa50542bd5516aa0d444a9453a58c5865506fb094a6d9474b4bb28f550eaa3a49332349b334a0e4d84c1c04619599d483682a1beceeb06d1f4cbc17bd09ecf5381eaf0ba280550d2de86500aa31481ac4d42a72fca8a5aa49d81ea23946228c5514aa09444d9a00c5ab2e4ee6efe5b18c0fc00ff4cf82d3f60e5a12c288f501ea33c614dbd560465fde514e51983d6ca739417282f515e5174cb6b9437ea3ab4ce0794b728ef50de73c3a47c78d500d377c160afebb17cb459e8018241593da107ca67942f285f517ec1258bf20de5bba540bf31133bab17684ba19c463983b2ddc2729d4f63403987721e6ae4958b2897502e3306bd5cb101758e095ce99cb1be74c95c5bf0d49db5271cab0a8bd538aa312c8d0a6bc4fec180ff0b0694ab5f308054820eb5895ad37bf5f542e40f28ebacd46d952b5df03af10d949b28abacb451eea0dc65c860764f8e048584720fba5a7afa7380f21065c74a958bb2f5e396759483cfad86f80039d2a2a11c42398cb24a7614e518ca7194133689c6a1ab6b69f7514ea2c2b812540495119d5c55df95312a13543ca30faa4c5199d953811da61586ee54e6e63630fd052ada969890bc888bbcb1505588ca4a172a2a6b5436a86c51d9a1b247e560421ea342d539cd96c969753f3229a17244e584ca19950b2a5775d23f3dfeea65abe0565ef8ee59edcf0d953b2a0f54528c531463720e37c7ad7a42453b96614e6625ab5e3f2adadb3cd432da76e910548a265c647d854a099532e95c667a81debc8a4a8db416953a2a0d549aa8b45069a3d2b171812712f9057dfafe8f6b28da349fd7fffaac09faca5de3e9ebf750e9a332c0fc808a0eafc3c8e0904e814bcaa34a00952099942a21eeccf8e1a16abb6d74bec28cfcafe8353a923154e204a74ac22f6cc0a0a0b4de36c94db0aa4115a80aaa23b3cc51e3338ae97bed8bf9ff75a33ab0ce81a31f8ea88e519da0eaa13a0592d4418a8efa381de4144f059899551ef260a0e2a03a43758eeac2ee873c73c4505da2ba42756d2a51a362bc4d508b0d1db2a4a8a75bdd280660e77e16036cc0a5ade7a37753385499af6ee9ba5577845efd56b088ea9e4b66b240f580aabecb09d5b3a91550bdd047af5e19aab009901662a723f682ea0dd53baa0f542db104dbe5dbf6d1b829e62df5ce69eb7b9d51cda09a4535876a9e5c7bd5824931a11dbb01aadab112c3021515b8c3b647b5cc20ae6a05d52a074dd7a68a7ab5866a1dd506aa4d541539aee40baab66965daf05f8268e3c4fc1b75744e7a59d704f5057b5ca196c8fddf6b7f30c0c7806a1fd501312057fc820167bb83efa94c0c517518c35e75510d30f155a7d3e87406510da11a66585e35025dead518b77a2a579f2d920194d5b85f69c8a87dea7a54e555bd4f52711d354577e14e71b5fd5c24fe16f9becd7a43b5116a63d4d4ed506b654af0a8793e06a036fda718a0cf5523456d967d9718509ba136878e436d89da8a1475f122036cb29611af73e399554a2f5b939daab6416dcbca4d9fe341b2e3cff4ae0a6a3bdf98456d8fdac19e7ce44c5cfb7fa43bb5adda82c91d2a17b8ccbcade9aad0879ea16352bbd2ce75aba8bdb0be42ed86da1db5076becadf5af299601a8a54d40afcf30b2b696452d875a1eb5820dad39f914431cfc8f6b55fe340c500fc0f7815c17b5226a25d4caa8e90868ff6bc83d2c3941fb15e6db9026c6399604b9d651d3464f02b5e60fc83923917c01e3a35ba8b551eba0d6651dda6b9ea92dea2d9143a24e57a0d643ad6f54666a03d4d464d17971bec5809aeb630047f51761402d400cb8ea94d9928a9bbb62c073fbbb16422d8c5a04b528830814dd6b31ec5500ac1dbd0ed19436fa1609d492a81bd670accba7c7cdee679ae3c1d2d2d56886d747a88f519fa0eea13e457d4612aafa1cf505ea4bd457ac33a3aed5228afa9a1258dfa0bee5910c8febdf61407df7c480eb8deb5aba3e792203cabd3ef201d4f5b607d48fa89fc033f083b9fe5c1ed0cfb63f18e063405ea7ff8cba4eed15f597370cd02fa27e43fd8efa0375159434f4df764b6b3dd7413d83f983e195f52cea39d4f3a8ab1fd784dddd43bd684ff9f75c24aa1303c61ee8eb6525d4f52b15a8dd5d9b9ae299eb9324e6968c4801a61e46bd46a6b07a1d7595aa2633a778c31631a0dea635ad8e64bd63dcf5fff603748de9e29c8e29ee6d7d6e17f51eea7dd355411ce07e6380cdd072647687a80ff168a2eeb0fc4bdd453dc01ccebfe344fb60fc2d06d0dd561fff166a9d33a8ebeb84cc4d5f7f6ab2756a13f53fbc1559bb49c3a7efa56f1d2106d47599c550b7d8b9d20599403d8986616547d52655556149328036845c0b8d111a634c8f684cd0f0d0987203ca0fa151d54c15afc65af7efe4e4531830cc7cc180c6ec8901aa08dc5703333845638ec6028d251a2b34d6686c584cad3bb018c03267e4b26f6cd1d831debcb147e3c02f7a5d86e8bcdf55fb070de91c6649bbd777501c4243c7e184f40bf907dd1e7772ee3d86a26edb7e9d19721dd6fadca9689cd1b8a07125c709cf51bfc500bee06fc080c68bca271a377bc41ae0be56e38ec6038d141a6934324601b59165eef72aca73d4460e8d3c4ffee773deb65140a3c84487e5e04bd3617c6b1f0d1d4bc1e805156b5a35ed679d8b121a2a5115ea87cc100d9531ff8975341a8cfb6834d168d1e6bb1a34da74f1bf8b018dce5718c0edca3badc64697545a5915d41e1a7d6eefbc6645fcabdaf20f06f818d018a0a1b3eea0a11219f031002f0e45fcda46238846088d3023ac1b119c1e263c615957126126800cebe592025385266a6e2ac72c38470ca0fe5d7391ace76fd527d088a391402389a6a11350af918f9ac11bf4d979189b77b94ddc049ac2407bcf6e8b2f0d9a2334c7684eb865d9f4d09c92a07c68cb63fd2d0690855107247d437386e61ccd059a4b16f6aa0f4cb9482ddcb71b14931e9a2bf6275d6109ade6daaeeaf627ebfddaf1d745653306d0dca0b9e5fe587387e61ecd037dede691fa6513360907cd1341a8b445f36c022532a4372f685e91e30694990fd1d497d59edf8ddeea7e63c8b61337dd209a0f345368a6d1cc185d50791d902c9a39eeab6eae9662c8da7aaa143eeeff0f6080e92c14037824f31e0372f2ba39e3a299475347af886609cd329a1575d76834a893471e82369a55346b68d6d16ca0d944b365c7a7ed47ee7eaeddf6666f73598a4993d4a1eba0d945b3c79ce4838b698a7b11d932b991fdb8a9669ffa574d99e600cd210a359ec7aecedf6240d3510c30b7fe2fc180fc927d68ba8c3f6e069e185098befa013a8f3ab9215d1d6886d18ca019659db5668cfb7eaa9147fad7389a099356714aa2655803433bbfad7d62dcfc9c3b5d95daf300cf421824d6025a82d608ad310e010a67f9ce60b9edd83c661cbdd6e4b9d8e747b43cbfa6183140c73fa0dfd53bccd0520ba083dc82e9d96ad6f859c77e7d82e08a3178ad055a4bb45668ad4de7c8117becff556df907037c0c686da8fe5a5b861eb6766831049bb33bb8b0f4794b7fa9b37ee29e4fb98fd6d96e0e464d7f036f80d605ad2b5a2f26a3f7b9d973c88e8d0f718807e3014dd1cdcb6b7ff4ca3baafa8887a9861824f3127bc6f0b1c5a9d6dd1e5a29b4d26865e88594fda44495b02c31a095432b8f960a53d1f4973c9dfe1b0cb05606d6695a58ad125a65b42a68554d7c6ad470ce3fc8eba9023aecf367596f5b33d7225a75b41a68716b82d6f40f6080aab38b4b374807bcd532db0e5a6da8de6c75b9a39a2a9b61c724f5373da6e6dd6a68f5c9d2d3d2c11cb2dc47cb41cbe5f9792b805610ad105a61f258a4eb1c7627ced23acd8789644d32c552ddad08663a415173ac5b6a1d3f16d6c6d8fc1e0c5045ac6a746f75624f57780cad385a09c6e79c52c4755f0966cb249f500c682551caa06dd006dac20370d69f28dbe0c8efb565fefbcdb1d580d5ce988ed0d636467b82b687f694bc232adeee8609f02a3cb30a8910185db6447b86f61ced05da4b7b0299f80a03da2bc5007dc15f8801d3c51303da6b62405b612c440c50349ad5c8ebd7de32f5b2bd63127b7b4ff7b47dc0427f1e59fba17d32898c09eb5b9cd1bef01ce56d40fee1b8e9fbae6f0c0460c67b09edab718368bfa07d43fb8ef603ab1c237771447ec2ac43f53ed5496da718bdd64e3362a2add3976524d85f31a09dd39588e5918e175f9c8b0ba643546ee7d12ea05d44bbc485a92e889bb47945ffa2b6fc83016f18d02e933cb2ad925745db0678a8ee7eec69260c0668d7d16e3097b5dd246b74bbc544815c1fedb64908da1d6e07d592cc746d776d2d017b48c85218219bea192224e80a99b6d156b1d62fea3d87ac50af0ebbde8ad1382e432fd442bfa918e983f456011e27a8b1609372d156310da11d66e9f9b64aa42ef2f23fc100329ca83e6dc7d08e539fb613c8f45971b05965363c13acfa7633ea8876121dc3501695ff8e986d9dce7267f4e9f1577556ed3cf3fe75cc759586dae88cd199a0a39e50cb24c2663052ef98040fb33b3a5396a5ecccd09943956c6789ceca382d5328a3b34667838e3db7af24b805374d935b6d1565066f6787ce9e5bf39d033ac7d72cb02ff9c0afe9d91fcbc9a730405d90570c3039171dbd2cf4e4bb7edd74625c48e78cce059d2bcc96b1340a5deae1f14078ffc480f18ed1505e0f9d17e374d1b9d1ddecdca9983ed58e23741ee8a4ccb06a4f56a7e8a4d1c9987816e3081577684f0dae30a0185049a0932517667a884e0e9d3c3a85a70f410fe61d06748a7cc1e1fe1762809a088fa98f018c2018e86d53e894d0d119afa0538580a2d8a9316fe6d6c3e46a2207d6d1ecd44d6a6a6e2a4b0d749a0c01eab4984aa2ed53431798d8fa7479b370ccb2c8b6d009d559e8a0d3653d89818174311a3014b5d1659068a74783afd3e7a6506780ce9018b0b97cc1808e838ede24c0cd491f0338ef3c0d2627a3faf7539d2c95d5103a61644531009d881f82f8efb53f18e0634027aa26b0baeda6e8a11343274e0c505f4f75b70a6856b592ae9f24ba062a1e5d1bf8a52a75954077c4e88b6c9a1b8570d01da33ba17f1d787962800a773a4757572df199fed543778aee0cdd39ba0b9ff7e619e6a8daed7634a503230aba4b7457e8aeb9e1dbdd98f588f6da7a80ee16dd1dba7b9356a08a9a4410ddc3df60009560b76e53f0efe81ed13da17b46f782eed5d40a26b047d9122d0cb3e442509f209946f705dd1bba7abd22a28d495d7f7abf925404d38b49db341c6e5b87d04da1ab37cfa09b655d8e8e2159109975fb0c97ece6b893d6cd33f2520de46e01dda2d9e91095d02d434dc26e5e972559366777967c1a6bf7f4fa1af8767ae706ba4d745b8c9ce3bcbf61c0e235aaf26339f9210c608a86c500e3d49fecd62a2dbb19cf7bba6d743be876d1edd156c86c49ec913d3eabd22b06a80c756a647b6ef5d1d5a6d33a445785c74537f0410b7ed07460c3e846d08da21b43378eaeca64123dc393927198a7ee16039e35cd7b404fd01ba137466f829e470f75ebfe1503f882bf0203b271f4a6dc02f531a037a381a2421230e8cdd15b40bda8de0abdb5a91769548ddbe8a9b75d476f6bdc037a3bf4f6a6d2414f3f1fd13ba17746ef82de95ed9f8f5bef05bd1b7a77f41ef6bb29f4d2f63719f4b2e8b11e037ab69a772be6d70ea2b1d22ba0578438f0f4e925f4ca4f0c50334b31a0a71754d1ab3d31205f62e0d31b06f457a6ae5fd11769a0d744af0589a2e713a67edacffea9ed0f06bcc700318c43e87c8d01dca3d43953b1eba2d743af6f5c15d3017a43f41c4c1ca6baa83657d5d973515579b2f9a28a01cbb05d157bfa043e06f4823c95ed85d00ba31761c2ce61c2c3badcd0f2d41f918af388f8a62b41e523865edc7e2b61cdf94eebac7d481203fa861890d7155e2506ec6a1ffa01a4e0dfd3eb6c6ed007fa82fe08fd31136114c612695b39ab466f7711a46fde9f987a087d0ffd29fa33f3d83166e3f3be2a3160352106041dee0b15f46e7368dffa4bf4571c2e35f17491947b267ec0bd6cd4fc5773afcfaad94cd1e86b6fb7c480bebeec1e7dfdd391a726aac842136a34d598cd18d3d9ba75ee6ef74fe89fd1bff06455c78ab96c11bb05f4628fe53fc4b09f8701e367e4feb28ffe15fd17f46fe8df8dc240de65cf7de65156856b937ce2a6236c2bc8f753e86bff332618433f8b7eee932d8f7e01fd22fa25f4cbe857d0afa25f43bf8e7e838528dcc31303781aa1c3d844bf857edba43be86bebda90f3e6170ce8f7de3000fd5fb017f48601fd81a984d11fa2ef1003ae1e8373fa2efa3afb41f45508c3ccd7bde87f23c4806a9115d6d6fa9a2aa53a5671f413e827a1d6fa005f8d897a876feda371531f7430c660828107acecc5530c6618cc315860b064a9e7c1ca44f3ea6b3e31209fc0604d5aa1c1869916832d06bb2f18b03a63b0ff0e0630caa34247bfcf93360c0e0c171e1c3138f110a8e613e4fdc1805fd0fe07062c8801dcbeb7186077f693aca4581930237ca0d379f1496630b8921161eb60f082c10d833b1dfcc18392edaa4d15e75ef6ea42735e35ec20c5e4cc411a830cb783547d0fb294ec418ea906fc6f1e830206450c4a244a1b94d13e61a01faa18d430df6350e72ef3a081411383d697f08f81dd761c4430e860d06556c1a06786317f2fc8848e6476abcc59894c4de6411f830106c3571d17b2b6c6c3cc55d6f5455c0c02f45a4a319e59e908d48e2ca4970e70bf721084eacd610083106b60d5768c2bddb6ff0f73e167b278adf386f56206ba84f42da20c521cc4a80a374b96c3bca9ce5a335a54354e2c8e813685255da2490cd56388d1df72e218c23cea180a96236e9da943331c6138c67082a187e11b23d0fa1f26d17c8801a2cf9a7d8501c33977759997bd63791cc5b096f66481e1f24991c423cd32862b0cd7186ea0fabdd1e45e5f684b0f46bfe89f09fb89cd39edf30e6a680f0f181e313c6178c6505fe7fa417b79d76e18de317cd896c2308d6106c32c863913e96098c7b08061116dc3ca24b184dd804a30cf4badd1ee8569cfa33433db87250cb5c315b3ad339bfa28185631ac61a8efd520975f427e5e0d193a7c2cc8ea3371aafa1e36992d356ca1bec5d0d663d1b539ec182962d8c5b047a6a6b93eaec6af741d16f4669a5586e1a1eb30c97a877d0c0718ead4381f8fdbed83e642857c18c430846118c3883673d5d9d4dbc630d4d94fb09ecfac60223996facaa81c26e11875f575b1c311fa0767a1a9a118b07ed00f704670c67026703c7a306f18a0834f725f972efe6dc858e14e1ece149dc733746df3f2af6acb3f18f08a01d4bc6f18e0cc7c0c2095d89e413570e670167096a6aef3b732993d77ed5739060f34aaccf729b5e0ac9900e96ce06cf945a7611a4b9bd5d922f384f3026707670fe700e748cde29c18f7e6e8e32e2c7bdbcd13039cabe9e81df4e21bdf42fd89b5cf80afe2757f6280f36032cb30c6bda07f82016a672906ccaadca37052682e89019503f72b2d06d04e54036d13869366ca82ae0d27c36293bbd4ff1903fc46de2e031d437ddf1c9cfc170c700a5f3040fd005516a5349c229c128b893b6538153855dc938ccb540ce8eaea15321a590c6071a5c29118e0d44093fc1300d0fab918c081d2de36e068b75518da7ac1b718a0ae808f018d2e4dcb74018ece884e680f4e1fce00cef083e6bc6b2e9c806dfa7b9da9101cd589c9d79f113851ec22ac00e1c49e18a0fa579d5d95f3c28dae89a269760d27012709d7fc9b18e002ae989b0d91d4a1704766a73fc73c4e2fdeb842bdfd5718a056799accdbd67fed3095dd9dc0f53e1e37f7fb2d9fc2ec00770a7706770e770169b3b94b8ea1d76564f6fec60ac01bfdeb8ad5ea8bfad735dc0d1412c8ca7783bbfb8301ffddf6590c804eb6c5006c0ddcc3170c60b27e997163ee11ee09ee198512dc8b5af12670a07f370fc2bdda4a1d252ccf2c39e4bec0bdd95df8bcedc69047468e2a82a5518bd5bdc37dc04de9da600cb29b66a8839bc12c0d370b37677a7d1357c9ced3ae542dcc9a04b72f18e016bec58061f2ef3080e16b211efa6df4bb4513d9c2d5fe97d11b33fee77664dc88620057788448e656786ce556e1d6c8daa64e4c6f6e93ad7e6c22be51c43a3875b80db84dcc13705b3e066022ac5b607a763a02dc1d7275bd75cc2e662a1e5cb50a8b3cdb0c8d9f18b05b91d331d7318a196af3aa43e6f6e10ee00edf01c0efc200d77972795e99580ed785ab3f552a42646cfe2b0610067aa6aa431da62ef35b3a6aa25935726d0afaf79a5f7be7adbd0c9e15e48719a620e90cd68ecf8a3444f43e8cc2498c18504a3136943b8d15f641157ab7672a1d4685b911b82af931f308fe4e0c6085451f03d661b8f12706e81789012a1549040c481f9dfa16034a294c2c0bbfc24077c0f4b7fd9e16faeae371d381fa5eb385428fdcdc2bdde1cd4d69c74d335df8014160648629133af189b91eefcf52d525fa01a5090263d6c50b4c540e4974f10703feb3ed073120e0bdc7806732a1aad16591c4528129023304e6082c583eccb51c2c8d2ec3db150cc6360336b024c354801ca2988db830d60caab18c050304d6086ca0165960477d9d8922b0e7cacc1598f494c982d52ac2081c11209b2366499bcb7e329d1dcbaa04ceef310081cbffc600eef3120310b822f082c00d813bf65baecc6b91c7d16f1890cd72474b55ea59bbf1402045f2fa9f80015f74b1812eb034b245739f13030219134f32c74d316033e549efd45646533f403120a0ddc821a0af5940a0c86c325570ed08563a6825c500ce9a62d84d2f2833592f5041a9f0290068fd0006e8927ec300d5627fc5804015819a39ef10a85b9178c500ea82370c7054e3a31667eeabaa7ed5266c01ac43e63ef97e6b6ebe69b035761168bc35521fdac6cff111dba3462d962d318c4a61a0b4a7ac0e460834e907045a08e83877a87c7f2f06b028d8de535b1e812e02bd2f1810e823a0cb6468066362958f01e5de1303fa5b1328d81a2c3cc363e39096a8b2fff1b83d47cf2cd8b635187da2c3b654eba7c4f261fb099f45d97359a49e85dd61c29ea99711d0f90d22103295366d9140d862c0f52b0c0844fe60c07fa2fd0006b0849062c0724d66da40d4c780a7017ef2a849f72b046208c4f1702d060823dc917896c45217db53dd9d208b432089a081aec620b899a3f78980b4074161ba53d067121ec194101c631162da617042fab6a087e014c119827304178c2f620a4f85cc39eae00797dfc500cc367f8701ce9e81a18a01c115826b0437086e797a3c183166d192f6705fe5d14521c9fcd26111c11d827b040f745f1403b6f51f9d88e9bbf38031cb60068f089e30d6b73ba378378900bc2d82171e48d48eec4c3ec953d3f101c1abd98d107c415047ec4e0c50f3d9c78065cd34d75c5daaa1ae65f312640e51f081d3a759b47e18037836a818104c7dc100ff3c20984630639c0c8259dc0b5f6140da163be3ce8c63f9f26c5315968ff397811c9b6ac9ef36ffafda8a87b7cf08e6f875d5f2bea27fdf5451b2c67ae9596c7d50a73730ba3242140f938990aab6d845308f60c1049ddf8701e5de130354d814034811612b464cc93185a0361dc38ae9f5183696d9b203b7c7170c708fac1a3f64d1507d7db6adaeacfdff1eb76f9a4e81ef3cbdb50cab0fbd0d3293ab1535392f2b56d20e5e8801c12a095a3a35046bdcc80ad66dccc55f3020d8f88301ff7efb3406049b5f306091fd8201dccd77c9c4d21991d536a852db46b083ea94dc67eb084d69c5809bc7f3ab8eea595d573d04fb080eb883a418607793101c42575ad0859a8aa918330c8241930c3120d2e471d42f86100c33c631a83214e5729a1c09006ed0e6ef58280ac68801418596048249628082d0df63c0d662805a2bea65870c4240488c1aceb905d758f7f20503545ed534530c28e59921111a2134667219c929833f3a116f4a99c19a66e4223441c8338303312034e5314c68c605a6d671ae6f026b6ef2748708cd115a985103a125422b84d6c4809cc580d9064731e12979d0d448ccec790c93d7fb6cde15ecfc8c9c7c1603ae5986c7fc15036c1919a8c60fed10da237480fa67dfc50055c733f5b4d40818d8c2bf25ee3664920c7962aedcf7daa3f56c91dcb3d9ffb21caeb65d527f1a45f759407fb29552d4987ef142ffb3e24160c162bc78207422456b48a7e082d0d52670fc620c207de61303cc6d6699b49370c3ccb6550c08bd90cf79a1937843e88ed003aa80d4a89adbb085508a1850b2e577d4b9099d897014da1ea38ac9e75afedfe3f675c3f84b33fde397c69c5ee7b95f972b70529c180f034269b2f9aad116ca209465fde15614a1dc1f0cf8efb61fc48050dedcb25f61c0c5b1b5966ac8b71861c9155e30d90df633f24614990e4ed3a6dae752ef0fb8991e2ae2a20ab4c4f2036ab6b0b054c0d4f4f7aa202acc0c08a986ad2154c7b94782f2668c71eea106e62afd4d845a08b5add29fd8f8548fe4073e06843a0875bfc5007520fe060398a4660f3688013d84fa080d1403cc6d4189f431c08f8eddb7c981715b904f26a45ad8316ac92af22906581eff1f6a5f63803458223ca44810402888c6865b708a01a7babf8b4d0c6071317dbaea055dfc118474a5c5108a631ef23180059f7d0c981a46d666d38a0164b908257e84d7e8ff8e01a1a40d0a4a3d31206c1006c282f008d5b262003383de3040ed716b9253ddd70e765b6348a5161f71fb3e3ce6b6c6775b20ff6c7abddffcffea77f5afbe4ba19fdffeab48a30f52a5a918f05ac9961ab35965f5a1370c084f10f67856f4db31406f450c084fe9613b7d860c2806846708cf115e9088379de2e3aa091634f531a09462a08e53b47b5c7de324783c90be22bcfcdfe3f64da333619b62b0dffce91866288a7ae77587378fdbb381419e18105e995b0ae1b5a98aa986b95ec21b8b01db2f1810de22bcfb8301ff89f67fc580b0e58ad896fda8184a679efcfb081f103e227c329d350e6186afd9fd4a98188f04d61184cf96456088f08589c1e987716b64d2afd61056617d41f886f01de107c22a4f2a58192c8a74d2c3596e6d877308ebcf02038af4a13e3bbfcf17bfd07b16df6380694cff2706287e3c4b172806844b08ab92aa205c6525777562de6100e55531a0564058bb5a47b84103edff84017fade5dd41b869e24d845b4f0c08eb42ea100378b6792006684f7c0c08778901e11ec27da4f626b1e3b95c78400c080f791c5a489a470f2f616240d841d8fd9b5cb0bf93939f8201c7da2b06042c06044d76fb0d06706fe11503301a6312d466ea55864539454c542186fc2d88bf36cb37605b3efaa5e97f7d2defeffff8ea5e47693fe19ffcb3077fa7c8870142ce810c578a010545297da28e7094b2f1af61408c62168e3f5911c32aa54944cc57181001312066794323628621bef5b0cf32a24ed2b85b9620fd68dcde0fd7fbc6c4f8be1faafb6c76b89851c172aa1913d89887ea84810a275b44f5fb0a91b162002213443c53ee203265f5a1bf624064f60703fefdf6690c88cc9f7b418132220b06a550accf36c3c806d72f0b882c1151395021d820b24544277b8fc8019123222744ce3887b1cb233d63f075e482c815911772cf456e88dc117920a2429c86aef97c8c66acfaa4aad1223964f7e4a888e44d628848019d923d497e2d7445a639aa5133d0a71711292152666c4fa4c21c05c58089902d275205927432223544546a1b7ec911c500f223ea3a8f684ff4896d934d32b6d52f986e0f2ab94dbc0963eb91dfe6384244e5bb6b0a5926d33f0b64fec02c785f8b8d470c88f4189c1ae99b8e0ea69aae1e938022439ebf25866698c6356842235cfa883888b8261a43442f0822124224cc9383d996b11c2f05569b894448711c89e2a0a3476df22372f2190ca0c3348dfe752f0891b83d0fe822a2e39c44d4200a4485aee10b4360b9c745adddb359d97d2c1eac76307b90076d99e3114874a43e10567d4b2c7cc038ed3733ecb1f46374fcfdb64a7fb73d6384fc3dee6116ab14bc2aa2134c23e65a303717510f8f23a25344678832f898f94aab13a20bd60f882e69cadce23f2b47cc06c2f6edb9455c31007715b315df37bae25e256397cba6b337d0dfac11dde09235ee8a259dfb4b628fcf6dde7510dd326c3fbae336fd7dc0e81d276e521332f2fb2dba47f4f0a59db6df6fcbf8f7dbebb07fdbcc029301a23a6227c66e44cf885e10bd322f7de5077f3f58ec28fa82e88d3962bd31b922720e83591595199115e6c6a062802eb1af31c01689fb17b5e51f0cf87b0c6060cfc25629d2e57147f481680ad134a219d6408feaace710cd33b1365a309508a245d2458db78896102db31e906240b48268d5a8491b55f1adb37c4a99c4ee647189aad4ea052de6e547db66a01774a8b27f1e06708db586cc638c768901d11e0f33327bcaa88f01f938f7d6376196c76a0f191714ed233a30d7168904aecd1fc580b78adee367ffe73a5643441d74aea6b920d745bcc86a2ad3200ff76e272e6ce9f2b82faa4a4a8737886808d13031201af91603a633c500521c47a3b8ebd4c4fc5daf4fcbc94fc100d208071846158d239a403449774a1541bbf5c4805bf32b0c3836699b3f6a7824b80bb499738ba35ec5a5c11633c00d3120264647a91d456cf4fd768e7db7f1a849aed049d7a6daf3d6a2d1ed862d977dc0dcba34c36363c4268879884dbfc280d80cb1f96fc3006ba33057d6042664478f69079688ad186c9df5787a314db1c611b9cd1df59628241383d8da74ee886d10b31c1297055b760633456cc7a60388fb47e3f3e178c6f61f349b94a0b65d268fd811b1136267c42edf6240ec8ad8cb571850dafb18c0f5f507037e67fb691840b5326525998d4da9dfaf11d3c57937f500620fc45288a511cb986e9eda3c77607865d1235b434c05824794aca0923f194f10cb23bb6419bc508aa18d9b3c467aab026245c44a88957119225641acca30a48db12a69fd1330601b228ce98bc76a26de21065c5f9e1850dcd9e256a52f1810ab130362aa869ac4009692affdc01e8bdff96fe487b1a1315de4ed270694550b4ce962c73a0cc618666cb9a5a309a962ea22d633cb2cd96f627d2878344f267250bb8f3441931ba3b95b6afebf203630e9bcc947101bfa459b3f2d279fc480ef9f096f5acfbda09883988b988a4790b1c2962f88c163ace2e23ce9f91403463dd2270cbbb8aa0a0e2116464c5f216a8a63931f90cabb1bc4468df715d92b633132667fafe13efaa0959f6d737b1e20bb476d88c5f9c44506311dd824e2067120387c62c0407f23b8a67f7afd800f31203e62e9471f03d637ac3cc4c7884f4c2bcdeac7f17718e0fb01daf3f814f119d25b969e8ecf115f20be447c65db5a470f9321c523bed7468eb9ef3502e1779b53fa6ec3248ff806f12de23b4c4658eca1378f1f9e9cf0df6040fc480c18e79e18a01ac6ae2ff5b3ff60c0ef6b3f0b0310b774603e069088a680b8fef282f815f117e877e337c4ef2c127deb215744fc81769eca7433433c85789a4998f10c8b8ac4b388e71802a4e69862c0e8ca80c86a0cf13cae7a37bdb37ebd847819e3fe4fc30016c7b05c11fae2f10acf84e355c5006c0df9cddfec9479d4721c464c684d2aa4780df13aab2ca96aa8667e1403bef51e0cd2883710d795dfc22d8cd3068d0673c416ab67656085816c855939f136e21d732e23de45bc87789f1850e9195d5d3e060cb593da540be814b82c41130ffc08afd1cf8a0bdab69f18100f221e423c8cd0c1647666986380e3b33e8405007f9bbe1e415c5b14297d59958138e209c4930a16b6296a08ee0e122324c6b64d3e68de076d8ac4cc36fd30476281c4d2b615126b2436486c91d821b147c2c6e6fb7c418a01d71431a03841396e869d5f8e0189a3c5809a8dc3be607d40e284c4f91b0cf0f7824814282d4e7de282c4158917246e48dc9178209142226d5b06892c123924f248143e1e9f8fc673f4412b225142a28c4405892a123524ea4834be8301097da9671d31eefff818e0f5791e90aefcc180dfd77e9a1f40d3f2443bda3f15b8e99a691b75d2131d24ba48f490e8a3d8e3f6ce2a8a844ae7100987e45037156597ecb259959e001241244280aebab00d81bfd953bb03c62934e326aec2174142ef1043226eb61d952d5f2bfd5f3160a95d4a3c099c1349248d5e824781181038c0db2b14f138314dde081ec1956a58ae75cd23294f3f3751f753a67fb4bd0783180e332447c8f6e90734a7488e8901d30a0ffd14039c3859ba14039213243d06a726f51afdca9cf9d813edd5827c4191902a0253302c7819e7ce128a1b249748ae7e478ed877cf84fdd85085cce41a5bed89f667cbdc85618e018ec916b39adfce21f3519e7c247748ee913c207944f284e419c90b9257db5e90bc217947f28164cab6f4072df341cbbe6b3924f348166c2b22594252fb5941b26a1f5a232de01b675cb28e64038f8a296e59eeed576340b2693a8727062cb56f2d24db48764c16c6858f013c0fd0a717f73c481fb74c604dfbc98922d945b287641fc90192eaca3cb421a9afe0fa8363d6cec7e3f3d178063e684124434886918c20a98f8e21194732f12d0678fa4b5d39e669632906642d377be3f407037e77fb79e701e92706bcd2b7898118113312331633318f155473e9776f3df368c25bb32ce5814178623c316a8997c5ccc4ccc52cc8e8923df271b3944d79ef913a71df527111b314b312b3369bbd8d05f215d3371810f9013f80fc9d5bf277aa5217b315b333ee19f5b4694c581e6fbfb7294537ee0bd563b86857f73838e6e430eead6fa34b7f9c2fe81b8d5c17731073347dc33a68437dee0cbb15dc0c99536777fa018a018fa698939091eb22e62ae645cc8d841c8a4c38f818c0d0a04787aa5f31a078e59498bb98c72fe78af073c4fe8201a407b7a5a9c4a4c4a4b18d89c9901eb572627c889f8b37cc5a0ce8d9a2927d315961f9b13cb3c1d371124c6d9a5f75eca37ae85fd5463f7cbf7177e55d7bfbfdc2169e54d00a4ecdc663b5bbcbc97fd6732fe8aafd2f88299a47fa3760809892180b3f7e367e549f5e11465fd648bd55397091fa7e80c50006ea6c5c312a480d31fa759627329bd4a7c7e79f8cedfbc6c0bce4db60be4acee389019dc37b0c8097f46dac2706d8429262dab8f7fe60c0ef6b3f0d03b2c5d749b2fcc0d3310f879b6d311d735149ed9aae2efb9e29a9cb1f37610f2f05932e98ec498d7d31bace077851911d8a5115ac1f02d423e3bbe96f19c097d5ef06710a9a9a2abb9098b09888cd0d3e7c8d0147fbf9873060737862c0465564548ceaa6b8980431800f4da25b7bc3001e68ab9ba2a896b90b8c716e7402b665cb59f47f17afa542a70002fd39d211138c51ed130326216cdb0c8f098d6d666641f84a9e60aa2f26980b1650e7ba744775c01adf9b8560497e8556443140b012ac051bacbddfc619470cd86b0fb7c480ad65815755a818809d602f38088ec480c18375c4fa6b727228060cb384bae0121d7da993e02cb8508da61f38245ae795353b5edb3ee5379baaddfd7efb48c7f92c81ef9bfe46dba66d5c975e8bb6f8d04ab575025695370c3075f78901f5d0efc400547916212c767c6392cd34c608cb798ce5cfec7900f782564996754ca44c44e547a55405bb29483d47e375c4be34b5debedbfe7ae5df3692272e072442dfdc75a0b818f5bf1ce4dab718e0250469f29967d7f4b355c3bc6180aea93f18f0dbda4fc30037f15a8acb65be6e04dca35faafc6530ac0bb26ad29a6e4990533167087371cc157eee09f262f3f105fa57550d1541155e9bfbddcd9a6280a046d3a633354e1ee53826fa953ac271965ee1a27d2aa69f890168a86d2dd035d312b4c957a123f08601d7ac6280a0f38a015d3c4626b8a51f83dee7a760fab5cce87f77667430918db088c14030644d2bc5006f47ec0c34b84bc6e44f47fd7d816a76d7dc55b3072c0604497869318027289b05d4fa53876049ee684188eb6abe30c7ca6fe38efe160374845940662c4c0f8bc00d0aa2af18f0c0686302591f03fc7ac2829851e38027b0aa32924fcb54bd2edeaa4d7daa4dd5b465247d2d83f39d669cedc72df46cfbf597a6bfdf3ffca45c5b3e8c4199a837c847121f322ec8c700316445fc2d1860d2771f03d4c336b19bd046d0c5b1326915d611d3894fe967164bd711198b4c50ee8978aaf945a67ca8aa637fc47c02d77723f6d1e07c389eaf77f8a689cc5802c42fe04c2b6dcffbf81b687f8301d5b68f01280cfe60c0ef6e3f96232632370d0fee4a646127fbf8bd9b53b9882c4556269113598b6c4c7a4b43f5ee3eabc1741da0a706b7c8566427b21739881cb1ca324f27b0b2cc246bd44618eb7d4e22670cf4ca8bc895db4df2f24a55347dd77f6306dab19b6280882eb03c2203ec5b8a012c45323b8a3c4452ac2133d65ba545327e7e9948d6dfad16d1dee64554a08b2225d2c3553722362d9e079571a3ba2fa9d754544c45aa2235913aed2c697c6a939dbd5513c9add942e165537bd855a4f76989b4453a26dfc564cacc6abfb48862e1c4407a0c999df4b08f8a7445749df7450622431107c50e77d8b65573ab999b2ad6327223f563445ce496a699110988044d63e1eb35b30db3b8a3f33f12c7cc6afd2a27abe76f7471ba23919048582422a29d898942c2722e9230da1d4972d32c789691511d25da0ba7f1ba751351735e4623198d6534919187ed8e71eef121c20e73831503d20104ab329a227c97d14c4673e3b0c8a88c1666fb69acb5c851b625d1c74fa355877ab4b46ac5238d813da97eb627cc542d0149cbce4ed53a07770601eb877d5b462b19ad45412bdf31d9ddcfe30bca3001509d3cbd492a4afdd87465b495d18e7e89aecae201e990690d65b497918ec6514627ccc226d795d11959bdf222a32ba48971d7f474905fb0d3dede64a47eccfb1cc6f782fa37123b7d5f70f4edbf327a901be6b6c73943ed9fec73881649e4c452b63c48a6bb5b18d7334e1b97928ddd18f33c40472ffa40ec2aa314bca48cd28c6ddd8449d2974f90eab56a2b4bffc180dfd67e39068c3232caca28a7e6b2b9e99ac9dbd8af86bda1cde77cdcb0eaa2a8b25b40539765514625a6f2abd1ed2418b8a6f6e0228f624f46654ce732aac8a8caad279e3fef7f26068c6a4f0c18d565d4905153462d19b58d3b22ffe5becded69b5f2b2716cb7e6b69051079eae405d7b3d2ceb584c6ca9f44f6280bacceb3d0d4f35333b4c9290515f46035352f53734f7beb9e922c9f12cdac700b5f8d7b0c1ec3ab68e8c54410464149451484661194548749c7b982c992f811713c920b5a2af3dde999b4e4454463119c5edf9cde2752ff8a8e6edff9613affbfadf3df5a62ecea00e826a99a449e6197b7a9bc9d8c8186a83fa1840e33478867395f1e81d06548801cb9b8cc7329ec8d893f19418702dc9786602c527b1b38e73ee2163756e3a325e881a01e315358b6acf70e047445df5c83e4d9fcf6edc71afb29ac612dc217133e65c36ced0b88e49ec4d1836a559adfc0bbcfb930c6a3194f1fa5fc380f1c6e621aa6edd51273a3a26facb9d8cf7a805647ce0c5e58c298e981650eaa0d593f1118fa98c4f34aec767ba2f44faef0ecedf4becfa3582f98b66a3d8542e32d676254cb61cd4e3327e91f10db3a44e2ed48f2d064cd81e13d2bdfe8301ffd5f6cb31607c97b1aee494498be9ac49bf139f98fe924e6b8ed460324e9bec41c6191967659c93719e95c2f637d21f0eeac4805c87b66159576041c64519aba6b0ae65cbd61bf824069841e6230c20958d8f01e38a8cab32aec9b88e569e9c77a5988c1bcf2dcbb86aae0649430365193771680ae9b4f473db6ad24f6200a369d3c40096a4e721878c75797765dcc3bd6b6e73933586b594192b894584bbe846c7bc8d9923e3be8c75790fad3ed5ffba32567510f40bf372775831c0dd63565614917148fd6e1987b1d6918c7051f5ed2ead3dfcfc477262c9bddf2c41951319470df4893a38715c74fa122ced50d3014c9ad2fe1b0c4025a418c0a126069475a86562640299884c468a012c2e54dda07c27c799a72faef0df93c958261399783299ca642693b9e526f9618eeed39399b5b393c942264b99ac1801a06ede646d541f8dd567d99961c3f46a26d5d50f32d9c8642b931d26ea989a5f8d0174f8fe8201381f64b22714e9a39d10edeb734926facba34c4ea6dc97c999a936071da80b49359cb84caedc05d2053579c14b4c26379ca648245e15fa67c7ed1b0c506f5407f06ed619993c649292495a26fa392b939c199d6592974941264599944c46bb57fe8301ffddf6ab31c0a4551c2b32a9caa406ef6c1e9e4e394bb42fe7e4405ec5b10972b5d7549aeb32d125d7242b4ee8c812744566af502c1e5d99b464d296494726fab947bdc9cdcd4fef05110326fd27065416ef30a0cb17514395e7632fa67c92c94026439938c400ed2a8deb0ca354ed4e37cb722554b85d2c759905906ffbfb069fc6009685724d63c1fcb88e0e42502621998481020eaaa122265e6229a87c9c7e407f4f0c18a790d135169589aeed384f2314bd86179924649214cf986695d1e2ad1a7036839c628098a089ef54278827dc5ef746e28d55a7d3f85595f45c60639f00fcfbfd7cee05adbfec056db6a874c59b88e7893735f785783373d79bcf31993c31601d116f410cf0963e06984d47ad786e432d0be2adc45b8bb7116f4b0c8063b267460f9b570c686887b5db7bf10ea22e9777124ff54b50edcacf8bfae9f505cf763bbb27de453cedd88b7837f1eee23dc44b99c4821c7c0347bcb47819f1b20ab9e2e5c4cbb3c25db7f11b308087e1c4808862002bd854b7c400afc07d95da03e301c9a99c30164df18ae2954c32c79276a53c4b1b3d8e2692d5265e19f9007a7a4145bcaa7835f1eae2357e3495fdbd66d33b24c4d3a7b7c46b8bd7114fc540c7b32fde40bca1783a7aae0945c50b8817142f245ef80f06fc77dbefc0004f15810a849aa5391453b62a4b01ed3dee49bc7418cd169e6293c648b5895eace29564f1775dea6af93e5a2c64b1ddcad4c8143215998e643aa6dea4657afb310c2067dc1b064c275f3020f0c2f5794ac8d433674fa65352876676b8ccc81ea36bdb8f7a2ce7c972514fa3d6c5452f9ec994a16f325d7c1a03b4ff830bb3ffd50950d378ba94e94aa66b996e10aaca740b53329d1b37c7d43a6e9e18f871cda1d190e94ea67afdc16cae3c7edf2f647a94e949a66752982504c715fa47b2df28064c2f28a4d0d9639493e915537d350b9f6e858efcf1f08ce8fd1b0c78cac9c41f670326e5a91f20d39b4cef327da0d393a982535da63aa43b62c0344372c04308cbd31303b6ae4dc4bb1867ca38d1525ea659743632cd99f48585a6156bf3ae4938ccfe9def7118cb346ff243532ac8545b11d9804c4b26fd695dc04d241bb9d83aab466ecb54c7a422531de19a4cb5cf3a9e4d99b64c54ffa4ad23d3ae4cf58dfa321dc8742853c7ceaffb6f6100c2316eb52f86fc19cec854c72128d3904cc33255c9c991c3b15e23b5d16c8dc988a55bcf2a0f51b477a8eb74c7641aff7ac7efdbed9d0f9af7eef3e2190e30568157b14fcaccc80ca6b39599c86c24b3b1cc2632f3643695d94c66730c63325bc86cf90703febbed576300ca410c3b325b898a66e945661bd4d7ba4264b635e92e5967d5f38d2764b62305f9204b52cc58824e80bab4fac4e99474d37afde42cb3bdcc0e323bcaec6477b1cf7ef1c81fc30094e2c480d9f92b0cd8d6ed69615e6617995d65a61dbeb1a8fdf2c4488f745d15930d7a09a199217568aa2cb3bbcc1e32b3c78ce9c78f6040c0f88149c480595a661999656596231f643681699464995baa06cc83448217f59074a569270b322baa618b17476625515d3fabc8ac6a9cacb9f5597ba41d43a38efa908c7b19bda6469b7a56c7515fad41de9e6e9d6c9417bb634b31b8fc9d9c7019fbc7837bbfe7326bcaac25b3b6cc3a48e9bc7465d6631163f7a80223b33ed9400f21c650251b321bd8710ef195cf119b2fa65f19ca4c3be69a471ab2c6f44845d6a822aa7aad869b6ad2336a5384aba8a9c609c82c6803cf0e9f96f3ad0d8de7814d06ae3e3724b3b0cc22186ac7a2e6dec37e8fec14a5a8e916b1d42950118d23a2efa8c2995479e7665df1f0cb31600d62c0a0fe1e03ccad2d73c85c74821403643e2206ccc748e6653e91b9475be4b8d179473dc3ca6b0d6100f16d867e9f09ede999cca732d79ff3777b4153abdfbd7f7018f0f673ffc400b8325f98f356e64b99af4c2c2ef3b5ccd56a39cb5c7fb913c5ef9b25856c6bcf0f323ffec180ff6efbe57e00cb2b5e657ec254855545e4a27a93cbccdd33c0c6d69d6005d7cd94752255d35d476489d94f981a161ae35c37f102b735e757133ac9fc05d7954de82d332a5f97d367cf8477910f30803bd4e6307a468ccc6f32bfcbfc21f394ccd3e8be3004dbdbb3987bae43d2e6830bef80e651e6190cf5d5b232cfd9fc80cf63004fea880132d725ad8f2ecabc24f3b27968072accf052477e5ea56ab83e98aa769b99a42e2dfd65ddb805d6edc9e9e786cc9b326fc9bc4d2f275b37dd9e02adcc3bd8e414034c5f576917f529e7b4aee3d993799fbb6a64a5ef10030250f0fbb09febf9eb2ebcaf38c6c839321fc87c2873fda04a41b5529007159b2559fe2d069060d56200023a92218e33cbbd459e47b26a33cec3328f88ca95a7931b535780155136176c362c84f0e8c85cf58b02615cd59ccc932a6eb2803ddafda49cfb9ad7e931c9361217f5001723598c653141f9a68e9de90658604711371124376de8280b0fda19c5b6c5541633d5bfc6d9fc6b18601c59ccc9aba818b058309371b194c54a166b596cd068c9c25270f7120c622ea565b1338fb9b91665b1475e7f1e64a12f726a9d37adf3f21d0cfccfe3015f9bf9d8bf7c0e26f4fe67595c6471453584f8c014f535b50f2fb2b8e15434017dd61debb5c99664f1b02530ff60c07fb5fd720c08e80218c822250b959b8cb0ec4c998cb2bd294c91b1ff436bdb6ea68c0e7a6991207a95a24f901e9a4c020795f51c2346167913dcc8a2f08c71d6e5e4b4ad42f93f60c064fa0d06b09c3dd767136915685d39fadcb2295e30493291b59c50df85c426dd2163c045f55145165559d464519745c3ecb79fc680708086edb28fb263460f593465a18f6e9ba43ebd83e4989b2a0a00cb088913ae3a805d59f4d0d66bfab2e050a01a378f9cc92e50d015389485430ab6689bc0b97065119045103775b076b20891df42dd9a8a2ab5b02c22b288922dd5c700063e363fece7173961743f5392cb5573d66ec44cbc210bd5aa093295aab6527b793d548141eaf01d0cd86f48c16f31c03861591a5982f1c3cb11c61d7505c8cc310a2116530c508528cbb12c27b2f46439c5252fcb992c55157aff7c849ffd673e81ad72a14e9e02fc7221cba52c57b25ccb72c3c261eecea8eca937703bf21075b955d784dee772274b869fc9f2c0afff7a0c6008f27b0c586638aacba32c2d825e278c6bd2c90abbb2d4ee5d647965e8d4f2859ceadda22c6f967c2d80a5d00feb1570d46bee8c0b583e0c8a1606dee7a3fc730cf09bae97aa2c53b24ce32522dabd61d8c44f88ea34a9033a3111fd538e8537427a994e594196c53f18f0df6dbf1203d8645992a5ae9f8a2c55206ab2accbb221cb26d31acdca564f75cca0c436b4a12fe3309981ef635bce4905ba85b02e006d2ae55d59f6b88a546175b3764f60fb690cd8ea3dfb98df4d22a3188089ea9481fdeef49dac5b12ba258c3ad5cba12c1d59bae887cd6d2ecb007593d7926510e8310c465dec65486d4959aa46d3251165e486aa9b584a662759c61893a72bf6587b269d6afff537aadc5976ad6d6e86e5cf367ac3b82c13b24ccacac80a64a97b743838244ec893fe4117497f8d4740566a1426643592d5d84f6a4559c72122ab89ac3c594dd15cca6a869d2be3a05eff5c5dd9a3ace696a25964b56087577a994ec142566b596d64b595d54e5d196b659f68f873dd9ed8e1634d5696e7a75fb417e8ad0eb2d29f27599d657561348beabeecc1e4c8e5e99fe862922027e02164ae31595d8d53f713852ce2b619adbfad9aadbece8bacb43377593d44e1ff3667cd9f7a95da331d20c9e02581a35abbfa6a695965649595558ebb76aa4c15c0ba0d3f5d00e99cacf2f6e62e6f6e3bffcc665257293a975581608995ac8ab22a89aaf55505830639f59a559f97c2b2961ee9f0e95cacaa26ad2fa8ef5e6798a33e8e415c2f346bb24b9f3b5a560d6ccaa6ecfeb4d8d038519f4bc09b1ab7c738ba2cccdd4556d5ab2106ac17e437dcd8fb6c75c49ab26ac9aacd39dd6fb97516d5b7eb885a543c57205d87ac7a267d9155df441eb8eb800f2c06df180b7bd5511d221c379de393edd1697000c9f09a56bc2439072d8394595564e5e85bc8ca9595de2428ab90acc2a69c23adcb94d9330c59deedb11b0aa5312a2b9df7b8ac6cf6e87af15aa2e3816a1d9509f98256495a84bb300b61dada41fca91e76fa0f06fc7f8401e65ca492ba07d5c21335ebd682dc52d623857a46d9b36a52cf96a6737daa48cc54451ed0ad72196c56b21e9bfb40d613597bb29ecadaaea283f30ca7d95c7f1e0678ef7efa6d653092f55cd60b592f915b9025781dd1158ed506f7a3acb57b6b06dbac37a6dc95f556d63b59ef5be7ac19f45e3967c68c81799eb57a6fdef46bbee5d5d7896a061be80b1e64adb73d19d790079826a1c500d68f1c58cede3a954b3325ebb3ac2fa8edadf17e97b5cd985bbfc8fa26eb3bb316d60f59a7504f6157b0090d6d86d89ed2ecbfeaa6179d8eb4ac33b2ce7291733b282aeb1c50b3037864e2f71726994beb4c0040fac4138bf1dd285cadf3b22ec8ba28eb92accb4fdd57ba93c5a86fe9883fc28073c4b29e152cb79225895a57645d95754dd6755937904bc8ba898afe6c195dfcb716a1ab9441342bebb6698c65dd9175d7ec3d46a63ff03ccd5e865bfe868f337debb9ac552b557804cdcf7d751c65cdb996f550d68eac5d5163f930d66759d24acbbc9f766d25961addbee991c1086b1dab10c192e9b583ff1c06acc3b28ec85aa72f26eb382b19ec3dca89932406d46db2c830a72261ca7dd4fab2d6814dcac6c80684737b0e242cc3f72c31fd65ead58e0906a8b84f533f244c571cda17d98c643396cd44361eeb449a04a48bc5904ce62f77b48fb299ca66269b39e0ca66219b25e7fd0f06fc67dbafc6008c0714f7a3882af4cd5a36b6c2707dfae48954c9ce75a8e36ab64e290f816d51ef568c0499d9232ddfe5d13855d96c65b363a668e0051d7ba2f89a20f65331e02dfacdbf614f367b6ce2b239c84685fb249b33cb723905c40a643a52f594f544b54c32809c2e30bde02aaa26b8ae6e429ac9b3dd8298d8bc53ae2bd93c64933281ab4d0ad3e594964dc64c12b2c9ca26279bbca066cbff1e1902e457b92297f2d056e25c619965e6d4a6801e29d8646373e59cbe05c5a16c4ab2d1475464a3235653dcd2c932f918bf6eb51bcf936b05735bd24fdfd465d3904d53d40bd9b42dc7cbe14baeec9627a8f0a2cf045afd53202a9b8e6cbab2d161e9cb66209b21b7c5baceb318a142f8ea85997da4b6fe0003b6dda72ba06233e4da4156d58a63624b745531a9d608c826888c4e77483c1dc6b04917908a635230f790196a0722b2d19ec46413f749df6493f07b2e9be45bb7fde2d26f634eb0547da760b035b205d3d2b723990714009e584b213cf2c09fcc6b35d98ed12b9ab027db896c3d646ccdeac6f23d0698ecfa8901c3cebf8501263093ed54b6fa732edb856c97a65e92ed8a34b7bab21a273cae282750eb2194879a2c5b6d1b516cdbee28a5dbbd6c7dea24d22e71d0c2197561591edc6653ab65606ab6b7d1917175588eb23dc9f62cdb8b6cafb27dd18644188b9c099d598f41cdbb7d8bf90abda23ab3b2bdf13eaac1ff60c07fb6fd723fc0f59e18b0bd8b2ed76d4ab669f12ac60593c5ae39cb19dbb327c3253231a843c0a2d56d6e32de1ed47750a9cdc8366b8a2566ed1f7d916de21a6df967aa3f732fc89f3bef990685a26c558ef3b22d887e715b423e042721aa56b615ccc3b2ad9aec8951d8db9ac889cc2ddbba6c1bb26db2329a6517602c0799df1df330d64aad9077ac7830a784717429b664db966d47b65dd9f664db37dd01327532cff85aa976a486d5d150e7601e93edc064753486c2820743e344187c55dd5b0cd05bb9b20dc83628db906cb57b1172761a12ce909c83caaece6177753aa2e6a617eb0de3b2d59e349976b4b53a54218d89b8a7673e973a5baa17ae0c21959d911d48eab11bc96e2c3bd6e37dade26b8934fa1b6280e2d68718507ec300daa18481a9ec3cd9e9cf99ece6b25bc86ec9038fdd4a766ba4ab3c5ad8ef7124ad10a56ebb93dd46765bd9e987bd997966db403a670f1842bed5cf6eaf6f1c61edbce59593ddc184b4db4713ecc8ee243bfdcd4576572bd8b666592e6fc94a5d729984f5d55e60f42937d9a9a7a56f4d1a0f7b0475f439e34c76a5188047e55fc6002722bb94ecd2b2cbc82e2bbb9c29ea04e5695da9e3d8d759b861df945d41563dcc93b22b9abc23bb92eccab2abf89479b2ab72c498b751f9e2ff7576cf0ffac4968be6d69475cc6bb2abcbae21bba63a6ac00b2b84eb0026c32c2bdfb9b3e25eb76723d354427412ed31cc51fe60c07fb7fd720ce0cee3d8382a34baf6bab2ebc9ae2fbb0157c8f566dcb525c9b218e057faa64370247924a902522487d80d91573155c175499d18a0958dacc04bbdf106ff0c0c18bf6afff16b2aacfe543514905d507621d9856517412dcbed885d148511a625cc7226df86f479ec66d44e545d16935d5c7609d925656f1892a82a7e0faa3f5dff96818045c9d77b336a98c99c0c49fb91ecc7b29fc8de6378f8388551ef95378d7c79b666c0912c40f33815d37e2a7b526f522f3ff25cba17bb39a6ceca5e6fb890fd52f62b53d0dbae4de7cab4e1f4d156627039aa9b30fa03860cb6f26c41bda1b6adec77261d0743c84fd42fda4fbd39f782f5bf17f97fedbdd972e24ad32e7cbe2fe3cff30a4603b18f00213430188399ce1e3060660990108ad8f7fe679684dbddabed5ebdbef50eb13e475438d43494aab2aaf2c9cccac163adab068f5f718277867761619f54510c0e499df1e4ef78a88b980f3fb90fd0ebb5d086fbaac000d36468c1e3578494e1c15fe145928ac3bbc18bc1c2e93a0baf26b1e2a39958de6846d34778757806bc063c135e53eef0676dd91bd9e53d975c2f4d8ea68dd1f0f815363c87eafce0c26ba9519776da68cefb4d4c91a63c5c472abb953b61afadea4c960ebc2ed3593a97ac79ad3f6280d40ff84fea014c2ea6460f1e6fb33ebc01b36578cf626865fdaf7ca4c5ab38582f3c655ce0b1f676a2b8096f046f0c6f026f0a2f2397258a8474d369da848c539da8b52497551e2f410e5e1e5e015e11de83d45c6355b5396249482ad7f74aaa36e291d3de22f7ac7a759af02b4af012187efcc280ffdef62fc780ac545a5793ab9af236aac0573433e1938a36e20f20852fb4c70b2b010c0076551e1a43ba55f820c107e596643f125de0cfe0cfd37cd1e2a99d499fff4e0cf8a1aca344d050ab0cff05fe824c8bc70c7f29cee3fe8a8a67f8afe2cf7a0ac972c4ed723c539d2cfc357cfeda16fe0efe1efe01fe51797351a5275d3e5a525a67ff04df536deec7877f82cf5d89582a47486de47e95b980b024c145a9a030c8c8e55ebc943aab56083fa04a51a6297670330d961e6a73cda0039fbf7085cf2236d3f92616804757921d6537dae49dcab92ae671c69241c8afc2afc1e7c1f0734363f6023eff564cf6e4971505f02df8367c07be0bbf059fb92d4f8ddfd5152f5e5eb887b23002462c1e73ee456b753fc7803b6d93bbf7737afdc830e93fc2efc17fa2a04173539c974e79b9d0be142528af746219137e5f32e8c555020f69404bfee419fe10fe88d418fe9824d986ce8131cd0a8631189499c213f853f819f8bc3a39f879f805f8bce57a52aa9a5596e43a2ae76bfa64e81631d8480206ff017e4911734f5d19693dd6bbeb1b06c02fdf6bc8fc7df9827e1703a4c33efc0aad42ec6c89a5781e49c09dad93f2275948f97c251703a1859312a700d62d59353fcd709ae3f482d342cd9749d887def65a0564b63b2de0b4541bfec20aa7579cd6386d70dae2b4931569f4194471daf3ea0b48cf427197782ce274c0e9889307561c4fc21964977e61c07f6dfb9763c0e4a0babc75ce149c70ba80e5e553a82a7d5a17c55a5d7912694558de730a03255f9c5e4e57350854b98a5384d30da718a7aaf6324e31402e03f662bef8bb6d41ef1f746299491fa71a4e759c0c9c1a3899383571b2144bd02b8bd64d6125db80061d09c23af121e4a3e5e0e4e2d4c2a98d5307a72e4e8f38f5707ac2897be363f38cd310a7114e639cf857539c323865a57666c4dfcc919717c6c4d4605ef09225c71437a1fc5cd2ea7a4c9c3c4e056c5c6dff3948121bf1ec5ca4abf9c823e473f88053498ac6ccfbc04cc557098062999745f5ee593599aa6501b35305678533494ad6f30ce739ce2f382f705ee2bcc2f915e73599fc850dce5b9c7738ef713e30ecc91df5b82e98cde3ac8d55c694703f7e68fb820ab29a1fe901053dcef1bb74753a5680f815479c3d9c7d9c4fd43154af46d92cce6729085c2b0a8b692e98ce2a1ee27ca1090f26c039c4f98a7384f30de718e72ace359ceb381b38377036d5a0877313670b671b6747c259cfae2a9892796935c5b9a593708c6516b9176d963ca9728d5c1f6022b471d6de473aab929a14f556bfc8aebb6380d40ff8cf6280dcd833cbe6b974717ec499e7fba4c64fea36d425bb8fb23f8f6da944a6fa22a4b3ae70ee4bcc234d701ee0fc8c33d373445da6de1867fe704a03267b46e57945f82127ae0ae73cce059c8b383fe05cc2b98c734518c28bd2859d4baa68888ac962cd4509065c0817e03293590b7b597c61c07f6ffbd763404e72214cf2626ebecc7179018b99ac19f4775241b0f4a2e28136f8bee8fb003bc100daefa49c48c9c165a59e47b8bce2b256b1ae56bfbd489091b753db20b9e5fb9b30e06dd516f7c019498cc3afa3d219970d2e5b627679d9e1b2c7e5a0c28aaa3fe072a4f5885852be782ac35bdfc7e52411ad17fec90517fe3cc4e58a4b84cb0d97583d730f555c6ab8f069317069e062e2d2a46006e6b58e2915a00afc8925ec3501806d91d981b8afec2d080d99262e785132dc6d5bb8c95aea75e85cf00b9d48875fda51c52e2e5d1a78e274df645eac244777a3a91d705d66d0b83cd26623819d971e2e4f54e4f1f47119e0f28ccb1017a6f958c9619e80f9cb25834b16979c8abb6ac873ccabf19807864b81b97f2afe2760c00f0c009f6080aefd2995d7b4e789dc394b27a178375db84326690997322e155588112804a45da4722cccb2f44fac5d1d5a0866b476e4ce2098237841b040b044b042f08a604d6d93427ed820d822d821d82338203822f010f8649568ee11ef10164a82b3a82f3c85da58efc0ba14873063da6da9b04670a1c3abd4ace6d11e22b9410d820403108408aeff1518c05d99a63a741144086e9409a87a41104b825e6f412c0d0455cad7655f456d043504756265ee7580c0508d0c8206021341138185c096bc498183c095ed1a309df9271d04dcf92302a636a3cb08411f01fffc9914937d488b35938e5141ee060220e02f8c114c104c116448f2f1dd64c5bf30e0bfb67d840108b2aabda5122f249ffcabb08cfd9ad63bea12192f72bf5434f439c94b75c08ff3cc48870c12f98caa0c69cbbbaa8080f7e583946bbf429573aa6489f035180bf71f1e68b823f3450df9dc9610941154102a84a448e9e094e5bba1eab0f58f302004c219c2394d1d842fac70d07e4c85991a0f102e6852a3cc911e0b089754e87e86615e0de18aca25305b09d7083738cc1172ff3b6a291de2e021dcabb04a8d13755b60f6511a0947c8cfe95a4478407844c8dff1119e109e115e10068a11220c115e25525a2a25dce5e8bb588d30523d7ee90da156e1b9ff4980b0a6a09228ad77d7d77ad67cb424f62ad3bb88911d611da181b08190bb6ad213bf973bb121b8cb647145915f2a957fa1a32f9c226c216c23ec20ec227c44d843f884b08f90c9f58c7088708490e5c412ad9a0827b466f0f369bd55d9bd7aa8d0f6460dee7f4a6747159862199a17244e78579084af6116610e615e1796fa781fc6849057a4887916bb3d1839c212c58f22bd32d75e2e1196e9d01647172a9139178782d0a4462c1b32ace0aae879872be10a5c67b8ce695c54933aae2fb82e44cc4f8c540985359185f52f9ec98bc0224ea989eb12d7151d99f5f3c32bae6b5c373a25c9594da792684870eb59f891b1c1758b2bbf6e8fabd413c6f655652cb91e375c49715162d1bbae060e2d1d5c8f722db4bf4a8899644cd2d7a4bc4b37cf0906d020c0d593dbfefa4139cfaae6d381c435a0d3a6a56000dd225c7df12edbf7713d89f56c170b12c8c9bd8869d43c332ae07ac6f52281cd57ee3094dc1b13fef08a6ba4ae135c6fb8c6ac51a9ec8677292fbd78b5f11b59afba5671e56f32ad0c5c1bb89ab832352c5c6dc53bf6eac8bd1793eb1dded33e9640b6f1015717d716ae6d9151ae1d89a1b976717dc4b5a796333dc281e423d14b9fe8acb83ee1da971a32d7818ab62906f012e4e6bc2dc5e277392997bff38ceb903140c55e82014cc3ff28b7fc5f8b01877a8201b88e1803547ca351f7470c9073f271ff72006ad496f8235cc790ed3895b5670c986ed57023179eaf45ed557250f9a598bf337cba326aece39a255672af396dacfcc158ff1906d053ee3b0c28676971a06c9062c0ebedcf6200cb6b1b3e0f795c0bb81669cd1bfd414abd57249f8f947a5fb0d27d55316fd992d4f07b6c4906fc78201e38b50e450d9af4295674e189f3a6af2062d9f609bb8b1a9e2446fa8d2525a72b69fc3c3daa5c40cd05eb33e44e11819606a299b6dbcef57cf7f7073d4e4976e460dba43da91a33883ca239a217ec9e102d4027c9cf31ea92e1502b9414f3eb825c119b152947b3cbcb5fb7accc35a225a215f82447fcbc41b455e503a21da23dad780007dabfd23e921266d1517fc20ad09e4a5b1e2d225faadeb74f34468201c20a272e6300ed5a884e9fe47c264b67128dce882e8802d533c8e7298488ae92fc4e5942e7fdb398b3723371425d0c45ee66e99825f7a55695788ee69aaa1e8f5f5599ce11c515ba2c681523ba7d03803782eb26a1e9d71d0f18110be3b6eceda88aa846d5199889cbedc88b706d66bbbcd3a452ca1d032266973b62ac7dc300e6da87a7ef3020de4af094d603120c48e3e3fe8801518331407b4b97440f602d9011a5d3160fae73409ded2718909eb269878787c844d454dd13220bc79c28c12716535a8481b27cba8d24f8ce2c4ab29395cb039670f7580749602059a4229b6a05d5bcf2ba23726852a05d20f6bd9792c82889c54c7cb8c7d26166a763fbfb92c98a57a7c2fbcd45c40bdd46d4511988beae790bad9e3ec4804e4930a055be3b68090628734799972f0cf837b58f3040b5378201e5215dcbd409120c40d4650c10c342524b726dfc1a03b64ee2fb21b55ee590ebabbfa8a7da21ed244798dcbf0d868201b5096f32444f949f488194a84f96d62ba301a23fd68d5abef5ff733d201a261880689462c0b842e7b664276535933140fd390cd0fb58722c7bcc072788a652e030ca4810ffd4a15e53f4f4cd4c0cd615669ad9c4535eb2be3093ea9ed3726996275682568958580bf7d2e635e1171295fa8efb271c4a374439caf250990f161015e99445f480a8741f98f77df8fe4ecc145b977a5335c9212a6b5257705398af7023ea2b49257a036572ca8e71d36c54d771137f217119d2f57c6a13492eb499f1f0709b4b1d3796f5320dda67707b51a32e8f16b7056e4bda6429cfcfdcf92bcd0eb8ad55ce532cb32b1118c5178531e0b6f90e036e5b5d3fe0e7742627936494c36d87db1e37eef3889ba7ba0a379f7851256e2e2f7cc7af6065a69e48f19338bc8ef3097985aa8e29b6ef3dbf5149b49a7d13a86b8c7f0480373adf4eb89d71bbe016e016e276050bddb79b842c242e6d439d486ae82429e77e8201aa4c179e9d7837a418b0accac459e56206f79b1840d350b228bec3005a3e486dbd0f30400cad12733792e7218bed8fb85571e3e5abe366b0a4a21c7e6e88adb2cdf43453ef3bbddcb2019832998358605eb3dac9674baf79b92c611141bb78a5dcff4d034800803f9c8d706be266e166d3714d2553fcd958a1bc39b8b9b8b5b42bed4e06292734f80c039ab86380c4e889da77ad0a06dcda3f62c05faa1df4f7b5ff7d18805b473060128aae8d92d6038e922f33c180cd2ec180e4a2ecc3fe0f8ed804794348ca463e6c5ddc789bf6707b927b3f3e27195fd205b3f863f8aa5ec63e4f341051ba64a9ba875b1fb7016ecfef52dd7e97dee4971890d61336376415a5a896db130ca04a9a33ee36040b479fe44ce6e36a58a20de420eaf68d19df845a7c00a6c432d72d234589770591a75655e180da45522c9b89d73ccb5cfd9b70cfb82f42b740dd544cc6ccfda347615e6fbe346f16217dde70cbe2c60c318f1b33533e5a0fb8f1d12de95b0aef5dbc71d296dae23c5763b921a05505f327fe276e65497b77ab801511e6effd1031494eff1812816116df5cfbc51a2ed6125f6c11464b83d35482d42483822fe9c0e29954b4178e30413c17d3fc9afb7941bc60f0132bf6788c78498b678915f2583930180384327f0e03740eeda1eca55a09f10af12be235e20d58946eebea11f14e27523598c288f7da8d47db732c1de26b9cd2c6e2056380e6c5b2a30cad6232a9df8bff0900688e86f8a08a26e223055d7215620f317fc82a4bab97649c4e327c0ced3474f61d065058437c160c6839e27c593b25f7017281c1d277e624caaec43c6a0cd8bada52f7210648c6b78e6080905da6a631c008e8694c99cc8718c01a76e2d4bfe7615fd4c155710371402fbc3a2105862a2dc07a2aab53991ce248647671e77d4e7d79997a521ed5417c431c8b63cf6b4e82cb78974a1b7ea79bde0d68d27a252ae71157255626aed14b84b88ed880bcdd9481d562712a3bb4929bff5fe801a199564b6d8cc516341c7d61c0bfaf7d680b8a9b82018d8d1400d95f285f6539424cc079660a0a8b568a01b1f50b0c90d28cedfb3d5820e6a0d846ec8845a5b31027b6682d764f2acbce1bd7a9407292f900bcbe52ce549307c42ee296167bd77f4875bbfc1003988dbed982e20e8d8634ada9de8360405026b79be68c031fe3ee2785b4b027c9ac929dc8b5f6d491fc36f1236266494f924b8ed99364f561263250c2119e93c4a2c25b59821e1e524fa78712abe1a416f249728458d01b1ee848efc5abd4e4cacff50a198c9c59c443c423c4cc5e27bd4b7ccf9bffb6c1bed9c7741c2f49546722bd2635d1421ee714318f99bb621690a71e0fb580dd4e53b8c8b2b38c93194132869c4fb3b918a3877705655c5592e19555108ffcaecacd6859132de15a4a7214232e227e90e4a6878e38f5964752b9ecd816b5a0bf56f5a2d40f70ff0406485a315f5222c792bb42b2a1c565c415c560505502b7c79cb054465cb5243f4a6c14128fc6caca58341811f9ed1baa24547da333b707fecee6bdfde73d0650ad8d2a509da13a47f505d505aabc974c613ae2b45a95b44e13bdafb63a55ed1f3140aa0c9525003bbb15ec6418e814c5278745f8c8fc3906489da2d71f31a0b393b26bbd67c1005e147d1fa0c6266300aaab0f3140c46d7d0a0610a7d543571290f02ead32ddd64aa6b341758bea0e55d63ed71274bd72359797d42cb23f136a4874b78eedd0bc5ec07ed7a7ed20dd935a3af9a610f0a9ac1ee493c301d523aa9e2ac7a8faa89e503dcb3a562f72584e1066c28057a00f31e09a55d148625f964a0426a6de709b62c01f6d415f18f0af68bfc2800175577434510d681fa21a4acee72e0133a9a0521ca618f0991ccddbf12a11ad878c0edfafa21aa1ca6795378d123d205aabe8559cb259fcb43dd6282544960f4330a6dd1ed5aa2a5e55fff441bd8bdd2f3100d59a8a1d7a7255fb20f26cb54ed93c6380baadff1406540d9d9762af837e7d39c9ac6e571ba89ad42ed12640b5498596a4e6af5a74ec0b983deeb5bc3f4cbd5d471dca36546fc84d92636f0d5a0ce858118b3fb777f69fd4deca00b0e2fe6d541d545d545ba8b6a9a1cf405a3feb6db26fdac032c99aa099824a53e854662acaa1da41b58b2a8f99e7fe448335567daca72a965a3412897d7812c55f0b83698c1ef37d96e5e73d19e4f846b358daba2167def3182450edd3b88cea00d5675487a88ed4602ab1cdddb3b066b3448f0f72335c1d23722997e52d84ea04d569a2acfc7c9fa4d9787c7110aa4af007aa595473c2d10f16b5f8392f7584aa05724aa816c5ef48c29ea7c2fa259fd250e87c7d52e363d2d261dfdb4718802ab333ee90a75361e066fd4d028c9368be7b9cd45bba6cbd9f9f935c11620baaf1f699c995fbf45998be04bd6b15aa5390925e2f4dba22c50039239f62406dae58a3f2166a148b5265f9a23896b3922163b8564effe3fb001dcb9d09350d7d66b5227def1f69d543ed05b5851479ae2d51e3bfafa8adc99f4a9dd1ee8078a324864a1d97437e8598bed3838a1fd5f4a4ff1ed478900afe6ffbf34e40d43614f5d5f3036a5bd476a8ed513ba0a6438be57aff480b49e82225cfe484163ec100f1110f2b7ce445e964eab186cdea6372275cf3520c384cbfee03fe55edd718e06651f3250f54ed84da19b58b8a5dc9a8f53c120c60419ef7f4a718c000809ac82612ceca1aa2f184da15b588da89be5c6765903aa18a9772134017f13fabddc0df0cf98d55d46abc9f3e4874fea91e50ab8b1e909f516c50df43cd909b4fe207d6bb73ead125e2336f6adfd00f3120899eef6977c63bc5c4b71db5266a166a366a0ece8138023265a28132ca2a5a8a4525bb913a1e999dbee91a11ea2aeec9e9ca34b9318715563b32bf31a6c42274bfba44cd45ad0596526b1de51d7544f48bae03b5b857737c1fc7b0530fda1694e4254d3c2fb7b6cefdf9885a1735fecb4ce10901cf9d67cd9a0a4986dedc41dc6c16c354fd8f23f1fa97b8d9e1dd6bde1776c0ed81f1a0262e25b5016a7c3879e97999786527a84da9c4ffcca096154bc82ca4562826a35a4e6e595779d598a61870faf04e38912424b5278b8db5082b5b22e96a79d40aa815517b48e84cd6487c3199ce254b98050ffed052d3bd0e7db0259e2e7791569a490d83fdab1a67488d84da3fdc06df6100b59288ffb5326a155e22d44979911aea6c16bbeb5b5242652fb9e9dd95e60b92f8008d0112ec327d960b804e5e4c9accc5f82f3f879158727e0b03c68f42b1e881e637c9f4905b28eb823a78df7ea807885870467d26912252613baf4ff445797bd4e7a8bfa0be903d5f5fa2be52e3be64f366b5fbd055d122f141d211642d211d2b4f0f65d656590310d69fc4cd4d1ea4fde055c5ff9b7b914081fa2bea6bd437a86f51df51b5a7a2a378008bed54170d6d2ee5af06a7de4f31c0a88820180fe9e949721c458faa5451b68ffa5e75f87cf1c80fdf30e0bb3a68fffef6bf0f03689aa3e526c1006a05aa3b23b78d751fb7580aaa1478798ebfc680b8214ac0432418103e4a09a73aff90d7f8440366caac4e1e5564aad0526601f5336300e5c734e9a3cebb3f403d44fdaa9a863604bd2f81f48b3b619af00188440fa8dfe8ca7aae857aac1ded1f51af52ec93fd281949eb357a79fdc4ef587c2e8bae5c086f6cd4eb3c0cd9d02b915b5137506fa06eaaa84abd02f1ebea4d8a4aaad4925beea438f8a424aafdd0bbdf104cee69e09eef9976de3905f131134f159e3b8f965fe7a0ee4a52cf8b2d275f8cc8ef6d416fd4d055bd58dfaab7680afebe64287a7ed5179803d4dbfc39ea1dd4bba8f3987ba83fa1dec7a14ef683541edee7553362d953c46ab322c53ba3b61885138b304bd9431db1713e882188066ad4449dbb7d467d883a13708cfa4455cb643f4b2a8ba821977b7c92a77e8201982d99fe98cf509fea1a3b1fd37938a1628c7a464df389d64531349db3a8e750cfabcc917aba52264338735816507c669447892f610cb07929737269cc20a49bbecc784ed32efd41924def84ebbceb8aa83fa05ed27572623589c5fbfe52784b9cf766ead498fa3d06d4cb8c0160d56d3892e8eb4e415fa56454ab2c7ecfd148f2e0fe160694dab418c95dbda8685d9e230ca5c6f90f31e0628badb2b98441c9ad80ca900c75b24caac2c1008c198c39e5ce305e28df161a9698a71f24f87cb1d401e445ea8c79f5f945e99515affb780cee5fdf547d6708d2780063c1100b83dfbb82c10f6b31a045acc78fe48c4c74225b63a3ff7926e3f1230ca0273e0201f5d6aaeeebfa481a0346337803d5ab8389fc8501fffa9628b98955211130770a046307632ff75139969d27c22fdc015496ae8f52fbc538c038425ce35fc536627c52db6ff7fd8bb8add4b60de3048337e5052c417717304218571811b913ea36a49846ccffbcc18825c3fecbfa4ff4ff060c7b357f80518551835127bf0083c1867b6bc030f19a85d18461a96b865afc5f360c87b5fedfa55b528317860ba30583a7d361dd45a2c38c2e0c169c636a64d5f419af5bf227f432540f2535822a9d281b5081cf640f55876c05e38982b578e31cf9877d187ce69f610c15ad7448c4dba2ccefcea0bf39ce3d2bf896788bb2624e7c5c4730c6b4e1433b813185918191c58e5f9d93cc62465e04c3584b64193ec90f22410f79a5985045716a3298b02518651815349448ee0d420368cc68e4a331a75b8cc60b1a0b349668ac68ba535dfefc158d351a1b752effeef8a9df1396174cd1d8a2b143634fac92360e681cd1f0d0e0ce4f689ce9f688c68581473854a58cd94a9c3ee735eaf01702344234aeb483c8bc05831e2eb431d188d0b8a1c103aea251d3d9a7d749ae243a7f58a3462c4535fe491d0d038d06562534b8aba62882195f3d6ea47ea762b25868d868f0838b460b8d361a3ae43849273ee1e974d1e031f7d0788228613cc8011acf144c95b913d7d8ca9ccc3919231a98d41ca13114986f8c7492e7b31a5a3d2d007d384eaf4a8d22ad7a9297b031466302d6c61a19da04f4e84ab26ba3465457634f31c69478b459e5e6a4f84fa2b04ad3fadf20a36e2fe2a9b1cc4b158af1108d1c1a79340a6814d17840a3a4b63a8462ffc4d8f9e13af6a63daded499050a38c4605a6e8a3e21fd859d2f35c20b39c950b61e5a8f20426c1043d0c60ce8403ac7a3a0af2437dfddfd2feb118f0be764a9a3f59d11ce61c2f1d982f743ec25c506e0c73097305f315e61ae606e616e60ee65e8b4bb95ff5ff9e2ccccb9a300f30b9670fa6cffdc33cc13cc3bcc00c6086549cc2bcc28c60de741e73e3d3fe7fe0e0cc3433306398559835c90730c8c1ac53cc23376036c87360f216e3ce791896e49e343ec1989f3755a0343f653021a30ed386c9ddba622d315b30db30997a5d988faa5c953baef9416aba9a3da90276bdca095716b586309f28cfdfecc3e4edfe4cf213fe70a436749fddcbbb79fdf6faa686acd8245d7793221e1e2f259fb1299d3b34e215cc08c0df16aaf704334b6611660e57264e5e95a7446552cca1985005c87f3dc02cc12c5324471a66054d8526a109b9276cced09ccbd79a2f682ed064ad6b84e60acd5734d7686efec219bea7b174c5b9a0b9855aa2b943732f50da2ea17940f388a647850265322a7aa1d1104d1fcd139a67a9c439dcaa425548bdb4d0bca019a019a279453342f386664ca371eabb6227bb88e5f49166371f8c67dc56639e729546dc550d4d66a38ca37d55e2ce0dda71e70d344d349b68f21b6d341d345dd4f26ae249e789909e51928c9ab5b4660bcd369a1db0d4b33568cb3fefa2f988660fcd2734fb68f2779ed1e4493125c7f70bff691a16f0b12f069defd319dabdc435a33941738a6606cd2c9a391a1694bda553413903d6e154f744dd2937c547bb9947b3207ba05994ca94ac4bc9e272638297d1acc052b008166069737f5aae67aefac70fe9a6470e6b2ec9aead17580b584b55b329ecaa91018b3f7c15ea596b581baac7b0b6d4abc1dac1d21c66cc0a4487f589bf7004febef68fc58064c08b77cf3bc99b6f1de8f604eb08cb83e5c33ac13ac3bad06948bc9fac00162fd8155624890ae2ecc79d2fbf7f4e2a59739f3758bcd2dc15af741d16ef83062c1356139605cb86e5c07261b5beb756fd99b5e1fe07b0dab03ab0bab01e61f560f15cfab0f8739eda10d608d618d604d614927eeef76b94b33a9f819ab6a93e53c70749806c6561e560e561156015613dc02a49e603ab2cc985b68176bece895ab0ad28d67bac0a580fb0093660cf60cf61bfc05ee8eccaf6fd45eb77b3dbfcee20659ccce0e464063a95e6a3f299f597612f61af60bfc25ec3de807981b990fb3d7b479d3a9d0c0ab3f4bc17832f0b7df61ef6814a25d847d81e6c5f6d86b04f89cf0cecb3a418b22fb003d8216f0fde24b0afb023d837d831ec2aec1aec3a6c4333afdfa6332d8a52c466a82f1bf73cec066c137613b605db86edc07661b7a834a4ce452e09b60d350858ada1578f32133aeee472c2e6a1766077613f4a9e3ebba78a4c87a7146336c36ff73ddbdd27fb4d627db705d87dd803d8cfb0991423d863d8fc8a29ec0cec2c6c265a1e367fad089ba95aa221ffaf2e72a0779ad89a0e59e1cb76058e824370006706670ee705ce02ce12ce0ace2b9cb56e1b385bbccef4dd6fa4cb3e6b9e3b297e38cedd3a799d8a8f925f56dc87a670787dbb70f6700e708e703c383e9c9344f9cd7374aee9b0bb96244fed9e75beb9269c33f5ba62f3712e7002382158a57622383738b19aea52a687519ac1f7f049be8048b9cd84b070aa706a70ea700c380d38261c7e9105c716eac964b939705c382d556e4995ef642ea94fc47faafd9331e0072958df316e5df13bf678a3b4b9c905e3fea026091b5aab8c2404a5e94cbe79dfd91fb7e5f7da80be5b8b3c75ae1043cbee59850b498422958725ff099c8e9c799f8f4457efadc227f2ce7dc03fbc6badfb7984d353533e7b0bb1aaef6bf4d29630da8039519828d4eaa8bd687ae3df255a92075fbb0fe6d2525c5289a52f3c6b10c379a262064e1fce00ce339c219c119c319c091c3e8afc5fbcd77370f2700a708a701ee094d4eea68e4b3e51fa846fbeaffbfa53b7a83f314e9edd52acc3924c7f1b289655eb2f58ae85e05e2c48ec94e154e02ab80417d470e0cea8bc853b87fb02770177097705f715aeaea950f65397f9a22549860f4f703770b7521c461ca844db80bbd3c681be78070e6daa66b1ddd167cae2afe8ac3363eb58e827d5aec1dd8b65dc3dc03dc2f5e0fa704f70cf702f70033d8510ee156e04f70637865b85cbbfaac335e0365888866bcaf5a9a4b279d1fb7f734f0f557803839f36ba4ed57a94dcbdc36dc2b5d48a496493df10b3dba427fbd64a8064a462a6aaa36b992529b8fd3401f5f4518a38f28a4b7d953645bc1c4bb17a31b33eb872b5cb6d3150973d77c58d680dd7953870b7c5bb579b5c7887343e958d966a77679d93917a7884dba6e2abf25e545bd28ac0edc0edc2e5cf7b707911999e03b8cf14f4f4c310ee08ee18ee04ee146e062eff2487987fc23a4d410d3ab285f4b6d7e28512c7d9e3eac37594f4d133c1da026fb3821c93fe4ddf8b5c35e5a509d1789fd04666ed162527d8ebe88efdbed064ff4766fbef6cff640c784b9affed9f924f9c59676a83d345599313ce6c5a9a2eecbe93db33b2fc5fe9f8bb9f59ed6f92e38c8f47ecd192b7e303b55838eac070e51cca691f8be1958731c921f8dc2f78f1aef3f44534d419f63df129825b628995023e84ab37bf49ccdae2b49ae400f84c7ef9791368911bb3be9a76f4f4afe40e2420aefb402c584ddbc273f50917eba7cbad8296a2410e2d420b302b62a6f7a768cdd0d2de47131d1e556ff52ef57757dfc9eb36dfe3dc6f34da74c45348c7b8a2f522793a79eda675b416cc11241d5ebdaea2bcd89a5b4bb45668bda2b5466b83d656ddea582ed0dad1b625f8b131b5bbe44897810ca45acb4147a826a274967fbe4f6bad1c32d4b7457c9382c93c2f9d708dc13e6bfd369d9370536f2e15a445d4d089719483d6019b0729ceb3bb610f9e1a5a47b43cb47cc50076eaa175ea5d86689d55332732f834c9009a93d6ea0b036549592c33e77bfb46e14f6040e73dd545d064e7b8e28d23354d7b77d3fcfda4e883a32bf0f455d614b05c2d24dde126afe30ce427686933ba0ea1badbd31ff545eefdc46952eb1214d5a4f490dca9f26fb59bfcdd78f5c1388f6b181bc19b84816a2f525a3da5a8f0add0a9235f8b7df1766d056a545259265a88d695575f8dca684568dd98bff7b43c918e2da9e97de8906d323e25f5e0eede191fec433edd775d4166c1d39f3f490681443d4dda9d74d2c284f9e8f4826bbdc784d47f458cf8fbda3f1903de9c6abe5552d439691729c71481225d66b4e2645749b2aa2e8bdb3beac7faf6fff3fe773ffc53d8e57592acab34392d924658caf569c1fc5b616b7ec52ffaff23c0cc65674fa407d967c931e013b8f7d1d2291bf9fcbf6de8ca504d06bf4bb4b7832419bbeca676c26136aafd3213a24dfa6424959efa68d5293b96f3ff4d7063b65e953464e927916cfad89331ff789676ff137390d469916ab1ba98a51ea434af7aef79a989a3d032440e15755bdcb7923a82aceaa564d42d25d79d7788e0cfdf312c9dabee5e1a4cea79252f8a533a1cdaca4a1e9c5fade3cfc63fd5a91a92976a4c4d477848913b7dcbdea7e0c422e4bd06962718ccbc861b5355fc7c6c959d881c20814b3529713a65786b88a1592ce6b7373946b0ed93daa83ae85ddc315b669afa743eff4631293213a42df964ffed3233c99bddd34e3b72f3dc2aa550b10f5307a4f7853c0ff77a5e499338b55b8a04bb6b7acdf389cdaab994397227e58e38b6f1c0264556c5a40a53ac014c3298ea3d7cd105efde98af281981f6948b740d99386d0f113d851afb2f621890b4d5fbb75516470cda7ee2b7a3e14d2f56ff986acfa2463c49bc856eb2d32e85b7a68fb02ba58cf797841a52f8bef9dbbe1b7f6bfbe763c0fc1dbb597c77c6122366b22f77afe9a9b3eebc404b437fee2ddf5ea4c59f83de6dcb4440a0d193404272daa7b97b7ef930b1dbfcb9b5f9ee41b8002bcec9593a4c98ef4b206532f8a44e9e1cc5f0af114dbb90cf530af0366545981b3f2fef2986f8745995e4800918684f4d863dc9962cb58507293dadf2fd24afef453c92bbb5c5cf7263fc856be16def9b07f05a867a5c61bda6653b8dc97a331c0b4036d54355aaef3e545316c63afbb1aa267b5d5f6c9ec2b3b62fc97a25ce88fb80ba2135d04bccd093a2cc4b2870d1d51c0f6fa8c65cefb7e97cb8634f9a11e192b6c913a8421d2b6561d989fc656da36549e5cb948d0e7822cca3c55336d15f451428a80ceb4347b5f7b0b1ef94495481ab9a6c123efbe178a61aed74e7e9c098bd26ecfb7b29f8ae5f5e7b494c09336e9699b45148fbf66ceedb35482b552ce76ffceeadb0fbb7deeeb762fa06db4e31e063db487ad1ad8fa77ec5e60e969e56df1f53cd580b4322c7bcb4b949725fde9f09ba272311cdaf2ac02941f2d5940fa4b9afa57ca9da3949759d5fac63460b91fba5e873ac15091d6e6f18f61dda6defd6bfc48c997018890efbcf3a05cdffd918f05e034824cdddfd2e6ef76ef339624c60001723af2357c10907b13ebfb07d5f9be55ba60709c1e78d187998ef126770cda1b4b62e366557650fa9a9411ff24ffbffce8aa5db46c636b405547822ae29bb9675825148db17ad86db2225097489ae4346ef77892639cdefeacb5d3b7e127189dfd85caae8285ff076228ee598b30c69354baa48caa11257d4d4049146751d3af7da38beceb0ff7ebbefeea4fb4bf701129f31d06e155d6d55e8a6ab9984987ab5a49897b03f66d6d98cac4b627c383ce9ea8c917c9268e5cc3d1336ca8dc7cc8de7521aeb623e9678af279020d70f53b18108aff15269743993dc82b5dfbed3bb4bc46e9a315f129368d135a979c963e04f265d9920eb913cfe849e99ab1897dd66cae304e76aa21cec128eacb199472e26c776522246d33c4a341e5a7db81f74fc302b7c5a3265159309a58b9b2636fa6fc2b55680446afec6d7587e8fd17213de97ce8bb18147eed598383af7a27fc79569ca04df1a53deb0be995376d7fb983f1867723cb9e7f3424a20b0d0cd672dbe4818b94e30979a9b788b66b368b5b47defbe27a5cc839c6bad8e670441759d9fb4b8d832b107b4d39b80b40471416bc01f828108fb77ce9e2691ace93889efa799cefd30a5c77d9a0963ff28066126b28e21ff1ff3baff49fb531890f0a0b730ceaff6d5beda57fb6aff80f6c6d8173f62005a9df75abcfede5fbcbefb6a5fedab7db5aff6dfda16ef8cb192bc9d99ff9b1e90e808c777dcdffb178ce0ab7db5aff6d5beda7fa4bdb1f48566f573cdf6535bd04cc3802298fa016f9f7cb5aff6d5beda57fba7b49966ef6fac5e3ef9fffedffffd3fff3f5f571ef9 - - - - - pbnSelectOutputFile - clicked() - OpenModellerGuiBase - pbnSelectOutputFile_clicked() - - - leOutputFileName - textChanged(const QString&) - OpenModellerGuiBase - leOutputFileName_textChanged(const QString&) - - - pbnRemoveParameter - clicked() - OpenModellerGuiBase - pbnRemoveParameter_clicked() - - - pbnAddParameter - clicked() - OpenModellerGuiBase - pbnAddParameter_clicked() - - - pbnRemoveLayerFile - clicked() - OpenModellerGuiBase - pbnRemoveLayerFile_clicked() - - - pbnSelectLayerFile - clicked() - OpenModellerGuiBase - pbnSelectLayerFile_clicked() - - - pbnSelectLocalitiesFile - clicked() - OpenModellerGuiBase - pbnSelectLocalitiesFile_clicked() - - - leLocalitiesFileName - returnPressed() - OpenModellerGuiBase - leLocalitiesFileName_returnPressed() - - - OpenModellerGuiBase - selected(const QString&) - OpenModellerGuiBase - formSelected(const QString&) - - - - openmodellerguibase.ui.h - - - pbRun_clicked() - pbnSelectOutputFile_clicked() - leOutputFileName_textChanged( const QString & ) - pbnRemoveParameter_clicked() - pbnAddParameter_clicked() - pbnRemoveLayerFile_clicked() - pbnSelectLayerFile_clicked() - pbnSelectLocalitiesFile_clicked() - leLocalitiesFileName_returnPressed() - formSelected( const QString & ) - - - init() - - - diff --git a/plugins/openmodeller/openmodellerguibase.ui.h b/plugins/openmodeller/openmodellerguibase.ui.h deleted file mode 100644 index 70cfb9cabf41..000000000000 --- a/plugins/openmodeller/openmodellerguibase.ui.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - -void OpenModellerGuiBase::init() -{ - //hide some controls that have not yet been implemented - cbxDefaultToLastChoices->hide(); - textLabel3->hide(); - progressBar1->hide(); - //this is really cheating - I am using the char arrays creataed in the cpp file after uic has run - //to set the images - pmAcmeLogo_2->setPixmap( image1); - pmAcmeLogo_3 ->setPixmap( image1); - pmAcmeLogo_4->setPixmap( image1); - pmAcmeLogo_5->setPixmap( image1); - pmAcmeLogo_6->setPixmap( image1); - pmAcmeLogo_7->setPixmap( image1); - pmAcmeLogo_8->setPixmap( image1); -} - -void OpenModellerGuiBase::pbRun_clicked() -{ - -} - - -void OpenModellerGuiBase::pbnSelectOutputFile_clicked() -{ - -} - - -void OpenModellerGuiBase::leOutputFileName_textChanged( const QString & ) -{ - -} - - -void OpenModellerGuiBase::pbnRemoveParameter_clicked() -{ - -} - - -void OpenModellerGuiBase::pbnAddParameter_clicked() -{ - -} - - -void OpenModellerGuiBase::pbnRemoveLayerFile_clicked() -{ - -} - - -void OpenModellerGuiBase::pbnSelectLayerFile_clicked() -{ - -} - - -void OpenModellerGuiBase::pbnSelectLocalitiesFile_clicked() -{ - -} - - -void OpenModellerGuiBase::leLocalitiesFileName_returnPressed() -{ - -} - - -void OpenModellerGuiBase::formSelected(const QString & ) -{ - -} diff --git a/plugins/openmodeller/plugin.cpp b/plugins/openmodeller/plugin.cpp deleted file mode 100644 index e8e065016c38..000000000000 --- a/plugins/openmodeller/plugin.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/*************************************************************************** - plugin.cpp - Import tool for various worldmap analysis output files -Functions: - -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// includes - -#include -#include -#include -#include - - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include -#include - -// xpm for creating the toolbar icon -#include "icon_om.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "openMOdeller Wizard"; -static const char * const description_ = "Plugin to run openModeller in QGIS."; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -Plugin::Plugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin( name_, description_, version_, type_ ) -{ -} - -Plugin::~Plugin() -{ - -} - - -/* - * Initialize the GUI interface for the plugin - */ -void Plugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon_om),"&WorldMap Results Importer", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Biodiversity", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("WorldMap Importer", QIconSet(icon_om), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Biodiversity"); - toolBarPointer->setLabel("WorldMap Importer"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} - -// Defined by interface -void Plugin::help() -{ - //implement me -} - -// Slot called when the buffer menu item is activated -void Plugin::run() -{ - OpenModellerGui *myOpenModellerGui=new OpenModellerGui(qgisMainWindowPointer,"openModeller Wizard",true,0); - //listen for when the layer has been made so we can draw it - connect(myOpenModellerGui, SIGNAL(drawRasterLayer(QString)), this, SLOT(drawRasterLayer(QString))); - myOpenModellerGui->show(); -} -//!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating -//layer -void Plugin::drawRasterLayer(QString theQString) -{ - std::cout << "DrawLayer slot called with " << theQString << std::endl; - qGisInterface->addRasterLayer(theQString); -} -// Unload the plugin by cleaning up the GUI -void Plugin::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new Plugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/openmodeller/plugin.h b/plugins/openmodeller/plugin.h deleted file mode 100644 index 90c068a55035..000000000000 --- a/plugins/openmodeller/plugin.h +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - qgsworldmapimporter.h - Functions: - Buffer - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include - -#include -#include - -/** -* \class Plugin -* \brief OpenModeller plugin for QGIS -* -*/ -class Plugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - Plugin(QgisApp * , QgisIface * ); - - virtual void initGui(); - //! Destructor - virtual ~ Plugin(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawRasterLayer(QString); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/openmodeller/portuguese.qm b/plugins/openmodeller/portuguese.qm deleted file mode 100644 index 6bd22c41dfd9..000000000000 Binary files a/plugins/openmodeller/portuguese.qm and /dev/null differ diff --git a/plugins/plugin_builder.pl b/plugins/plugin_builder.pl deleted file mode 100755 index 443d7bf1bc23..000000000000 --- a/plugins/plugin_builder.pl +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/perl - -##################################################### -# A script to automate creation of a new QGIS plugin -# using the plugin_template -# Authors GSherman TSutton -# Feb 21, 2004 -##################################################### -# $Id$ # - -# get the needed information from the user -print "\n\nEnter the directory name under qgis/plugins/ where your new plugin will be created.\n"; -print "We suggest using a lowercase underscore separated name e.g. clever_plugin\n"; -print "Directory for the new plugin:"; -$pluginDir =; -chop $pluginDir; - -print "\n\nEnter the name that will be used when creating the plugin library and should be\n"; -print "entered as a mixed case name with no spaces. e.g. CleverPlugin\n"; -print "Plugin name: " ; -$pluginName = ; -chop $pluginName; - -print "\n\nEnter a short description (typically one line)\n"; -print "e.g. The clever plugin does clever stuff in qgis\n"; -print "Plugin description: " ; -$pluginDescription = ; -chop $pluginDescription; - -print "\n\n Enter the name of the application menu that will be created for your plugin\n"; -print "Clever Tools\n"; -print "Menu name: "; -$menuName = ; -chop $menuName; - -print "\n\n Enter the name of the menu entry (under the menu that you have just defined) that\n"; -print "will be used to invoke your plugin. e.g. Clever Plugin\n"; -print "Menu item name: "; -$menuItemName = ; -chop $menuItemName; - -# print a summary of what's about to happen -print << "EOF"; - -Summary of plugin parameters: ---------------------------------------------- -Plugin directory $pluginDir -Name of the plugin: $pluginName -Description of the plugin: $pluginDescription -Menu name: $menuName -Menu item name: $menuItemName - -Warning - Proceeding will make changes to Makefile.am in this directory, -as well as ../configure.in. Please use caution. -EOF -# ask if we should proceed -print "Create the plugin? [y/n]: "; -$createIt = ; -chop $createIt; - -if(($createIt eq 'y') || ($createIt eq 'Y')){ - # - # its a go -- create the plugin and modify the build files - # - # create the new plugin directory - system("cp -r plugin_template $pluginDir"); - # remove the CVS directory - system("rm -rf $pluginDir/CVS"); - - # Substitute the plugin specific vars in the various files - # This is a brute force approach but its quick and dirty :) - # - # replace [pluginname] in template with the new plugin name - system("perl -pi -e 's/\\\[pluginname\\\]/$pluginName/g' $pluginDir/*.cpp $pluginDir/*.h $pluginDir/*.am"); - # replace [plugindescription] in template with the description - system("perl -pi -e 's/\\\[plugindescription\\\]/$pluginDescription/g' $pluginDir/*.cpp $pluginDir/*.h $pluginDir/*.am"); - # replace [menuname] in the template with the menu name - system("perl -pi -e 's/\\\[menuname\\\]/$menuName/g' $pluginDir/*.cpp $pluginDir/*.h $pluginDir/*.am"); - # replace [menuitemname] in the template with the menu item name - system("perl -pi -e 's/\\\[menuitemname\\\]/$menuItemName/g' $pluginDir/*.cpp $pluginDir/*.h $pluginDir/*.am"); - - # Add an entry to qgis/plugins/Makefile.am - # We won't add it the EXTRA_DIST since we don't want to necesarily distribute - # third party plugins - #open MAKEFILE, "<./Makefile.am" || die 'Unable to open Makefile.am'; - #open MAKEFILEMOD, ">./Makefile.am.mod" || die 'Unable to create Makefile.am.mod'; - # read through Makefile.am and write each line to Makefile.am.mod - #while(){ - # if(/^\s*SUBDIRS =*/){ - # # add our plugin dir to the SUBDIRS line - # chop; - # print MAKEFILEMOD; - # print MAKEFILEMOD " $pluginDir\n"; - # }else{ - # print MAKEFILEMOD; - # } - #} - # close the Makefile file handles - #close MAKEFILEMOD; - #close MAKEFILE; - - # save Makefile.am in case we die before done moving things around - #system("mv Makefile.am Makefile.am.save"); - # move the new Makefile.am to where it belongs - #system("mv Makefile.am.mod Makefile.am"); - # delete the original Makefile.am - #unlink("Makefile.am.save"); - - # Add an entry to qgis/configure.in - # Do we really want to do this or add a message telling the user how to do - # it? - #open CONFIGUREIN, "<../configure.in" || die 'Unable to open ../configure.in'; - #open CONFIGUREINMOD, ">../configure.in.mod" || die 'Unable to create ../configure.in.mod'; - # read through configure.in until we find the AC_CONFIG_FILES section - # while(){ - # if(/^\s*AC_CONFIG_FILES*/){ - # # set the flag so we can look for the closing ]) - # $inConfigFile = 1; - # print CONFIGUREINMOD; - # - # }else{ - # if($inConfigFile){ - # if(/^\s*\]\)*/){ - # # write our entry - # print CONFIGUREINMOD "\tplugins/$pluginDir/Makefile\n"; - # $inConfigFile = 0; - # } - # } - # print CONFIGUREINMOD; - # } - #} - #close CONFIGUREIN; - #close CONFIGUREINMOD; - - # save configure.in in case we die before done moving things around - #system("mv ../configure.in ../configure.in.save"); - # move the new configure.in to where it belongs - #system("mv ../configure.in.mod ../configure.in"); - # delete the original configure.in - #unlink("../configure.in.save"); - -# print out some end of processing info -print << "EOP"; - -Your plugin ($pluginName) has been created in $pluginDir. -To build the plugin, you must change to the top level of the source tree and -run ./autogen.sh && ./configure --prefix=\$[Whatever your QGISHOME is] && make && make install - -EOP - -}else{ - # user cancelled - print "Plugin not created\n"; -} - diff --git a/plugins/plugin_template/COPYING b/plugins/plugin_template/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/plugin_template/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/plugin_template/INSTALL b/plugins/plugin_template/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/plugin_template/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/plugin_template/Makefile.am b/plugins/plugin_template/Makefile.am deleted file mode 100644 index db45649a8186..000000000000 --- a/plugins/plugin_template/Makefile.am +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = lib[pluginname].la - -## qt designer user-interface files -plugin_UI = pluginguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = plugin.moc.cpp plugingui.moc.cpp - - -lib[pluginname]_la_SOURCES = plugin.cpp \ - plugin.h \ - plugingui.cpp \ - plugingui.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_lib[pluginname]_la_SOURCES = $(plugin_MOC) - -lib[pluginname]_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CXXFLAGS) $(GDAL_CFLAGS) -lib[pluginname]_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm - - - - - diff --git a/plugins/plugin_template/README b/plugins/plugin_template/README deleted file mode 100644 index e794b646a5e4..000000000000 --- a/plugins/plugin_template/README +++ /dev/null @@ -1,15 +0,0 @@ -############################################## - QGIS PLUGIN TEMPLATE DIRECTORY - - T.Sutton 2004 -############################################## - -Please do not edit the files in this directory -unless you know exactly what you are doing - -these files are used as the basis for creating -new plugins. Altering these files may break -the automated plugin template generation process. - -Please visit: http://mrcc.com/qgiswiki/PluginDevelopersGuide - -For more information on creating plugins. diff --git a/plugins/plugin_template/autogen.sh b/plugins/plugin_template/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/plugin_template/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/plugin_template/configure.ac b/plugins/plugin_template/configure.ac deleted file mode 100644 index 29b0bb22ecac..000000000000 --- a/plugins/plugin_template/configure.ac +++ /dev/null @@ -1,52 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(plugin, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([plugingui.h]) - -AM_INIT_AUTOMAKE(plugin, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(QGIS_CFLAGS) -AC_SUBST(QGIS_LDFLAGS) -AC_SUBST(BOOST_PATH) -AC_SUBST(GDAL_CFLAGS) -AC_SUBST(GDAL_LIBS) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/plugin_template/icon.xpm b/plugins/plugin_template/icon.xpm deleted file mode 100644 index db43e7ec2764..000000000000 --- a/plugins/plugin_template/icon.xpm +++ /dev/null @@ -1,273 +0,0 @@ -/* XPM */ -static const char *icon[]={ -"22 22 248 2", -"Qt c None", -".j c #7d8074", -"bY c #404d2e", -"#. c #5c5c4c", -".H c #5c6050", -"a0 c #767672", -".V c #5a5c4c", -".c c #6b6e61", -".d c #296414", -".W c #9ea155", -".i c #6c6f62", -"bS c #99a454", -".I c #c6ca57", -".k c #505e25", -"bO c #164c0d", -"#w c #666a47", -"aa c #6b6d4a", -"#P c #15710a", -"#C c #18730d", -"aO c #7c7e3d", -"bc c #2d591e", -".9 c #525241", -".G c #535746", -"#e c #17630d", -"bZ c #283715", -".U c #525443", -".b c #636658", -".e c #215e0a", -".X c #b5b94d", -"#B c #54654c", -"a1 c #1c620d", -".l c #295b10", -".# c #3f6117", -"bC c #295519", -"bI c #a7b43e", -"bX c #68695b", -"bT c #aab445", -"#K c #616541", -"aN c #63635f", -"#Y c #666944", -".q c #48561b", -"#Q c #126f07", -"bD c #1c4d13", -"bb c #7a8348", -"#2 c #9ba434", -"#O c #9fac30", -"#o c #696a55", -"aP c #7d892b", -"b1 c #374023", -"## c #979a48", -"aB c #acb236", -"#v c #7d8156", -".w c #827f32", -".a c #3f6119", -"ba c #6f774b", -"bE c #10480b", -"bn c #9e9a2b", -"aZ c #6f754e", -"#3 c #066901", -".J c #c4c851", -".8 c #41462b", -"bd c #135c08", -"b0 c #353f21", -"aU c #615d2a", -"bR c #2d4821", -".f c #0c6802", -"#k c #a7b424", -"#A c #929a3a", -"bo c #848b42", -"bv c #1f4119", -"a2 c #24690c", -"bH c #27491e", -"aA c #717454", -"#d c #73774d", -"bN c #787b52", -"b# c #7a7e40", -"bW c #8e934c", -".m c #145a06", -"bJ c #b3bd39", -"#j c #8f9d2b", -"ao c #b4c224", -"bP c #104606", -"#J c #81864e", -".x c #90902e", -"bw c #b0bd36", -".A c #92a329", -"#7 c #4e5b2e", -".r c #2a580f", -"#x c #b1c11f", -"an c #787b4a", -"bp c #7c8547", -"ab c #b8c421", -".B c #4f8317", -"bQ c #26481b", -"aH c #63673c", -"bU c #b2bb40", -"#n c #909640", -".g c #115b06", -"a# c #7f833f", -"#X c #858c46", -".y c #9fa32a", -".z c #a3b02e", -".2 c #696f48", -"aj c #767d35", -"#p c #096301", -"aM c #95a03a", -"#a c #a5a943", -"aC c #b0b72f", -"#L c #b9c921", -"#Z c #bcc520", -"ae c #829131", -"bV c #9da446", -".K c #a7ac32", -".7 c #354623", -".T c #1f4413", -"#6 c #154612", -"#u c #b2bb2b", -"be c #0c5e03", -"aY c #7c8444", -".h c #15530a", -"af c #5a881e", -"#f c #046501", -"a7 c #7f8038", -".N c #878f3c", -"#8 c #8e9536", -"ak c #979f2a", -"bq c #255315", -".1 c #77774c", -"bG c #1f4a16", -".O c #6d8f26", -".n c #076401", -".Y c #c8cd4a", -".M c #898b3c", -".L c #999d33", -"bM c #949746", -"az c #aab32d", -"ai c #607a26", -"bF c #0a4c03", -"bu c #154710", -"#c c #959b45", -"aw c #99a131", -"ax c #a7b223", -"aV c #a7ad1d", -"#I c #bac329", -".P c #428112", -"#U c #8b9242", -"bB c #8c914a", -"am c #b3ba28", -"av c #8e9c2e", -"#l c #abb823", -"bx c #bdc82e", -".S c #174310", -"aI c #a5b229", -"a. c #b8c024", -"#W c #bbc527", -".3 c #4b7e20", -".0 c #9ca237", -"#q c #035a00", -"#D c #056401", -".o c #0a5804", -".p c #0d4f07", -".v c #0f4d09", -"bj c #898d3e", -"ar c #8a9a2c", -"bi c #8d9944", -"a8 c #a5a223", -".F c #104408", -"#4 c #056900", -"br c #194a10", -"au c #859d23", -"as c #6d8c22", -".Z c #b1b933", -".C c #046501", -".6 c #2a491c", -"#i c #7d9125", -"ap c #b3c024", -"#G c #6e7d29", -"bK c #bec636", -"bh c #507126", -"bk c #a39d2a", -"#y c #b7c71c", -".Q c #016000", -".R c #10470d", -"#T c #2b4c19", -"bA c #a1a23a", -"#E c #065204", -"al c #d1db15", -"#9 c #d7e115", -"ag c #4b900b", -"bg c #235d10", -"ay c #c3ce1c", -"#V c #d6e318", -"#t c #b4c11b", -"#F c #1f550e", -"bl c #aea11e", -".D c #035002", -"bL c #a4a83f", -"#H c #cbd718", -"bf c #006100", -"#R c #006500", -"#5 c #024b01", -".5 c #025700", -".t c #025f01", -"bt c #035301", -"#g c #055d00", -".u c #075604", -".E c #094804", -"#S c #0b4a09", -"#h c #0d4500", -".s c #0d5a05", -"bs c #0e460b", -"#r c #145b05", -"aG c #153908", -".4 c #31790d", -"a3 c #3b7a0c", -"#s c #4c6816", -"aT c #546528", -"ah c #578413", -"at c #598a0f", -"a4 c #6b9012", -"aF c #6f8619", -"a6 c #758238", -"a5 c #798f21", -"aQ c #809918", -"aS c #98a61c", -"#1 c #9ba433", -"#N c #9fac2f", -"ad c #a3ad2c", -"aL c #a3b230", -"bm c #a6941d", -"b. c #a9a71e", -"aE c #acba20", -"aq c #aeb923", -"#z c #b0bd26", -"aR c #b0c016", -"a9 c #b1ad1b", -"aX c #b5c620", -"aW c #b6c01b", -"bz c #b9b729", -"ac c #bbc820", -"aJ c #bccc24", -"aK c #bcce26", -"aD c #c2cd16", -"#m c #c3ce26", -"#M c #c7d91d", -"#0 c #c9d31b", -"#b c #dbe435", -"by c #dee41a", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.cQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.e.f.g.h.i.jQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.k.l.m.n.o.pQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQt.q.r.s.t.u.vQtQtQtQt", -"QtQtQtQtQtQtQtQt.w.x.y.z.A.B.C.D.E.F.G.HQtQt", -"QtQtQtQtQtQt.I.J.K.L.M.N.O.P.Q.R.S.T.U.VQtQt", -"QtQtQtQtQt.W.X.Y.Z.0.1.2.3.4.5.6.7.8.9#.QtQt", -"QtQtQtQtQt###a#b#c#dQt#e#f#g#h#i#jQtQtQtQtQt", -"QtQtQtQtQt#k#l#m#n#oQt#p#q#r#s#t#u#vQtQtQtQt", -"QtQtQtQt#w#x#y#z#A#B#C#D#E#F#G#H#I#JQtQtQtQt", -"QtQtQtQt#K#L#M#N#O#P#Q#R#S#T#U#V#W#XQtQtQtQt", -"QtQtQtQt#Y#Z#0#1#2#3#4#5#6#7#8#9a.a#QtQtQtQt", -"QtQtQtQtaaabacadaeafagahaiajakalamanQtQtQtQt", -"QtQtQtQtQtaoapaqarasatauavawaxayazaAQtQtQtQt", -"QtQtQtQtQtaBaCaDaEaFaGaHaIaJaKaLaMaNQtQtQtQt", -"QtQtQtQtQtaOaPaQaRaSaTaUaVaWaXaYaZa0QtQtQtQt", -"QtQtQtQtQta1a2a3a4a5a6a7a8a9b.b#babbQtQtQtQt", -"QtQtQtQtbcbdbebfbgbhbibjbkblbmbnbobpQtQtQtQt", -"QtQtQtQtbqbrbsbtbubvQtQtbwbxbybzbAbBQtQtQtQt", -"QtQtQtQtbCbDbEbFbGbHQtQtbIbJbKbLbMbNQtQtQtQt", -"QtQtQtQtQtQtbObPbQbRQtQtbSbTbUbVbWbXQtQtQtQt", -"QtQtQtQtQtQtbYbZb0b1QtQtQtQtQtQtQtQtQtQtQtQt"}; diff --git a/plugins/plugin_template/plugin.cpp b/plugins/plugin_template/plugin.cpp deleted file mode 100644 index 00adf09c6ccb..000000000000 --- a/plugins/plugin_template/plugin.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*************************************************************************** - plugin.cpp - Import tool for various worldmap analysis output files -Functions: - -------------------- -begin : Jan 21, 2004 -copyright : (C) 2004 by Tim Sutton -email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// includes - -#include -#include -#include -#include "plugin.h" - - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include - -//the gui subclass -#include "plugingui.h" - -// xpm for creating the toolbar icon -#include "icon.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "[pluginname]"; -static const char * const description_ = "[plugindescription]"; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -Plugin::Plugin(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ -} - -Plugin::~Plugin() -{ - -} - -/* - * Initialize the GUI interface for the plugin - */ -void Plugin::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon),"&[menuitemname]", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&[menuname]", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("[menuitemname]", QIconSet(icon), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "[menuname]"); - toolBarPointer->setLabel("[menuitemname]"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void Plugin::help() -{ - //implement me! -} - -// Slot called when the buffer menu item is activated -void Plugin::run() -{ - PluginGui *myPluginGui=new PluginGui(qgisMainWindowPointer,"[menuitemname]",true,0); - //listen for when the layer has been made so we can draw it - connect(myPluginGui, SIGNAL(drawRasterLayer(QString)), this, SLOT(drawRasterLayer(QString))); - connect(myPluginGui, SIGNAL(drawVectorLayer(QString,QString,QString)), this, SLOT(drawVectorLayer(QString,QString,QString))); - myPluginGui->show(); -} -//!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating -//layer -void Plugin::drawRasterLayer(QString theQString) -{ - qGisInterface->addRasterLayer(theQString); -} -//!draw a vector layer in the qui - intended to respond to signal sent by diolog when it as finished creating a layer -////needs to be given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); -void Plugin::drawVectorLayer(QString thePathNameQString, QString theBaseNameQString, QString theProviderQString) -{ - qGisInterface->addVectorLayer( thePathNameQString, theBaseNameQString, theProviderQString); -} - -// Unload the plugin by cleaning up the GUI -void Plugin::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new Plugin(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/plugin_template/plugin.h b/plugins/plugin_template/plugin.h deleted file mode 100644 index 8659ceb780b3..000000000000 --- a/plugins/plugin_template/plugin.h +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - plugin.h - Functions: - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef PLUGIN -#define PLUGIN -#include -#include - -#include - -/** -* \class Plugin -* \brief OpenModeller plugin for QGIS -* -*/ -class Plugin:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - Plugin(QgisApp * , QgisIface * ); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ Plugin(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawRasterLayer(QString); - //! Add a vector layer given vectorLayerPath, baseName, providerKey ("ogr" or "postgres"); - void drawVectorLayer(QString,QString,QString); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/plugin_template/plugingui.cpp b/plugins/plugin_template/plugingui.cpp deleted file mode 100644 index a3e32c51a8c7..000000000000 --- a/plugins/plugin_template/plugingui.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "plugingui.h" - -//qt includes - -//standard includes - -PluginGui::PluginGui() : PluginGuiBase() -{ - -} - -PluginGui::PluginGui( QWidget* parent , const char* name , bool modal , WFlags fl ) -: PluginGuiBase( parent, name, modal, fl ) -{ - -} -PluginGui::~PluginGui() -{ -} - -void PluginGui::pbnOK_clicked() -{ - // - // If you have a produced a raster layer using your plugin, you can ask qgis to - // add it to the view using: - // emit drawRasterLayer(QString("layername")); - // or for a vector layer - // emit drawVectorLayer(QString("pathname"),QString("layername"),QString("provider name (either ogr or postgres")); - // - //close the dialog - done(1); -} - -void PluginGui::pbnCancel_clicked() -{ - close(1); -} diff --git a/plugins/plugin_template/plugingui.h b/plugins/plugin_template/plugingui.h deleted file mode 100644 index 9df4aaae9689..000000000000 --- a/plugins/plugin_template/plugingui.h +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2003 by Tim Sutton * - * tim@linfiniti.com * - * * - * This is a plugin generated from the QGIS plugin template * - * * - * 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 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#ifndef PLUGINGUI_H -#define PLUGINGUI_H - -#include - -/** -@author Tim Sutton -*/ -class PluginGui : public PluginGuiBase -{ -Q_OBJECT -public: - PluginGui(); - PluginGui( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); - ~PluginGui(); - void pbnOK_clicked(); - void pbnCancel_clicked(); - -private: - -signals: - void drawRasterLayer(QString); - void drawVectorLayer(QString,QString,QString); -}; - -#endif diff --git a/plugins/plugin_template/pluginguibase.ui b/plugins/plugin_template/pluginguibase.ui deleted file mode 100644 index c5e15b1bb308..000000000000 --- a/plugins/plugin_template/pluginguibase.ui +++ /dev/null @@ -1,186 +0,0 @@ - -PluginGuiBase - - - PluginGuiBase - - - - 0 - 0 - 491 - 431 - - - - - 255 - 255 - 255 - - - - QGIS Plugin Template - - - image0 - - - - unnamed - - - - pixmapLabel2 - - - - 150 - 32767 - - - - image1 - - - true - - - - - line1 - - - - 2 - 32767 - - - - VLine - - - Sunken - - - Vertical - - - - - txtHeading - - - - 5 - 1 - 0 - 0 - - - - - 24 - 1 - - - - Plugin Template - - - AlignCenter - - - - - teInstructions_2 - - - <html><head><meta name="qrichtext" content="1" /></head><body style="font-size:12pt;font-family:Arial"> -<p style="margin-top:16px"><span style="font-size:17pt;font-weight:600">Description</span></p> -<p>This plugin was generated using QGIS External plugin template. Please modify it according to your needs.</p> -<p>Tim Sutton</p> -<p>2004</p> -</body></html> - - - - WidgetWidth - - - - - layout1 - - - - unnamed - - - - pbnCancel - - - Cancel - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 441 - 21 - - - - - - pbnOK - - - OK - - - - - - - - - 789c7594c76e23471086ef7a0a4275138cda8e1360f8a09c03a5cd860f1d669433150dbfbb877fb516b04493047a3e564d75e54f0ba3ef07bba3854f73f79330394da37412ee460bf9e1f2f2e5cfbffef87b6e5e57a3e94feb9199ff6d6e7e3c19a5d1def5553705de1e8094f24629f063e150f858b852c254e4952df2a3c2beb0061b1795065f81ad0b0a97d39ab0b745be22fcebfdcbc2756105f6555b780bdc546fef27705b35459ec16930578357c1d915fbb453b8510ef25e7888d743fe00ee7ed93f2c9c95055f837b678bfd93c259b5e06561df177bb85f2be75482fc33d8d8a07ac8915fed6dab1ac823380efec03f5a07774e6bc809fe1863b5cad07f2a1c35ea49c8a7f1de6ab97f17dcb8a4711f1b70673b037f09ef0fca7dd1473d6d657b837a318153a5b4e4eb79ca4e392fef7307aebc17ff18f973a169c51ebf80934b36826fc0d96b27f540bdbdf1c68a3f90fb5c2523f105705f192ff7ef17b656f2773be56ae85723f24de1e11fb17701d695f6626f47b876255fa85f35f49b457d68f2c65ee2ff0e7655eda47fc7e06a904bfca21fabde0937c27567c59f76cab50a5ea39f08fd5adbba2af6970ad70efe91b06fac95feba070f1f27fe5d09b7a6f403faad6e1beb2ae8ef8173a34bbe3cb86fdef2857a36aa71c27c0a36756f657ebe817d93c41ea17e4ddb642bfbe20b38b646f2c117857b23fa2c1cea925fec9726b5da0530faa7c96debc43f0bee5a6fc57fec87a66fb341bf10e2694ddb39e9af5770dd0687fcd00138062dcc3f0b3b8b7925f44f9b83977ea6457037f4a7c47306ee8335f08fc78593917c9d4f39a8d0598957d84665243eec8fe0a32bfd57839b688df88bf90d717050ea87fd14523456e66d63ca51c52cf113e28b2638d1e73be1184b3ef6dfb8cc0ff661745117f9bd70f265de2b7095bc91fe137b75cc5afa55ee8fa92e72f4434c2919c9df59e1aed417f39e4cca5aea85f91bc6bb71922fecc75465a3655fa23e29774a4b7e7f4c39ab1c4aff62df659b73d92fd857d9e5beec13d42bc7ce957c61be73372c44b1e70ab75aeaf315dc7749ee1f4f667f99384ccfffd3e1c889b33ccfd6e18e7b3ee693d93a7cca677cce177cc9577ccd371f75f896eff89e27fcc08ffcc4cffcf25e875f799197867399577895d7defeff8fce3a6ff0e6706ef136eff02eefbdd7e17d3ee0f1701ef2117fe62ffc95bf7dd0f9ce3ff8e7702ad66cd8b2633fe3ae8a6b6eb82526a24091d2471dcad4514fc77442a77446e7743143e792aee89a6ee896eee89e26b3e2a2077aa4277aa6177aa5455aa2e5f73ab442abb446eb78dea04ddaa2ed59b5a01ddac5b947fb7440e3993a8774f4b1c2f3fffc3ef72f81bc28dd - - - 789c4cbdc772f340b3653b3f4ff1c7c1ecc40d3609806e7007b29fbcf71d770080840c45ca5094eb97bf20f7daa90e8db40204ca646565656565fdaffff9cfcdc9e17ffee77ffdd7fca3f878acfe533d14effff99fd1623afdf9dfffdffffb7ffeebbf3b9dde7fb276e73f9d416790ff27fbefffe7bffebbb899fca7fa4fd26e8fcbba27f008a8ea54e02940be02e73b01ea1538cd0123c0c903605c972b70791b60a49fd401f493e31250d72ad87115a0ab97de0728f48e7100bd746b4da0ee50d2d32c40a577f0d93aad877a621440253d3b09305e81ab3b40560f56e0eb22808afe7506c8f9cad779002a5700bad465fb22407f057e4f02e8b3df6900bde3bb03e8f1959fb300fac9cf7900fde4f718d0a7c57e4e03e81d5bbf800195db9a030ac0691a402fddfa0294755be023807aeefc5f00fd64db05ab28c7ef5100f5dc8fab3f72572e00635e7a340820393d6e012c3047c3006ae49fa3006ae49f8300eafdefcb00eafdf3ed006aa0d3bb00aacb557b053a63ffe446b2de69644ce3657104c8e897b51b404ef5b7be01053f39ad02203009a0a4a45bef0178c72760c43b7ef700637ef2b51f4025fd3d00b881be6f02d0408701f48e9fe3008cb97600bdf47d16403d77be1540d57f7d0e40134a92d366ecab9117fa4ada8c393db13800647c767118402fdd7c00e416dc754097829d8c01055ff96e034a0bdd2ea029889e3837a01c3f7b801aa1fbbe0ec0b83d0ca0727c5f0540c66e03d08465009574b61340257df90d80b62c0230d4f703302a3756206bda432fdd7a035860ae6e03f0c40fa0a2e8bfff006e8faf23036a3bdd0b80fabc0d80cad907b881be0e02e82727a3002ad8e54d0055ff773780aaff7d1700e57811409f5d5339f2d0daeb19c012b4f50228a8dc741f50d11e9b156044d13fde02e8272f3f000bee6c37804afabb03f010bbe80690046d9f0450ab6f1f065039b60f02e8a547fd00aadcf6590015ec56135fb76ea30b6fd7036826bcfd05347a4a0d9407505d6eee01037ef2750a28ac935f012545bf2901b60c3ede0330a24e00235a7df6cf80cf7ebc06e027feac15fdd7710075e54915403fb9bc02b8d5bf0e0348e8b64f03e81d47bd006af5efb300aaede57500b5fa69270042a7277a4d0331a2668072acca3d6f032a0fa0dd002ad84d05b01adf1c07509bae5d0650e5364b8085eeeb2400254d02a0c77600f5583f79fb30a0915f6f03a8a457d701d4d9af9300b4e97100b5e9d75e007d76a882f59bbf95a970fab10b28da92d3750d8f7e23a72afaed0f20a5a49fc780012f5d4f01435afd8b97366229d1debc0fa06e586f032ca7cf5b01d4a66be701f4d9976fc0c876502b0012e4a2db4239bd0980c15a06c0b41e036a46c3992b671be67c330086e25e00bd63731400fd711440edb176110075b11f60f5d9d6bdfa76d0aedab5fa650f30eac8a69b4a60064d13aa1c9ffb0154f4cf43806dbab5b3006ac29321c0823b790fa0baccb60330894f01e3b1a4f0280f80ed706940679f1401d484f3af0092d3abab0034d01f406bbb1c1e1e37230346e5fb34808afe7e1380f1f20756ef68252afab069e455c1ca560618b7077aa26bd0515d166ae46123ebd89609a0a4606b2701180db706d465f20618d11e6ba701d40d1f2f011862470124309f0700eb8fef63801be8f4da806ed8de0dc0c8be0bb07a69eb497529daa564ac6a1d03aa76a9270a83ceaae75aa55abde8346bbc55130e2f01697bd5eac92eefe8e41de454e5281a9dac823d6f024a9be73b01a40cd63b000bee4d0df0b8ddfc0352284719a01e33252501d4846f7303caf17a1360d540ad677576d91e76568d5cf63b80b12ad72a9f0175bb2381e919742441a5269ca6453b2ae94266601956df623300d37c0b508d99810a03e463b11b402fbd9d03c64c6b8b2d035e7a750188ea1f079004bd3f1bd01eefd70124304f450095e3a90ca021b6f9f784f4d858c644d5fcad44aaf57a1e60d5b7ad971a50f3442573a36a444a6d3afa032bf968d5a701508efb0612cb64e706d0eda891d755974613323cd679e24f7dee0550032d0c6c7d4e28476329e91d8b7f06c8e9623b0086d10e805159b634e646ed7e476ddafb020cdbab9fb47e1f0085aa7ffa7100a8549716adbe041ab7e50b60a421d64afa01344cab3960accfb650f4a368f5f17e804aad3e0fa0af8c559766fe41f8efaf009d8eba72f30390f293ea0d90b5b18235678fea2142b75807d8dada4c00237c171fb300cc62c78031dd30ff34a02b675b012496b77ea26644dd7e04d0f0d8de09a0de3fdf30a01c4f498055bf24738d9771d3516ac2fa0880ac57ad53838e5a6cf1021823c9f34e0035617d1640dd707f63209ddc1af91deeb9791a409d5dab819a1fb435cf3def197404763f011d84ae3e01a49ae75af8e9c6eeb956f56e203d96fc1b02fa92c2caef484b15acd8d182663c1e58af03eac15823aada0258073d64068ca8873c804aba2603ad6e54ac9af0e703e0497c3233485597ef5dc00885f26fdda0a3774c6f03ac64ac7ade018c69e4cf1740adafb4ee2f0268cc6daf05508b6df92b356dba90fea89b7ed1407e7f0ba0e9f5fed280824de601241faf6700f7dccb7d008db9c98741aaa2df0e012975d99b0790583e740c3a2ac7f40a90e927e520057455d262416d9b495c7aec8e466ed4a7c6dcdd5e008db9e93f804dfc4f1a39f4e93a9f6dc6a0be724dd11b227dfa360bc092e73200237b1140ef28af02e82b67470134d4cbeb0048616ac0d87f7d0a2049fe980650c186abae6c3ab2ab4158aab6cb21a8915df43e03ac7e526ace5e024c85a72ac0aa6049d5058c11dcaf61805539cae7cf00123a0da02540f36fbc026a24e8a12dd02049d0e6c2c0a3e126c04093560ae8a0613e5f03486076be0016a9e9750015ec7762c068783d05641a0d657d00c8195123dab4113a8c895d03bd23f9f703e863a095bf0259a5a217773b02b5f74e9e3700157d7bfb0eb0359e1e01c6c8c7ed570066b137032ca5ad67403d967c1ca501341aca5600cd6265124033d0fd8d012fbdbf0da082bd7c05e8ca32582df09a4e28e8b9e70340950aac8f014861d97a0b201df4ef1b30a6d5bbc700cf2f5feb01b01d1606a97ef25d082c7b465f7907203065fe6940effffc814c75d901584b5de50124b89f59004d8dd50b002dd57aff0820d1de882758d02417013480f22f40ce5c39de0374192fa3f7007ae9f62fa0a7979643bf7420906c3f1ba81b923dfaa5136229edd0a9fb68a95b4adae842e9b18f47c0186df9e62742f55d05d04fcacb007ae9a81b40aaef3d7e82f0cf17012430c96a0fa769e2520d540cdf0115ad5ebe06d0f0e8fa2723c6fec633c022f57d00f0a2a83b12687410f34b06e8d0c85f5b01fad2745f80147531de00647aa27af805e41687f700d21faf270648e1da7d0089f6ed23a0cb3beeae02481cdee7013480f6fb01560d94dcfc00866ac22a39071492b16a32154807b6947869388777de03c8a4ddf90474ac94e886669128a5540c0163e463f212402a47d37c0362369d069096aa5b01d8091804d03b467900c9d8fc2580644c9eab155049679b06aa4b399586c91a138ef9a50d18d1d9d90c30eea0b63a005627c5f02980bed2fb36c04efe5449b3e5ecb0ea97d101a04357ee7d02522ca5dd9f001a0db2601b906138cb325801895492012c74bf8f01345ebe360268566f95802ee3e5f7c980a2af3f0440afef06a03de6801e6aebfa10801fb7e8fe33d0882ac79b8081aa9f5c5f000a097f92df004a4abab70fa8641726fb6700169ac5a1e6ca6cdcc530dad1fc9235822b29c432c8ea94696d41238777e396ce6e541f5b141303b4d4743b80bef2f201f01270f61d40a3613c04585b2669007df6ed3d8044bbdf0d20d17e1d0590d0bd3e0690d0bdcc0dbc587d08a0da7e3c07d0c8fe780ab0aa6d5549f873bbd49297216084483d8d0c58de7fce03a8f7bf4bc01817c167370073e507800154662f06c8c78b4665ee5563f9721240b2febe0074a4fa8a6e16405ff97c3790a24fc65340aaa9a04a8e02ac3e5b3d0d0d2485653e0fa0daf65e011956f0f1b70136ee513c21392d33973467007db7005d2a977d1a30e6ca09a047ab0f0601f4959707030a76e377f4658d27e7f30052b0dd1d03bae1df1a608052c2726c40aa41b87109c0e7985cf9b3a5c67e922700b60692fd73000b896247432c1fdbffb1437bd419723ae3896610e20da40963bcfc6e05d078799f0450efbf5e0720cee03200e3651c802d9bb700cc0d5f0614ece53d800650fb2e80ead26e07906dd951df362b5366e4c51c50697814ed0430a6e7e6dd007266bcf6046c90b4461f01646edc1d0450574e3e0d52a9f19b5f8057e2d33b03e697c53b2065a8d7fe0a066ba9adb425c0fa3cd902e4fc643e0da0827d519710ed854bdaa5b6df7b801e7afd77dd80055ebd1f40ebb9b51ad0c70cec0e03c8409387a401439c5dc91980e9a41cde04d0678f0a40a99226dded00c87a1f50a9e8c94106c05353cd2452dd1403ad38a4c562063a3c040c319c7766000bdd8e54dfdfcefb0edd50e728e9197ddb0c0f8d86e95a0009ff94ce0edfc5fb39c0e6d76b1d8009e708508f25da6fcf0154f4d78b002ad86b15803dadc7002ac7fb5900ecb1d700789c55975edbbe9cd60250629eefac1974185105002764c91ab9175e858b0ac0ec510c240ebde53a69f5c4e55600d9fce303408a3ebd3e3590355e25c7007b04e4a55d02a9cfead1c0d6d63c3760e5891aefd945506ae76c052496f7fb01a42ee619a0c7985bbc059076281e007d8afeea92f6297aeb2880bae1f81f0013bfd51f06d010eb8e0d30bff68e03c80ac6ece9c5101bdf079086390cc052b4df0aa029e96c0628f4d9b2fb07a4c736e700e697e2fd17c09e6792bd0650490f68f514d3bab0048dedebdbe127cd101338a42ecd10638b93a2d725a2fd5a02aab146f61b5d598f46d863e70170fcbf1930c4a63f0154dbdae51833a2924e00fc418b001ab7cfeb0198a3360cec319a023c90af07013490b533b202ec9cb502a8fad5660035e1da5100d5e5f52180867afbd6c02e574d6bfd6625ae21f67c6820d14e9e3f002382396e07012485a75b003b10cf360d58239fbf05d03bdaaa4bdf0babd6c55d808186e9c440eba8a23305e0ed295b2f01d451da5a5c820cfffa2d80bda4f2e1d2206317f01c6075f17e6180d577f51a4023fbceefb0fec8f7004c27559505d0d4a80dff25408fbd3c05d067bbae1c9367f9ba1f00b398265cfee91d8f01300472c080baf49e0d18c88b2c80f4faf33760a8bead0ab7d8104371ff2a80faa5ec000a94e394deefb06593dcfab31846d59394413f65255eeccbdce81759c5d8d778e9ff8d7ddaa35999638e52d26609a83177b80bc830f2e63340c9d87f3f055423ade770743780f162d10eefc6cb2280ac4f572e06f21bdd10a3b2751740a3f2fc37804a3a9905d067cfd70330cddf0750f52ffe7ea282ddfdfd443d7727453f882dacdd5f0304e6640de05dc069dbc0ceae578394088021a0f6e4a9161b783d97cc6e011d6fc55f0490e0b673408a7774760ec07f5a5ed7013447692f7a09b082d305c0432cfd0da0af289269095028476f007c6cc9c32880aa7fe7afb05a2bab678354a312c536f0f2ad189e06507b7c0660109eee0618cafeb834d0c661f9701d406e97ec01d097e994ec9d18d0625fbd00d2749f7f4fb0023e0d20a3a67518401d75bf0118607eb53e0ca8fee02e00eed2cd00525b8376004d05a57b6ea86ea8aabe01364cd50ba0a25fdc00d8e02ea79b0164e4f58b00aacb247e827ccc5c7d6b189d19590134ddc4c0deaffb005239933303ada3922b3f5121da171f0134598cb700f6496f590a47d874978f005c26c51bc29fb289916488658af3af9abe002c304f0cd37444f5ef195119134ef5c850cf3cbfa05006995dbffb8ccaa2697f819b002ad87e0730aa345e0e655b0eea3eeb9719e568d4a794d26c1d50b12a789e03463cf1f219406aab600035da5273f6f711a0796405d8381c84d973d409a0829d1d0450c1cef60348c19e1d06506dcf7f0248c15e5e065049d7ff804afaf92f802ad795240fdb76da1f3e01f027b70e5a0134dfe2818f40bfe2ae08a056effd001cfe72c44f22fce5f823007b387d034faf27003c02652709206b2bbb05b0ab51258706c8587116404f3cdd186492b1fa1e90316e9ffc952c539bb2ce1e2e7d79faac7f62b1ac1f026851743530c0e3fc76124096419503704117dd348036635f0f0c70966797009cd455791740caa09d1960b224feac5749fbd7012463f7a3002a587117407e87dd0b009aaef59d045057761f026805bc380c203b79bd06b0d55a0e6e03485d7c3d07506ddb2e3aee8e62eeae2cd1da3f8b009ac5366600fc1fc5b3bf32c285d42f01565b972f809ad9e31cb14cb1c68bd76100097fba0960b32dd9a5a469aa89af7af6135d79252b66c26136a22e879ac4878d09a76e38dc02f8b44f1b39ad0bfb503600a54db877408542617e19c6d6c0cb2bc05b03b3df0032f2eeb6036888ddbf01c6588e934703bec232611811ccf3f700faecfc230061f3ff00d685ddb901da72fc158050f38b002cab9f0270ee240f40c4cc460094d2660015ec6ecd80a568577376d1b6d7fadf17c013df9e013b01d5e416e0fd7dccaf06e0937ee0a58ee96d9d6c1b10057d7000c0f15fb40b03d4c5f40840fc47f1716b20194ba687808cb082fe18907b93eb358022ccaa1440404839bb306095c46a7e0950f4b300327bc61500bbb0992103e889fb49008da8b18bde43c1deed07505776f3006af5f631c09aae7e0ca0be1dc613040d3cf40348929f5cd2bec67ea988aa15d0ba217f060cb43352ddff01668f8b00aa5c711940a6f5d93f03545fef3e80867aebc140caa01cdc00586896bd3a806cdce2ef09f55cebc400d37a700d70e8caf77e006d1ded9e07d020ac5db942d52f3344bb519ffa6c990660f5ea2708c04c4e5d172cb672e8728c58474d33c098e8c1410b50e3da3ba11b5202a88ad76f030db1e408916a445d9f4db7005dcd0dd5d30fa062543e68ad5e646c2f14cc734563f549e5ecb70175c5de2b83f06fab9506aa5334cce126c0072e0f77003d9fb2f9055468a9e97a00bd743e07d8507c5e0ba07e190f006354df09fa230cc5d66d000ed35e06d04f260f01548e6119408d7cb715406279f71b80a34c5217a58fcc942d8dcaf26fcbe6cb80c0e9c31ad0e1b0423504b01bd9ea5e00bc024e1f0039de9ed91980ed966a5c007a980a3acab4029a4d89eb5b02993de513a02f294c7652c00043f1eed60015dceb06d0a87c3d0ca0eae70b03c6dce439808c9a5bd705077371b21f40cab17e0aa0f17255049072ac4606d4657005b061743008a0ca8ddf0268b13a3c0fa07da0e1c440aaaf18ef07d04f30264a6f1db572579f4d8c6a540450f0c2894b5a61e36e4c0dacc79e02683beefe208096b38bd3001a954fee5b828dcbe71f001370f5f007d42fdd170334fff82a8054df413f8014ca9ddf31c687d24f0cf0073d7500041b172f16cb9a269cdd056010321a520f8fed1f039a70426d5382b08a375a3d2550b87a36c8311409d12c530c92ea9ebe4d6d9e3fad0346722214fb0cd3a259f10a20fc8dea63494cd19ba18d031171688c4d9412456f6c4be22e18d98d96c292fe0aa0ba246dc0189f63be19400df4864835569fbef29805600bfc2c808afe980690967a2d0248608e87067cf6e82a808afef8f784ca71be1640daf2e23980b4e5e579006ccb6900497251069024e32d2ec3b6641056ed92f0a8ed2f80858eb0d72590fa3cd54cb83c76a3baec7502609eb7000e143efe31c052daef01080869f516062c56e7f1048eaa87590015ace597660483b52b031cff2f93006a0f76ef2b87025604d9340b2f9cb2ef9f0134678ffd04db82d5781c408bd5711240bab0f50bb037f07611408bf7b21d40cee1fc1d306047530794574043bd1a04908dbb4801ec02160f0f01a4d8f20f0302522b979490c4e46b12408be6d1b101437d143fc186295cf44261c045f218404afaa70694d285050aa5b28156328b2d81c4f2d522554a9f16e32a80ec539d4b5a01f5fef00c501123505c0550efe72f01a4f9bbe7013003e327f2f456ad78290ee64df78b43df88835d02b54769391d51f45e2b800a36b9067096a79a5c0590b1d93d09a09de6630b0ca1b3c9094297b2166b5dbd05d04c3818023a78048e11dc466bab724f6900bdf4621140f6fa148149091a48b0b61a8015fc9601726cdcce7100660fea92b22f564d69b1662a90d15bfb271c99a974fea553e50cb1822dacaa990aa4500e35e1548d492bd0e189ba40393ed31e7589c665a3ac0a1b77720ff0c6f21743ec4fd17702907ae03000994a0e0210f67a19409f3d6a07907d7a746320455fe281affe4e0d5c0790b36b781b8025f14300698764110027c24f00226565c18e96c758572f6dd5003c9b49a1c96214c1f98b8f009ad5ef9f0c52b67d9e01c4e2274f7e075abb1a0d0d6419b43efd52fbc6cb9b0012ba641f90dba8b935c8d87a2e010473548ffe6cd743ac0520d6a9e8cc0cf0e2b3ac1e3998a3aa3a068e3e7e33c0a623b667649d5c55c30092e4512b80daf469164026ed8e3f4bec4672fc60e029c975196a83bbe8e5006fd7769f031056b019404a29bab24839fdf41640cae0770d40906ff5f81e40f6297bafa30ebb91c9e037807e526606b22dab5901e0e463997f1bd0a6fdbb005239afad009a2b1f2c0e58d2c9c77a00f56dd90da0813cda0d2059af4e02c887727e06c0d84c7a96a011f3fefd5b004dd18bf809aedfcc1de53df1711d404a3afd04f88c55761340bb6f55118092fe01b5e9b3fc30a3d48736dbe706de9ebc3260105e303c52367493ab9e014e15763546b6d78bea38804cb85d3aaa31e0d1fc086e4abc43b2e3aff434cd57d305802daceac9ef18b03fd739092049de47071565a5a971ff12109b5c885433dfe3aa404e2346e01071089b9fe5eca8ae50c1ef7cb61ea3a489955c02298349008c6f8e998c1a252df5891b6a1453c1fb43007cc1eb01983d3602e8b30f7701c862f52f80cad1ff30a01ce54500b5d8681180a3e5df01d8d1148853bec9c323a04338d0d90e20634d88a534f6567cebb36780bb63bf0674094845af8f234e7a500690bddef567eddda8ab00985faf00a2e58adb5e004d8d7743406c5f5f049081966c1868ecb7ae32009bd345751e8011b516800d19bfd4fab49806509b9e2f02c8d81c5c0690b179bf6b90497fd4130007a6caee1f5034433d08c006d5b581155b1e405363e1ba54b8085efb01d4d983cf00d2dad9dc803d9ca21340eaa2e5da8e086dcadf0c68f55e3c615f702f804cb827d76524655012fb35ee70803d492d743ebad37b0c203783929a35ff7abfa15705e0b3c300529f67142c65abb57a7a34605bb0ee0690b7a7bc0f4058f44900199b2324397584eabf5f800ff7ec3f00ba9a3c5b7b8b007a62f70b80e3ae38e41d75869b72823834ba4063ff12290c77e9631b508f3489e30b5e02121b9d0720b1d15d00e9a0a3db00fa6cd10fc036d893016e86f65900b6e2d5d9b537869247adf8e2e07875ff60c06185fb1d00679bcaeb2703d662e39601a25dd7012441d71380cfcf8def0c504a98e7b5f7a28b6e3780b49412a23680ade7a4fe32609a7f7c06f435cf25e7df80214754cfcf03a8b387850162d9bf0d206530889f302a2f7e00055b03e5c2c0fb62a7013036a701a4b626970618578f6f00bb3a3bff0c98e62fee0368203f0c0210fdf3144083f0fa0080c5568cea0092a03c35703cff690045ff5c640154976b97a3c25468f92b585b45eb3980baa1bf6f809bf27a16408d7c710d201543727a1f400b9ade85011df5d50fa0eaf7ff05d074d2b3248ff15b3ec54f08f57a3902d46898ec2300266d3b0013f0388074f2b9544e9dfa986bf6648023e2a26d8063e6fb3a0053411a406dfac4308dddfbfbcd0018bd74549a6a67356137720954d2eb7303fae58a7e49337d36e108e212689ae74c51dd188ab2d7bf5d0e5242249c38ac53877bec0f0d34e68a77bf83e88ed61e6dda188a9a0ada6eb102139fb34d7551957a47aa95785d0f319d26086ea3f9a42daff8496cf8cf1601a4718966a843e3123e57871978d20da097127d5cffb908fa01a4935b3701a493d72f0290a8f62a8086d8e3208046c330de41e5c69f01645d147f4fe0115869bae5aa812dacaf57035b7d9702f6d226ebcf01a46037df006cd69777270042abab871700bd9f8cdf016c8127d538006eca3b033652f7fc134ec7258fad005a6ad443034e1d3ded065023df3f025889b7ae5c30b6b04ac5a0ad008107a981a37f0e03a0d88e0d58bfbcb91c0e6bac67062c56872701d4b7d2632ba04158b8910bb6f42ea780d21b43df06787abb8f01d86dfa174052b83b0ec09ee783814356af0c3249e1c0efe07869a9cdd81590827d3b0d204be97ecf406e97e4da1d35b238bc0760fb7a1e40d5ef3e19584bfd0ba0ced6fab6013e66d2390ba0de6fdd07506dbb16076beddabd6f4371a713404a69f8148053adf47e4a469d329b04c021f2cfc06e6c1ab9596713167d1c40a6e4746e6073e30f68886d7f07407fbc1b6007c9f9b702d2b89d4d00076193f12c80d478f118401af76264c022e02903644850b76540e50e69f5147bacd27ec372ba6100c94e5e020ce7c71d83144fafdbc3071e765cdb1ea11aeb6ef5be2ce96a5603067630af01864c7c33d7a56e134bcb98cb892c2fa67c254e0c3df60063a9f1b2fa03647a46b41b8d2b19fb5a0b40c2a98b0032e11ef300e4e8de0cc026d77700f54b360aa0d160fd11d6f8b86f30e650de7d0015ac1de560d2f278b1bd9e2859762383acb45a8a994823c94af26e401c4af159003226f1fa0240b68262b70674d1da1b1300d94eaa7a64c04afcbb0210e15eeaf4d37259859bf2711140169b12e52fc7020befb50740819be1e72b802428f5670b447b7211402d76fd12400b897f9b000230cb8b7600cd732fa706e8c2fe4d004ea43e032a8ccdd3006cfad5d3007ae2ce9ff504fc390e2023efe12100b9a17a01d42f4aa2b102aa4bf11c4076d0e810c0ee6c727d134043acb56fe09dc4df009a81eea70154f4dc5d89d1dbea7d18609eefb503a82eefad00d2a76bae7eadf8e4e2dfa740ea14a1f2072d01ad7eb01b40b555acc20ac830eadd18a02d2788e5f23b52e3cf06ecbe250f013889b1054871dadfbf03328c8993f5006c706f1b107e7b1e3fa1fa37df007bd094926a05d40df7734097ea8f3e0c98e637720334ffad2bd723f2eff03400c1f9ae2d07c8cadd1703cecf5d7501032f23f70268641f3e065023efd0958d0a9648dd2030293bbcadfdfb00a42f704989b44f7e370432ce0315fb9a2c3a45bf604b8fce2e868574f2fe09a02ca460f77b0623d6849ac53a8d7ed54baff300c47fbc0620db6b1f30466b5f9d0690f17d7516403af991160b9bffa41500ebf32200c74ba70170cbfdbd8318b4ca804dbfe423007afd3280c64bfb3480b617ce3580d2bf588531a04fe8ecfac800cf667d19803b64ce03689a1f0d0c1851690db0c03c9c0108066bfdcc0d1c67300dc0e52533801daaeb8f80d2b11b1f01342ad37b039ca1750920416cd2726d2b6f3fdd02705316592f80ccc08f3580cfac16af01240ec934807a2e790e20cd7fb301f036e9addf4186a1a4bf1d4026ed6011406afcfac120658f4fc3345d9a792b303f0840121eaa9f72dea3fc383640c19ef809673b51cce60a689eeba70108e63804e4540ec3a80194a3a2e71aa5240fc9cf4b004d38f910d06364afd31e69dfa7d23a06a8aded5900929b5c00bca0992701c866716220fbb49a22fc29d9708af3b601e6a8d2ae36604c376c4b29a5193b67855274a56951a050f611eda22e39b3ca4fea0c53f2f007d0230ef69a77d4152ae79a26b4522aef698f46a1c8b4969f7f0524740f0cc2b03e1fef02484eef8f0248196cb602c855b1d10f207d7a7f1c40fdd2b90cc0798f9700d2ebe96b007623f300528ee55f49d5fbd586010dd4be0ea0f6689f045057ca9fdcf4022ec66426359e39d164a223ff2b20d1d691eee57cec85f718d02764f5721330d05aac7a7833609dad5b441ae008d5edd700ec36f9b3589fa5ee075a016e88b93760aedc5d000a9981c5e0c9802879b96d57409abf370220ebd5fd6b00cdd97b7e6999c9bad8705d88642a95e67c0934808acb7842366eb9bf1640437dd107607d96895b6cc46aed7e06c03b5ace2e036877e571db20e528a44b6a67e8d95b00b5fae027800a363b0d20b3e76ccf0053729d8e7216894a01fe2bc09c3d35d0665b723a0174585732452f019b3a5d80f72c307a978000ffd4006df9b969c0c4577d03087e2ac62706aca3d61e03688a7e7f0d209ddc1b18a06075e5d40a30253d07d08cfcb80f60efa438ef18a8e7922b579fbdf9e2f73e80baf260db8046fe7907108495745c0e6bed2dd7859dd572d00b8038ec028684e07dbb6045c6367a05607ba138e1271929db8b7d69a9ac31f2b00bf70210c489ac8709b7bd1e40e2d03937608d3c413b340a16fdf11280ab7cfe0520d5e0df4f38d57a0bb04e2e3a01d0c9270150c1c300aacbc620801a4881a02b208324ab02a82e452f00615a45002994ce4500825a8f02605b8e0cbca5771580584909ff32759ae4745001383055de6e02fa84687e0e0d7010a52d80c33df0c12e53966995a438940690b1beb53632b0c15a074017de0790686fdf004a34ffe3cc00914afd52828e5adf3b800a4df7340b805d580590df72d40790fea47af832602ad8fd3040a128f562039c097cf3d3802d4e258c5901aec03832f041a5d7006a539d8b5e5a635617e300a4e77b37605a1b52b9d8cf9ebc06c03bba6e8087a4ba06383ee8e4d1000b36dd0d20e1cfb3002445dc08c084e3af7488b9da4a01e475aa9e1e0cf03b282e6709507d3ac4ba026a75ddcdb102aadc959f706ce0f43d0093f8009073607beccfe69881793b808afe716480359e6c01ba4ce21f370658b0a9cbe14d8cde5b00ad5f36ba01d00edf00a78478c903483e667d03269cd679003db1353290822df791d394e33fe5863b8a9db372fb2980447be6a2fb70cf68c700b1dc7a0aa065e4d14b00f993afdd628e32d1455f4ba02712e5426ac08838e9fd4100f5cb27633f75a4db13229591e7bb7ae42b59b74d7498b4765ef487eaec7dc64b51d867c04f623a49359de48d792e19bb4e03a85faebb01f809c26ff3bc4ce60108e43a03d49cc1bb3f0c40a6f81b033ebb7e1e8088cc76000de4741640e5a87e034870b3eb00528ec33fa036ad7e0268561f3c06c0a2ef0690688f17012463ada81cfe8ff6b10147445a7a47d741be65eb1bc0a510e5cd07804198e81cce0a60081c079035feec7790cba475f11040ab828f2d006116d5c30280e15cdc5c04d067d7a701b4018161d48de005e5704fff320bead0771a9905cbfa2a80268bfb97009c9d3d0110085ade1d06d0b4569c1ae030c386e9fa58564b9740ae00c7f6ae02a81b2efe191000514c02903f48f67ad7eed252f725ad00177ca60668bad35703396593fe1ec0410353bf836495e5db7100f50be657378206eab700ea97bc134045dfa7b353f69193debd01c6a68eddac804afa41f597f3d80a1cec0490485dba2e390ee6d1118033dec9b1bfd2c5b7f57112006d499b8687f56b10007bfd3880e6eca3ab001cfe42a4c207fb7a6740e57610cbd439bb36da06cacc51eeb909c9d7571e6c0550136ed506aa6d8903a09b7a6359616b2ba0c0a5e3af004442faa578e18ad71f032cfaf5a300faec86bbb2ccf4c4da57003db1e6bead54b0d6ed13c0b92a74f86b0508ce7f06906cae58f34f089c4eb619d95986fdb1cf106b343fa7050f02487d6e33a21abdce2daa7476a3f9d462e8c2256055b01d40eb28b69ebb112172cf400e457f7f6e20459fecec059042d9ae0210fb751c40256d5d076033f62d8006503f0f40baf57900ad1b5e5e02a0e8d70368ec0fbe03c823a02c89e9328ba64aaa18b4b417d991fb35805369e5552b80c6ed93df51e00b563efa34d2482693bf27c8d7d707f874fe531740506bf5f0198033458300aa8bd2253780b08264fbda8058dac7d7006ad3b40ac0454eae1c77b6558f2f01487be682394586929a2de398f04c24bb01b071d551cb0c989275f4c712c892deea07e092d09101fa43d93c970a87a9f1741a404da81b1d970065d02903a872ad0980088052c70896806db0f32480269c9d37039c2ac78f00d22616593f0086f36e00e2d7d701d8daa5d2d02e011ea31e1d95767d186e33805c153fae7e0f5381cdd89ea30892ee5e0072fc6f1810a5a64bec5780f384fd002a183bdebdb46fa3f73e80c6dcc3630035f2783d006b313fe15c6a97cf0134e19c7f0540d1f70c68f55de434e5b44f2bfd31607a4d5d390ef7b44edc62e8f5726b6c90e91d377e47c9da63ee26ac50c1372e18d92c92eb4b404de57489fd0a68b218d1d959495e49dda9d3002725dae72b8d38a24f35bff41a150cd80ca05199d1958d92d2f48a71d5b3922e3eb703e0ed390da0de575ea7068c2b8d97cea7012ab8f31540bb91dd9700dcd1ce78096fcffa59009543b798ad80ea52ad05e010fc5300ae16b80b40ead6d3005cf6f3f71552d92601b863796cc03ea12e826b6c0b8647f5b4088062eb0370dd24bad36f05b4907832187035dae6950111223a9e9e4656d1969212a57dc75d54ba95a90125a2ad1b721be0835b774700a219aac97900146c3f806a7bb1638081b63b0fc03dbcf15207611d03c656c177061c0e3cf64b6b6ca9688fda7afd3e80f6e675f3d7721d8ecfe0eb2d00fe8f03032c4765365e01fde48cafa41c712f36770db0b66e0e0d5834ffdb001089502a31c90ac8eb34a1f753db413833fa8e44285bb300aaadeec05c014de2a7ae4b26455ffef34f485d92ec9401347be822da252002e01b8149c9a754debb2ec42a146c812f813aeac52d664b3a7d0aa092ce8f02a8a4afbb01b4d29ab82ee4d92c46f70648e13c9ea0e81f2e7a9f8edab80ba0a2d77b01386dec4666c7bbdc7a08a025e0d495c31a4faeaf03b0293c01389e3f6544a58c9764dbef28a5715ba73b0134cd6f3f1a48af97bfa300d4250554f8835efc84a3e47f1995e958ef28c6ae2ddb2dad432a97b5994e8ed6016c2c576c4ef7f3114efb439992fdbacfe1e24f04b7d1eb4cd119c09119d3af00d2858b3f80e7bb0b185b059f06606dfa1a80fb3c3f02e00bde09c0fdc8eb0108e6b805d8804fae0dd80376ef3740ba70772380144a791a40f3cbce7e0076bd1e02682a783f0ea071ab4b425780f46bd28503df1a5a293f5d3a8863371f9a0907ce33510e4e0164f52ac7c700df30551c017869a2cc934b807f7d960620c2ec12402046eba20454dc66b2fd1680e39423030cb44537004b8d570346d4450760fffaf82400b722fc3370c8ea04302667f9fcca006d39380ba0debff667c71aea2d14ecc0a11ae59556050307949557098078dce46613e04c9cd5ad01b908881019d8055dceae0ca8edeb5100d5f68bea3b2742a9f49e2b80e37f66809d3cd80b4080cc6300cd95ca25bf04acc4ef5c0ec76eacef0760ef75d700ab8f08a2818339cab40a8047e0d480afecb8a484142547e3004430df19a0e8cb8700dc0b78037022e3d951002c836d031c557b2e079bf5457561c0fc521f062023a8eb429ae2e466dd8038e9abb901b12caf0380e35008e46a80346ea2fb921a80155c5601084d38db0e2005ab6b111b30a291f790d3944346c5cb7900b639a42d07195b3665b26dc0febeee6b6c00f90cca29e250f74a1cdd085d5d9133a3c801237461facf40eab3fcc9006c9316ca12b002dc4e7900a879e9f76e00cd733acbb304d2a7459106d0404eae02a86f7737039053e52400b35816401d35fafb8af4c7f80f484e2fa5c786be3732794b00ceca83e13c740688e27c0cf035f7973b0698b40f4700828e92ad570019da8bf3dc0047843271a67f995abb1b060c8ff600e01089d4e5a82d301f01f48e1b69eda1c35e8bdbae814676951c0052c23d944e6a091851d7b7003685cbf9a1012a67ed2400e1eac700df61a76c7c4bc04e22e1ea4ba0dec7c13cfcf3e33e045003f59200ea17ddcbd3008ccde2ab0c404efb7f01309cbf0d3025273f01b04fe9a8b4e7484837508f13dcf7b47a4aaece72f72d80fae5776140dfb28dbe045c2fff648082d5dd824b90713eaa05f0810725cd5c025a5d3707ae80e67d5d23ba029ae79e10cb507d1f6701348b297978f32f1bedc5fd4300fc85230342898bb7000470af05d0a83cd80770803db9f80ea008804bf70b517b49eedab2262c775c9791fcc9c5a6ebc2ade5e521b29eb1b02a74b2be014cd1e5c9b501f94feffe805a6cedc78035e1470688601f3f914ab44b76458759e6fd4a443b02fd3ed7026811d0db06e0bb4874a7ce0a30cf9501a4b60acad1e85352642c02a81b1e4e01350930be7e03a8f7934b037e52c74f28c7200f20e11fa501548e712f0021123b01f4d9ec2080f4fabb64bdf0d546e5f808403c5da5dbc3d2c2b170e5cd02e00cfedf0f002cc7e27c00209f74ebeac38040f28d5b804f83fdba1c2cde8be7d420e5409dda6399871527c2b101deafdf7f0004a62282b9885885f2238054f0dd450009ccfeaf01479988ea2c52a7d9e8ad07509bf62b0347543d027c4906c7901ae02c892d834c1af73a01f8629a7f2f062c01395f59a45c58586c1e19a03edf02608f4dcf02a8b6a50bd6cbb86a92464eb9f7ad9abe19a0d74fe701a42dffbd1a288f5179b90d70328f76c700374339063856a1f31c402ed783a1818f32b93d86d445b908568065f534807aeeed12e0fc749fe701d4406beb015452e5ec5a027232253340c9fc723f0ea0affcfa1d24e2285ad300dc979406d0148d055b78a3acfc7d0820c5b6e1ea8f68d37fd3004c38168731fdb27e1c40a3f2cbc3a3a6fa1cc98c9cc3c9c69501c6c40cc1cd32ae0f4f10980c3f4c31bc03b083577000a488b88bdfdf00f4dc66004d5a6dc65ca371d4fbb7cf01b414eda601f495743b001e818300684bc66ded8442a3cc808211b25a385830d9476d85cf60f46e808b602f9ec0a46d5d05d04bb3dd004499ec075049b37f013479ea02a5e5ca8391adbb5a970e24545fbb0ea0771cbd03882228d62706ac80cf350897c95d65c1eadabb25f011e6c300846a1870855f892919e95f93ef3b03e4f4fc02400440f9d635e0846eb207200eb6d8a0b61195952601b4062a8e015d6757ef1830d44f5f0c724c381ac8aaaffc745dd8df2f9455740588741b0450130e1f039072e808e0edfcf7e3001a95ef8701d473fb3f0027534f9f0310a4b7668009775204d0137d83c21111e701f495b50d834c5d79f10bf0b1f0077fd6593407e701380c7716809efb178063e1db01a43f0e36019ec46f2c52e4632b3fb703709de9bf009c179b062016ae6d8067737706208a2019be045084d9451d407bd1e71f01a4b63818dcaca7b0e867eeec31f3dcb73f3bc6c3baff09a809f4bbd61aa8b42e2ccf5a009f275cfb0da006faa56059c6e479445db25c4b8d02bd5e66cc84c93f0a96d974623bbfcc994d8b7ddab4180c65167ff2d9467da271d7039087f506e0a49944662c0197c74f0cd0b8ca06dc00b465e2f66894237958bb01345e6a46c39f7d7a1b4052d83931e02bddf7002afa380fa0d934db0f8039ba1d405fe9a9fa954f0a97e34380835b2efe0023fb05e064fb44745791f140970ca7551c207b6b19a02ed6c680da67dea5b6aad8f0df7d02b09d5fe2c8acbc7b5f3d7d06d013ca0eb402e4dd3803589fb67b060ce4b722802a47e45fe5bdf9f23a0016cab97f92b3d31cef20ecb5dcaf0c58685ecd0c181ebbef00fba4df8f00568e1f0701d473c3bf27a4d7c7ff00de246fad19a0d793f500faeca93f3bd0ae46353908a079eed325e5e84e99bad5f10696d5d42023b2dceff046fbbc1d4005e34c40959245b3fc380ca02794c57b0934d44bd2062c81b4d4c20573d0e273c780ca7d6c045067ffb8e77cfc47376c2f01ca60c33ff1ce6ae1af782375bc1d401a77e046c6375ebede065067bfb9d59d444317b0ad807a6e06c8c86394e4d706ac92ce670658061c89688056e2e57706e8201f73bf83b093f2d75fc938bf7fe5777431beff315e326ec92cf6ee0c10edbd3d00a9b1929deb007a691f651051044afbbe021a848f0188559831b2eb5a39884a8ecb35801bd908f758022e937b0c207fe1e0de005df87a1280cbc28a006c5fa701b4bc5792ea155067177f00f5b915009fa3c028ee035ef40085f7c43f00bea5eaab0520ed6aebfa0ce01b51ae8600e7b9eaab9147de46afc820338a0deeab510035e1cf890131f044dc8d6c28560fc701349075f1fb0a482c1ffc0eef676fdc04d00cf4ba61e0e1e1af902fb878b90ea05d0dce9c350b2fae24db9b1b10a3a84bb95780807617ac877678a1c5bc175d955700aee12970334486d452c92a574093789e07e080d061004cc95fc0106bebed2c001ed67e00f6b32700dfe8987d1bd809e982315e4a4ea48ebc7d5de81eef15207df43dc0c97f875f06acd5a73d032cd8f7cb006ae4b905865dc0f2653f80349d321cae804654af008cc9ca73786ec00a98e5db12a881bef3002a07899e46a11cd72d52631fbcd808c0bd6ff10e14db8edbd419316ea56146997355fc7b0374382e77f40ac8f07e1d7f027af82d1780baf42afa0750e1406c239661e4659b001f864bde03e0aaa04d1ba524f9e000c8287c8e9c0918c5a60ee709477102a2751a4052d83a31b0626b0520ffd8bf0044da3f07c04b3b0a805faa0cc0bcaf928ee37ee4eb1160c87d5abd3500d1a5856e3e4fc74eec5c11ff31f609ffb252238f7d00b5fced0550bfe088f8cb194af8cb78991d4a059b0008f6290fd601a9cfab770dd84b6aed0590dfe1ebc5806dc1693f80fa9693d34b209553ef027c3729fb7363abcfe4772b8006218905c63603cbf6308054dffa2480bae1fc08e07de48d6d0037a096772e07fec2e492564fb9d13199e506c4c3bcd373e10dbcb93760f9f644673b56b26cb9a41c542a8baf001a1e3dd7769891ed6400b0a62bdcd9ec011744448cbd075cbe540138e6da0dc0050616070e2996440f36202754e317c02e7135755d485f90d4f3001298af3b033e8b03601caaefcd95b3f3efe05f0075d4b145ca5b8b878b002ad8e80fa8e86b6e0f0286cab95feacdc7af9b002ad8f42e0007c703b0b598505b1b8a556b6e80d7e93533e084cccb18d06913d1cd10cb48469860c334803334849a8f33ce6797bacf7309380171d50fc055a4085db31297c3bd4bcf351a97ebe690f5cc699c485d32ce1c5f68d1ce9c5b6e8d562fca828b7911cb7ac8353c8b5740811a5fbc07d0a85cd02f8da227cff75b00b5d8e30680ddfb8430be7163b06a886d9701a42eae8e03b0343f0758f3974701d816fc0e40aecebf27345e5efc59ebf5f6610055ffee2b8066a0f96300c9d89926f13a2e90de5d0390bdb21c0560357ff9154052383c009071fa94639d9176b57853efd7293113457b0cf01dbae34d009bd3c55606f03591f54e0062e07b00ce48241c54aabd075cee170067bd1ff9b33ecb430ea22550bf9028aef6fe6db39a0ca019398d77605b7e52fdd8aecd7f02a891175b014823b91b807b346f005cb95db299527bffb6e86f06e0223857ce465ea732e02bfba5013e0325cc6dc0c8aebd450092885e02c6beb47ddf80367dbe0058292dd602a83d76de0db8ecf841d3499de1f92eff3d1ba01ca76b01d0631d0314ecd84fd8d7c77cbb0484ac5606546efd2000ee0e24284b7d13fcaf01fab4a4e77296c4c91ad5b742493a34a18dbca43b0da0ea3ff28e7a5caa4d77d70d2a36b9a601b426cc360cb0d886490055ffe91850970ce4070316bcad78a252bf4c9300f850e601b44c1864067cb6751940e3e57855fdaced8899d6f15cc007d8cbdbb5001a95d597013f498601f4c4c515c0b763ebaee715e05ab32d0087598abc0b20bf65b957027abe56e412404048a95b549720e37ec24340f8b68e03c8ead3cde70d204f4dd93b3160fb3af36709f748b65f02a81bf23b03cc9ec951008994b60696928ecb64b06f80b7477bc02ba0167b7549d9152dcedda6e4a52daeddeab8b28ae15500390046eb00b638cba79700ec466600f6b4cae703c0987349b59fa839bdf0e592dafe38ba0ca0ae5c6c04d0570e91a08c74dae5db8501e37662d07124f51380e40449ff20805eaa9c4c0dc8338e874d01d8c9ad2905cbb805b12cfdc410f928688facc888dc390578e253b297ac9d3b1bce0e05ab730ec42ca85c3d64d9a48bf11a50902c5b17392d01d6c5ed2360c425b24aafd5004c85f2e92c8064fd85a237ca80b8be1b838a44602701348bd54701c86156076033b613408aedf030808a3e9b07605f2c336033767819400bbcd16a759275e236f9cd73c0d01996ef018c866ab4051879cc4d02c8dafaf54bbd15afab48b38e9d5de5f518c0ae6871700820e8a8755705e06ad63b006979cbd14f001c88db0618ac671b809c0ddd6407d0c571b7b907f099e67fbd00247b6903c844515cbf19f89cf834003b123461ec57de6e07d0a8d445705927dc50a733835ce5e8fb279c91284ebf0d7cfada5f2188a2b8fa04782771b11d4032769b1b3067ef2780913786ce0c5845df5c01389d5f764601348b7dee0590dadad664d1c91c37ae60b025f0e26cc780b5d8db660089d435b5cdc8f45c7c0e02e8b333042663bd5f5693001a95cab2ba049c027fb909a0e9a4550032c2f7772f0d28fa918bee8453cf085d967b1dd537404ecb6703ccd1b714608fc05b62c029f013e43423f0b1e531973125550f2e986ffbbd7a34c0843b7c15a8bb9ce638444eeb1e39320f918f7a40eaa36b44bbd127ea86af77c0083be8270da0894f61052b201d244f6f03c615439d56b7d953becc02902dfa24809691ba246305f41525975f017c6c1701f4d9e1df3b481f7d1540a6d3f7df673979f06c30c2bb7119403a48f185cbac6774d46d07e0cc3e9fa581fd0e57002fab479b0664d5387a06386c4db7cb2d011e349dbd5f01ce8b9d0750ef2b4c2bfbcb3c79bb01e07697f2ee34004900b7027013ab01c77e8b1717bd276550e99aa6e514cebee9e90f800bfaca9bb3006ad34f9763c071b9de31c05b8bad8101abc6ce4b008ddbae5f8aa6ab467ea9d762ba896439ae89a9517eba1520d1c22200ab936b03ecb1c108e01d3ca56d5e018da8872ea0e61aafccd5279d5435d3b84deda929f7170674e5e89f01f6d898decf3a1ccc397b356007ef73c700b5f5b119408d3ca75fac83ca97610009ff4e06201ca83cd833404e3f2f0c54b0d6a00fe0d2b2aa76c19cc6e9f326803aea250da0af7c331a1ab5a5deffbc057016b0d59b1bb0c3db464e1bc5a69f8c2f024805afd11e457b20efe81ad52fca21d7994a4ba5751f8fd121dd500f507d0b64ac31f2e440dcff0060c2953a3adc80b11767e701d87a7e09c0a4f5144012d43a02a0d8cad9240081b1ed005a25dd7d062007511d405df9fd1280edb8630396801f4900125e4a92b30eeed2d69e26cfcca76b4b65e15d01c9d8fadc0085b2d5012052e5ed3a80b309a562f2560003ed2e00c93b730097db9459db80e0a78d1f0324b947d12344e2a1174032b65b1a301ab607062c4636b600c45a171f2e980fb1160bc0d0b1d6a701d063aeadc5f25f3f801a5929ec9701ef34e1dc257578c3852b47807f31737bb0c02b770b0372116417003b8858246629fbc8e59e7f32629a1f1d00c83b5a9e1f1bf015797a57404fbc5e02c856509c4992b3b0c7b6e8868c5bddcafb1b034665455db29463aec37b03d4c5fbbe01abb52f2a97650e085937a091e73b00e7967be90690ca99b603603ab502e0a47649735cf25fd700e7cc50a87903085a4cee36026820cffc9581acadd6e93fc010b7dce777002e84d904b06f9a1ca4809a95c5f1b60103484efba6a06d4e739c3d009c3d2a41d673ce02163aded1bca26f9b6e6ec065c7ed774025f3abf8fc09c054c0d86f549fbae113496ef41889590f03a8601f8501abc6038698355da238a515900a7ebf0f204dc70a380b9b2edf0820132efd7b4225d535b359648d2c754bf7121094a638a5ec2fe3a332b467b9c3c50a5d16b6021a959715808dc372f306e073059321806c6b858e552c0167bcb1e972074094ca69bf145bbeb2dd37202be0a97fd2d7cab3552d0cb0d8168300ea86f70d038687d21764b953a894379f00bbb206130362256f4e00a5f3d2fe007c93118bf73c9c4c6f7900cdd9590d603a29ff75014ee1763e35a03d7aa70076798aa92be76db0af3a807aee3d9ec87044489fe619d7552693b901bdff3d3160f6c077b1043aa2aa33014b1b87a8f0c5b98193882680d49e093f91129aa0dca52ba09307637fc5d7ba8ff603a8e80f17064c5a5ff706a8ad45cb00bbb0e7cfe604624c6f0d9870dee20932b6dd66004f9ec72ea9f3f6cc7f0228d0af4f23674e6ea2fb2b978038949e3f4bd2cce2dc451f60d2cefc59dfb03d1f030ac4e1f3ce80da6a1fa8015c9a5a3d311a726e33297ee8db3cc7c47f460a7384bf38941d9437cb59a635c66d5d141aa6bfdf808a45e29421d6683a15eca7134043eca30cc0fedc33c0bb80ef750035d01b2dd668292e3ffa09a07e49fe9e90c18ac5b60494a31d40e5988c02e0d92c02c8b3d99f0590fa5426bd15d0f0b81d04e01a8d3400f950f444b753789f501aa6bb4c21bc023a00b202ac3d860628035db4d100ee272c8ee6803e361dce8c06e065d191ee060cacc6c706585bebef063e127108183ad7deba010ea27f39c077825e6e0108dfaf9e0a0306f2a1bfe280655d5eb20478e12e4700072cf70601d440ba0d7a09729574c74ff8a6debd2400175b55068c4ac5f6645def9c15835d035a6cde0dc041b66b0342242ed6009cc12bb241008db9e300f83e7122741d12507eec1860b03ed3ea4be3495a6a2f80be32a4b36d6d1543178c9080f2632b007aec2200bb912e47d7ebdb5f033aea7d2b00ebdbbd0012dc7703ef253d0e0da86d9f6eb0a62b677ec29e89c29f25d02f698d02c830aa9e00befaeaad34c0d8ace8861c1bb7d269d2acdb759a0d25c0c8baf5904b32664861849c7d5401b8bf9206b23d9674e60154d2ee7300b569416dc31e3b3c08800e3a09401cdb5e007d657816002fdc4500159d7dc26e04e8cede0210aede0a404495545fcf67450b5d9bd900afd6b23b808f42ea34c70a681fa8b303f0f19ff6bd013b67fd430053524b813ad9320d1c4934e601d42f27970134035dc54f18ea0735c0d96fe3b35617bb49002222b6039046d2b51df93865174002ae6277124042777d6a80e5987e00486d5376cf0da88b0e8e2f810d01599f4d13b321a30cdc4b40cebfed2b809d4c492b0037d58c0c1873e72f00e71b7fef07505d5e2e036878bc1f0032c6fe94a22fad078dca5b409768861d7fd6eb7d9db358027ce34f2ee98064fbdfb501fdf27519409f55228e1520b6b86380ca69a701341a0afa25f341d897cc00c1ddfb32d00e4d717104287c6cefda80dafebc024a14ecf64b00121c5480ca3b565b01d4400b4d7cbdc630c24174031864647fd904701954b1a3f9b65777383db9c357ea9403ec3b75008d6c77439d716248a9e31b50d91d36038c7076add50134471574942da5e4b90ec0b5bb45005241b503a81b8eaf034829ddf603c830ca2e03704b441940b56d1f04206048a3b2ef6baa5bfbda3be97b17b064e7fd2f639be2b51bd0f3e9eb8700524a7b5dc0c099277f01432c7a45872d01baf08c722ca3f1574f6c5e021c5cab53034be01bfbe60164d1e7bb00b443f5f86480ac2bcd79d68f7db1bd1620c35e3f1d1aa04f9fb300041c5e187856ef01d8d32a5f5a01f459a52c5b01ecb12b40572be062b06dc0d2eb2b0fa039fb79df0017d2eb0ea0c781ed161d9579ab5597962d814654a18bdf9b7f0744bb9cb81cd60e2f7d0357ee06409c4152221fcdc85667bfd3951943aca5e89f152032e3c88048a61902938d8921c1c3dacff1c1560525cdedfd7aa2fa79290d53151a84fd1e7650b14f398a722091daa1a4cd50e7a0123256f70be9f5e907a062b9f2fc1880bb7de601a4e8276dc0a854f59fa7068cec6e3ce17dc23b80dde92f9300d2749fc7015857ba1cbe4e6ca36b50714fd1200069690e037005c63080bc4ea37600aef17a0ea0dec7bb31488932a99ee606c4c02bf5e20aa872bf7d0306f25e0ae062de62cd2f45a45a0f39c081d3fd11a0e4099dc0cc96a9b130bebf0d5804d4db0067c2faf067ed7651eaf80638179272412f0136eea334ee60e9f95f95634c4933e7637b1f1a68d2aa740cba01c44c94f3cc005f8e8eff2c01b3e9eb7900f69129a9877aa168ec25609e7bb803f4589de8a0e31220ebe351007df6f914e014198b7500071d5ba319c0f79abf0c0cb894bbef72702559d27b00d02f49e734004103b7802a9393e9d925f5e57a3f53800330dfbf0c348917b7b4478e5f2a394a02e8896bde9173c2bf522aca6cd04d9d4098a217c5509fdde72b8d3250499fa96d9d172ac7fa0660e44178120087482b800a768ae036c3548eaab33fa0ce2e6f02a80907746533c488313a0c8021701f8040d06900b2abcf02c83298be04e09ac84e0055aea5296918c7e568e4615cbe78700460ce2e6fde0103f26e2854740534808800183abb69eb700cb048651d033ebb3d34701c8adfc19d4ba59266ae800cb4cbef00d230df3f0134bd0e3f01be6f7e7e6be0d81eff84dc50e5d105c0eb06a5f65d02cc8defef009ab476d5fbcbec5172bb6c1e06d04bb7da00df784100c4d09bd3d5c43fe9c85551fc5b0778b7faa80b70f002f130c3d8d479de3360bc4cae000e267dfe0332f25ed70cac0c360368c9f3f40ce8716dd5b36b4b52b352993996806df47f5b00877a5dfe18f8eaef6b032c94f724807abf7802786bf1f9d2c0bb5edb010803ce01e4cb29bf5c5b27bb5df73bd8382cce1e01152fd57d382b806de98239d74d3933c8d9b162006575469c01f291fb98fc052d96fb3ebe36ed510c877a6247ea73d8d81f52283bf701a41d36192f750f3feefd043040195474433d6464dfd37375c1e6d2336d5a971802cf7ea2aaa40b9f270134c46e5d306c98e404498e38a5f22e800a56de06608f8f260cc5f63d0d20c54650c9d0b14ec9e579004961d60a204dd7ff7b87963c5911409fbd941a8f3c57455e00acc7746f53f6974e2abf05a0c78abdcc8025cf4102f07d9ea76b068c7d5d07d4005faca96bee1b404c4db1d703f8ceb6ed00be4d5e0a76990b497b27dd2340cac1add7be0106fcc106c032a66c052b400ed521c05e6b25ba6e40d77bc0a50103e8e30bc0d1d012bfd412707d96cbe1fc85af3d03bfe307c0302dba06ec7b1458c145e66cc0afae2d6a3ce9ee07c011e1afd849fdf119804848b7078b8072fd0e40c298d6a0088053f6c60065b0194fb08585f55934ca8088ee0f03fcda2faecb386313d44d489878eb7c6e4094fcbe9452d1d8891298ce16a083efe2f20990e132b94170f39e33b6f927a4b42b0bc4b28b4d57d6f46daf9d4b5b568780346751441316659f8bcf7e0c06faec0eef68949286e9660af0e65265d06395a44c140d281895f503a0b2a5d4058c58f24c9200eaca1bbfb42e55b9b37900f26b9f1a488f25fda7005c70f107b8f97c3f80344ce73d80348c721faf0097a74d02a072ce02c88d3d9183a8ec0ce817a56dce4a5f9a5a11d856a67decf58d1d03fc63ed5b80b77d2e87068cecf58f005a23b7de019cf56aa56b00c7380f17009facff1c193823466540e8ecb403a8881cd6259059e4532acf5d39b2259578f19780ec40a300faecd76300053fdddf01c6be5ffd1260f36bf3c2c0a7f32585cbe448529ff39681466555d3c8dead2efa470634f2d703c021343d3fe103ca57ef01a42d37e897accb36ba32812f8175a15fca92b8d57b01f87e531d1f5c02eb8fc3002cf07a00b65b8ac116c01ef8e763034ca7995feadbb2a61980cbb14a9d366ec0889f100a58660e35df9903ea0cb7ed9d01564e4a9b3aeaa6957e013a38548fe9973cd3e2ac9553b03ccfd9a0fa063829e2ebd8004777c54f7abd5c256df3936230c474fa0da0973e2174f550da2121eaa6d1786887270650a372f493d11fc03d48df36568e46f669668061e491dd00d9302fc701a4c726486163f648e5dcdc06d068f8bf9ec06deb97a2d892fe2480acadf7dc80cff61f034805a70f01b0944e03100af812409dad1b0cb3caa1d5457713e074c9eb8b0064d4d90d2091ba3e0758297d3d01bc0bf83b088067b3007056b4c57197ca89e24a6a5bf9d066d11e017c02f34393c532d58f9eb8fe34c0dc587f05b0bbd2ea6c001c59ae8b589600fd7160d0f515b14900d5e5bd0cc041a51ad0637a5dfc02fa64ace71852e59d91b2fc0678236471114002a31bea963b16e450c5a46d0059ef59135699efe6d0750d2b400e9173839c0cedd7808a91fdda06f8fc3e8a7e0924fcbb6701344c5f760db0725a2e2909c8cb773fc1f9b972d603d4345022fd5135fa43a392d55a9577729583a8f02aeff295114dd8ed528ed12160887175a829a96aec0f8dec8aba34e6062b607a2e563893228046d46c330051aef44ba30cf48ee787006ac2fb270306f26c2380d4162741ab7a5c4a3b5c9e05601d75674039307baad01f58c1951dbbe5492f80b4e5493f8042017b9b01084d180620718d4b6a4b298d27f86c960490d0e5eb0164089c7f07901472426614975126fb8038acf01900af531fc0a65f8bfdec512883cdeb00e42dde04543e2b9a1860a15c1c00461c713f380170c6aa58bb37207c5f775164239f4d285fd51ea3389ffd59013a16ed560009dd3c0710cd50e4bc3402428e7b002f454fd70df0297d7400b187e327bc169bdd00fa0ee62802701bc11160e07cf43b060cf5e73fc07d6b06433c79c389019aeef5cc00db614e9b2e57967aa21b8070423a7b6981acc09b9bd096e3fcd780973e1f0560c7fbd22067c1fb1d800ca96b00679f7b7537a0d80addf5dcfc4b8c5181a138ca9db27dfdca8046d6dda44b906b9178415736fd44042295cb3394d2dbc280927eb601ecbe1577c87ade539c63ebaa67a09f143844465da70c1953b0ae678f8a06eae539c91929473118a8c5da5f0154d29126e051ddc710a82858a32d38eb7501c0a82947dd008458311a1ab5c5398b7100bde36a3f00971f5d1b605c5dde04d0fcf2760a08c5d60da0cf7eef049085f2f51d409fedad0720fae72080345d7a6f80a6eb4c0348e3def602a0face03a0fad6026844d59300ccfb8f01b8b947fdb24c16a5aed4751e8da5edf340254f446edb8d7f808a4bba0e27001fc73e1f01c88257fe9c066033e508c08e5531bf3420ec55d7ce64cbe437f8727847e63378f34e00cc9e0a609f52760ff0351ae765002d23af5e0c32b6af134037672db60bf07d6b8f0bc0807d42f6b4c63eec54a475006edef03b1cd638f9178070645add312445ed8239cbc8d35e00bd747e6ce09bd0dc623888ca19dd90912d29c93b01d462cf67063ebc711b803071177d84d933df028c894319ba60bea57bda35c0401bc80130cedb2425aa6600e7aa98fe1a509759370021017e224507fdd29579d7db1c9581acad72ec9f1012d0ba3e36c0c736a63df2026d39fc0610f9977c4d0135d577ef2faf965c95639faf1443b9a112dd0f948deb1ea9284f68d3bae20ad0ebbb00cc0d6f8011e6d7e7510066f589818305fd13ccafe2f1320051aed701e4201ad062618fe936c615e01ad1e300eadbd66100ae117d09203da6cb0756800c543706d663b300ea394256c7a1c7c832320e3dc69ef83862ad1faf02a8092fb2004c387f80b8f14e0069ba422badbad3235890142a75daf6665b1fe06b117f8700072c6fa50074612b7f0360d3953f6701e492df7d003865d9c72080da547969b3da3ea5d6be84bf8ef3a60f0108c1fb790940d1db0148fdbc6d40c8d9a805202b4f71bd30608177fb0b207f72329e0750f5b7738053419dbd042097da09a04ba6e7c1838155ce750036a8fc0e9f8a6f1f01f0d1178303802ffb99d30d61f57d7c1b902164fb16e034c56bc7068cfdf906c09bf5f373002753caead5004ba9d47452e7ace6cbb71f4047ba30d9691bf095d93f40dad53b9407ad01c45c257b4706399be46b0124ebef9b00ae872e1f3f0c723aea06c0f2bec0e8ad73768a8a8b2dc000dfd6d8251da1fac6524a75b76dc04bbb7deb537aaecb71b9b24d398afe80683944ca465eb16f30ec4bf8dfb514adeb1e0a85b4344b1544de9e0250a10b757b47b6cc72cee5f10701a40b1fbb01f4d2c75e009691b469ac6f7b5b015417ce672fd338497f9ce40154f4b3b700aa5c711d40eaf3621200ffd873009463fc045d38f80ac0cd3d7f40ce9d878300928f87282936ddc9aaa3f2bf344e6705c0c13eff86005f417eb16e406aced61bc04776154095b7e38ec3ef4fc080ab05faf78021490095d927ffcb52f492001c9624a1cbdb768725e5248012192bcd5703c8bc90d4df0134e13c3c015232506dfc1a70c6aaaa01bea24d294257401d753d07108257e848d50ab0bfdf05f8b082d2e037807dc2c66200603b1403037624aaa9ebe203758a425a02d6ea0ac05c028cde014d989141377976496bcef2ccd70d1c494d67e71eb76b5b06ac3cd7ce001dc6eddbba01c74c5efc934e9785f702c0566b4b77932e81544eeb867ec90bbc5fe35b81a6c150179700aedeac5a1f00ece4b23a16e8a539f704bc027cc4acda078ca84b9bf6b0ca493611a93a27e3e34f0ee89258f1710d80ca29ef69e47ac8a83cbe0294a470fb7a33f03aea3e803c688714acd15292e4ee2480c65cfd68c0b9d79723c0480a25e9bc0660dbf83100fae3013096e5983c8f036844a583001a1e6d177d8c03f1f126803aea8c91dd282589f6d934001b989d0072436de40128fa2480a470701b4075391f0420e5f27a00c9e9e4ce8092f6d3005ce5b31780aca267014829b31f005f4e94b462475325edf8aac9f25f4bc0b78795bafda7019e5e772b40cf67352e026834e44700e7b95a94003bee8e3e01c45c25f77c369223e916d525c0a6dbbd376012bfe41d71859f4e2de691e9a8f87e0ca082e98ac7bc1317f4f5c7066c515cec01ba94f4fa238006e17803e0a33b0f1d00a7288af32c0093e721c0876ade7b0638aa947466a9818822d87e07701d723971c1f0b1350b6103699802f5d9716853d15f0338b7cb96dbb4a6b60a90595a6398b43aeeb2026cc66e1a587dd2b7b90fc4bcfd06d0c89e5e19604bad5f04205276270061f3db80b4cbdeda09c0b97fdebe0d68531d855c02bd2339412c732eb56b5dfaa55d2cc7390293f7a42d9331a29de3726d5dbd1b50f4199d9d0fbad263177e47a1308bd65d0228f989e2c61b30c22cbea74d1b354e3acb2740d1c50c44c68abca7d1b0f60fd0530c6bb14f5716833eb6e59bc1407dbb4f4715c5402df6c013759f047e43daa351c15c41be0b18615bfe6b07e0ace886018b555d37d700a708bdb9094056d1db00faecc3a10193c519d56f341d1a7712807c061b01a4b6947f7d0534f66516af80a4502bad15c0c9b41540faa33f0fa0a2b79f03c8ecd97a0c4022e3cf006ae4b3dd005c8e756c80c1fab0178026d43b52dfa953e9f860be4c05a5caed550047774c8700d6c8adee13806bab12a5a4ca970996d83b290cf039ea56b77c994f89f3fb3706e8a08b1ce05b767fc706ec8c3cf8092f45eb9300ec9b3e05d0d85f24009f3bd17df32bc0e1d11ec0d7f03c6e01866898110d1429dc7ede008e0e9bfc023cc43e6e01636f82ee0650cfbdaf03bc8139d7884abd362db58c5c0136b82f01299b184a08d280cc2774370210c746c1f2bc4b92b7cd009cf4db01747319244723408f40aecf6b40df955b04d04b072e3a0143493530a0a4337f76d0556d75dca5017653d6b458637daafaa363401f6d59d1d98dda624702916a9412c6e62c80863ab6f6329905be0beab2cc42bc2ae901056b74100bbc4100f9b6ba7701b0fa9e024839ee52fd464b4929cdd60390cca36f404abb512f0037e41e01d8ae2deba7005c73ff08b019a86dd215900e5adb0d2039557cd00ac896ba6907e076ca490074d03400698b7e02480795870124c9f77f9f55ab571f01a494aab90196a39c7f2b208d8b95f397a2ebf22a007edcdf005c3ba3ea671ddfc27c24e1cf9c99b454def3fc2f69d5fe08408866d5da058c3843b3796b40cc66de07f8605ff73200697a5a060c42e576c997699c345766d300e44f968c65b1077c7607204953eb95af648cec42c182f95fb6a4af0ac061a7f2f6076067e8965f6a2fdce8db802571de0a4012d153806348c634d032604c9a6e1b3042c33cbd021cd9f523addd687136a71f8606ac3c173472eea13e4d03703e6acd400bde56f90420f42d193e1a90fee4c53fe9b1249e6d07c02efc040cf0c265f3005abc9f2f0043878c6c19a02d272e07d75526b55feaeb2ae77e47d1e53668ad09b32ed95f2addb29b67bd2e3ec7099ddd4c51ecbd6adc2ea36b516c3472b38a2633ba344c561744653dd1c88d52e2c0d42f60a43572e2773480e4e1bb01346ed34dc0183fdde56900992cba1f7905105c2a67d3a9f8fe174082ab34812b401cec5300cdc85f8b00eaa89bbb00329d92930064e4da0b2023efb61b407519dd1aa072eea3602c56efb7036898de6f0540e57c079014ea18419e3b5778b9fe026067b5fc3907103490b4ee01b5af673c32f0b935cd51b977452bdd89912f0f73103eb767c0e2ec660e205aaee8f91d24ed6e1dff02c83b5afcfb317082b63ec059ac749b7c037cfe76fd0dc091bb02ff47eeb3b3a56ec95c0e63bcf81b77009f9c7ede34606b71cb2ff5d98437ea92b31839d5d513cb984e32a33fb60cf8ecf34900f2d4fcff449dc776e3300c453f467b1d17d5657a9cdedb8e6ae97d52bf7e68bf0b647b8f2d5124488220ca1860b94c5e560c641cded70ce8d8d42ced00ecd0fcb6e98023a0b5a34075fab5875a08d1eb9703bd25d041f12ca673d4520be0149d664f00b38f0dd282b39cc36af28fb7e453fd2254a700bbceef687a5168954a946832cb86daa63a6f898b81c0dbd481b682d30307e4aa387220152e47705d879153c902a07df606b8051cdd017a3494bd2d076ae9d91f204be2ab032913dd95038ded319dec0b8a37ddd41e150a5c0012a46c3bc0f07fe84007abf52507ec62fe50f48feb2707daf84eb55ae69eebf7fe06d08e70f3bc3540f59fba059074262d3e0db015e8ae209ba7fa91d0352f0eb48eed7d00f0db0aabdb800207eeafc4813ae8c79e6171f337134030abf52ea061eedfff016e0107404b54c9d509c06ce3cf5ae9f2b9315ccf583280be7ef70ae06e2d745b002ecad2848665d9881df9d300b3f2651590731df77307287868f10f60d52a9eb60d602c577acf08d8f79bb75f807985ef8d1c6818aead610d2bccc787810c778f3780697d8ff68b1e9bd2a37dcbc0396a9068e7b9b9aedc4a2ce301c7e2d56500c8db61400be617516e2563677c8b6df3cdcd9b012edaf71828339924e74b0e2827f6e4409370d871a049f8f1680023c26419d0b3cd8723079a62ed870375e1e9a901b6d72546df1481b0bce7400d0ba70ef05f0f0eb47b2879c50268aa4f0f1c6807ba3972a0d3dacdb103d28ecc1ce86bfb37079a73cae23d072d1132270e08ded0430b0b3f6ebe3a406f29977f015e704c27adc2922286e92dc0f2f65cf00cbbd34ab77b00f7eaa9fc1d22b030e8b789012c13a71f80da520d5e18b08a8ea78080078002d8e7db1ef6d3a37d406bf140f68b1e97b39b918129859cae01c87a3890481599a54ebb5f3380d2fbef0460975ceff469463ec746a9b1e6000fa2490090052fbc3706cce968039063d95ca6a519e69fa6dc0454ac303f4f809ad3c9d3cc01a12acb06721293ac38e0fcf205e8b96cbba2d7f31161265c0b465502b7931b7a2c1fd8e6b7908f2e1b480129ddb2b04baee43673a0a9def3507724ef270e9884fb0ed4630de312a7a926613871c06e7aec808dcf018af3f73a602075c9d79701ec1fdc3417be672fef3b206cefd6813483ecd781a6fa71e9402b6efee240422767b005d030ac6a812d2d6d40f370091838cd2b3bd05c18a6d4e1dd05e0f41c36be01e6d27c7c01b07a8dff3203e8fce1c78055c7fe00584910258a9b03f6ecef3b07b474053070123f90f09776ef11de4f0c20ebbf2dc0eaabb7af06982ffb3b00eca7e1f6d3012aad01927835d91460797bae2f0d7024c66e59ba4fded31fc073671b6081f4cbe70073e0beb6b704766465e658006e68e8f58c20e7e6fd0bd0e364a362c759995bd190610428f48cc09a5c16f458d8a6a5a12eb9e6a0d74328a5f4aa8c4656c64929a1dba5614349f0c6131264ee2f217f067089d19c4d1d503622778067c6ba011cfd46b7000c88a11c3bc052b3e2800e5a3660e7db55001b70d83b742009e20ea7f4796b0365f3367c7d3ad06b933d07e450dd77a05d2cdd71a03dbb3976a0897c71ee407dbaf4f717ada799bab0f244c6bf396040835dd1c7551e92f9b36bc02e0e13c0d422307b07948a3360e971c23720c775b63a00981fdb5a06b094ba5f01d0d86dc21ec0dc6f9f960c98b1bc040c76d0949c567e5ff9390364ccdb29af9d1f3616bfc84f00e4d64f0e0780a5c779dc71a0d1e776a5ca2cc9bdaa4147d073bcc7db250234e9fa1f609046df2af35356e56392129dfe1ae0c67bd639d0b83c7e1b20d67c7aee80cb143a390f9c805bc969557009da3674611c29caac683ba9c2b892f09f699a5671129268f20dd022b8e7970ef8cb9503b4e05380cdb9c32307f818e50ef041a3c7e28c62812d1d48d76ecf1d68beacdd00a82f9654170ed4f4cf6f075cc63e1ae0e479a2b95f4f4839d4040dd43c730b596773404574fec929802bbd50a606f033286a07d8a536005c72a59f1f003292078574cf01a3cfe5743dedecf6ed06d0b3e29eda2f06f4a0779dd5ebb95fd6021c7e022ccfc4334d9fdbb216e0750cc831bbdcbd19c838ce360042dc13e5dd5800ad1f4900584cf3db9201b4beb70d075803ef0096f0e1f7d7001bdf9b35bd918139a403a02599d8bbbdd61c201eae007d4e827afb387359ed2485753c25e27ecbd7e656c5ec8987e6958ec481ebdabaeb062ab16a85a98780142a98368236f08bb1012cac58596adb5f423f72a0670cdb0e187d037dd0c8a97afa1c303d925d079c4efe7e2191fa5e03d80e34de73409aaf5b07d282f3c18136cfc389036d38475307bad35235b50590e9863b8be0e53c12094cf0bbe88f1a60d52abebf1c5000f61260f54e2e5e01766bded85fec6ae0d8fed2e06bbd961b4087b9b376f4e6a3780dc02d29281c7b0e981e8936be30bfa3d1ee311840826e7b80c5bdfebb0098dd923bad90590ee65b7ba84d8feb0cd0a0067ef27159cb5bfe69510af944f72fa92a3c4430c5e4ca5d63c849411d54847a013847bd014cd91cc60e8835e7e30a7b687b04180c48d64319e4b9932c49db0a2198eb0aaf0d4d89d945eb47881388ac3c1da0d7592c6c310cdd30683dddba712071b8e6a19698a4b9e22f43852fdc392d8d52c912fc08680305e80f0ca0b1d9b80c5dd0fab167cf300fc4eb6f001b4e727ae0402ddd3b76405ade5580a9812cf4c18f6fc995034d421c9683cfb970e9405dc84122b84ef7ae2bcec62e425a054a2f0059ac1280e5dd78d79c8b1a3fc529c65f008b9efcd90358ded16406c018daa8204c04254b70ce5b3c3b90c26d1780222a2300859b8342651780689f03076cd15300e5e5d3cf12305880b2cc0c8d79a985fa11605adffd0760c2bcfd1d007609fa7c02c8990df7cb0ef496193d9699cff7fb11c066f6cba10126d0fdaa03c2e5f601950590bd002c99fac79901969c8f0b408ba5f769cb0116b46b40677be53f07bab0c3a9b5c97a6a502d598f911024ec31fa3909419ab57b03f87f74c7001c4242f504b0b08afed681be167523eed8a66ed0eb798d3aaa72621158f88f8a83674d31e1e3b635f79bb82a691ddbd24ad774cd20f9b8e2a171ee4b70af6e1cb01830b671ba4892577303586a3206dbf6ec903f39d062a0a0ef39608b5e1939d059ec7317d0d56cd1a901edd9e168d3007bb6a22816402d4d76003de53c52063bae1f7a46ba6d001df768e4406a719538504bd30d075aa59eef1ca8e997570e346f6d75f0f08ebb3d03acb8c7da805bcf2ba9c2451158be2dced9ad858636cd1bc012901f5f011ad2af9d6c03b8e10d1810dba915e952d1c305c00ec343cd6f2b8c69d8dcd340bac304608699abce81bc4c944e3b829c7c6c99fdc5c2f595926a010812d80194ecc878ffb4f383a47aecdd81d620155d8e80a499413596e780c2abe3138005e31ffe7380097a1dd06a12b64302e8a80fa4c402f3b5c16af96ac969734ff5f30dc8d9c43b3e2ece4a0dc329435958ec0a41136d28e57f1ab634e7da7eac1d396cf50e48a64ec38629f7fb0f74f250b101bf5f036a7c25d76a40c0a872b607e05c19b8f16e7d12ae7f3ad05f56a600dbc40f0f1d50aae5c000dbabb25766f3641e54329a39d08e9c8c1c68dfe7daa7b55d3d39b65fd826aeb0df05d0ac3c3c73a0671c170e9884970ee473a542e759e78a33279c6e4af6db66b70304ee0a684767c53ad2ad574027d14e0f3600563761f3cc80655757af7766fb4cbff84b66e5c48e5b035c82aa026a364fa380b96307605af0c135a0b4f47c0f06d870a61ab92e2724b3ed6f1c502cbd01e0591e121e6a76fea00aca119050b91926804af3255166d20802579c6f3f8086a6dfbe1860f37c7f02b416fe439fe6d4b34896b4cd7751c7d70ab3fd0ea80ae60bafeda2700b309451e92541bde66d374cb16c5ef5000bcc61d9ea8692f3dc9a81c0e5c146ef8048ae434013b46a7753031832cf18a8b8cf51a02f73a0815aff30c06bd7bf1c70065a0274d2b5931b7b2d06d5e46517d0077c266e1cc8abb3ff03ea539489ce66657376e94006a2677be8a0fd3670f68820504dde7f11a81f3538206dd18b0176647c143bbf4c49371d5086472dedb3a9855514006213c2d98b014233948c7001f060fe0730a734d4e2deca5734aad699cd63ef35b3ef570cb0e1bc6e19c08fede5cb817ef1a329d6c7f94298fc198070db945bd13eeabc9aa61c02fa3881a46bab345a04444034aa2410419b91c957d3a32fb8596d556a21eb4beb0f955ac8fa28fc5ab5b778ed3ccf86445b0b4a1f655ddf72d538a04f77010debfafa3700c37fd21f003a3b697d1ac0dcf1f1e080fcfc9706f0ebbbbc00f45203933473203955b9b939403e389af7ee75b3cbb84419238dd3b70389f6c9a503b24759d3ed4ca80adb0b809277e58043e2b90335fde2cc81b693c3bf67a8832e470e34818e260e88e155af0f13ce73cd9eac70835bf1f9fc615aa2d37db400ab4a7df102b074fcb8230f9e6af0701b40406e58dd014c30dc7135308ff156d3979f00a4c16fee961da8a5875f00b34afe6e022ced48b96e802de9ee1fa0e680b7710f08ecb7d7950154b8af5d406be9c53307e4c9b37658dc3c1732732059bfce0df0da42536cc8c73cf4fd9f815c42f74c3b728a960525799b031c1f871230b57853062ac7272f79e7e3722be6723d32c0c7bd7d1828d8e7ac1d9686e581b1cdb95d696f345f868a044b615b3a6edc8074e9d7bc6aaa0f4346b48f6aea4450db1ec53386c0d16bad376066fdd6810e9a4adeb9f038537fac8c0db08c1f7f025acc3f2b130764f2dd027481ccb5d60e2cacc9a5fd050b6bc26dd310dbcee16cdd0053fd70e480a97ee580a97e6880a97eecbfe02dc7b9034df5a3b103dc3c177fc9e721cce450fd044c98b7c7e706c838fddd01ec5663f304c0dd7c585932c043ef0c94e6485e02cc6e795d1bb0e4378700ec9689ea24466067c27fd6b0ced239ac037a76b10f7e915bb4e0075f9b93d9b8791900d6d2eec4817a5da9c11780045c1340c9094785ad22b0e269db3cb41811322387c308262445bcee018d1c53dae459a0ea73b2342f03865c22b5f42b10a60aec0b337a6caef62d7eb1cac745ad4f9bd62eed88f3454d57806104395e26da3c23a86c02d1c97102692b68cf00be57fe338001409e2a11b481ccf91b0ea4c21d1c033a76c2e6c88116a53477c07e6b6fe9a57e254a621e81a95ffb070ef4d0fd43077ae8c985030de5c19903f5d8f78301265075ee4013e8e2d48126d0e11fe02cf6f717ae9fbca5eaa056999ff2f1a4a54cb57c7ae7270fa970e9f71e20c73daada3790e172760d2850bfee7e0035e6c1bb0f406366fd5340ab5f2457eb0072a836d7c100b3f2652c909bb9e3df3ba0d08c0a8a468fa0e4be72e05b727cae4247d3f3960d58c93c22e859e8535a5af69c818656a0e284d32894296e2e43a5b9bfc4d786a24092538128da125c551159007ec1c745ad8fdc0c1da0e2b8b2fbe080abe733401d04d67f018dc548ac003ac4f2e812d0b36a1f670ed41fc396035220302ef34d6a0164e75f003d637ddb8104773d31809c1e1c3960a11f3bc0ef42af9d4c2da40a499ecc0b242d40f30ab050489e319976721a48679a84f3cc25043a5e01c8369f2a883502fcfad29f6f805575db3a0394bc65eb1c5071785fba316092bc0230bfbe3b7b68b0bb68be656e94972497805ec21f3a89d424aeca842204c0d8dcf70b07a4b3fc004c981e29ed88b34193f0e61e90f38c3e734064fd2d809af54d478f15534c04d75a9327e550e0c924299cd48d056c7f09c4855e5f7bb763404e14c912fd11f2825b0d1a16cfeeead35925d08f7a89d40f63dbdb0dafac3df924ce17fca5ae1d483e2e7946dc2c3491cf19b9a10a5c4e1f006a0ecd6b8d01deb2b70f08ec1e6bd70e289261cfc09c9ebc1a603b49c205c0f606a5908da0e72f2763079a51ca9ab000fa7cd95022e0349fe8427701b47b1c9e38d0301c4f1ca06dd9b7f8de70ec00bb941e3afd4bc72f5d6a9e4a9e543f4f00bba179d6604fdde27cf60ab06cd13729a041f8ef7e01b6ae7f4f0096b6b9d39c9b467d1d59cf1d905d9dbf44c145b57e35c0e1bd3b05146839f2bb8880eba766481d68477eb1b754b22826aa95b600facb640f1038cdabfc6f04567547ee621174962c5b4bdfb418d18ecf6b00b92a9a562bdd34be95db153ebf1e0a0dc3a534a5a94bf2da00a8d082779e1da81deb3f80c049fc83a11c5ac97a72fd6500097a7c047435127461005d6affd8811694df0f07124bdd12476072baf5e640b27e70ea40bdbeb9e940c27f3272a0866d5c39d06c389b39504b0fff7ea10de7f0d20006b35fad749967e15dbb04101e966eea5bb22c93635bb37501b02b1b55638ca042826e02a0b195ffd381c26e2eaf011d3999aeb56a6773ad7f01fe9d01cc2ef59d020a5b71af00a5cd06be25af25ebe9781dd0e5d438d496145b4ebce92fdf52045496fa07801378b2a4653cab71294a961e01ad54fc64491368ee77c25f5600194a4dc3b70c25aae4fe1410580bef2a071287846188cba796f18f3b079a62970da0450a655f5f00dc708e1da8e927e7802e508bf3d801a93a4e1ce85bf676013d0fdddb7320e35f7de4409dac7ba07c7e7a97d02981ce1cd08ed9af037dedeecc8184ff60cf811ab6bfef80542e270ed4d2fd230712fefaefa1da5f9e6f1de00c66bdcecadf704afaab6b7ea21d39b7c4ceedb00a208f73b3c15fb2c0e5a3cc5073c06cb8b80398527377eb402b9daa88e41ecad4bc7c1ae0a07993005aceb7775f808e53c18196be3c1f614292b567beee33a35e47000c66cdc73f40a9f9d23ed2b0dcead0a4e706a874a522d40b40f10107ec73af39a0a6619f74501ef42d89bcf62218287d75a2b1cd2dfa3a59e2f3e38ce298b00c20f94dd87e038482482ec9581e0559bfd8d4729147b587f3ed3b20d8e5c135a041b48733073aef7fdc3bd0de70ba0368838e1a97ad037d4bfe08602b483845cf813effa27120e13fa73fcc9e1c96ed2ddc5924a7bb067846bde980b0f03d079a40671b0e345f2e1207120765489dbbe6930470ef1fc0eca79be78092e827b92446607ad0f10ea01e6133b06704a4f0f61ed02074b7b7002ea71b55618ea063bedc5e037ad6f5e71f03d81c6fa5e31651b4a9eaf608c878c6db19c0afaff996f95316e0878645e1d7b77c57809a67b05c1439f9a493fdc1008766959acc8b12df9e20afacbca8bb823b3e1a16cfb7facbf62ba02c2430db2f80aaa0108bb693b801e12bf9c0d746c1554b318844c0b2753005989c5e0480e9dabacf8ea0d33342b6e440678f835d0712dcfd3d000b7d72b6e94042b76b6060079a940ef48bf34f0794223d71a0d157404c5e5a81cf26689a965e8d51959cf3d28aa7c535c081247943bd5e7a01d8871300f91d1a55eccbe73134ba90197f032ca6e8f00760e9d766a7005cab9bbdd2015a4e63002d678f86658345a3d3f4b906b200bfbcc55c9b423105501323510a84081aeea28fed19f87c374aa61e01e10c61e7d0817aec730c18e46fd92815435e1644e707d5068bc0d2055d6b1d8b824c4bbb6d40cdaabda4f952d621e7b0ca408511b361fb09100a6939337aac9ff45a4f77b5cf95c3c4cea6b78029eaf92e6fb1ebebe4960e8a6753ad526bc1813aa8df07707d9d0cb70e90e45d408b4272911a60199ffe027a2de3c9f987033df4fcdb01d92b5701839e91eced38a098dce0407fd93f714002f21b076c055f0e28107cea40e32227acbcf2904c951589c02a806c9c3b9058ce4e00161033d975803bf28301aed22eb54a55f140cb8afb0cb05a14b70d00dda1b96d1d901d3907d480af1a60ba76770168489ca708cc0806a92c41b1e679559827757b0a20a2ac51529139d0430397075561c5f5aa65035ad7db6bed0d556d27cfc32d40ab553b597a020cba244f963409ab28ebe4a65c03648504779b0e8ac2af757d97fe98e7395f808d2900bb65921a3093fcd93aa0414ecf7f006d207eee1fa0ab31a7bf3bd0b73cd3c9a68d37cf0f06b8039e14802160623c7740098c1f0764bd4f1d489277961d70bedd7720492e330748f299030de5cdcc8176e4db2f030aec6b1f743aa9a701a7a3b31380e57679d3d658cf338f6a22df0008850cd900a8599337ce0081dc2e8a5d59004db1c35f006523d2df0780a55051e9cd28d814d64c2e0c6456e46f1b9017facb5001ecf4fa8fd79a3f5df3d4022c0aeba6073458e05f57012dcf786a1ca88396e8b1b815481c90a03ab7da0b2d5d58f505bef89aea759475ceb7cf0ec867c0e7f756444521ee793d948825a7f9dae5f47b19809c2647170690f53d3a28ca29250e18ca280e5a82cbda81b61315c75a00cdb9f6cd819a5e160e90c2dc01c9a2ce0d107772afbf048b256eef9e00011d77290534ba376d55d62c0e13d6f35034004a2c3577ab00cba4b73b011085952edd02fc0c3433c002fba64d3cb8fde3680f3041edb91d0ca0e33ef096dc32733c6e012c01575f024afe527d032ca7fdc597034ce174d0fc3d7acb08c0e2d8dcf02dc59860fcdb0a40ca9080d61701567c056ce7a1247f61b2a4fd36c4a6e223700f284beabee99810a25a4cfa24bef6cf8cbd0f08b55485cb0e60ebe91efd1117183272f1b5512c09936f1d685c942d7a0124b8bb8cfed06bc54d95b9650eb45aa6d59e03cc2e670057150e1d6071fe039a40cdb6032dc11c78830b3f9b67703fb6eb6507a45c96f2ddfc657cfc05d4961fe6188059aeb978047472694e4f6e013ddac5eed880e90eef8081756ccc6bbd08c24d6b80980039d84540746d33d40ed8f8ae00381e347d052810dce509a0cca935d003f0a40ef671c588255899d2f279d480c08f032c791f7c5ce1a99f0f00c86968794b61e9e852adfc4d8961261c6946357593eb2ca6c8e9083a539c5f00831944786d181300a2948711d8417343f3a5316346f22f05b004377b3340cd6ebabbec405bc1254d8fd34333ea7270403acb6b03f8c35c0640536310b901b4351e889d0192ba8fec193da23dfe0312edb7de81447b6cc0a687320a2f809eb1b3e4806a379d03cdcab272a07694a503c9c78ed68f795c011985b528b559cdbaae047e11d835faee08607914efd4c96d3e9214a6cb3c34a7204c73f80d98726a540ef7083272415f7c00725db427ca4a9cb7510a09fc4c011566b927de52344a6b15544e6c0ee42093fc6a918ea392a36c4ae85abf05fc5907b016a6f5a103dca32e0c6022787c02a05ba6450bc02e952a13e71ce82f69f6ed80a4557fbf904744e6cf605757cd9405900ad7bf3a90d08d361d60d91c0c90ba95537497d5230eef678081f3cb9e86a1cb2db5cdc609c09cd16f3a03ecb7ca361f416665555f003907abcd6303b8f02a982502121927e7016079bfee0f011cab9bbe06e06a1e5afb45936bb055a926ef0aced949760598702f565f0248b193dcf0d00265b37d4800e4920f0a60cfbb92321ac9af06aaab5136132e86bada74cb46db5ad734ecc8335edb4f3a2ea769583fedf5965901c87bcdfd5d694add30c2fcb3b20f9810f5bc41d387293778279b8002d76a79ed455099e3d21ba031bbd412a0adb5573e0c0638ef3f3e03ec4aafec0c7006da5d03f4e80ef999015629e5535a00ad52cf06869a58af3f40c3961de81aacb487dabe7f7be28058d13d071aa8f5d48116a53d299bbda7b5528eaad8e503c79567cdca3e1f716faaac8011588e88db470318ed955b3f02dc1bda7e19800ad7dc6d1a402f7cdc069868df6d001a99a15a95278880e29ccdaf358cf37ea2820e795f34b4548eb111f46caff284ccfb122ff9f64e0b5b5f91d53c59e2e3eaa0453a1c3f3bd08c5ad796d4cf1565fde51fa040fb5cd905709a6f1a403b92ab46d8d09eddc70556637b438f45b1947c28b360046d2d23c2780098b299f70e2441a31410dbaa8defd701975c3b0eb48c4f570db09e1eee3b90f0af4e0043a5cdf3c91e3ad424894c1c903dfbc700336ae3d281d6a08d0707d4a2d872401d5eb563eed22c19dbd233e6c5b134b6aa3f970f96ba2455ce8c7ceeb02cb0f206201b5fb3710c3077d3eb0460b517beec2f9efcf7046046a61329ac439171a7f57c01a0ac59a25c04f97cc5917cbcf096a2c3468fc7cc508e11cb138ded50937f2c28dd4704815dfd8367443550bff87c72c02494c00c7195a6ec1dfdd167b6c08e0df46afa6ce400b1d4041a8609cfd8280053e414dd324a032bee1a0d8b4d451cf896b8384ae8460da0afc983161c2c3a399d5c1960dfdf9f389086b2c3c7f9a5f0eeba01d6e4ca7fc15f2ecf1d4885db5d9cd68a798529d2e29d0a645664f8e241c0d3177c5f022a2b43fc0e08b6cd370271afc4ac7f046827d4687f31c02feeaf054aab8aa0229011900122e80ea718d50d3756ba9f2be61ebb5cc8cc002daaf5c3b503a5f79cd030db5fc2de066060187497b40052f20e460ea4c0cbad6001344d27b9038dedcb8e03cddbab0f037a6dab3492c5d88a313497cf021915a642be0d206d51b39d01d892d2558ddcd8126e27674f004be374b82250545680feda00dbc9c31810d4a74159de8b7149f28a4475688a714db460f25b0108870a2af732073949125e007638fb9d3ad05b7e96003debc70a9fdf8f3a8a0ef1b53e4d374a8138e7b4cf5d5c020a6c177705801b8950f1da38e7d41f4f2f0e9873bd038ded19df32982fedce9701768fe9be030df6ce87030df6eddf2fd48eab7f0e747a5568e81c304d55dd65015025ef1c50506ad301f53c174b703c76e7364dd585939cd0d074e31340fda854a97d178013f02fc0fca4dfcf0195ec0ee9f936a0552a97e4a30258398fd9a3403152bd93f09a0272d6e49d2d8192621dc99b8661525b61efb315009e19c90abf98eb9212870b817edce92fb32960dab1ae4f1c48d6ef7601c1b4604de4499420099dee3d22281087c0e70f25a62c39502d004157378040c6d8ba0434b5c09d8196655c4542174002735503ba9a588dce81b69351eb404d7fb6d7f62c4afbf487af52fb970ed0727e1c689a1eee3a60371d3b4043f976a03e95a16a0124b81bfe5ab42d056e2d0037cdc70e34f7d76a0728acfada69d4a46594dd56274fb301e76b79a7cf9d80115cc59a4750127475fa0c20a150983e39c00d47833d9dff493bd00d20935826a7062aae3974275e4c4baafe350f8f004bf0787606b0db848eb754e65b9c1c032a52a676eae469d3482f6c9a7dc050a90b7f78c630e536723533c0b6965c004ab6b5f55b40ab6784f33d03ac74f2548960a0420c733f825aaf55f2ce052066e49f0389d4c9c881444aced70b4089942d07045d9d3ad0aaddbd1840608ecf1cb0cdaf3ba05ec1920349d0f7bd0354164d8f2cca077149d700ab51767404b0024af7fb06f0623cfb005838e5ee14c07d43bab60a30b7b5b72b802535d329a9c8e28eab4b50a5088d8042a3c9c31760e094b40228737664393f1559652e9afbb4b426916058a2a5755db09bd6007c9cc3f9aa012e525586b8c8dccc3068ce65510a4920ac3e9d0758aa1d9f7706b06d5d2680a6e678ff08684d60de019d443b2858720134a38e68989db4d2f1a303fae310e072ba6580f3feeccb012997c70eb46ae7ad03353d1c38d0ae7e7bec8082b8970e285ef2e6409bf8f18703bc7ffca19c2b0f8f1ce8f3e5d5b900baf57ad0b7e439ae5ecded13c043badf000d66a8932540cf9da742a98bbca0246adbf18b2854381baf022a79990499088ab97f14959d6600b39e3ff0d072ac5f0455b58f608297fcd30830e52a5e2177c5dc1f8892a8d261f2ca5c8a1897bcb23b8b5d6917798d374332390290812a59a13fe2364f3502adc9799417adb85f5a3ff2616459672f0044b526dd26a044e8ea0250ab1e5f500a84085ae4f42e77a0bfc8601641afbfa4993da3af55fa3b6b1ca83fcee9e428b81287c70703bce5e4c2818e5e5b7fbf20f46fc901eec8d70e58711f1de8a8b1f3ed8078b1350764797f71a01975b8678025f875df813a79532d2df2290655591423c848433bae018572dda46b5f00ea03a5eb2b002ba4a0dca5c57ce82474c7bf06c829dbf29628c902936700599ac324013464c3f9f76b80d8d98abf549604f0641d6015518eff01cc25e0a807581a058e8045edb9f666801cffc2af2700752393e91a0007ff64ccd746d1a6a2f42010754b89b632b5ce01d13ef2408ca095e698e674a11d57d2e2c481a470faf70b495095017a9e519e3a50d36f0f1c108e6d60d05f92cd0d0752ae3eb71d68a19737e502e8a1729d5d00dc4efe9e8172f5f70c89a5bc291740aac2e59903a90afb63031c8af6fc195cc7e97eae285d4e4f0a80b924bedc002cc9dbf6086039dd8e0e00ada5fb780558818bb77700ae91c997b6c6b2b023cf9324a88c5a1f0edc1aec786ac03afab20508660ca5e935c11b897c1516407dfadc18b043b3d48d32589091f20547d014126d65e12dca1ecd316cf097618c99723700327c37d2092047602697805632160eae1c90ff740dd0a1b0aecf0c704a5275db05d06ce00c54bae17f832e8c52c885eeb203357d6fcb007a616daf1d341b92e76d07ead3ad4707ea53b98b2d8016a5d1bb03d6d3270712dcaa7040ecdbbd031ab663002954d2cc629ea45a87e66df569955b9915e5618dc07c58650a9f6fd03ae1b48f5ac7aa6244aab0620380edb391393d0282e0db875300e56f92b301c06d5368f4f95539c138fc4d4b4bf3f8bfb75f98835dfa04a8b0e59c69a0aa6aca12ac92db71f53449ceee01e6b1ab520b71396d29e2d6d11fbd9548413eaade32a6f4da92aab8384ae7af6b402024b3ae0cb045bfde00386737c9bd01ce0db747004ed1416567164053ecf8dd81b6a4db8901743aa54c8da0a761edc8813ab93b75a01e3b5a71a0a13cdf040c15f7fb8d03fde2f3c50067b1ad3b071adbd99b0374877b07ea8f66e680a298ab0eb46a3fb40e4852bde740f3f6f2d881be65ffca017958d71d10d6b96d408b74f32a19abf31ce1c7e618f74e6e8977f70115d9d5b73200d95fd2d51780a5a2bcfc060cac858792d3ba28b94d38b803d4acebab2dc06e02ca5f00956a92477d7ed446d9d54fa45dd4d5184540759b8ab91b9f64fd97bfd4d47b0df7b901bc6e1e1b40cd65db680268a73c0310cc147eaf8dafee46ac74332de3753fe958fa3494753cde93373018402c516ae6be81125ca5a688a043c6d880e7ce821c79ae1c5041790d602a6d3b764060df9903748773036cd1ab23c0507121d33ac03afa66c0d48d1507c8faab0364fdc5010bfd93035afaf71734943b0724583a77807dcc5b8a26bdbfed807a491b06c8d8b62f30f71e94e54a9e7f45c86bd4e2d3558065063bdc04b0cdb74a5c1381dd237f680d8ad240a296230316eea25c9d11d48ac20a4a47578472447c439b0072c2c354c1308296f8ca2d0d65a84bf4d325fe52b75ca6845f072c282b0ed4a77706ba297579ee01a4a6489433a30801b7f9e4579d1c9a317607a5f72c426fe94f0eb559ccbd0735948a9e8ca035c1a50ba324631c9e1960e95b4b0de0b87455017a4c15ab53004b70f2b9e5409dbc3a76a085ede9c700eac6ecd30162f9ec40237772e280bc5f870ed4f483890356dc53071a97976d07f85dbc1ac0ceff2d099a3b0be283a6c5a0c91bb27a6dac02ac8ed5c59301e463760be8b1299d4ae89a62c46af9f20be811ba5e67c2a626a150e81f1d50416817d072bfbfa3d16f42564ad69fa4c334f1c8432ed7074060cfc6fa35777dd3f2b97a618074b8e7bc258a83cc72637b46c7600feb0ed4ebfda50375f2261d14e543c27fb3ee404d6f5f1c68289f6700bb077ade72a0ed64f6e280c446d65256bab0bced8095eedd0161bf9b0ef4da49e640777c574b0ef471a33f402ee80f0754b8544b5b0b4489ab93c03cc470f18bf5330089bfd3152d9f6d61a5599f5200f94f937dfb85a9b4bb12feb6c4fd259df2d07252ea2fdfa780827c6c8f352070e439fb36c0b54ffd0268d94d97687a6d5e04af0f0016a5907c1ac06b6f83cfaf7b1658a5a589c02a096c4865697bcb6fa9ea0c453b8c1aa2af0f003965889331a0b0f30b0f8dfa29d93d78edd060753ab9318038286df302b0c23c03da4abb47726780b16d27000c00a17b7280c3f2b9038d6dbaeb4072bab90ce859e9364e0cb0236f0c0e343dae7f1ce0e7b802306f1795f25900ae7cdf1d68c57dfa764089d8bf67b0696d39c0d0bdec40334a310173809eac143b0ba0766c9c3ba07a87378c2936e91d48c6a67b0ef084fc75a029b6bcea409f5f8e1ce85bc6bb0eb4df7edbc8e1dbd3bee82f5d5ee856b4d99e022c3cece8103098e2acedb52ba623f206be0328aadba8b055d1c539a786dd6928e3d89354243f0650812c5161de0520e8aa71a06118be0d305fae7601645d49944a7f0ecc03c07e81c924595b364081f159e24022b5adada00b41bb7a1bf8b8a6ab8880d049bceb2d6dc09b36ad2ece4af5face0430e63236a193874c12d434a780821bde9f2b4089a39f024022c03d3bd9a0c7e2bc25a7db36a0554b93cd2507dc26ec1960070afb808e13707ae0406f592b013d3accf93a6028b501ffac1ac017eef79f03c9a96ab72c00976d470e3450476706982f27c70e98eabd0306eac38186f2c35f8bdaf3e2af65465d9e38d0dc1f2d3bd0beaf5a690ba0e513e5aacf2d7f21479eb98fa2467f5be3d217234200945435026a1e34bb5780dcd2041e01ea02f54b02d39763ac1b2a2cb1001afdc77d40ad099428cf7704a140b5de03b468e3573cb4ae2c64b703d88c7a7902b4cc975f1a16c69432ded1aedec7994e2eb50450e0ddb13305545ca3278f801a395da38386605bd2c480d9d85a4063db496580c156698105e0172f0093e461c301d71c3b80ae223dceb501446a2d7320c1ed9e1d507ad39ed173266403ee6d4b0ae841bdd95092a72f80ddaea81469e1fe96e1a37380263d73a0a14c571da80b55cf6201f4da65ff0bf36573dd815ecb1556eff36573cd819c6c2e0f1c68be1cfe01cd97832d07ead3a76707a4849068476d83db6a65d32ae6e95fa5a11cac0188ce4fcfa5a00d85150dd9ab0de0bca0f47c11505d2e5d6e0156c8e9e51fa09f902dba3480c55969bd8ba11c9504180e00f2c2c5af004c739ce3ec2f1c0292ad23001941dbf4c440895a4c4bcbd222962b00b33251b4710483dd896baf8c4b2331cd2aff1b418b6e794b8fd9d618d21f40637b149dec9b96024022186c226bf91cc2880edaa5d78729e6b0d573406d6ef37780a0734313f87c9b84910330ee8461d30022357a0360cb49d626065025c31e80191596ed19d82d93b5a9038ddcf32ac055b83fa05f6099184c414b70041d7c02e14332d8044a71c11b7c02e58d0382377e1c6875f8181c6875281e1c686b7cfc035836bf1d905c7ecd81e6fef7ad03b5f4d53ac8cc944a0c5f8e2c0344aa5271f3d30bea970c66115852e6831b408167c6c611808a5bed237f29a9c599483ee6b345b29e6c5f0288b04b8b3703cca8cd0c4095bb646b175053b54b458623e82c45d73a6050dac4440e54e5a8a63a76b2d403a8fd94c8132102ea02869b6f033a13264ad1154163c1a3370ec8a9d2013a9268dcfc03f453f27e1d0206cd97247c39d0dc1fe8c290e7e8852d8058c0a63910680b0e122b8f02fd486522931ffa34eea6e432a1c7861cabc24e0528b0b09ecf00c1ce1e2b00f38749a60072bb34e91e806096f0cbc8c539c7c973e6400ddbb831c06e7afdeb400dbb60b0a3d6a729f6b9ee4002a31adc73c0c6f7b9e98079bbe680521cfe0c2d28c9ecc98196adaf570778c9bf39d07672963aa0aacaa9034e8d67064c95f45f30b355bc7501b4f17ddf384051f49672b05af97ba826e1c962512ae74977755176a329369e47cf2e7eb15d02cc3b5dd92b23c0a9a4511ee7082825d87ced0814b8ab27ff3601034e5889066a5c728911ee4f00964177edc1404972930450a9324bb2aae9318e8aa23eff9186c539a769fadc031aca575cbf18e0f826bb76390e94ff4d94be31022bddbbf368001ff84d4da0716f4576766a81381bb8287b02541888e4ca13418df55c6534cab19bd4568e1ca08ede3a60d9a2c7a2f04bc664a65c007ddc059f1f455b1ff7b9e20025efcd819a7e911b40d69fd71c30e7361de02f75e8003570d581fc5094fd650164ec3af97b863a797fe6806dedca00dbdac6ad039c7dee1db0df7ad371f34cf71d60ecf2d77221b3fe620033f65de140cf50d5e172eed1ad61f87a00e453e2b41e0156f66ef31230e0077ba47d6e52583cd0c5128018cd54510311340abc48653388a0b5d78e0064e14d5452a89c44254f2adcd318d05286677543a02a65624c120dc3a4e6b6ba6934729396a16c5b2d7d939e22e5cdcf0580d2ac8981618c1d66a734c0362fc5288229c2afb34739cfc2ab55aace011d96ab66d381b6c6f6d981deb2fe6080756cfdc901a1e519c02c682ba70ea4d4ac3f3ba0b004c3f0b7156c18b023cfa6033df4bd70a087e6f70e4858f7f7176d49fb5b0e981e6b0e343d8e5b07ec0daf0ed4b0d3bf679018feafa55c0acf0cb07e8cb71d481c462b0ed474a5285f006eab1b07e4a81a3b58bcb6bd558f4de39187a4220f8089e5a7bb040c2427f8d1049a469d4d6f5106dd08480a90a8667d3977f19624a7ad0165574f367b80c512ab0666398da2adcfaff4b5d3bac5487d7d0aa00468d20d004e5ac92f2d0d235cdf74062aa7fdb495d06d687a4c87aca6742fafb56085d45e3b946661fd0260936e920c60a91787358099b2ea1540878c856d079a736b23075ad7bf7f01f84a261b8d037ddcb3fd62e008a8b09b05d05f9e5e1d48a49e3e0de063f4bcee80d9b0e140bad473ee00cbd59b0352dbec385027675f0e34911559bf00384eff3d54f2b1b7e68002f4770e34a3ae4a07fafcfaafa55afa0e361da80bcb2b07fafc1def0f2c130fad019b51fe2d36a3561d68e446de52d4afd75d075aa5d61f1d50fda776a029a620d672ee03afe2030aca8b80eb96f6660bd0b3e1c8e618b79f11bad4f91b809242cdc91aa034d7a6538055ff39fb037843b5004ba1b29d02065c895f34b3b372a29bf7a4a01d25a94bd2fc10509738507d0302d981aa60808c3ae31f80dd2595eac27995156c5bfca5a2004ad87b06502c2c296947dde08425ab539985968cf5abfc621e4daba97ee940727acb6be3714562b95a021a0ecdab15a0656c533a394e423de33275c015f832c027e13f074cc277039a73e1ad75a029a6a8f8059032a13b8b0550af1f3e3860c35977a0813a5b73a0e97179e440ed984c0da06d7d0f0e34fadf9d0342cb8f1d48f8e5e25dfe85002834b4746ffd461eff656e1975dac719a040d7ce2e003d16e77df5695e60754ae4363f3764e199119e0024a90e0f5a82e38492e52ad5a54e99c7a3b9121bbdd38e9acaa3c9ef09c0ecc91ded30d529b9be7380f0bf1a40dbfad5729187116aa03c54cbbc35679f9934a5bcafc83ff6c36b87115df8730c9860a6d435c7dc2fd64e167cbe053937ec1e79dc813858dd001a361cf9f32f807aeca202742cf4af3b0ef4f967ab809e67ac584bcdb6f5f401b0830427addc6d5b2f2b0e4834f9e3805c7beb0eb4f2bf6c3ac039ffefa1eaf5efc6012e67970e241f93ce0125745a0326dafe50ce0de7fa45915b74dcbeb6c6b977bef475d5cf9e1f44091179fe004c09e8df9b024a9c399e0f001d07cd1b7b462f394d5eb415cc8fc89ac86ffb001c979225fef26764ba0690142029724083145e2e015a33306be92ba2a86b5d5746aeb2e81a095d2b2fa4b2e82bf57ac361a4e86b4a09ee140093b1d90dc08ac8fe68e52fe2314183fd73ee404dff39024ccdfcc343879ca089ef1f40c3a9e0820e8aaa9316c78bc201b7e6df0e2430c91ac074a9b79101cc942fcb809e38bef7d281f6a8d5dc008e6dba3c88609001313c0e0e24741ffe0b7be8ad03d2147f3a20a8f7c981be65fae5400bbd52fd2c80baf065c3810446a9c216409f5fdc3b907c2837d402481c8a3f20815111d905d0b73c0403e8414fde52b682db91032d9f37fb0e74c9a5d4f1e53c71afec41a77a685958719bb347c0944bbfec1ac042df1cac02aca2b45c8923b07cf4e70f8086ca81cac855962539aa92c76300c1d641ee1ee59ce82f1beb8016b7d7658d6d59652813af34ac2e55ed26f93d00908328f9dd7780f9f8d000a5d17abe25ce4a015dfa2d805698f757037628fa027464e492377659f639098467bb805205a5929f5380edc83fb434ee2f4ca01250e101905c016a2c35590e082c4a930b0778633372719ae273b561807d6e79dd01c77bc4616831b9de650690a0bd1500ae09e1fdce81e69cf2a12c0045a9ecb5a67ebd670eb8f47b7480cda030c0a2f4f102401f0b8fbd010e45aa24b000c49dfc01b5f467cd011997be1c48dd902ffe0250dbe7c401d9c48f1c68223f3d3850af3f5f3bd0bce51c55feed73fe0bf6b9777f2d89382ed51ff38cc2c4df26809a1b9ad315c020bff1e441dbc93c5841fb5c3935207148ce8f003d913a6f6a4755e58aaf4cdfb538567543128df7174047ddfb2d096e1588a20833cda8aa2fa895b67503b08a172a255856b107f571c531a056c3d2f2c400c3902f0302b73c2a58380776ebc5d70e6c8de16d07d032d888c31c482c9f0b00913ae1e9de8176c287c481a4f0ebdd01d6c06d405f9134e2c981f686c77b076a58f9e2408ad1dd950375d095fd6590bd305c3d38908cddd70ef48c8f570712a9c7ce001fa784ca0ba0a56ff7d381c2e5764e1ca84fdfbd1d1529544a0712feefe0400d7bdb75a0457afbda01091ea5a1d43965dedafb1e505a0cef00b014f6e7ead33aee1ed4e54900766a3cea00dc6737fbdf809e8bb2a0d1afa34e47216ba9a3751476cce91700d22735f7b4a31ee198f2cb33ea9cdbfb77fb05896a836a0b4650e7ec0df7004a0ba4ef3700b693e641ab76dd046ebd665af9eb9e1cdd61b603281b22a868474fd1b2e4671f6067c21f698eb5a9704d38041498d3c3162020410ad79f036654b301b05c7b2a3bb300eab1fed90087915b7b06b14d090a5a6de172e9893dd42c68cf9d034d8fe7cc016589460ef4daec17d0ab1de9b1fd8249189e4b07d2e8cb5707d2e855ce2382a1248a73c901fbcba3037d7efe6080fd65f7db8166d474c7815c131457b000e43d0f0e0831cb1de0d29c3820adf7be03cd39d6d3da15c5c3bf5fa0176e38d0f47897ac073732718a0e45c9a5dffe8701fc1c318587c2f2d1ab127c19c54533aa5515c4083aae39d635faa11ae9c23fb95e038c4be2c54e00536c2885fd85540c2d4b70a85a6a1c2ed1f438a374f7fa7e0d6848d0f676ec8039f70468957b3045a30fb5054c8d3494214c4af6281edae086d32a3a6e1e3b4ada801d1eda53c72aec68e4c2302255d8ea012033e7fc43404e0ccdea29a0d0fd4bbac2e7cfdd6e24b803a045a95172f93990d0a51b8903347afad45cce5215b18f809bf744e9c5174032f6baee80d8954b07d8b6f8da28fcdce0350ef092bf732081b9af1cb003b506982fd36d077a280a49f00974bae140fad8ce8b037dcb3838d0042a270eb46c3d7ac3f8b88375075ac61ffc5bd880f3bf876ae45e670ef42de1cc007687334950535072aabd7b35c0feb27707b02ccd4a8c16816557cff571cdfcd0b300df35a02bb9e27c0790e83a51dd9539208ca0d660c705b8a4f800eda82ccd79b701a0324b50faf939a026c6b2d6c2a626f74ffa76082835095334faa6ee3199602268c284aba34bc95813bf5f0ecbad16e9a69d4a656914645436ddb4a66a17bfe833d237ae4a7768868976a0468949e6004750bc2a9a816724abfb000c114d7362809396523095f324d56414ee000d62f9bae6809c4c5b062cb360026811fea73b075a948e0c74b6253506ecec71e340a27d3735c0adf9ee07a067717cb5769823e8ddc48156873bfb385303b16e346ea47eb4d7faa1a877a049581d3ba0ec4ced402dad0e1db0a0640e881a681d1035b0eb409bd6cd9e037c376ca0cc69e06eec80d49cdac4db0283597ad5011ae69c327344d05a2e57ed1e71f164d94a00d58429d66902b57581597fef0d80af75fa76042055478203446b1b4e38be050c688e5bfa963690b639a80c71040537235fab0033887c3b203641a59ecab6cfc894363b04e494e05a5517b671f9e0cef3dc013530f9b8a14460b8e19d03321e9c1ac04d6bc51e5a732fb6b1ef400b4a424ba3d6a7d772286acdb4971ede013a362dcc2eadcd86e4d65edb714c987e03cc92f73a38909e3c6b1de06ff900b03350f6e140b3f2eedc01c27fed40edd8b93780f0eff84311feabc2815ecb25a887ee2497870ec84b1b1c48a45477a5f4d09de4fad381fcfa1e25525dee55ee5200b2de3eae007a8e09e7da2c3a4b42dcbc4af9eeca8cdc2ee92da0c7e74a4532ca2e0a3f518b9f002b71a032d573a0e991727cebea89e27092d31f00b5c1d2b71307047fd18eba1b7365f30018b07e3d4b3eba506ae4da7e1bc02929ac6b95ea8609fafa066f31596f9a630364e5593560ca15ee1e5dd4a538565f0002cad57d09684a6223ef012d2285c074b6d027a8819d19a993c700e8d86fb97fe9ccfa952afbed0210077cec40c330a54fedfc92dc4f0db048df300c5170d541578f0e2452087fe7b2ae4cad73c033ceff3990acef6f3ad0547f080eb48caf5d39d09283eed0b92427e70e24c90f6a695ca42ca7bd969cbea8399a9f3f03a8a4d8b6dac4fbd2322cbf6d03a87c9ea8ae570496f84a6533cb78bca398dc7b07c8b0d2b25af6f38a638b5f7c4e00054359dc02aca4d00a4daf39ae046cd27d5de0e1fe7b0a28f1d83dfb04509727392f1c70d41800dd84fb4a8d5c1f46d48ffaa23fe2294023b7c26bfbd23c76b526f7c398657cf50850103fb77ae2403b61b30aa86cc5a53fa2f0ab7e43a0e951f825c9f713075a3e55733a02bbb2992c01ba9271b93440c3d0f97b3376250fa9037d6d71ea40ab659e002c92eb76d381646cfcf70bdc3d9e1ce8e3ae46069075dc3cffe25fb607076a1873bff765fcdbdfa28635c9b5030dc3ed9903f5d870ea409be7fabd01f6ca8d03075c8468460d398a40abd0ae08a8e8d862009887aae8dca0ccd7e5304fc2b49020658088a0a3f8a28a6296436949bc707e8abb3c5eae385f0f2506c4441595cab8cb699aa6396f89f3453affabd6a0b87a529d725b93700856b769a60e1a1a8ea20d06b3a1cd2bbc7e4b007e064da0e95dc5e16ca6a93eccf3f10b1c39d02f881a18e22140579ce1039033946fbc367e2e6958ce0de0d63819012aee0ade4e013566dbd12ba061194770079f1e7bcb00d3e8f7f8b8b86aab0b0f3a07dc24de0306ddbf24f86c0e26eb892ac12f00b2de1a40ffc0b0eb61264dbde8b16a540455886914c93507c4676f8d00567af3fcdd81a4f0fc15d073fbb6ff25509225b1d94f00135262aaf67504531977820ad24590e92a2d55bebe082a32701fdd03ea925a8b4f00f22a246b6f02d594655cd12d115034247d1d0bd4b93282a6af13404922746b7a4d22d2f435035484779cd38eba261dae467f01a4e5bcf702714d564bc75b025d4fececc1a580596a1a25978fa0e26c3a193b908cbd4f01dc5924728e5b00898354a7ea2face2ee0cd0201fef13039a956db30668b9f748571ce87c7b3772a0bdf2f6dc8064bdc919a8380b69e9d8818672e718d023fc57f60b53487405be00da1b5e7b079a95ad3d039525994c1c9064e5da014113fe176e68ee3207eac274ec8025f8c60185577b074ac520ef8e289319d6406d16d53c7a41b3417948e63649c958a364d973403abaa34700a98fd29f37805d1ea84857044389baa1868dab917e913ef08b289514c67b000ca43cfcd5e88f6b2661e81b404199a637fb8549f2f914d0a36b5ffe02c805dd4aa7abc6c1d2e16e2700f29fb64a775a8d1b7ed1b49b809c25e7e50ec069add121b11af753d2e2adee0844f55c03652d8d2b1f2bee11c0b471ddf046107091b8a2e951f8519c53073cf4d80071e2d30280d925791f196017dbde0574d8711552b500e400983850c354d0720e24da4d5638503b6e2f1c6061b5d7f69a95c9d5c481647ddc38e072fac6009b6772e9407dda5a8f0d78522bb46b01f4d0ebdc811e3a7a31400e91c7c4014146b70ed441daa21740afcdfe392011fa9d03a2d24e1d90f3af71c01d5f6b80e522f7bfb05c5cbd3bd072d1ef3ad081f7597bd4a420fb7ec30a33291ab49ce31c60599ab7b4264fca0992fcf901208170db2f012a746d959aac26556ea11903a062511a78465cd62530933700b54943b1e9402bccabc4212a2c2a629fbed2d2ba649a9ef07175c3a9e078cd8166c36407d08e29e0780fe8c65ac637d5eb93168dad51007b043521ee0a23a8265dc73de17806e895a4ba79e76bfb31e98195913c820ca3ac523045404aff66ff00507312dfa54f7b12a3b51d4def39ce36cd1100c7e936e1f3e3cac7ea700ea86c6b3c04b07906dd4844c0c697dcd95fcc7f4cf6d308b03a25251d14e79c1ebafbcf8176f5d133c0e6cbe7af039d923e561de84c98fd732075f463c581148169e9804bf2c281ba705a3990d0956307044dfc38d0a1e8e6af61544479752059af361c90707bcf0093f0f00f28fae95e7bc33cde430bfdfad481bee5401bdf34aa819cb35b408ee628bfcf084a8afbe63b805ab332fdde000c543f9e69e39b56e42d6e964e00d883d257f5d8d4e64bf2931b90c6961c7c3990da335e0690c53b3de2a135759ad3d304d098e5ea00402864d85f3340c8ffc8dad1eba4955e3d3ad0ca3fb6b70c635c23b54a4d43862df8f81250e02df76ebfa859f93fb5264f9b5222d59c6b7f99b6780034ca175c4dbb29cae6097ddad57865cd346fa7fd841a764a091141d0bc6d537a6c98a0180d67000a3a84c36d007727e90a4d9fa709d0f67a05c088905eee032c6eed76c3813a68d6003a145699f5236075683f960d70560ff469dcd6a4c3fcb3bf30e7423d7540c6942d07dc89f70ea4286eb50e34e794867601c8cc9138605bfb7b06c7954b0724377931c05056eb0e3472f995039d2cea65079a51d59a038d6d71e640536c53db4956901fb77db902f498900eb54a655161d555fce3126042eec1df990199b2dae74fc094b4784a12198ffff91465f3d9007687ec11106c8bbe07905e3c7d97c696d5d998679c032aa9a389020de64067d3745a031af63919dd22b00b7f2575afb2864340a3d20255d68fc867303b01504eacb186f559208a7300e4cc97232db0599475d2266e00ca9a7bf512d04ac6c2941e1bb88c0d935f07eae4aba9034dc274e60083d981030a38d263713668fdb81f3b90245ff3b503c1a3ed52ea4013e8df8d0136adcfde8114d66edd0149450607c4bc3f3ad05bfe5d3ad0f438af1c68b9b87a73c096f4e44022956e1b6007521a96ea2f4266f4ed40f3252b1d687ae4de0e66c3bed6c23c0f19a9c2b4c2e44523496e5518afcacb0cf56b74660013b46e792208191bdf09806bf46445732eaf2654dc7acc012567d3c90ba021fbedcb2da02dd85f24da799c0d1a064c26795d98dda10554b454a6ac05c0e77bcd00bb98eaac46c07c49d6ee00d4394b650a8f80f416c17a2c8c0967d80e808caa2a0a0fab722b74de8cbf017c6df32619cb5b8b7d9b6922e7fda4c10a27d1cee338696c157752cdeb48683bb9e0e38686e09eab67032c9f61d3013ef07c9c19334271ec8062508c8b1df092abcc81a67a4dafc7194519f37507b2170e2b0eb4e1bcff38902e95204171ce6937fd5d75a0bffc5e39d05fd291014cae7de7805d2c732095763871a06fd9fc724071bdbf67689a7e2c39d0b7b0bfe4be8b290bef026809beb481b24d2b191c6857aff71d60a4d669ad28c79c5f66cb00ae051bc534475090fae87b05805886a9067b5e2d8a6a040190a15b9e7f1bc05dfdab04e44cd3df5740c1c7d50f0054a7a040fa082a330ef3967a4c2ee8d72b403e26baa500501c2bdc6d03a84195e65f80c01e95e70eb4cf9d2d3b90f6797ae000d7c819a0c53dbba44fe3798e22b25a500abbbd0f276780dc72fd5e3b20a48a8f1b2ab6b5cf67075ad7df2f0101abf5c500b0220813fb0505b6daf75f0086eeb6db03b025853073a0d9f0cf1eca657dfbefca010f5d05d87c795f3120cdb129ce1df08c0b074ca01d07e464fa7620cda0fe7ba8c676f3ef175204f2b1037510b6f1c2f5c29bbfb7e8b0fa6fe440abe58d7f0b1308cdb12c28b9dd6c4d00dc57a61cbce72132eaf5830703643597535a0425d34311761104eee62fb5169695651852dab308304385031d9acb9af204e96b0930ebf93b2d8d072b35ecf01840bdf9a080ba08c852147e74e02d43c9de70a6812a3be21a9315695b65dfb40cc312c0fc4f7fb40395c30853c584964649568f4d78e860471e85aa54a597cfbadd02a08fb558f14b377463812fa3e06211a083cc0ad724e70ea42afcbb36808632d01f514e79cba503cdb9f1aa032dc1bf370e2430bf6b0ed81b460e38f2fc1ac0af4fd12d0b4032c2d48116a5eb370712edb553071a86f5d281368bb5130792f5972507eab1cb6d073a13befdfd454d7fd6a2340f222119905a5ac58384845f55cb23c8713bb9d58caa2acb86f3a286553565ded2b70a908df132b904e4639ce203a01c93b6f90ed0e121b2a581aac2983badb17487aa27097133510755712d243eea0c5063313a5f03046cd28ace8f00d7a6e4ea0ad02252b7db0e64fe795f72202db81a013a6c4a93d4810e67ba595d007ddced8e03c95865afed0bae6ceca13d678f7ac981b6e8f4db81e48355cae34e92e11a40768fa46f1de85bd03e2b17fedf4b074872ed405acecda6015ebb73eb405278b9e500a1db7140afaf3bd0727174ec402acb8d0d94ab2cde528e0972ac8ff232cd10a92f408da1eafb03d06a9a367c6d3d3f062c8032504560b68b6c1b605ebf72f18e7beb84bc5f8a918880a2cbe95be9400355f0d0ba2488040db60e5c2c872dda115a8976ab321a55dd70d06cd060a3eac00dde3f8ddcbc0406fafa2aa0c78e3b963e56f756f76dbcee407e06d734bd0f18aa76e8c261a472ea6179199091170ef5ab8e334a7bf6e4c401f173f617bbe559dd36a08ba166720660a14f4f1f01ad6906f60c9cb092f70b07fa457f0ae0e0dd72e55bdb8c6abfaca5e6f779b4ef4036d8b0e640bdfe750e305bf0e6a7032dd2ebb503d2369f39d059ec66c38174ba6ae240df727ce48020f8d400b74d8a7bade6d52ab4b0a99c7a04986e9afd574083c0bc5c025025939b7bc02055213dd17a1adba36dbebdbd06c4d72c7ef1f50ba829b0553f0230b8a76fb4a3ce54902e551049040517fe2af930076620fa06340a840da74b808e23e09b862104a2399a52c21f9a9106bba95600acdacd9896762d0bfd98677403a0d26c083d7ed24d00c4b3297e39c7064844aa70fd6a1e78c1fdbefd023fd8f4f80ad020a7d8b6825d4fb6dc79ce8196be925e8f822b9152f1b408cc4014d61d90a6f802d0235247bb0e34b6477b0e2452a9358c75bd55268a05d06cf877ee80d3ebad0374981507985c7b07d2947ed71d1074f56e401fd7fe8e1d68cead570e48f276ec402dfdf496329115e9b70012291c31c2df76b2eb007d7ddb01f7b7fe2d48907210554d61334abe4e117453aac9ff334019e22b6d6b4d69f151dfcb804c9330ddfa01a0a1344a3538074c53e5bb88a02703b762f022180800d9e62f1517fec93beda8a6dcefdfef006aea48c8b53a022c2469258dbe89e75b9d4ddf0a00ba54b33a0114a84e03cf0823abf060003f8336d5446eba82557bbc02e8b49d242bfca5af8849dcd803102d981e688f6ae248b2f21f1960e53f0e8040fcfe3805b4dc675763003b61ab10c405a05ec12fa0d72579fb75e1000d65c5408953bc3d0397c4965352e3f3e5e5d5818e4df59e03cd86fec000b2befbee40a2fd7de180bcd633071461ba72a0997db8e540b27eb1eb40539d1b9ac685fff0ef176ad8831ad616995595d5146bcd4dab995d022a0e9aaa341101699c9a5a52d8ceaffd34fa3d80cc82c9157fa947a66d4d0019f54d55276001d094d4856d989057618b7684ccdea2bda18deb3a42b70ce859d74b7d7edb7756f14272da7a62f80bdae1f7c8d75340a3552a5da683e29aaca62f1f3aa026e83ba0432dfe7e7120157ff2e340bbe9d7a50153370e1d481168ef003d32c615676b2a7eb2be69c056cb73071229ec96aded0d41c54a23180aa95f61d98194bc9717079ad91f3f0eb415bcb60ef032d97780acdbb79862743d76a059f9f3e940b2fe983aa0e6813f94feb89d39e010f007889cfe7220a1c339ce6335d289be36eea51c45cfae0183d59fd333ba2a8cb4387e8e01acc9e99bb49cae1e8fb49ebe4d01d311fe63a501bbd3ca01197915fa73031c46f00e9b039c162f0125075e2c359d19fe1bcc2e5d1d706cfbfd06b43a7807eef8ba906ba09aa994deaec9508b15c61841d0cc6e6f786d6bb9a156b4ef77fdb421b49cb7c4eea0d2d50c40b85cab12071194a40b52d299085a2b1a627fb1aa3b7268afe6b11a3adfe209d94599533b56b70096a9e49086c5ad40c370f407241fedbe037dedf72ba06512e264d3f95df4cdb2037d6df9ec409daceca60b4079933d07d4b3b80730f7db76c5001681e2d60185be9e003d6534ba07075ab6da4703a617ee38d0dc3ffc03c49ced3b2087d9950319ff4a6b298b41ab0c320bc0c2f6cf013e136b0ef4d0f6d001a6ac3b07daa2c3b1036dafaad83707ecc8237f0b735fe9c51740edb8597180cfd5aa03894365f2c18d44fba086c51ed5b571ab946511b4947ce06b7b3300b44acf174146a2ebed0a50916af07a0b40018366f7da8134b6632d39fddc2346f2310072e25e3f0a408171e7f90bd092058ffb860874b26895f02102f2b2b49c81fa7a34e6e230036423eee77a40611e55b4a32eb16ed49706c8aba06c27115002235155a6aa8f338c32a2358088c3f65ecb56df4cb0492b7f50d5f75699363f77406e971f007a611be875cb259feed1414325b14c56570de04c9a6e02cc4fbad90504a6c7ea9a0112e8706ceae3590cb0e640f3b6380298b5f8c6da81592eec9f38908cb5ab0ef0609e392006ef02d0e3e857ef3ad05ef9f365c096ad03076a58b3e640dbda91b5144b5e72baee40a782637f06d68d97670027be50ec3a20cff7b70326e18103299b4a46b800c4266c3bd0e2882b60efab4372ea405ba3aacb2d00cbc5a603021d3307b219600ced5d9938dc7080f7cf9e0309cce51f20c7aebf851edb5f77a02578f4e1405d783d72a0c540f53cabf80e021e666340a6d5219d8e00818431471780a6a0ba4b0090cbb57db1670ce4e856e6da39900b4d72cd6b2b2bd3a430d708c69807776f001372642e3f1b208be6f2148065a2bd590270e4493fb5bf0c513d2701c695015db5a64f1d608262f4617f211f6ca39cf6116466643a051463120bd08eba223b61be0b68724a81e970364fc3aa2ecccf00968368c62ffa5a5e0441f53cabc1eaab87ef6f079aa63719a0209ff4fe11a064465dff0358f99bab4b40c31d0ef6a021ea0e24bfd970c03e77e440dac5affda233917a7140ae707ba8d91c89b2194c814f927d07d46ed903306fdbe71d079ab7181106dbc49376d7815edbad39a01ece92035485890349e1daa60375d0fa8a037d3e2e9a831d0292e6afa56c9e6f0698c8edb6037dfec1b2034de4037f0b472f2efd065715da2d07d416fc748003f7be03d29cff01e474312beb51dce6b503656f000ab1a42a761c412b27ce669f5f54232de3cdc90430e5e3861f40866670700b202224f9a801561d6aad0194d2505ae510a9e7a14c3a487c1828b88c7dbd0054ba4d48fead02ac6eb5b289d7a3505bacc6a940d372e1bfd20bf45334fae7a940d4c6c985d40288d24b56d701584793d59903b57497d7ce27bf24790fd03050c932a065474e961c1035b06d80d97064a0636b1c961d48bbd0449e03f6ecfc084095dd56694716403acc67e740335bd9a223c05b3ff9b05fd8359862ce16403acccf9b03cdb9be71a067b43b0ef4daeb8903bd36fb7b0681d2070e8835bf73a061d8b31e33836a7fe440bd7ee1afe540339e39d0f2d93e3820e3d2ab0382d0ce1d5054e6dd818e5ee5b103194395d6aa1e178463372a5917c100d8928c8d4b6a70a7d93e0007bbf661db80f686469a74040dde3f67f7809ee49ddf3cb41ab3576ef197aac2e36ef7126029cabb5f80157effa74e1ed76392797cb5801c07bbd19e012a1afc9e03c8fe1236560066cbb9fd1208191e1113beb629492c50de00828574f3da78b000dc18a086ee34171846e8b80767801cf958a51d83b936ad6e3ac0cdd37e114c633b764015915d003712adf4a005d09930bf06746c27c9af038976b2e2400f6dad1da63877df0e3481922340cfb6b6b1eb40d343aef70ba0af3d3e34c0c1ea894e8e13595df8d11a50205b52ff3aa0425de34052f8f3ee40ed480e1d50d1e0d9014e143307f4e989031d561574557b14563b9c3be0d4b86e40df92669903bcd4361c686b2c8e1ce0fff1e9405228adaff6fa406dbfe780d9609d4c469df6599f3f2f4c436a5f49f23c604acf785c0654199e6ef700ca9827fd58a022de23691e00150aebbf19a0460b5e3b0498b9f443c23fa9c7baa268150bb8003a01bf9e01b211150cbf0ce0caa3ea3f1194d894c21da0e292bce5195da134a3c98a56fe499f37647e9204cdc39034e754703d828cf416034d1f28789a4a2d8e201066b273046890c26117808139c8813b82ce54a76703aceb27070e9840ab00370e170ed41f9bcf0ed4d2eec700af2d2f1c70287a75a0cdf31f1df4375f3207b463c9013977ee1c5012e4c581a67a7ae980c4f03f0e58616e1ce8aea09a39d0c70d7b0e08bc3872c035e9860114b466c78194bca271c014db75a0a12c2452d39292eca94e270b20fbc7690a18389c1d6836cc2397a8717807c8592e940fb69e17b721735c0b68b96b7c3d00743a4735ebc70608935741987a5a4f724a6ff2969a5c26a93cba23c865204abf8f0c58c4e139a0d4657db2df03f0dd08390dab3166240adcaae73575341bbe9f049a1a05ed700d60a6ce8a1e6b10a970c4e7b7965e8bd572da5954fc0a1fd74ff032d9b904345c73c8fd3602c636285d613d8dd354e3a224f7111418cb552dab9e97f2213fee9d032d5b039f1f27b2dad1270e28efba0f60f34c154d1a41831bf0f68e03f5ba1c42e640733fa44b003b57a6bf00db4d27ff003d734e0593e70049ee0a0758ad9f1ca04bd96b11cbb0b2e5403bd0c7b70116a5e0bfe0b532da2f005af0ad034df5eed781063bac3890b9e3b5714075a8bfd76aaa67af0ec8b2fae5808442a5032d06573f0eb4187cfe011d68e4e8b700d4793f754072c64303e80efdb1036a0dbc3bd0b9f2512b6e568e6d6bfc060c19391174ae8c5390b412e11990e329abe2ad1154f47a7b0da8a94dfad2033acacb3f15807ecabcad04ea298ee42a0615414660f0cf0ac0fcd77f355fb2d050fe9705250b56edb7d6f12d6bcce0bec2b7c449a867ac0c80297578ab0b0077278dcabcd5d930a6e4830c991164d8711bbad06665aada0b11d40490cd6a40d0c29674f68b06d16e970c901075830e1a2cebecd196038e80670e34c54a078cbe92002e80647df305601a6cf7e54012b4666fe9ed08181c90f4ffc80177271b8081960efb0eb4b03d3c3ac04afbe34027cf9bdc0141ce070ef4dad7bfbf48637b7973c0b9e1dc0129cbf61c686c55d96901c89a70e640334abe3db58798256f36fab6df3ed40e4836b7ec403a5d7fe2800d78c7015923470ef4f90ffa453eaf35b100cf9a62799c738b671cfedb3780a7cafd95014c8cfbff00530e9afbef0e38893f0172d2aeae9f1b28d8a2f700852c9bedcb04504fd082ed2d817017d9b6e6008fddd90018ac9ca9fa23af479afbedbf0dc0784c71f016d05ac98712d051602bd3229d073354a9e2569d7739d55d66b4231e34d5eb2bd70eb8e1dd0454f21d6d1b8ddcbc2c110e65f4c750b1aeaf3e006afc71371f0176aedcd8712009aaeda10dcf488f0cb0044fbe0184cb25d663436bb3327340ddb77307f24153a5ef39c01a38d8333ae6cbc69e0302c80e0d6095ec6a404f3bf6be1d685cd20b073a24e6c70eb8e67877a0cf4ffd179cb39fac1d249b4bab4d079c70761d68ce714aca6d130fca16bd005a613eae1df02d950335fd6edf016acfb603b5e3d21b86ca52ec38d0b7bccd1cb018f83350d0aa4b075cd7eab545419ae266457f294a4b34a98be579d25502c8669ac84535d635471a524046f0d74e026848f7b1730a40fb6c36b54817f598bcc54a7b16c19483e6d701a0303000aa312e899b809a59b9c96b6b02e9d3b205985156eea611f4192e2334dd4b605cf196a6400a91b1a2ad09959dd0b0de0a6a332b8bdeea13def1b5c3041fd6e21a50602eddb900944ca0af1a401ab8e42b73207d3d3f70a01557176511045c8aca0700419bc9cc5edb32c5cedf1c68274c0f1d70bd4007c549a83eddd877a07dae5b76c00544ef00a3caa50176a0d4fac34276d7b61d68287f1f1cb03a1c38a0847007c038dc3e540ed4f4f2c201bbc78e036e9b9e1c500aeccb80a5e4f6bf304d5fbe1d5065e6d501f376cf01f5f80e1d10deb1ec00e57bc981c6253d71a07179fdfb0b718d7f7fd1c7b98c99915adefa0ba015b7bc336026f9c18136e055495039af0ca85d4c5238bf8f916dab790350dbb87d32d04cd00b0f002d8bc1f133a0a79ada83be655e765613f97b0f402446fb7105201d5d72f402a8e5a1da3ef150af3b3ba51d61642964f9459890eb46a549ea794e7f72436946954d69090d65eb2bfbcc02a5371ce033b10ab0ec84a9fda22133c70d5dd85bd2cc8687c613301afd0460d94d1b9e11b717e99663fb4b65977e6b809a1975b763809d70f5de00b9079572b92ecd2b2bf99a3860b360a0dc63b77c34c034ddfb0570024efad401cfb87180b5870e726bf1fab20392249c39a0f6e4a503ad63c385016c6c8a06abe7692339797e3aa098dc8f011694dd1707ea8fd72f073253fe3d9479fbfaeb404d7ff903a4f75c72a013dfc5b90375d0dd8903192250594a3f2397470e34918be080e2695b0eb428d5260e364daf04aa32976779ca9d45558df0863aa900531c0f0ef94b45bdb5e66c0058b85c97003a2edbee65fb8c0760b28cecec0302b55bb68e00dcce26c79f800e8b5126a1abc2144956ec7d040561d05bb43454661b7f06d885fff53d00bdb04924da71812107b322daebaa1f59099d5b00fa6938d676520d53a4f02b0794b6bdd28e38e7b8a179348097ebccfe12ec1953803b2eed3b6027fc4fd4796c370ec350f463b4d771b7b44cefbd674752529249718a53ecaf1fd9ef023eb39a7b1c9b15044114fbd2c41adb7b7420c1f6f905a886bc46da97da75965b928720c6ac36c0208f46809a834f85574b0f41cc5425620988bddf70a011fbf907c0ee9075ed3b1a92327f470784ec5e3b90b943d5f69600afdf2307ace43503585994726809283ab4ed80e8da07079a97b747071cafe70e74e0dcd60ea88872e14016a3bf1b075a639b2ba0cebd0c1da873ddd201d2f2d28039a5f9af209373b5b46c2fabd4267d068c30421ebd00c6a4b54a3f8040229fca4005f82801b51e41d34c3acc22ada48481ea8c2c4eca0eb9d3a700f26d65dd2340c531dfd3a897a14ffa82db3d408da3ce0edf117b441c7ee6808211db90fc28ebbeeea6616f0b30a2c2767500b094a94c76d9aac554561803c62c87df910376650328789edc7c73403acb7503166f7a6580437c83ced90d38f47e01915da962b665e9f7dbeb0d076ce4b1030df299f5a5c2fef17361c05c13be1d70adbe76a0bdffd83340d81e4774d96e53cded2873402cf1cc004124af378086a7f8b0e740bf323970a099fbda71a0bef4574072ece7cbc088c0cfd281f4c2ab1707646ff876400deea9034d54b9e9403fab4ccf4b403d0b6f297b4e59ac96400265d766df5c24b6b61de85e79a37684823c68f1e61510c9f9378f809a783195ce6bef8c1494cad73e017da227c33360d059f6e54c59ce9640637a2d791a42979be7e71ba04f0c0d3a7f08bc4725959a6c41b2e28b7ca2bdf1e813af5a30a11d7452ec1c00c6bc9c95fb003c7683325f2f00eed91bb7009c39b2fd11808790bcdc722031be6da062f6cb03075442bb73a0a7675496e056dae75b07fad2e7d59f60b63d04b0d6b3fb5b075a5236401e87f374e740a3ae60c9163418eda7b70eb41b5841c18fb5b4ed80efe83a20a866d70189c056404d573eb605c008f9e0dfc129f674e840edf8f9734061892307d4b0fb764080e1a503c478e940dbb438358002bf573950c3a2245d1c4502515444a58ce3ae79116c01b07fa4f704304ffb0df525163d2a3cccdf0003d4d1a236400873590146b826e0ef100bcbe3fcad2d16cb8e1d7cdb805e0727ce608070fdfa1ad0e72135ae010638c62ade6309244f1fc600539c9bbe03cdcbac008ca4f4664f74df52e9c7a35b03bc9d1c31842597a2a4f4c0650c3dbee3ead980aea2d9e00e302809c8e54bc3088fff416d80330a3f8318c7d871377400c776edcba6f4a8a320b6f74a6a3e6e02c6f807353307b8de33627e9afe7601a5bd6a38209bd6ecd000e95ff787806847f48301acc5c5a7037da9b29a2f0115e9ed13891d757162004500e38e8797a6a75b07fa13fcd862439691841d26ba3df965e400256fec00c5d9bec3ecc9ca14bf043cfa3d3b50d39500b4052672064307649cde724096e63707bcac7e3bc00a77ea8020d61d072ccb3d07a4b7b05177d5fac0811af6f3eb4042e9e7c7810ef18b3b07dc4ebce99c517f13071ce2ab4fa82f834f076459f501e2541fbc1830ef3035ac9d487cf1dfd4b064796ad2e413407c76d8d755231585ac4ef9f117a0d2536b9af389b28bb838de040c152d985df2b3a6f4a64906c0169c294f4d0bd083c24c4d4f7144fc2d0f87a9eaf21d0f5adaa9ee9ab5e70f601b687d08883cd96c6a8052431dcda0b0ac160c71d5c86869bb6fb5b3f10c5d9402c3999476982d38db7c0494284697c780c882e98e01a6d2f6771de84fb89a2f4265b5a4f6c70e64b87b9e1be0a964b20f3047d0d197032d8772d781e4d8f8de002b283b00d87e797875c0bbe99b034c265307ec06ebbeed86c3c681167fb770c0e2cf1c50f66ecf81245d71ec8032e6970ea84432714089c78e03994b1ffb0eb88cd878985fb02ab02f81e49862f0caaae810e3ad62502dc01a98f3ca531554328a689f5591d0e954eda6058d057d6b2557edf6c085e60bd057d077dc3a05e0a09b8dd5d22a74b06cee7c027a985c5542b8057d4ae89c4b43a9e2101bca3adfd16a700ac97cbc0794e6d0ce77b4834e4ce21b0077a0a4523e2de04533cd6f0101f56b5e382023d781010e9cfd01c09e3847df80c4fac039aeb2ed916653071a8f370679a5f46e3ad0c29df600352635e5415b02f576e7d400425a55ed974087e7ec0fd0e0b3d9b1a6dbf9527d3bd0061a8d1da8a5ca82b70478ddec3ad0854609c81780c2127f2f0e30a84e1c9024e1d2819654b77020113cbb75c0063a71409295cc0139babdb71cd17b23075c01df1c683ce6d283ea71ea91b659927f11b429a050fb16d4d2c7721ecaeab2c33d4a95255b90b04c284f4d59075315762482eb48e6856c5d0dab5b31ae69582f1da8b78af56a414549d4f501a0c151e74282ad6e48d690cdb60043acf8b36dc0c8163f7d316fb96c7b0d506a6927156358008c2a7b0110380a0634bd21182e4cc70ef489c3084808d8e1a501e4a952fc2d0153c934b48b5fa6ac72cf81be74ca78b48b5f0ddb3a72a065d9df3780081e950e24f91b6b87c557feb3116b8654d9dd76a05f39281d685e3a43076afa68ea80ea7285036a62ac000fa9fea576bed40e74473e7f7440fef543076afa417040c3565fcaf9726100479dfe97032d6d95465b98c7707bdd94bede14a4d6cb714b6aca2ef184276b801e35755e7b06884ba22f4d69c9d54e6680b1a6219e770c902c8ac7c7a6acb06e3c4a3836812cde59ff176081c10792fc4dec32c87b378021cb72ab3450a0176e0012b57d7e6969a24a55b6aed96f6a02a6b2f53120065c57242d5b716aae2b7d807dc7d68603edb9f93a806c6bd9d51600efd2302d00662fec8e1c905a2f012ad67aa770a02f1d38e0e9f9ec1160eea683d201e54c3f1ce8579ede00765854d6395bfc3c1c3676d5483fc901d6e25d077841ff3850d3773f1cb01b9e0c9874b8744069d6ca010e657f0e241d7a370ef00e5b2eed85b2a196c6cf4f40d9c7a4b60f3091b3f127d0ea305aa7c7ef8001bbf2a90244c526a438166855160db21293b460c8f17a5d0278f2cd86bb80824abde90950939c60772810471ce20a1f0c9dd4c5c946654443a7b6124bb3078045c5cbf5be05142e0a63fea419a04b6dd23933fe65b31d0348fed901005378b6f9cf81ac2c2a60d08212b3fecfb3015e464ece0c9087e49a016a770351580ca17b52ffbc38d07828a3700b384ef2626e8077e469e980409401a046aeef9c394065d936c0a21b8c1d68b28b350714817c05d8f6f87833c06151ef3bd0ecab30ef12688b3def38d0973eef3aa05a45702001db9f3be05e9939d0f5be3b76a0eeefe70eb4e7f64b07ec399b4adb738f6b0e243f3ade39e4c7d791036dc2fde840ddef0e1d50b5ebd701e5e60e1ce809fc6ef5a53ca5d944d9bb980a9e068f7c4caf9ab9aed7a1d9d2cf2eeaad49a3574df2167435fbb95e9b5a1008b7fdd4f6e89654640b834740df5284de006a3d93c69fbe40284be498244c37921d3928e4bf05e6f1df7c19b0f3a510a80305e807da2fdd66609b70d3010f3257007a1bfa53c0c8a6a10720083eacd33937cb7dfe002c02e2f70810d8733bfb0e34953fd6b0c8925274dc02d88bf721c01ec915c41abc005b76c8a8fbfde5fe04c0064abf2f06508b73ff041584f4d2bc04384fae00c93baf1cf0d0feec80622eb903a4c39d039eaf3f1d687ba8305ef000c35c47d212687b14eb0e3473b6a456379c0b07bae1dc5e3b90afc286ff0a6ed17349985ed1eb90706a0d5076c89f3c07840e75899f0c60b97aaf0c7057d78b660b1afd49fe4f0bb7575296287f9e012ca5ccd13f038cc77c1f90b4a3d203bfd29e73b8025e03ca40c8ff3380126dd989819a3ff9d334f4620787e5a30cd0a53885c2a043af3df8748addf227c94a81cdf8d21af52bc84eb7005815d67b80a8808798d1f43a5130f9955f69fa1a8f7078630063f98ceeb767251e22bb06b0a02966a405e4bbc836d71ce8ee31bb0090ee34d9a8b78aa2665f25a742cf4de1bf070ed47d3d95b420b1703fbf0d70697eb83340298e3ffb047e3941796a968013e8d0805d4682034ec29903eeea8f0033cbf5670e30a9cd1de01af90eb0c353991617002f82fb53075a41dfc1018f5cfe1d9ca6aa38be04da1efd3f079427b874809fd2d481d6c741e6003f94553b8868ef3b50d3d1507a7e78eefa97221dee7f1da82f476f0e900e2ba099fbbb722041bf5d3b9055e1fcc700172b55ba0afd7120187f27001aae6f9fda1efda2b4836f0350f162359f38c0b4b7ee804270d23efbed7d8e72a627803109636ef99592d2cee94387783f0ce5499d5e4b075a1f67fc6c308feecd3d0325bef85269fb91f438d9ce0ea024f63ed1976a480ac8424baadf74c831d3fb018cb8e1148706b846ce1e0138b665b33d036cf5df0ea0e45eb96e5f1a781793f353e89b3530c8e7aa0556f04319851780243cebc70e74e19dcd0c601b9f583b70b2c947870ed4d2e723075269470610b079e7d5810ecffe9a032d7e39d62f0037ad09a3deb082b2c9a3032d7e55435a00f6edd3a603cddcd387038a754c1df00cd638c0b23971202d78ebd8016534060e786ceb39a0fead0d901b215f1de882771a1d7022570e7457ff67436881f40a540a8345691aed977740e25158f1512d6047c5be76e5a0ec5395fae81730648b4d5e0dd07434c741592a834c50806118042a9f67a32bc098eca69d33400c38511c006a8bc44802158fa05159cec2a0eeb05ff414df020b0c3ebc06541c6b87fc6c43099d70fe0de89b59ff0660a1086b5f00eaf2649b1f000b34f8b76f8037addf63801d8daf74ae09acc2fb0b03c445a3290dcc461f7e9f1c502dab0720cb482ef7ca25d09e5bb7be589df77bbabfa862afa3e0d8017e280cb29b29c77b0ea820647f522b4c2d9b0e1d68b28b4d03bc37fc5d3b20ebfdbe039e16b700e65e898236b067e334bd72a099fbdc774030cba703b554a12a4b20e1b873ee009fab57071cafeb0e2450ba0f0e385e7b0e24618e9e1c1099b2eb40c79a32942d8196c3f68e010bef3873c069ea0db369f0de9a43d9b303323d7bc3cc1f66cf812e128d0f21c7abc27fc270cca8e74a081286ad262d99acd29bed9aec52d8fbfa04d02725f7f93a800ccbe9e308907a3c2e49260fc398820eaa9bd082824c14b7f689a4b782b8f10368a809aa20f8308cbc2367db1d40b4b83509a561d325e3f4a6813e67b66a92b70097e620b7b525d0a2e3145b000a06d92778390bfd6f073a09d726005c35c2ef23c05e02ee2f01783067f7370ed497e7630714a6d906d47810fddb33c05afff874a0ce4d36014c65fafe3580dfc5d3a7036da0b7e4403accb47240cdb615405c1c3a2041fddc013921371ce8ea353e71208dedf6ca018f6dc70e74cc8f0f0c70373d1e3aa058c78b030a18dc3a2015d4b60359371474d54e5b452ddf7d89f15141347aa65a470b4039c2cf0ce0150c370115db63579af4c8ac2c297d19d08193bf5f0306bc451fbe02861dccd88780a8241a1181d202752e1e48bb180552e9c79286851eb5c1be7b00acb471fb0c30d0b371bcfe32400cde2c0758ee63e5b46f81996db75e0df082776eed40c98b4a75bc001887efd701155751a5710aa3d829c921f206b0e87c95220da3d42583ff07ed48786565ebfc4a5d04de2c18b1bac693fa52eb74d48a7529ac27a706f4fe92f5b7012376f6653280e5aadb07b891e9d70029659e2e01056115bfcf8092237aeddd009ac1fd3920f010b2ce10ae8a305d0112d2818bc4c86eaff978d70002e5e5d4012aed0b00e990eb75650948fdbce680a8b41d4043acf9efab81212e89eb0e74475e3b71a03db776ea40fb45191f83471ce6f73f0e749aaa6ac6124873bc5a0135ecf7dd81cecaaf0b03dc3c2f720712e3db990132507d4a77181724238cd712d2e3458ab6e5270e3e017d8eb5e30b4081bfe5f1078007ee5cb91916bba5cf16d3dc8e438f4270aa86d482c86ee8bf014cb9ea6ab2c7b163f184db80016f27db53808563d7f4258d6c3748388eeb0ab7c613beb4dd0d24433e7280c995ef688f46ed97e109a0c753c98c9636e687327b058cc9158e217311722769b9f9e9401375300610261f54576301d0e895e8ba05d10e3e6b872dfe8f0f0316eef205b0488c8f1520fe257780167ce0802d76e6407df9fb70a013683a02d45815eeec3b30ece6a3dc81cc2e6fcc5c83c3509aac3be010df70a05fc9fc13bccebee60e48f3b5e6804c36fe2becb9e2cf81140125775d026d42de0ac67e882ba3f01248a0ecac3e814afbe540bbf272f5b33ac46f7e1ca873bfd70ed4b98f7707647cfc35c021fe294dba68cf5bf5763e050c891a5039d31614568d600b10396f954a6e09f88e4f079ab9ed3d40630aab4ef5459132adc247ade42258eef4c30380ed1795540e45ec620f7a7e07f4486db3fecf0035b837be01a39238cf2f8099c20bbea3227d63b6de15a853c0cd937634f82a64a34f037854cd5e0ce009f94b3bda430bffe41340696b7dea8070b97d803d73bcd352bb0286f71d03bc9d7c751ce08ffb0cc0e49a7e578053ac704084dd9e014cae9b0300115459b6e7804c365f0e70d13c72c0d5ebd98146fd77db816ee26fbb00b3f63cfe3aa0b242668083ef6aec4066869fdc01b9d3d71da08d7f3bd0265439a025c00bfacd0147e3d40171169b0eb879f61d6808e38e0374ed2d07daa647f70e986c1b0fb3e3fefa77709a9e3f38c0f1e0d30156dae440aad3763030464fd6c157169d0e857a8e01e4d7ce5561bb0543f2c26d483896659762835f05a022718db22486b2dd97e4ebe34b43831a78a79696b14bdcebc63ba009badf2a7c30b43751c2f6465a63ed8fe03fb6be056013863dad8fb2ee474ec206304063c3b259b6073016566917653bb5f82a6c38c0e79b76d8460e6b1f063891ffbe0016c7f7f3e840c7fcdf0fc0d25b4cba80c844adbd1940fb7ccb00f6a6f5617f820d364cfc13c80f0c776563b7a4b7d200c68cf75d07940fdf07d8abd7fba703d91d3e2f1c681ae21cc0e119f010597a1d2dc1d3ea132cfe350714a17e70c0738b0d901daf8a5e5802adf5b563079241e31d073a5e47fb0e28b4b1e7406bfdf6d201b92a660ea84ff8e740e72d4e03ab00c3df8903020c4f1ce8003e2f1d5043c67b8b21e2d807c82a5ee8f40845470f215105e85bd0b5e335012c10f633024656aa761b10ec78fd0054383ddfef18901d37e75d3dd80d381ef3b3a555bbf9d6bc84d0a55ef4c51f60d027db3c4d0f433b914f0123aea2db2700abb4b96520a8fb51f90bdbff470c44b7f4257658da371d40972d667d69813af7340698b5e75a731b1215b702bb3254a6166fcaee109a2e996c76f60064570f0a966c011e77e999eeb7eb45a7c7fa8e01453fa5175ada143cd7fe3e18b0a4555f0ea4087cda77945689e4c701af098c98fb7cbf9c03a2eddb29a0628b9d660638f8b6b71d104d7ae2400dcb760135fa7a7ee48040a5430732885cd97834642ad9cb1da008bc38d0886df71d908379c38124ee74ec80f226a70e341e77ab3f9166907e1c60c6fe752059f8dc3340e7d2b7038dba12c387553865983bd0162b579f9040e978e7d00cce1b07920e47ab4f48181c9e3960a28203357d7ce4006397ba1fdbbd8f6fe01380a4aaf1fe135076c862f50568241de2b1da114bae80a956e762e8b22b512563e8511fe874df00f5090f2f0cb01bb8dfb65b8ed7c88700189361f9e0001031541d1c01a8c99571bd8f91cc71d94d3480065b36808144706c76003c608607fb938a80fe4d46acddfbe433d07e696fe60883ab4d404d756ceb5c5d63d7ee689dc6f6ac20411bed68752b1c0ebf0196256073ea40ebf46bcb806548bd07942cdccdb9015cac268c69430dddec75ec40024525521600cfaecf03073cd7fe38c08982f1689509e91f6f8503adb149c780c5241e3b20c78c75ce6ef35ba70e48521d1d485550e8ce1268d17d5bc3cc369e1f3ad0e2bf4d0650cff3630768394f0e74445fcd00c8a0907d3ad072501dbc25c00b7af5273c3f950e88f07f76a021dcee39d0bca8a4e112e8d0ca57403bfb72c381b49cbb4d03bc9a5ffa9fa0e55c784bcd8830772019b4171ca8a527fe2bc8a0b3c6819afe75ea4087f8f1c0819a7eb7e740bb61dba6d24a80ce758aa5a22bfb7abcff02141239f1fec300d5c31ed4b054f671359f48c74da1afc223b9623417807c5bcd27608c3faeaaa8b620f608dc3a023424be3ad835a0ba80d98584746a058a3a77f5ee802a118700dea3f24905a0be58ae94982da0aa5b369f0178e18d1b743fd6fad9a0cc6021a548d93b55b60ea9ea2a79565042f61650603c2a3a3fa49afc96e1ccc058322872496c814c15e18a31ada90b98940da70526faca2ea056bead54d3dba643f8cf06bfd2d8202bdd7a0b70cfce6ca29ac4d27e0b0e70b3181960abaf3ec10ac2f12079d4f30dd3d00a034929656a5d028dfa711f80ba919f170ea4f3630f4ab6d5d3d79f034dc3e3a703ca880607eadcd38603ccd8ab2fd5b23c1f392085fd8b0349a98d1b0784223c1b307f983d076a7aefcc81ae2bf7df0ea44cec150ef01feb3ad0ce5665dae0b1a239c76bb28d9cde8e1ce8e03bbd32c0ecef4b8c57e3864aceaa7712aa5699d08bd5b166bf2a49f414a2d67ae587f8f62920e17dcc736d153b542def97801ede2e6f06fa381ec447033c50ddf1b3d1f2c172e1ada245f80fff0085b237c4f507803f3d4b0655a9a320b4b85e017a01ef0e2dcbaaa66061b85e0344bcb2540e7901f0a456fef550994766b6ce271af30cfddd02e09e1d5498b7050507f0e6af03adc25f86b009ec06e5825e00a28d3f3a80887a7ef468009780f7574042617db97020bbc397fd0951cfe92702ec103f9903cc21e4fddb815a7aec00dd216705350d11217b5d033a6fb3bd8e035dac9a1f075ada5b7f0e285e3277a05d7971e940bbf27adf81e625fd3a2068c27f85cefd4c1c68addf7c3bd0aebccd1cb02bbf1cf0167de680ace6da2ff5e2014640df51b747a3667f7f07806d3cdebf03c65ddca27f00d10a6b6a3ceac0f37552d58c160c2857f95300863a2bf3cb7f804219dae39ab67a1d7bf85ca53160c0832eaeb3754c3ce86e74013c94c5753ad76e20ce976b00c13de142ebb46e8f13699fc58d030c88f6892117ded9bb018b39a3618d5566f9b709b0c09c57c6d4b2bd266461dde0911914f5bc00b2d3851706c88ea44c39ba5b8055325f3b722075e3e7dc00dad6f3990354eb6080f46be7d6307b6d3acf1d68159ed70638913faca524890cf91780fd9254857909b0f5dd3bd0544e0b075433d97020e1a83c024b4071bd5b079c734f0e34ea2a0ab104dce6ff39c09963db003baaf25fc122703273a075daed39d0d2ee3c3bc02cb7ef40ebe36ed78196e5e7a603cddc910f10b9d3b1c0b7e2543b2a729a36660e0bfb870e743bd9ff04841e8f4b3a705a4592fbedaf8463b3b06c6b13d680c08dafee011a15b14f13ad8f562f929613d7f99344def36cf71a509219fdb902e0f9170e35d94dddd5360de52f6084b3b14ac3b7a0a290f58ee6a5694510f7db27035236b3fb63c0c0720eaf01708b4e2a27b604148fff32a0089980417501b07d3262eda145a4ce192052d8fbef19603e8a678c87d9a413cbb2f1048fa73340cde9f13475a0ebca5970a0957c9639c09f7fddc0909cd4270ea45c5d31a6eda1252353f9e3401bf9da86904d985f9e3ba09aeb9a0375aefc7280e977ec40f75bd5a2580292225af76d479df92738a36e7307f85aef3a201dbf379d33ea78ea408a2236d8c67654d85f8abed82948271595d8a8d5d7bab868ca68df82bebe23de46c05887787eb62110067dd994946d6d01a48de7729e6c8155db7b1f030aae2b2a39d5825070249d1990b6955f8e00559f42e7c9001e88652e1031ca46d5c468c150ef4071630ae04e18eeba02a967cfa45b02559f409429e35177300edfac01fab8563ff327ee85341d1920a866f6e10093c92b606c152f5e0085e520b23fb104071f8ca9bb013ff70d608779b904f03014e404be046c0f06c86cc1e9f3dc01c6d0ae013672f50f40c5e0fc64ec406bfd64e440bbd2d687598bf372ee402d9d9e021a692899ee2f4ba0edb17feb401bf9db9ace26ccae2e1d48162a9876093010cd1d68375c1c38505fcaa903f5f672df01efb7ab4ff0623573c0ce0e0e50bf361d203ff61c6825ab467bf480dc7c2f33c088751b0704e67c3ad09edb1e3b90dd4139446277ccb196cd6b40c5fbcbbdd669b7283b5423d098764baaddc4e35700d9c5a2b224b600c7a578a651ef8681167f3cbb00603f8dc79f00eaacb63730404566528555b4a0d6dca6ecde0076875ac2a01bfbd4187abc030c68e99cbec4b1b28ce42fdb80a4f7a8f4465f52c70c33342c51bf3228b55e0b2c216af5245075d9eae7bf0235b1b361879f6d3a18874f4e000372ff28a1500bc8de904d8f015466c936ff0c10f22f0b5a0bc6e46539bd34c097eac0898bc858b5e3f2c2404170b1fd091595c23ffb13c2d3d34f06c0d29b9dce0115c7ebb3fd094a6f5006ff25d05979b906c04a9bdf5e3820b06fc300a7d846e940e371b7ed40e2e2dabadfa8f246567e3b2091e0ba014243f7460eb090e40ed4b993d59f6010d97780ee101d90b1adeb8007991307986db71c68232b1d6eecaed462ebbe6d64e458d737f2d8bf83417efc722039f675ee40bd55eddae8c1c5d9dd8e039dea3bab4f481f7bf18659d4b3779f07cc7d2dcb5ed155bae4b0ff67c09e8e7e00037977a4771d38bd10fb08836f40c220b27d25d0fed3af3c3480412411e935000788b8bf01308bd1fe16a0960366dc34d05842211d6bbd56e995c2faac6dda6b955ee9a7aa8ab00005717cf4b65d2f3a1b54dcb705234c596baf0608ee799f00cc096b73e60003620e407ca6f71707689fff00a147d0b703b68712f82d00e194bf97000bff392901c9b4ad15e068cc006ce4fc64e8406bfdb474a021dc280c98b3601740bad3acd9734030dcbb03e91f8a395b00bc90a6678046223853c1a025504baf0f1d5097c746cc4ef5eb3f07ea2d92aee77bbf9838d0bc5c6d38c0187ae34087f8bf03073861d50e78473e71c0a91e1d60faad1c48185c5c399030507ebad85b09834d0308839bd201be4e5b0ef0ee58dea362bfe89baf640d887ae18dcadb13fbad36aea6e7bb8048e1a257bea34c1ae47856002abc2a4a1d7cfd803a9a5499a505910429571217fdd8d177e40fe7801e6617153a6f01075f569d01863884bc1f1950ceaea86a372d2864b98afbfc6cc47e1a373562fdd4959129a89c470b4a1e7536260622053ff89584b360d8d098f6ab11b58ecee97e45605f50d2ee1698f3d3a9d658bf2e884bcab701d4f40b5f77806419fde86d2b837491f87a0090a22b6c4bf4f51bcb0aa894a92d18580e00baefc10a13fb13327364af0307fad2b7b103a27cef0101c1f6cb44b5f243f717d5e35b02dd6f4fd7003c9267bb4f0e48fdbcee400ada4f30808dedf9ce00716b27d6d2ca14e73f076ae9cb9501bbdf5a3b2c7f50bd6b0085a4890e282d70e0407db938768071f8c201719e361e2694fa6b0ef40995425f02b5f47cc700ae2b57570ed4b0af9903b2688e1d482139291c482139db742019547e3a40c224079230eb470e08b7cd0d205036fb0e34405b3f0e30a91d3aa01289e4d8609c285c84163c283a3d02a6be016382e09ff4a58330d4699affd58092eb7da35f19b4ea3975f0f8d2384228fd0c004985ac6321f93148961550b5afe3a022fd5ab8d05939a8897e0a7b5f0042dcd3cb2300af8ab0ad011a582ee86cf609b0b8f9dd1120f00af8b605e03125e8157009a8e8b806487833bcd87758f5b0ea0d50d9e931744079e87d0752e09fd60db06fe5221157f1b7f9a6034dd4f38501b307d9cf36f8afff9b392013e78903b554b54a9680d8953b072423b486d95a3fdf75801fca8703e2e6bf1d687d0c4b07ba671f771cf0a07bef006dbc72c0cd223890907ef49f456a3f796f2dd98b86b05d3f3d0cbb9ab9a1394f660a306c0145dbc3feaf035d67ef0de05115f6b701edd572f989ae16eed0ca0145655a6c01815bf15c4b6a1802c6aebf1303da2f516f6b71d8dec575122a3abf0543e9b8713c008ca2b4f17d2d8761ea709c3c36803e823e012a4b977ca1f531acc7f65e7901c0bd322850ba05510770c0ca32ac9365a1390754380da8424cbb370af48f199f684a7caec20f206076c9361d5093ebc2014543ce0c702952ce8c0520dfa7ea67b7209a93cd0aa8a528ce0ba043ebe5ce00fbf6f1c701aff74f00caa9670f2f0eb4812e0f0d60927f9c3ac0a579cd014bbb0ba8ac3ad4910126eaf1db8174dceb2b0027617e393780fc78be7440c083f5c542992e6d084dd77eb24fd8463edb70c0be5d77201974f3ea40a758b7724051bb7f0ef4b32a02b9041ab1b7da0129caef1cb0d5930349cb9b2f073af86e0a0778555c3bd056972fed0270126e8f1c504267cf805d78252e46e3aac73bd0dc81a6725f7f326af73ecfb527006ec0617fdf0019a7ef3701e30ea93af89550f6a97d6d20527e4fe9705bd0444df6b5266a14bb66d73e07f4097838380698e27c68a054e5affca904706b4ccf1ad351c559195402a305254955d7e97e5d126e7bb80d48560591eff0f886773ee1b1b3d8b547edded7cedebb03d8de5744d912b04daf1c689d0686b0ddb73c3d0f0d10cea080872560df760089859b660e3074170ed4f4faca8164a1bc3b5a5071dede8c1d68e1de58c3acd0f9fcdc00db43c5e45ac0799b5ffd389094faf7e780b5beee00b7c6170724a8bf376055443e1ce8f9e97e05d48e6cdb8176653739d0bc5cad39503beef61d68cf297a6109d4b09dbe0174cb8b4307921f97070ef0fcd334b4ab8387d4fb1740b060fc640037e07b09a571d13733d42e2010e55b68f6c791429249b59e5b305214785e6f014ad2492909cf02105334dc04e0b21a4b9db7e32ac92e150ef9d99a30822007cc1650613b5bbf06041e52d7af1ce0fd73e9407b4e39aa5a6065776773404529418566c485c788cea8ebb901dc913f2a8005c1efd052cf6e7af207286969ce78b45b8ce8fc1b071a6415805d004ec27a074049c3fcf5db81ec52dfa5033c322f0c509bf4f30c90ecc05977a02dd61c38d0163b2d1c90ffa36bc06267670ef48efcf50ba8d85117e706382b770b07eadccbb5035cbdf60c10a676c454b63b9bd414b70eb4b3cf070eb4b3156cdd8286ca3dd7d70e88f37c75a03ff9a91c200c361ca0f4aefe845c59eb0e2880f2eb40e2e2c906c8c445e79f03b40bff59d4f3f9a503c98ff985031d5ac59b0375ee68f527eadccf87034de566cf01bd7d77403aa91b078452dba2e32d3abdf877f0da74aff128da13597bff513357840e45a8af32409fe727c4d6a2d2a6248ccaacc4c28ed7282fa416f4d90d3c2f14554db4cf483a4cd14e3e1ebb0646967af10860817deb9f06c8e7a82add8b4a4fb218a5970a30b0146e538085119c1b18a1e2cb2fa7056342aaeed60d5869926b40c1c23da1fbb6e742f87520153f3d3a20d26f66c07244bc032a16ddf3950176c3d9d80125856e1ce0def0670033768721747bb2f2d42c81d4af74e740bbf2e7c880bd250d0c58b11f1b64f3ddc057a170df0dd5b2590236d09f03a95f1723030c61e7c9816490f27e2d019e4cd181b6583873a0de86730778994c1d688b293c7d09b4c58e7b0ed497dd4707ac206f29c1a3673b0688d4517d8f5896d82ee296da512edc3996e07b08e8aad6733cd8038448d908a90a651ae1e8f7aa73bfacbaa6397e021a33cca87365ab2871126a90cba643747e304092fbf45e02c6dca3e29a016c9fdc924ab37da63ffad2ae756a2cdb971696806b60800c651f3700eea61986dd45827e4dd4eb8f036db1ed5f031866367307eacb9635cccaff72662f0089d0ff1930f7db5b80c525655f0e90fcef808aedc1ed7501b4604ec70eb0b0da77f05c9b1f1e01ec1ad9a90c7036a84cc21268e1ca6f6b09b4e8cef71ce098f2083023d3fb93030983ebda016958761da8737b3d07289b570ec833b1fa15357ddb5a6abbf23a39505fb6fd4bd9955b770ed4b9bb3d073ca4f61d68571e5d3bd0ec571307da95db4307ea2d572f0f61ceffad7e96d7ea4d03dcf731dd84d18853ec5d2316c29032d5d3774031c093499d0bb1afd7c8389803861175943f5944d42d3f81b2b988a893f2cdf52da46ec401e217d0c7f9e95003142a732b98dc016a1cfd76b4f7839786bfbc040cb118ad4d0163d26cacdf004a4ac37f7f036aeadebf3c18c01b6acaafb4170bdd2bdf9f0db0b315b7b600bc67cfbe1d103540e73cbdf8461f3066239ffe399006fbf2cf004179fb5700d20565bf77065015f0dc09adb8d0346c5bc3789dcd1e6e0c6031c2161cec34cd7facb7588b43637db184a868b0a1ddc8ea5c9a1b60595e9c39d0be554cf312509c33007048cd3e1e1c68adbfde3bc0c1ff9f037275ae3e414aff5f07780e7f3b60ab771d68abc7c281babf3b74a0dec6d2005bfd60c781b6fa967fa96df58e036df52d6f295b7de0dd67ab6f5c39e000de77a0317dda7380805d73201df769f52744f8cf1d900261e640e3a164a6d1c38fd3eb8501f3dbd277b497d31ee2621d90b038df038a2e8e18b98e9318395ea342bb5a904aaa876903c56ac8269ccc002404092ae61263bb80c87ffa021852926cfd1e50953ca668f6633b8224af9818c04a9b3e011cf3d96ccd011e114f8031cbf2f7d6803de9ed1b20800cdd215a128d505d38e0cdd33e6155aab6e60e74cf3eb176949241e1c37ea52440f9d9be2370597dd972a09370776c80bbe9d6af03b54359025a60b7e8db0f076ad8cdc481c4a7aab92e0119fc7f0089c7c7fd7b075ccede1d488ce7ab3f9176916c4c3152e79d47807988741a07da40273d075a4113fbd98a6c27139b5bea45e73b5d072469ea3b20b0efcd0047e3fd2100a194ef0d1d50cae7c101ce1c570eb42b87a70e2494f6fa0ed43085ec2e0136b689032a19d9a89bc8e119cc0383f3cd15d054eeaffe444d3ff4be207294c26d0924720ef61ca82fc3b1039200fe38e0b549f234b587a97c26ee9f1d4833d8d544a592e2cff152bd4d01c7a5845b740a2ced7826c539c53eee0d8706a85215aa0a5004deb4f601b5ec63b9c23b624a5d5632c6f254714487207523d51d92dfbc8d00fd02dbd63ac0448e22965b40dc7cf8e557eaa2a412c914803369a6f48d2da8b9563f6b08932776cefe00045e044caec9527584cbe880d8847f001cda43363560f50919e4561120a03f33c0e3d2a70374a9fc13602f56f9cc8174a9d32d4042162a07c00230c8c13fc1aeccbf1de026feec00dbf8a3011c41ab7307889c17071aa0fad20039dd360c5476917830c0f638be71408dc36d079ab9ca1a66e97079284b664ecf265f0e34406f95036d6445c72d009bf0273a90c455ade725a0dade11c0d49ea3da816461efd801ce60990329359b370e28263777800e3372a0017ab4ce9940510699252031dabd03890b94ef640a4938dd74a05d79ee4d47995086d4b80a3ffefa73404210ed866a1cbb64f65903d45da27cb5a4aa62884051744bac42e410576eb95845cbeaa5ccc62d8848873f9d1e552a954d2ba8c0450b4805152b1d7c55d5d1dd34ae27c02069599e9e03885c4a689f553d2255fadf2fa0945293fd8d0091f438c363402275eb571750213fea0b406d7936670e88bddf019086251c32404d674806ee6b802536526dd20530e3df97017c472ff70043fc616e0f00235c457902af5a91a3f1387e06147866bc3f024acc0caf370ef4890fa6a109384ecf3203f8b2a8f8620ba2d9a47b002cf0998a862c81be4385585a8022909f8d1ce858bbd972a063ede11350b33d92b5d4cce9f88f55eec8c526acccbe9e955f0e0822b1f130cd609239e091ebc681f4a0b34f07dad97f1f0eb8ae0c1c6847fdbd3bd056df5d7d8267b09e032c13fe09330ffe3ae076e27f82aa30bb744035b599031e0fbc2fcc0be10c1e069d1ef5565087447c54a131ad232f45b94a0b2c4e6cbef426038c10b0db6f802a520056dd6f6fe698f6e6ff00bc8c84134d54ddf44a8ef929a08f7ace4dbc05c4024e1360d8d3dc5ecd0de081b831364008e2c43f8146bf317220e178de078c340d21ff3580896093f1b0eb7db6770fa0ca4c20d0a06e7703aec41f06384eb22d80f95a2b49750b2a2c02bd23039ceac596032da9e36b80bd125f1e3bd009743572a0851b6c08cdd07d7f00c0e8965ffe3ad0f6d81d3bd0d2de38734071bd5b07a4d6eb3bd0d2c663a6f6a5bd716ec04eb18e039dfb1b170eb4d6fffc4b5159aa77071ae4d9ea4fd8c8b9035c574e1c9066d49bce85e672ee40bd9d7b6f79f2bdd729b6a86ba5b724e58759c4f9b12c95aa63914452423a5fd35a5f4cbefe44d9925a30c66971f30840c28714d4db56618b381e44c0304ae2be4bf23735e10ce1934fb447121e113aa29b86fa40a17e36602fbc9f801e913a0fd78001799d06ff0c90a4fafa1730b4b0bd070324bd53d68445da1e0e9cef91015e686eb601053addb9030ead2f6b7aa9410e4a4ab400dc5e0fba80c029f63b37c095e7760c883cd9e43b0690a7d5bd03edb966d70169f1ace9a94fcdb6ae032dfed9950136615d3b50e708fd6bfc2d1a5ffc453cb216ffd9af03adf533ebbe5d781fbe1ce87eab6a8cd1e391b3779bb94635b8b3894d43d3e7261e1d70ace50ed4b0bd8103ed7d15c9580232c6be38c07378d781d6ba4fb6edec6fff5276f6da8103f59697a2c64fb1a30b0792c927730754c9fc754086d4d5af68e6b20f039274514f03a913ba2464bfb914683721f1845f80ba2048712a603101499a520b08aa092adfd902c219c2dea7402b7075ac49e96d41c18e92b9b40589b7d749cf01c919a34063cf606734acdda6d8a5ce0c90a935ff0310ab913d3c0306dc2be510b204f86b6f3ad09efb39058cc884f5fbe480108019a060132afea5052582eda5318016dcd05b73c20ad30b079a28f96b2f0047d2f41c105952cd830166bfde762021bdb60f2024331fff1ab0d363e080c3e2da0189590b4085c54829219680a4eedb0e74ac297c700158eb9733073a8174342e81c6a33f77a09676ec67cd027f72eb409dfb3930c00692ed6209d4d2aba1035eceae002e0c6cd44d185c4707bc9a970e7847fe728047e6b10309d8cd6b07eacbdaae0309c7fd4b071ac2f9a1030da12af62d8126fb67cb8069f4db0ed4f443ff157afbe37d61d4472f0e6898ff2cd6f3735b0e96eb37ff70806d7ca905a75658c83e9614af9e16e56e2925782f104a45e8c6220112f6b1772ddcaee5848c724c49ddf654d720a757c09808aafd3120f27236e457123e4671fd1150470a07a8fbddaa8b84b9a1e935797b423e018cf15055cd831694964bfe1610a877b27ee740c7ab9c385b10894796fb6d0b12be2c72696e414d361c390a2f80eec8993c5453b7e959a140bea35d7318aab6010324cccd8b012e9aca12b000727fc96f8780618f840f8d01a4e55aee4012572e230bc0e3810a8eb5807aaf99d29f2c001941558528752d75493ebd37801e340b0e749abe4e0105db637a6780e8da27ebbe5dab8b1d03a80a7fd639ee0d4179e196008bb38d47ea9124a16b801bf0f39a033271ce1da861e11450a108e876b2043871ee382040d986d0ccfa17fe1dec4a95535f02e4c7d001e9f96c806a649002c79780ce9d3b40ebeb1b40853b6603b9603bef389096b3bee34003b475eb00b567f5271a8f9d1550f7bfc70eb0174e1ce041b4fa15c9b19935dde4d85fcf0189042f1d70f53a754058c5950112a4bc58f72d95feaeb67a6f30e8f182a7e5d01bd78052d2a1d70a25d9f92f06008fd1ac0462b7e02afa0cb03a127f9b80b2aba9bc5d37407cf6eeb9014b457900a825e93225a84fbd640eede321609470bfcd0163a5a28c0a886901a9c2c2bd167fafeaf33eb7a769e8d51d92123dd3b956b049a0bc0640c024af279b16443cee76e85c2ba5241d868c8725130baa0dd6821e9ae32dbfd2d0971c41bf08fa2644f5ce01be70370688024ff62743a5e74bdf0500f52be4ef0678f453eda705a07cb802fb5a30e69df06f6c8038cf511760af097ff62b96f8fbe6115092396ee3cb002247a9181680dc0cd7178080a3ce19f3d26a6c442c5be7ec45e2f7d700f2b4630364ead7c5b303c4c5c081f6edc5a3032dfe390ba6154a541cff7480c7dd89017407197796406bfd6717c0d340aec48a4ba0ad7ed573402c606d80820eef9700d7b6ce0da8a46136b972a08992a5770948d373e3809465c101d6d1ae038d7abde74023b6b6e340a26f6df509b4f14307127dbd1307cbbe9c4da70eb07f1c38d07828df56f250fbb3e9b703ac3d170e340d7f1303c8c2c2ff847919ce1d48381ef9103251376b0e789ed478f483555155818b1604e5634bf5072091ba841dd55f38d5e84fd48e7eec48b0c5ed5b0338f92aff587bd9ef282368165f0103daa14c8b2db01c11725b4b8ba06f7dc7b3f4c27eddc507bea4617549e9abf56f032434bc7f308047c44f03a850bf141db700d49d7da6e975adc29a99b2bda645ad677d42b97f5ad02557c57b01e8a1f628bea105165dcb6daddfaa4e1ab1620f30229df60bbdb5f4e2d92703d4ca0f74ed0a800e932b27d30210eff1b506e06931573469f228f0f4726b800ab99ff61dd491089bd6f40a2b7e7a76a0dd303f76a0c57f614de779216cd9afd4ecdbfacf002e12ef3700b67afe7d64c0b6fab5038c4c9f0ed4dbeac30195582b079ab926394016ee3ba02f2b20e1989d3940853b77c0cefe75a09dfdfbec809dfde240d3f0d77120c1565d3ad0ce9edb44d9ce1eaf3b20c1d2c88136f2db9e0396b6f7162382d28db5ca2945cae38d267b10bb24bbfddb008cf470988f734041545a18191853d1600cc0b9366e5d18c0ec2277f53448232a0829a8b70575544bd7f9d9aa1bc9396ca0c7f3e45a04446cb00734bdb26aaeb3ca0045fed6b51c0696f52d2ad9ed02442935b71d8095bcfce5676bb267a7fc15502454851f4049996a255a68412c2914380324828ce47fba045204fe1d021ae985e151e2736029a9b2bf12d0c74debf6de003669d4f3412b3f7838cc1d48ff38a11df6dc921d0c0063b2364d6f015c9b82dc6f5b402c607efe0508a81ba3670792639fd6d2a86d9a2bdfd602a06e44d64793d8622a16b604babd7af7131be86c6880b57e513ad03a7dbd73a075aa145d0b4040eeadfd09622bbffc7140b2869e036dc2d19b036dc233fb0426a45c9939968098a2ae032da9990d9025103ef974803df9c281867072e640edb8fb75a0769c5a3b4c8789b90375ff67dd81666eb7ef40939df9cf7225bedf7720a134f376683ccea63f0ed40e3db427cf2390bff97730d9f353076a074aef307268a5ac6380371ca5066f41852e15b41c86ede58b0b4d040c923c11540cbb052192c748dd1f56780ec7bd6d00899ee2fcd640a29c18bf520f6575cafa9b8006d3cdd78603c92065284bc3f6dc970c52bab125d0fa9057780bfaacc2bb0c3064138e2f01231401455f2f81e4a95230a5a13fc8fc9b03785dc98b5707da0d073d0794fe9e3aa0b4f327205141f9251a40b7fc77eb8054c7df0678e33beb032a5bfcf70eb4c69e761df080796d80057362a066259ff61d10c876e4403ffbb3ef407d19ff39504b8faf0ca04c9c7c00d873b98a2f2e81c6346c1b406c9ddc38d02087d201c53afc4bd12eb253075afcdf7d078536d09703ed869fdc01f53c579fd0d9f0f1e78097b32d03589d944b3e8dca9ee447ca250b47b14fc6c7d377c090225d651f30b24cad3f80b18ea41c2935b2ecfb59a69bc528f5fab89cd506084538d804449919b25106b008dd620c6892fc1c51cf47351b39dbef004aeda8f0efc281f61c8ad1c8f25d645b6b00333334bf0e34848a375d02f5a5d80054645cd2db6b0b1a36f213a0e99296e6f9db000d53cc590b7ad20cf2bb00e8b3e83edf00031492af75c00863e82f4d6fc6a6afdf004ade6f2f98a826b0d6cf3f1d689b3e9e01a8499e2be7ce12688d3dd2fd7623f3003136a015144e371c68e1560950f31da35d0744e83a40e49c7e011a048a1eeb97400bf7fdd6014b6adb81f66d280c98ee70ed409d8b9903c90fa5715a024a5dfb97d2db543950c3fe5e1db04d8f1d2061f61ce804da9938d07814de5bab94b7fa130dd05fd701d1602307eafee38701a6e1ea9f03ac81daeae356ce6b05fdad03cc8defef1680977cc2243f8e94318f4565a0c4ffe30fc05110f72e0049c1817931025805658500a4f1c2c8a869780270e0a45c6b7d5c7792cedba35740577a72505ec916f430fe65062cb2fed8be836a3761e70bd0584c91f6feb89d16cdfe1d9d6baf405422d900a0f466a33e60c4736db7e340e7edfd1e8087a1a04adf0b40e4c1430d286dcf9d0302cbb2691c68f6ebca8116ffc79301dc9131428e2dab46fef001304fa6d39103f5a5d974a0de9efb27508bfb3303a45039b3de26cb66d17540e6968103add35303769bbf4a062cae8045d7d4ecdbc753036cc2ef4303c8c253569069c1f9c39e038d69b36680bd7fbded409d8bfe1decfddfc60139cc5e1cf0e8573bc04debda01b180f70e3440f58f036df5aa72a011fbd970a003e767e8404beaf5db0195f2bca56cf5eb15c0d27beb80bb7a70208fff420a5a11fb380b9eca5e58b4b726b5a33e020c7447ceb32e009780a828ac16b497e4e59f949a86a2eaa12aec6d016aab4ea9d95f84c9f33cb90618535367efc300ed78da04905523e03351d81367d8a32fed1d5906b3b50068f0f847816f01e57f3b5d07ba78f3e25d345dde2b5599a5053df6fee009601ebbf1db00fefcd32bc0c84a93ac1920b3f168e24032f9c9bed4a48372772c818ee8275ada5ee6d5d2cead015c121f4e0025a73a6e272d306f861b075a96d32307da732ae3b50038732826b1058431e6677f0e48323b75a0a58dff47612e23f9a97d4764ad9f741c50ddd686d04d8cef0ea4f50d1e0c102ca992754ba0c72595cd5c000a8c5fff0324f6ed69d701b191470e78a2d871403883cdbec558c9917c0108a53eb903f0887136fd7380bb58ee401b6860edb008888da903321dd9ccd5c8b1cc96658dc8a9bf1da8fb6f3673e63b3ac81ce05c6b5fdae06d7bb1ed40f3d2cc1ca8a5cd8603cabdec3ad000a5640001dbac3b40736c1c68c42e0e1c106c7de3404dc733a370f17975e94063fafbe0404d5799952590dde168d530b5f4e8cc00151d8fff3990fc98950eb491772572cac158bd4daf5a1f6559499988475aa7651cc8b2197774689589bcd6198e4b65b2dc1dcd1b60945830db80c25273da270aa93de9e31c50eb2e167bb423357a9d8d73fb8e064d695db2b06c5527754e75ef5b1089b17a9838d026fcb80410d29d7d3c03909641058253d974d895e36340d782362706c81b784b4b9b1e374f26bb6c069ceaf2935e000c11ca0ab800045c0ecf0004c1679d8e03ade4bd5b0724aa7d008c4c7cf600632dbaa05c042da0f455b6fd6d000bc993b5b4445578b1be94660dbc7080d18d11b37b54966c3c82f9b26406380955ee252d52426081ff76a0fd32fd7040c3ae014483e567f70ef0fd8a0e1aadb14f809929abe8405becd7c6c37ce1ae2e1c68bf5c59e7c8049ec700e0b925ffee3950d3b313077841bf3a20926bc78156e1c32e002995377f0eb4f7552d7c0934eaf99e03ad42e5cc580254eb4307d8726c4999d83a3e7540dcda89039223ed38e0c6f7e640c789125f2d814c7b0ffea503a48316eea26e372f9a9ab94591721e41d700a4f58e653220a37d7adc352003622c4700ac1bf17402c0193d57c4500bccfb676b0be055baa57f84d493f84c9ffb06384eee6b401f3fc7918452a8baa450791d020654827fa26115499ac29e462cb4f77f6d75dca3424da2ebb0f10320c42cffb80054d83e3fae1ce8f0bca173358547b2e1b901c4d6e41860cec6bf3aa342abe44916aa08e402f0da34c8013d3c33547b6101b0277769472b72a805fe6e000df6e61f60648ad121c072206e4d0d90cee1e91610381a9f3a0e340d53fb59dc6ff37303f86e64d1be144d295329e316246e49556380bd7fb7660025ef9a35d64a076de47aea400de36535f873eddbea4fa416a73707b8151c1b40c2dcec3850e78633079adb7969604cb6a431c02e89c966ce6550e180b0f073079a86eb4d079263de74734a431d5d944253f731fe05579ddecf1da03a6d3a90ea54fe38d0785c6e39404a4d1d68801ef61d20a5fc57e8dcdf8d03123b9f3ac0f76bdb8146ecf1c4014179ef0e3054ad3ec165d57b6b697a565faace1dae008beecb8116ffb74d14ee1ee1dd3fa1c3339cac3bd06ef893692fc65e97da1cef0032e7a74aba544c5d0ecf3c03f474ccc7d1116020e7dab8790808ca7f1abb3a4da3bf01efed00026ec0871150252ac2be01eaa4a76795bd5b02bc6dd59758f714809aa3b145b33867e51f00f52b7faf0096a8f653cfd7b1e932621b1f0ea44ccca2019cd24e360d50cde47d08e8a1a0a946fb021050f7bc01e85bfef5dac01823e40b608060fbf8e780344e74ae19ca281b3e6680118ad1fd9b01bcb16f1e006304ca0d93dd1e842478fc34c0927a74c023d7f4cd8176f6a90d50c991f4da71a011f3212c1942cc2e2d40aeffd40eb4b38f1a07888b3b40b068f4e8402a0b06c4e8afd58ad25b002e89a7d6b0c8363db977a0be4cadb7568c61ddda1129677abb05484887ef030308d81b9b7d2eabf968c701f7fd89037c7bc60646bcd05c01ecf67a7ce9400bf7ef9f0369f4eb36a65c8af2c70b8019eef6ee1d687d1c1f39d0cc1d4f1c683760555884b6e9143b5f73806573c781bee3eadb01b907af1d689b5e6e3a4048ff3ad0cc3d9c39c083f9d80156491b7597c9cf0e888fda72803d79dd81c6e3f1c881c4c5e6950375eed17f16217dbdfa529200ae3e4186101f20b4cfe043c895f8ce078899bb369163f6c26d0d504a1d536afa0e74f3549295167415e19f9735a04f35b5cf3d402481ce9e7e36553d3da34725ee6dc150cec6713c3250518ef004404de170af96a6ba8b6ff11e2dad7bb8122b13565a640891187f1a02f043c98a7d40906f6076609f8818ff5e687aab5b1287f30aa8f198996af6532b930982bf34a04fe4830ec034c7eac6002155afd7008bf5dae801f02dceb21f03c8e49b0160c897be6c3ad0e29f46c04829caf3bb6480876595be5a008be2a4b7ad08d6e9f1677f4249e5f03d344055c84beb6dc9f5ed3639c0ade00b102c67e80ec05e12af371c48b04d8e1c107b7fee80ac1a2cba56f4e957543464014c4fbe73c0deff04e05f985fd506b46fcfb85627d371b3a3ca0017dea73707249cb251af39b4ce6e1c68c4de6da2ec7ecbc1974c95ccaebf1c20d8e60eb4e87cb24d8ea900ca1268d15dec38202bb10da109a5f99e038dfad1a1031c740f1cf0ba72ea40633a9e39907418fc3a90ceff71e50031fee24056c99b2707f22298dbe2b7bad5f391036de4d78e031eec6ca2ac102defa6c92ad5847d7da22a98fdc40da78a5c12e3d100609ec3ca6493aad425ffe9f113a047e67cdc2caa546063db3e06240a6d2889c60224c2c20f01d83f32d5f56ac518c909227e9f2d4095cc9f01e58877d339a0e601f3416bbdd535d9fbaf3d40857d6c5201c854920db51caaa6a378b17cf807a0526f3e1c39d0a8dfdd037a64c32124a2055c230f3a0e300fd6803ee6d23fdad1ca3114b42fc008eb79750d2808dbb351f7d425bcdf56a6b1e54f4c434329c130fb6780078807eb6dea7137b59f4dec862a7380d1fed201b270d70176a93d0738d7faaf20e93296834b98a37d03da2f67d39903f206de3b90e87bb411b30befe1a601697df9d527a046ae3f1c3a9074082307d8c64f0dd0fdcba903cd7e76e58052d773039681ea0d8094ca9b1f07ea0b0e43952b57f5cc0199063e1d50ace3c30185ac6d084d6c8de70e34511ba70e488bd77780bb7ae18034f8bf0e34a6578f06b858bd5c3990fcd8d575b61e46fcb6d6f44253870e0bf74f9daba395bc2c07802185f17815ad6318a3e326408539ecec0ad004a22824a5ead4c56fbcda07d85ba3123e2c00ce3ed91360281077a5f52d8c5fda848497d675818d6dcccfd694cbce3f4e0091c08bdf6f40522853364b06e8dcb35650dd901c3a28517e0bbac4f27c1d1be0a2f9f064001d666cdfd143b77cd975c045221940eb7bbb01988499170668a9ea68b660c0bbe9a803b082da0f170062acf2e9ab03aa415780420b377f76c02a3cff73a0315581e005e05e79fa062859da38c7d576370dca3bba00dcb49e5841ed35529bf0c33e61be1bcd0e20a22ae4fb0ed40ee5a45e008c6eb9752ef5b06b5bf7edcdf3efca8126aa5a018d3aefb7b5e5a5cd4b16bfc7691dac3b20e7df8303eacefe38904e37db03f08495c7e88054508f0688c4789d3a90ba71fce64017cd07f6ad9be5eab1032eabd70ed48efd6307124adf5d07442cdbec9b5052ddfb2550f7718faa5d4add9e3820e3e3dc8144cee7d00126933b07da954f570ed4179e27eb95ead43860cf1d1890944a73ff5934d867ef2dd715654a6bb5f346858b72548526f28c9eb281810223c21b80f47cf9583bbb491df53621f917a96de408dabf02d491344edac84dd5c14573ed1ad0c7c6865756d32a4612176f5d00179a4008405305b97aa54902544a80918db4e71abbcfc567adb1a6e910bd506f00ba14d66cb61d60dce14b9bbe695b5d07d84f5f0103d2383d3f03867d12d6ed18181368c000356374878b026029dc8edf0da06d11dfb048a0a3f178ae0db08266f61da5055d4d01c1ca68ec01b889e75c891b7706e33adb7814c51513d5ca0f7d2976cbc6ad4e87d61753ae7c082b1492141d68d44fac616642ba7973c0ae3c04d8c3e1b07080befeeb402376d3001a1423e5c65e02ce863307c489df38503b362f1da81d071b0e34b78ffb0ec8fa76ef80ac6fb70ec8fa766d80019af977203fb6ef1ca8b78fde0ee48792ff2e01f2e3cb81667fea7f4266b01d5b41566269b4bc37549d48b0757ebf0da83ad402df1248662d6e3e01035c68eebb80026be0d11810a5d4e46f3d81f612ad3d171e013519db3203e69e2d7151755ab1ae4d78c8afd496d36d3400045e349f0c248cb21fc70674cce71f6706f893e31f4095242d1f6b006f9ef9c7a901ee5183be407b6d2211fa2da0c782b9be07f4b17cebc9b705f680f933020cd13fbe6887bf02ea75b60563733ada36c01da85e778055f2d18116dd251365c55c92aaaa2c00e54ca7f4b6951ff89f6e18c0b55ac9f75a1058ebd24f178023e92e1ae05970cf3e81fe91db545a58d6d974ee407d5135e825e0447e7240f6ca3b406213eeae0025a7ec4b2dfbedc383039ee2ed4f2a76656d0384b527dfbb76a0a3f1f5de01f7eccc00c6f2d92ea0e61570ebca81ae3c8f2ba0213c3a3580c9b51e3a4041b3d937ab75ba734092d98e03c66305f42b376307eaede19a03649035cc64d0fa960364d08d03a25a93034ad55e3850d38fa2037922ccce1cb0c6360d60fcfb5b9e1e55b75537641c9e4c05222188b9c2c3168f711d995d3ede00e43ece8709606e27b2d355ddd4b71aa943c00085f57e0b40adc57870225051e022e55780b1d48d4caef72d403d8f677c69158906bb3d02d4f23d8f7b1af56e3da434aba2e25b1024e9f2173ed17434b7e16902e8e2ead5640650487e0c0ce8ede90b608402fffc0f604f6957c18166ffedc200b7d72677a09bd6f983012b8c3707149c73b75f0638a2a7df0688d3caae01c1ac2c8f0ed4b0c8ccb5e282f08e9e03ea78db00d933d8dfa503d27adb979a37d4e90d2071ee9f5e3b203d4ee5a094507a376061e18503091439c82c0139bb360115923f3b724066411b0f735e783806d4584836cf1c6867cf0e1ca8fbd11a8661263b59013d846cd8afd4320fe6f2746b811987f74f1ca0d45c38a046fbb503eda8ad15d097ae6d3ad046bedd3620fd23cdde1d4826df4d0d6054f93a72a00bafeec80b40b2a87d7d476f48da91f4ace5b0c86483195ba7692f8e3aeacbfdae0352a66680b2a386a50008445f5f8d01153accb17da2e9c8e22cb7a4aa97ac737a24af7a6dd3a44b8db4f87b7587ca1b77d700e24ea2aaccb4a05fa17fec01cca872f460c03c990e011535523fed3b6aa2af3f69474de58dfc5d1ba8671e00418ee42d20916036680ca0b2e47c69439edeec88ee5b02ae3cbb018cb53ecea66b0e340d2f13073a5f9e1f0d70bd5772f905b0146ee700de92b2e98301ac1b756680bb69b5e5006deb125062ee50ade71604d6fab3f53660545131ca054043996d037868cfead2815a2aa7811624cc94b77b06507b1a165dbbd5356261e8401bf9fbcc81d6e9f1a1018ed77dff04c7ebc997038a964d1ca019b03d5ae920a566f3dc01369443079aa8fac301f620fb157b687f4e0e8890b151b7d7a6acef80aca2f70e483af3cf01c1d6470e4831dc7540bab10d07dab7cacb52798a9dfcc2fa621acad1890346eccd818ee85b9b17cc1de1e5d281fe644d9a523f0cacf2a8c6a3df5e1b64ddd0fb5cd56f6741cf2de30a5054dad92ad6d18298742b281f015c35425e036a4b5c2349d7afbb64d39adf19d02b4fae1a762d206833a0afb7c0ee2fbb80244520ae070395d6fa079d5b9836f5279501b2012b78a35a248cc126fd6040efeaf93b5fda0a1449879d9101aca3ef11d0470b3e7d050cd862a753c0d0d48d7300af3cf9db250085243bf9364098c9f313a0c0b437fa670047bfe71740c90d78e7cd0042fa761310507ae73300e591b2bc74a0957cf76780abd7e92dc09489bd3b031cc04fd67df3a9b1e5d0542a93901fda97f20e945d6c19e8535bf0ca01f7ec0d077a80f8674db73c574f67007be5d93876a03db77fea806b42cf00ead7c196030983b30f4043d34b9b8686117b2a1c60715e017dc76cc78146ac1b1ca873a1eb40a39ef51c487edc9e3950d3776e1c485ccc771da8a53b770eb8f2ac3bc01b6adf0002e570cb8116cce7d880b9344b1f1bb4770fee0d7b80b2a342920a886941548eccfcb80234d250a2e28116b52ae44e98f22ea0aba7e7bc7f0120783422c607691c19b106408ae1881a384891d8d9ce0dc08cf6bfda8483aa2f611073edfd41dd25e44ec991164071f3a1fb0fd0c3a1eceb04302293cd1a0d6b659074a9f50c504906652a75dd022bbcfa7160c0e4d88e031dc077ba592c92cea8e93b3f001e96a35e789700bb430de87322eb75a5054342ddfa7f0648227a750618914780c3a2058ce913f3d2ca20de817e1c90ed84b96d7518fdec64c78045e832c86654c99f1f0cb0b39f4a406069cfada5b14be6a73503bcaccee70e240bf3a9031e971cb0b45597b805dc70b2076bbadd5f364f019525e27871a0962a616e0bea2e2f565706783a52e68525c0a83231403bd2d0017e5b4706b8ad3d586f1bbeb47977a0f5f13476c04bf3d4819a1e3a0ec808bae98008bb15e0b676e0001df7d101419b370e4881b00218ba370c7039bb5c01355d6ff34ba06579fde18017ab2707ba8bddf41c10622629351c582ec67bedb961282494b2fbdc81ae4d6f7f80409cd6da29a0e289e2983f69e5983a775c03a2dda31e01f638fdfa0a3057c08136d0307509873a8e80811a168ff8951482c6f4710088e4d97cd3ce1e56380ac7f91b60aca8b4b8e5000d65c29756f80547d5be6e414241936b530baa4ab7f9352dba615de27faa8a7d2da8a4a0c5f5dc0072ec621d506364fa4806c63c92d70e889efc0034663ee6679b8e246e3ed904f4f042ca1a0315f739e6b65d403cc7bd03065624f4dc00eec8a7df80a13c33a202d95a3042977ab1ef2048319fec1a608d55b90174bac936a0b02208acc2568e91e4edcc00d2124bcdb0156c124aeca8a1bb45e75f80885052558405308d7ee28060967d0356fec6c6d4f20779d3797ecaaea606b869edde02786dcaf72e1d10b3fa093049b771620041ff74ea80d2bd3695f6fc346d1ca0393e03b06ce69d640047bfe715a080f4dc0149126e1d902a6c058803ee39c0627465005356f43f613c9ea3038ad94e1c684c9f2e1d90e4edc500cfa46b9afd5169814a773ad646a1ec50334587e722d50fb9d335a6234bab99141cd882a152fb664d0f50e2dad47f0198537c6fc3815afaa6b361648f4bf95b07c00994dede0ce0e8a774a70b20c34c54cdfa6a54f749dccbae6c0131bce307c040db34847f8011efb71ff62735050b3f3495a376eff3896d03e8412ff609d22765bb5706d8b7932d00a58cf3b72b079aecbb9901cce9db4f06f01c462f6c014fe0bd4303284667978091b97b9c3b50d31538be045a749c0d2dc0d1afeb9f40d2cd99fd56e4e09e3d7040161afb93925d397d3180c548a97eaa9185ba65d32707239dd91380598bb1b07a0ea2a02081052038b0b4f148a6081c3ae000ae1da8b7dc6f471e4c1bac2f15d20113e368f5c03d32607a90ff0957af7556722b5006eacb930314920707dafbf59b03a2c16c0599eaf4b0ee80a8b489032924ecfd918b1cee62abf449e1dec158edf8e70087c38e03cddcbfc2014269f5094db6dca32a4fb09471d3f26c49d9c9ab03899cc76480543f0f5aebe3382ac8f3bd0b18ebb61695607a91582f927c6f00e89383e8a8000c3b0a62aded4fc664e145c51fb71a8a4caebd0f401dd8849274e36a8cfe815c1ffb3b50619f68c87b3e06b4372dfdc9b83650514efd01d04328edd1db7a144857687f526031fac80014a708e908407586b8663fdb48a949137ea5e9e09476fd6e8077b10903d460a80a556600b3cbd91cd0e338996c18402f7cff304048c4350d6b951a493af9902c016556de0c484a4545b5568b044b6ae9d693014b9fb46b403e02f99b7de9109349b56d0049f7b20e18993de81b8094cadf4e0d10ff920e0d5048e1f40260cf605ff6a505ddffda7020e1786a835c220cbeb60c7007fada74a0966606023bfbf4d281466cfe0ba03867ae02f40b60f7b9574062ef9f5b4bcdc779da079862341d3890c849a503eacdb33dfc096b3a7440048475df42bb1eac2f0dca956de41650fde7cb00bd3dff70409eab3707fad2dfd527105b770e90c9b9037220360ea80171ed0001fbea40639afa0e88c01c19c070a73cacd52ad1d3bdd67a117b5d35fdfe1430eef0894340211994dfef00eaae24dd93e6b6485d051a646f07809e6e6bd9e41630e0f95a39ed5b60918ffd2e00dfd12c9680c47ee9ee03887a8e2ae3551555976c6bbc7a15d5084957ea6c28ea8ea454faa4b7754f2b28745e0c28b949dc78040c74178bfb7c693d92d74d1c3706240bb3e30f402490fee301508fb9026ad1150dced7f9f4d900afe6aa3eb800235284ce005d96e564e0409916278f06ac304d32803df97d64c054b86f408f836f8fb96d4f352da96b6bd88065f95b1940973a793140d36f770c8c10b0cc5c2bd8b89cf51ce043627da1b04476f765808241753040bcc78405d34a3a527558e72cdc369c004a0b9a480ec810f2e4801bdf3f03ec8617fb4460abbf7c18e0c6e73367f90c5ede0066a357a5bc2520518bcd2d26f9ac3e73a08b66ba75a0ce6dd8bc5428464f270e080fb3eee3b09cc9e3ae0526b68a530334ec3938d09716670ec809b9e18050fb5d07125b6beb0e3462379f0e4814e7ed40b77c9d39d0441dfe3a506fff8d1ca0a08d1d68d19df9af681ad2efa303e9635fea5c1987b8f1ddab7365ea0a24a57e6ec1007f3aec632d40531afd01ac3cd2e01480876a3e7c71407e871b07eaad72852f80cecaa84adf2db047bf354d65590db4b453f30128945d3d6e3680209b52f643d3ab9a1889533a57f72d5cbf060412d48fa6062a8a302540859fb442ff168034929c400ba04f5cbe0350d0b23f5a5adbf3e4edbe014af9cc7e0d541ac2898ea445b624bd15c8b97601f0fc7bff3480b1ebfddd81949a8b0b401f4f95933f036828d8941600913376a021c4e9a8742fe89bae03f576b20e18f07aafa0de25d0fa78616e1bca8767df9b0e88f1b6860dc950a674a74ba023a966805a9d8ea7c5130338a4bee70e184206b91d636e38d6d20239f6bd6180f1c86e01257e7d53eb3e8f8ff9974d4389bf65ee9f9055328f2ca956852349e493031cfdfe194083ad6dc402d7eaa76340442df65f893dc27fba0e34623ce9952b176f9bfd8419aab975c0b5facd016ae0d801f7b91f03e6c1dc01d89be7ef8d03f24b59f72bbb573e3bd044d52f0eb03bec18602a83b5b446c066fb0e08f9b70563d10bcdab03f27dda7898b28905ad74317ef9ed80f7971d07a409bc77809ff495037cf183034de5dd9d016ec06bfa8e5052eb397b55d3432b603584ef33006e8df1803f490d4113dc91436506e6b711007523befd186023bf0d00440dc4f90b20491f4bacf550d5686cd6d21a1f817873041824ac81c780f19804f5af8032529ce20d90c880d9ef01cc39eee3d1001acaf98503f5f67207805745fea83516cc7932ffd832808236613c4cc98b7beb06b04aae15809e046c76f60ee863857b9f1850e7a22aa22c40854242c32c1b70fe766b0005ed72db00624b795916a042164e0104e3c707fbc408c3fff986038d47637d191304ff350714e666f10428ed6dad76c0af6c38c07afe6380ebbd2af72c002fabca19da8260ce609f06ecaa3171405e6bd687bf68627609f6a299a79e03892df4f5e02f9ac1263b31c8d99e811e59122b07a4a47a77a0f5910a0764af64f1b7520adff3a903ae809901899cb3a9ff498f18de5707e498b1f130ef8ef7b101d2e33cfc026aaaed359f0e7847b6ced953abaa852f813af76fe880cc2d3d075ac9f1d281cefd439bec9a4b91cf7ed3d578148f0e78f3bc33c04dfc71c78144f0df97031e31fe1cc845e2c7f68b79537e8f1de813d30b075adad75a30d15e13f27b40ec2b0179d8dd0354daa60963680bb0f41e3f006a5c45fb3b800695f6587a614c1dddd513cfd73175c9fff17e0fe8cb33342aa56e0b88e688e3574081d2dbaf0196be11a36c4c3549ff7f6958d54393464369819c49c3ee1850cb33348eb43edaae5428350560a0bc4ef9640d40c9988c17de16e00c76e58037cf8d6703950cee577f0073d5b8d05a6f070c174d0cffb1e96aef47256b58808a5a7a4c437b98ea1d68d218203f0cfe852d202fcb15e3d1aaa314a5ba308065627e091854dafbff6e004376c3e9b901b49cc90160c45563d275a0217c9901c626e9760ce03d88c9247a45d8877740291914953a6d0108dd79f902044be37406885d4a811d39d0ae6c9e0cf0263eb596f2c499bd6d1b2032a5797040e2ab3d071ac20deb7e85fcf83770c065f5c2013999ec576a54a7f29f0309a5d735036cf5abc681e45871ee40fbf6b60f6828e3757ae78014d42b809bd6bd019a3ecb1d68a2befd4fe8cb7ccb01994a3a0e50e1b61de0f6bafa526d8f7fa50305807c7d3b40385e3ad02dfadbd6ba85dc3df8971277825136259265e7ef73402408fe9f3661aa70f34c3c2ea5aac20a37d10994ea8e552d6f0c20c66fa7802e3586f0724df5a022d2ef0b30aaa4c30ced4fc63c40ac8d00250e10273f806097d54b0752f2463d00153f239e2ac92a90e52a3ed0026afae5278c476d819fff893a8bedc681208a7e8cf73a31dbcb3039ccd9a95b5298395f3ff2d47d2fb39b7b1ca9d5585d1899c1e6206cafb9b81320caf7e20420f3f53e0d6ba53e746c0b02b8587dac01bac80ecf8f0263bc6ddf0ce2aefefc01e861e6784906b1d147ad816a9e4f2936e96a0530a61d6f3f025c34eff4dac902798b5f0570184276c8ca23d0b9f69fe003df1b03a60b5c78f5f9d358519dd3770142332ed41fca197a7f0d2859d9ef2301d62d4afb794e2602fa4f0192d8ded70514edb36110474124249b030c213f4cdc5662a334c9ab01f1c80b06b19f725666df3c1f04646a3ddf30401df605a8d91d56f60cf0fcbb3420954b63100d3bbb308895fd7964108b704f40f7ca8d33031ca8b60ce24f16170dd8d8ce05d8d8be6e0d621ffbd933c0c7b96380dfd6b641f4c7e1be41d8f8161b038247970c70aebd310841f1c51f47af5ffdb52384ab0fcd3105f72cc6465f4d27a40d38898fabca49485b398aec54555ee017e882abdcc366311d020644c70d4e00a3d8faf2959e5146d98822d2adb700fb7e3aa61df3ddf1ff2f1e7968857b65da9f09a410e196fc8b3a36c78b0d40c2221175de5b90e34e98a2746f35ff176b2ef290b4ff25e1543aae0408613e89d1afdac334c0c63b60180ac4b4dc004615d66ada514f23d8293ff1d03ae187f27d2580b475a0b7c8d7e95440b7e8933d03aa331c1ac46ded600c50e6fcbb9082ab76832526e04100ade4e258804b73a4e96941173543a45c9e83115ac97701c2a007f4697b64c7f298dc0a84c05a3eed09901fe6e218d067f2ffac08e04d79f225403d8ba81d370771002714337340eac51f0195fede312098b66710937ff90080275327aa0fb660d427fdebbe401dbdfea80e1aa3e8befe064ca8201455bae70029f8e95220c6253fa91d72c13bd640c98e7c786880d98705e408ee777590ca78dd6e0264475efc31c048ae91c320935141cf013e350f06a4b1d66b7558eca96159f7ec8941b837608eab7c799fde1b70d19c022a89a39500bacf87178138f7d3b58652f9a4a79a9635bed6879a63b2671f1e18b05b6a5c9a2e16894503f2c39c1990c6fa46808d7e74614010dabe417cedfa910112eca1411c05ebc706e1e4fb7b6210536afcf716f2e26f1a10a5f760c0fd6526c0c5fb2c0481b9d923fae3323aa815e9304ee38554a7ac7496150047e14e64296a41833b320164ed26156b3f73cccf733584ebcac6085086ff472e62aed7d5025533c6bcb622ab68da1902fa24df3bd804e020938eaf016594d128ce6299d635d9a3d226cfa887d4c4584e02ecc98422d4f528139af1019884f22f45eab416a40a43c82d802d389777021c270b7a0b1e884554956d81c68573ae765dc0cf18ecbadd9363011dff01b29d2c09207d3e3072ed5d3df6c228b1340738926f7f19849fd2f28340c5aabc01f4c881387d15a8f066b807906fab58280003ea155c6500c6e98cf57e0ea24fa36cf71cd418a72f00638ef9fd7d01cc6077fab889bc5df42d449316f7df0671394bfa38729716a73f00b4a309dfaf390851616f5980affde90214abb1a8b7e4a8485f3cd406ec52fa7ce5dbba790354ddd8616e760cd0a1e8f32b49b0e70671e0e0a4575b2c3e6301b51b5b7cdced96416ce32bea64c9c9fbccd376dbc211f4d920fa746bdb207a7df3d0205a3a523bb4b1454dbfff201ebaf60762995efba1d8925e351d94c966163dd64c9a2e5147d11fcd54d9b3a31a52358fe9256d731f30267aa107d0a694891969f2648aad9187e629bf4029db822939ed2b0001ecc5534c98a61a139fdd5d04d461e6c869229063b071686f2a34ac699c054295d5c1c3bda98724a81fbe097035dffc0430f93bfb021334795bbf02150bf90650c633ca5e014838d88d69699db5d463e236ba019718311a998d8b5f1ad64a5b24aafd10400e8af4e2ff01469d52807bf6297dda0c197dae6f8d9c5b3a6b070082153aabd7025c9a49d5d1021cec3a2f80095a85a73303841a7a4cae2ba9bc32886debdebf5095eea900b2c3fd085032d7df5705109c7f2e0189f572bb61102a93f19701f1d9b7006526cd5d83d8b51f9e05648bd6436d59cd0238a6a00a6fbc7f3c5e19509d415f5bd3d2eb558318ecf2d48096f6046869756110dbc5f1a3415c4509d7778aae44ac57d3ee1ff18cab4f03c4e22b039288de1960b3c806d1eb69df203eaefc3188a677ee0d624f8e620c732015e3ae412ce41f3f34ba30ffd60661c4f8f55bd882475d835873175a4068aeca281b512f4cea8598fc8b4701a63ddc1b96d70079014bc07a80127f87ce650918458c55b9b11b2021f3e7a844322f883a41965a008c6221e7ea56207e91263c23e3a695fa15001ff8f4b50da8c2bf307527007265e5d411887a8dc5f377806a1886905c098c09cb8ab478739b06eac18b114049ddc386d382060b4d7e0950f7e3069c1f68474dd066e76341202c23696b5320216ed0a7ed6e191326f26bb740ce1ca7f70065b17abc14d05d6c24302241fd58a00ec971e507902b2c454b800ad972b06a10bbc34cbf50cda5e302a07a9eebdd00ad90176beee2cc00751843d99e9db180c2f1600ed83ed7760cc2fe12c95eea790eb3784ba4e49e030ebeb70d409f344e9f7d01d494512bfe3f083968612810569e74ed5fe0ae1e5ab8160c1169c3a9b5050a44b9da312042e6183096067e5540569e3383d883de5973ed3d3b96fae28700ebf6400d530cefd9ad80ea9ca94f299b9936970570b13a7e0094b10775de0a010251464c4b3bea1463039c7cf52d58bccb3153bb1525631bbf5d378889fb501aa02e4d062821d90cdac382ca4eea64ccd79da77d030c211a5b999eeb3f10635b5d1a60ce5f328825566a6c9bd8c78aeb6b0176fe6bff829dff2a19443bd281011bfd9e011bfdb7011bfd9d412810bffd0c7987dd1a100c7769109dec8192caf5d10f65c23cde1bc4aefdf1234062b4c5e8e4ae05d6484bd39ead0bdc9107478011e0f20330c638fdbc0820a1615a7c03d472f41b0994048fc632ed560b1864663ca3a21a527ea66115db78277c37e680a400d3f8fc6e3d0edf9e743a034cb9acee7f01f0ffe81cae08a01e9c4c003936e9f4ab675408bd87fa0549efca7e016888257efe100871b4b312b3b02b5b74f1f22510af2da31a413d4f9d168b706b1dd0c33363af14a0dcdc7702106e5b748f0470be7e2904c2149f23f4af05830a67c12dc0101d6cd4f4fb0f42ec59be17406dfbb0061821b08685e63f40f9b720c0d5fce75b80f3e5e7d720eeb7791b304650bcf836a012fccc80b7089064a578fb36a0f8c0090077a054eb17b2781f31c7daad8fd2bdfa7cf939beeb4f4a2900ba025c131e581eb28917ef2b021c6b3f17801c9b4189fcd16d37b6f0301b7f1ac40e733b338887de6e1bc409d455af13ee52f6d5eb35d7c8534d1839eadcbc1844c36e5e0d2833abf92113b8279d128274be0d627914c70671bc0ed4ebba9a9fbc18449ff6570de22dbd6cf0ff2d07ef5303b289bf1bc412eb750dc85561a0cd71c1808bc483017a87da20ceec0f4d07348a69fa2480a7db66c874bd4411c872630f409dc472e30040605fb9b10398205d44b87e0b4a2eef118a50f77297cbeaf32a8080981c39875b5047b5f01c29765ad01094370b39a837f7fff9ffdaf77d0097b3f2b307e0ea554445d8f6d4a3d84f1abe0270272c4ebb00c941cbdf80111bece29940188672413b6a324f16c7638012b3bee9b5537406cba5003a83ed55813040a445b5a344e87dd29f38d3d1be40986cd28a5a9a7079bf3e07501b2cadfc026a39c55f03a471de8bc3b327f934ad2c0a90b4eae10240c4611109fbe720a27d3a2306bbddc68907fa1608fd4739e90048ef590ebf00b8f2a49f1f811ad79519009d41f1b423a04bc0af41ec967bccd366ca6ab8fd348855f9b06a10e352dc0a10d51a519c7340398f9289eb6a9db76b8084d873fb6dc0e9c1026af7c278ede1ae01599b4e0430d944c2feff2046ae7a16c058ffab61a8d850ee27062833760ca21dd5a980e4c23303d2f31d0b90fda53702b0c19623bd96d8b7222297fe83980e9d070384bc5b0392ce740542c82b077a2dfb69114554e6002ded756d8022a23488d7a61d03c4d15d831897ce8d416c28df7f808bc4b900e5b32efb0674f2b241088a1f4b02e89466b105f753addd724b803cf05fb13cfa99fdb433fc052874e7790d90c3052f8763ec1c4c393dde007216e486d3cf4471a68f1703dca2d701486c295230b517738ab8e5ce10d08f30c632d217b460448994ad07010a39bd6d02ca18ec1495e0e780a287ab7a060af71219b705c885eb1f808ada2da71950c715300d6221f7db1945dae64f408fb0bd9527c0809d6eb70718728a1dd1f45adbc5f19d009b74a4f49f83d8c7d2f78b00af3de1e36abc6e721831e68004187b570025ab5c7e1320d94be4419b838a5d5bcfc8d205d7061863ef0114c9488b438178464eaf026190e99cab8308c62f5e0cc2ad209dfc0af0daf1b541ec74cb4cbaf628881080f5070106ea770ce812d0bf500a70be8c69987c478b9715016517fb35e0173f06a84cce01c436753e9874edb7c581f3b16180ad60dd802be0056088fee3b90fc003a07cdb32a05e12f3a3192b77d8ae8022524f0cb0379c1a841c14e685164c94c8674f80bbc7c39101f6db3b038ab7de00a65cbda61b06f1d073a6652bc0e3fba52e24914ffa5914a803d4ac39e7717ee80064f0bfbf328825b6f86e40ed27354c997d1e560c422cbe1c0ae0477fa32955b16bdfae1a50a878208002a05a3088fd635218a0f9d60caab5d13f1ac43ced5f1a900a5bf30397b394f5b54d687acbaea676831aeafac6803c68950165126a839072228bc47f409cd6c48034b42f06f1f99d8e01d94e0a83f8da8f23038aecdc1ac47418b96174e1dd8501ce2d8f0684002c0ba07344c61d4cb1bd768ea3618372b8408edd1a300ac7837223c4d141525cf45709c89c73b73ca33d1ae32dfd902e063a0973b834b7603809edc6e01180db5a3ae7a13973157d5e0250cb2645298e1690ff237dc6c41d540bd891236bf53c3750d8a3d25e028c224eab8c8c182d98a2b9da33c0c12edf0312f54dbf69587bd5400fb3035089e9bd5884837656c684397902f4327aed6d00bb541166c1ff8074eb3f000a4b14277a283b4cda391520f2e0f40b50923afef50a905099fcf071ed352194e55173ba05d5904af063817091482b9f025c9b9e67002a6f944bf469ad5ae09f34ac59e0aa1145a8e780872e0b7471d59832faadb045a5ef27013e2e6a1cd6ce2b59de1f1920296d0b10def12130503e942c40aebdfea740441b17a7df8021c1815111a5052339b5ae03f02d2e8b4a801a98936583f89689de32c6c5fb7747a0e6f22e208f88692dc0c43de80ba0a83ad49f4c91d8726310e3d29b0a501baccb22b4b3f1db97003afaa800f21fa044e80270284bf5bb007d7ac61cb313c5d9b501e99398630deba5c86b06dc1b2e0414e6ba6c101fd72c0aa83cc121409791bc61c0ad60d500257563c0f6792ec06e795619b03c0e000d49897e2b83e8e491a6a5cc60cf8706d1d2ce9301799d9e0da2d7173e0d382c5e0d382c4a8358841fc70628aa8e0ca24f1fdf0c4819e2874ae1ee76e8b0704b398087e70621f5352b06e40eeb191018acd127cf666a960c622f6c560de238398df9311ce8f4388c893b6cb7b110d0b6bf01c305f2f3ef1984faf86002188555a3b377011813a6361b030831cb397a6ce8340abd0680e6aaf315a7d830130d962e1e01c403a5dd1f010c98e36300395473c96b5ba927d65c3884b4a047bef1ed370006bbe2f210a0c424cf9b004a2ca50d3d7418ced7e5c33960d445b5a75f4cca18fd4bbeb622815f465b3cf4b1f6730340622ba37e540b9a05d2f22e1bc4028ab2eef5b0567ea9a347032253f8969a24a299a53eac27d2b109248e82ad6f819a52b51540152e9f1b83784664e2ace72942a9d27d02a8b19dac7c085458896f014d9c6269e946209202e4177aacbd149166f44e00c7e997258092cebc2c1ac4e4ffbd04f4a485db05f4b1ac623a1a2ae143d19f08906d7ec4c7b54752c852a30301ac91d80ae600ffc20d00468c32124fcc01d784e1874028ddf22773ac3dd6885a3c16904bb31aa64a9b0ffb063172e1f33d07b8efe71aa03c35efea206519b9f802d873477d4a945eda5816a014c7adde9275b3f831e0882e0c22e0e1594329479d2880d2828a2db83a11a01df58d41bc362f18c44cfe610fb245226aa5cd41ecc90718b8ff729756c706716d1a7f0bf0b5fb7e28f7fd6f7532268aa27c32e02d630302949341bc65f422c00d276d187068ed1970bc6e1a9058f1cd203effd90d9336301b50abc4ed605c3e4e0d481af165c06af83508ebdb953f0e91e5eed820265d5919e0497d64109fefb9cec1973f460618530e0c0843fa31888dbed12c5482fa08fcac9d98b5134531ebd174c43d6a3d8ec6517b4651a7e80c30e2488a30937a9464581efc02707c4c0b5b00b2de773ee3681ce91e95be79a8dc818ae71581b825e5080b9f8329d2670813a36a21b40a891bf0a8eaa2a5bdd62f063172e5ed17601c0355460cef3c2f1877a0877b008a8872f909803f5d19b5e2ff83189725bd85e885725dcf40a556fea861acec327c475b50938883cbeaa83d7042fe88a4662de833a50e960003b2149dd402b127977b7c5c3dc480b9bf64c09d70061861ac2fef05b8141d33fab52296f10f9a83d8603b15601a998e727a1360a93f31b6352540d32a23d71e8db19fae6e18c4127b66186a32c725dc1b5a80ce1195eb489e4cc5f71aa026dfc5aa010fbd18001401f1a26734989f96f52d0d5e048315038ec65020ce73ec92ffe3de00bbfab201293268babca1f2f3b10069f15ef4279cb739bd08d438f81f00f0da2b0617025cf0466b06311d360c4a2a5ef0f9ed891cfdf1b06580d7efb700f7fdd1870041f00f9b8001469d95258190723a77ccc2f6548f59e85fc8db763f09e0113162a9b7a77aac97e1a94188709a632d887d6cef464001cafe1352ebbdabc7c6dc1b703a1a39233947d2481eff9da43e9d10a438bd12c0a4776410d3a14c1a7d55d83e5707e92a7abe6510afadfc0b748e975301f4a7b79a0e8913e860df2076edacfec091ab385b304020f133d027cffc0bb44eb71a174c7a07ef0303b4a39706d809bf0418fdfacd8023495d9843e64ff95a80d8b79b5b4045b2cadb5f03eeb72b069ca60f06b1d4ef570598b8076a7a15eb257febb5b5927968c2d40802374f06f86e2c1ae017ac96724d28ae6a8318fda1262ef247bade32886979f36040cebf7b8378cbc7890116ef1583f8fcaf670302514e0da23feefe9e417a9cbe0123d73388a331aa20d6cee39c3a5f06249a1c0a2846228ea4f180bb6919b54aeaf150e9f922934d3d9e963af7e366314e239dfb9b009dfb6c28e3f68a1c3b5d57a0cf6535c2075b803091c2e9790ef0f98ea4332d986016ece91919af8ac841d4821ac9318d01380b969175f63f889b458ad11f570bcca0ee9240dcd6ca6602183094db77025c460e5605c23c59dee8179cc8c5e61b60c4be8ebff6b862532a36e8d36aa2344e5920ea9a17cf6700d247a7c70f80e21a9fb700aae97718d3615c0f68c7ddaf00b782831d017c9c1fb605707d3bfe010c63dd262ccde3b9bcf51f8c5700a4a3eb9c5f02a8b25b5c740d627344e5da025cbcf15518dba579ed4520ec40c5855e4beaa3b44c07c9b49856190625342c1b065b7e7d69754500b768ae1a630717bfbc0b202a6c7e097035bf6335b407305bce32a01ffb477edf16e8a2dca904f0d6c7ef62ac2c349d0b3ebf1984222247229f7a9e4f9a324d7d83f893ed5d03fc83d452dcf88a0ec3d01e8db14c3fee0c624a4df59631a10878b8cf014ecf4702b8598c9974ede119eb76accfc7d12f0dd541dca28be37b80d2f1375b02989eb33e7f4a62b45d567653726b3cdd17605fafcf05380993be252da0ebfb15e0f3f7770c62fbdcdf35c0abe24c80fc52f8c1b660c891a4299539c5ee1b835862cdc020fe24ca99d64e965d76fd0c9255feb2e5d8bff0e7dc8074b80706d1d28b5783d8e9baeac28a7430378f009d84b71f063171ab1d03fc0bf70d70a1e90aa0811fbd1a443bd23a40d7fbfc0728625f1a9025716a10839d341db8cd17e5bb0133b936202473c580cb7b65405eb86cc0f17a6a102d1ddf1b70bcee1a44d31f5f0c50416bb0b959a4e48fc33a5bfab554a4af9e0c62d74ec90083bfbf85e01e2f2025ddc57d7faccb7bfad574686aaec447067159dd8e436bd2cf78439d473b2643ceecd48daf9db457753ccb8f012800ca9d1100ffa0ce4a4ced49398843bc98f50063819830133960169111a39e4845d0e9082440c943e7a9d2feff090ad58983bea3c6503d517ae0ce33af955ebb33d12f784bbef9014c26715d9956003413256104935654a0b4c0b2008e8fd3d88326558f64ea0b3b00e291d3f91e60483106bcc326d538c73370d09d54d384efe817a02125c44a2cd349dd63d2edf3da5aeaf4e333c0604004d52f403edf282226b5f6f5d307011cfc716e99cc4592ffe0270bd4dc2cf40c122aa7a8d83707e4ea1c2c19e080a9a697e80c2e7a020813e70b80c443973b001c86d272618027640da03a655a790334e8d7b7d70442bf9e7668477baae308fa6e1077f548415d4fec08ca126b01d7eae73b012cbcabcb02a80886df06712b40c49fb44b3f3a79e343803c577844cc33b4c78efb35122078e3567f32a05ef4c30c3094b7cb8e410cf65e25406292d35a20d6edc13bc3d04a0671aa7fef19a01b3f30e0d27c68104e0304094c9411347dab8346353976570063cc2dc48bb580d895fad020e6fadb85c090cb3b934e59ac8a477d3e76e4e25e5f3b8da3b11cab0b09a4ef4c5e05983049fd31453173a14e2e39f82e3e0d626c2b0da56a3d9f6503ec95fe05c57d17f596144752aa1e0494bbb46740a623b6be26f3b595be562e45d59e0127f2ae41bcf6534017de6a5b80a3b1be30202cebc8800c10bf02e1ba923f59d90d45ca8b6668400c6fc72066615a3388afe59634f1315f3e1a104bac919316ffe6ce80e816bf4597f7c6802a9933839094bcb22508949f06989eaf0c48bef766101f777363101ae7e75d03aa772c18c4d73e686adbf4bc6c104d3f3d308845f8f66e808ac04d478316c58feae9406714578de99833bb9cc56a984e7009c85f31c7a65339e82e9e0086d2e2bf002a3d23c6655af6f072dd8819344d64792f370e017de27066238022cad225a05aa0d4424817f30cfe214cbc5d03b8dea737dad15eded127df0a902065d40110269fb3408a245e65b50ca8b9bcd785419c0d6e87f2c14658f81c44e8703a88c19e56e80bd3c31d809297c5ce0380db6b495cc1b4f2e8c75d6c5af7d1e4ed7f030688c5274b00e24e326e49d3f6661e7d7ac640d5dae99e3f05884d88a243ff417c4b550990f7eb624f80128f18b8a73517ab74f22840069917b5a324bfc385de92e2199dcf0140998df71a40454e95a5a90081d2f76aba5c78af0e04f8da17b583f2e1f92df6d369b3c08e3b1c087012bebc1970e56179a84e4051d37429a98b6add201af6ba26c0747863f41b99f3233aff3f88337b766980d70d43e92a0079c5207aacb933c07cbd6d40d1b2170194b25713c058570dfdc958a5151f05a80e75c0603793d8d7cb220b7012ee7504380937be045268263e5e01536c5a91ab730eb8ef2f3194edc117b3b03608c56ee6aa31af1310834dc4d0d407df8286924a8a9d9da900f5d63ed8b61a6e27c5efb900fbfa7d6d103db6b46880fa7828a0f4162706441caae964b04bdd67012c561f1a3936c7e257635b7146fd2e1ba0774806719a561a28658d5cde02c86fabfa03ccd34303b2bc5f097049fcd1a4abe33e975fd43025be8a7cf4ff41f44777d720463f5275fc07b11a5ed60c30b467831048ae0a81f8fc83f7be419c7369db20fae3fcca0043fb87418ccbc28241ccb14e63100385e979eacbfbc58141f4e9f7d80045e6b901caf23383d8b57b5a623a6feffd8ce8e472e0d7b25dbc68ff9091fc6edf80f2bf9a634d1d6f894aaced854767f66bdc80cbb1402413abcb89bcc3d6a2c74a9dc89db798526552d2ee8a67240ecfa29f01ba560fa6002bdcd701999b45a49f6f0147745ad816880da573177b61f95775e7102095fc700c904a7ef00048f86c7e6d0170bd2f8b125085d340891345991b8ed7b7e8f5b2228b778a5cbf731076c25cd3f46a403865c1c755438c18535e5be9b21a2997e7018898f43e470009ce55ec85f34a13716b9c9d01fa5cdeb19acf4b4fc46013ce50ce15fbffc1cbb9419c84c31781b845a79ede32a18a59ad674c719cbe5c0168fbbc78122045060930cabf03985eafa9e35dbcf0daf668a4e6f4ab0159acf6015d7cad57f9b8f66e4a718a9e0041df5b3f06b16bdfd2a772f5eae0d955ba44ec4d2540543cd256a993b0733a10605a1ea9e9a3212b6a0130460170be0a987059fd52c370f04f673381b05627ac802d087558b1af5fe05b5c7c9d0b283feeab017512df0dc2e7ea53cf28d9fafa6b06f196dd758368fae79d410c25e92d4a1d9ec5d22f4026dfcb5b8350fe4d2b034c255f025c35c6ea4212c6149ff702c8fc551218c61cdbdd00648eb5a51f036e5adb06312e9d4f031c746f0ce2f07c5d16c026bef40da8b8137e8f04d8f96f660631b6f5a54104287fa83fd03916da0b9b5adae22301c6256f1ac4d7d69a0e728bce9706217f7caae96c4af975c9201a765d1890f07264801fdba201998da706e8c6fd167abdbc37a061ab06d1f4e1ab41f458736b100d1b3f1844c3ca1303c48d0d03c2f54b038ec6a101bed69afcbabd3e7e1a84daa5af61503e7a56761a28d49e80cb349ac6a42bef63934ebebdf60e01d2274706ff3a95bd052a6fc4fc48096fa80e4146292534131b0d4087e76d4ccba4532c2d6c0008b8ec8c7f01137e31ac01997a5ae514504fd80c687a7b76c6d940128df68e84287996004374c15142a70525a3bf7b0b706dc12c402e82fe19007d503a38154824fe7e0734ecb83b7122a7ba17f6ec5c18904265f503d0c766b1b724208f6eda510f23277567760120c361eaef0230e82604f839e0178b06c8a78c5c4d306d3a791020af35090e524d1c5f3a564b2b4a08e767401d2ac6e2e509d0c881ead9009700831acb48ccd379d190b8cf5dd3c9edcca662df2ba08f1afb8767b8c4d2f45c800378e9dd20a6e5c74c20564352273783c8abd0f9625a364312904ff4da2195ae76bf0c629eae5e01465d7ce10602757cfe2713573ece9de1b200b9d3c974342f2b1267e5c6a70009c8374702b8d07c3050edbd92acd52f026c065164e73fc04bfed7209a8e65a405b87b10eed202ac91df0cb66e9ec58dbe85b4899d03035c01bf6f056aeefbac7d672bc8e706218f7dabd7db3914abe1189075a1290c6265a78e41ecebdd430164fe9f55813aa603127d6acf399419b706f8285e0ac8a27964804573dd8022c3bb06f18cfaca8072511706d43666eddb81fbeadd0053ebb541fcc991bad02910960d2865dc31881de69dbdb051dcc957c700b56d6380e3f4b30135ebef0c42b87a5936a0fccd8741b4f4c4cf8891cb9f6e077ddadc18c43c2d8f0de2aa31f66b65f23d37a07a69d7809370d10093af56b6a28ef69201aa5f371d2fc691df8222e2666c8025e04d8039b6e1b750f074e25f20afffb8c7ea30f81fc4a4cb038eb512692b0f924ee4d04ce4d184139988903cd69fdcc6c8e5896e9e048ee7894ef5d93d80a95dceae0d70be8edd214f13e1b6ab254017de852f80b4c5277114e452cae1851540c2ff633605646e8da3b87b645f8987fc89a39f365e005252df5e0164696e2e0099767cd07425c0e87cf0f9d926df1f409fa9fdd307483efd4d0014336929e48ff6028cafe48c86b57b41ecfcdce673d5e74fd463d58830a4af6f80720e7f5e18e096c4b85439c636dde817e8c693e6475553b67b2d76875cf7082320f2606ef0c643841eab09f94fbb8d40d8b33be7fa136ae8a64b5e3bbf69ff07bd470322ca68472b5ec52f5064ce41cca0d3250125fed66b29d592b6f705383c57ee0422fc27112292eb0a77b145fab4594067b03411a06ec22223d7f4e22a5a3cdf0aa0716eb601fd214a37c6b619846931ade917540fcb91a3bb05540feb5c4d0ce24acce6d8025240eeeb1963aaee1ce9176314bbfd0701bc6d17fb0221296552a8641de2f9e3064042a1fcba6e4045b62b812182c00050b2b2ab3b01d59bbf368865dadb1260c21cbf0ad458bdd4309524ebeab52acf78ce66e05494971383505293d030abe476a760a76bcf5bdc5e2f05b8142d7d18c499fda4c1560dbb2b56b60fcf2d7d8bfca5ae970c48e4f364108a2a8258737b6845afbf2c19c484795d34206ff1af01b15e2f0671defefe3d148dd1c800f3d3b5417cfee1b301eefb1a06dd3c4f3b0631d85f07066826160c6218ae970dc899f16680fffadf9f6059fd7b2d8e4bfe5a052a1d1ac4e8d77e0bda9ec72f83b08af62f0c62281fb5c4b88aa6de9a40acec723b4e8faa2f376072ddcccb78c7b1b6164774351c8740526e3d01c88059dec50caac61c38e5d30a40cf200d6d359660f418f3b49ae858fb7c01d4f2b99a09e048be164741352579675aa1e9539d734b213b5425fae4623586a14a5c788bd9c08044f9cf003d63e1d720ba709b96faf09cf12d8ee4da2901ba342fd0f454a264babb0670bc16d30b039232f70c6293de3b064832c03bbdf2018cbf76a564a665d4c2aaff4a3d8df600342c97342c531b2c8df9b84c1a96dc61e4aa0579877d03ba65dc09a37ed43c7b72b867e746bfe897f1f9b78c4ba54be287fe6418732c5feb2dc31287c33e604472c6954300e6da54eaa18900e5c181416cc12723402657e770478093f07a0340171e9059b005e4962b3b004aa216ef34bd56a1e2a32d002af982d0aef611ca9ffc2830208dd3830041579f8b00a27d3289272a4b17d77c4b3da21de4426a418485e7b210902dba0ba0e256e7dc009fab0b355d39aafacc0fe7a83afd340891258adafd07711979637770d9aaa7b1416ce399dda1aee326ded95a03b07da6b5990085585658fbed3d8295cdaa6c7ae81d2e0406689c71f09fd77e8ab76c30939b21b7b5bd6d01acc4d70f02f8193c4d0ca24fc9e8d78211defacb02f4d8daa640b4347347ae9a11c7c9f7aa00939f90ddcacee8573301f40ea76aa9aa54a130ab9481aad363c234133281ffb0e534ca6473a88792f230bf3502aa80ba0e2839a2f7d60ca2c7fa1f02f828dea8834af2e24ff55029dc3f170494948835273b7271c874b0bff6f59741e82eea5703c4d113806ee2077a462d4bf39941ac97c53f10f3e3f507c0c53bbffe1a84b4f5551a44c3facf06217ffc668338b33f8e0ce22d1f5d03ee407f000fd51b83d861464b0631b54ff704247fec1a441776ff7e115f7b3c3388b1fd3933207e6e6810637bba6380ece00ec2e4fbf86d103e8ae3b101b1910702d446ff3d1468a24f31d6d71329983f1e019cfb693d76bada87787707d08dcf2ff79e019cb79de55500669f4e9404a9db8d4ee7ed3280cb7b318b895bb7c76d809d0e40e77e94666d414f56e22b800cba6f19203bf27808e0d25cacdc037ceef32d09b57e313905941896a37e65fd57a48bec62b54ff55abf6894982436835a4afb7263416018f2d8060dcbfd00c5af7ea1b4bc9d902e5a296f1283fdb90f1830713f1b8398a75f170022db8aaf3783384e96cf0448c74fe289f62420e1546d904828c4d856883d09d9e1bf10f31f70d5f82f8084b871258029ad8efda3aebb1545caf9b85a225cd62f8608cea49f6f018727f12ff3fa6201f283011609a6543d1a528a94fe68effb312e6c7dedbc64c7cd8f02c414ddd3c9b256a7d1a6002986dffa808c871991e4b55cbcd3f98f414839e7df029c95fbfa5af2a1240a4bcc410cd468c52024836dfd82ed33dfad1b8412a1a7b7d415c5e3f50bac0969ad2b4090f327b3b0bddf71023d08a0a979be16204e9c34a3ad6040b83e290f6b0902c5f30d40a5e2be5f05708a47e69f673a8e95bdcb76d16e522139ae6d0990f57e536f5190e2f98a000335d66b072aacc986624fb7c98941b4e384815266e3ce0b1346292053ff58808fdbd3e74f25b26c19b0e6d4a73870e7b7678398637d7dfe14379cd1aa410868dca35a30a014077b617beed38e0d83d81dd6d8c69ba4b4896a874a4ddebe1b449f7e1f09c4d6d7397e35a070a21e2a8fee657d7ee69c9baa832a0ecf85be80ca23dd011488725f0a70f09dce0ce26b3fb70d62e4c6eac25a7d3a02e86efa716280097cc700bff1a141f4477f6080aae2c6205e3b7c33c05dbd6740b042c720b6e0a57383e8b1b36f01e5763936882e5cba340851216f19c48459ea1ac4b74cf60c28a07466404bef0cc8e41be3d2f4d9b54bd20535d6197c9d0164cf46746aa470cf0fb17d3652a7276c6b8d35026f02132cdeb33b404231f3c95be42e56ceae0cc21beaab0be078cdef3c632a0965f1093052c0f61b602295fc2780ab79e798b7948ab18adaa42d508cd5e909c03e68fa45232fb598a78de58ff51b80c49eeb1e60aad0ae27835075367c9c4485b4c76ba511c858ac1aa5a0ee7c3500f9c2b1b29b9c59eaeb09c022cc57df80661a9be302bd5ef51037c87f3a2ff71a87e7373dd68a0ad46b7c0470bd2f774bc058b5495705baa46ea51dada8102b6af74680840f677a4642f35de9171842d25a2310a692ce811e4a4448c663b79917bf8a617807901ea743d6ea795273fce96a403f51fc6807a0c8a5abae0029baf0506dc188423d7b00052a35a702f2e7bf1320950b3e794d4d5c522ed58e115a85b72980e09e5c26011cec88df9f0332501d024a8ef92f354c71f353fab4953f4298182c0a10b1fca18691cf317fa96115c6e9ae9e2109052ff979deabe8d38b4d03749f7a8bad4d9702f86b9fad08d0b04bff02bf8b1f7d7e7b31f8ff50f2173635f90b73d49e9c0372cb75d5ebca9ebdc6fc6877e018b9e51f400fc7d8a631201aec412024c7fcba22408eeee55f01020c49733e0764b07b14a03f2ed9721ad20476b4f5d9ab62755100e9e28c29d50cfb9817c680112ebc4f9702e4f9d6e4971345e792b155dc5a713114185084fa5e80ba1aebfab871859e7f1b80a77d7ed9129012527f4272a4e2564d5710dae5004001c76243bf9053fca53e8eec519dc33b01d6dcaffe44eeea878f065cabb70d8880d0d752482151b9a70598d2beef0da2e99b07007417f99da9fde712b0618079a130e09efd6c409a8d7d8398c9f8d2364e55fab26810fd315c3040983833c057f242804bc0cf9341880ae34783e8c2a59e010e767f7f120a1134022e02997f8706b12a8fae05c2f8581efe9761e697040913cf80910c10a70004d6f2fc31c050e2c6fd66001b20a2e8720b900c72a440683b54b7e8590950dab3ee0240824024996d81de727906d07dfff501a0146e9135b205bace3ef32d138ffe7b0005a1a5f10e406f993d0860e23c6e0258dc385b07485571320048dce8f3d052b11a3b8501610443806cf3bd970036956cf1504b285b15c0fa0fba50fa8f7cd3074864f9a0d7ffb2acf28cbf2cab1d0019533a2f344c124a79ad5f107396460c549e12aeffc640b537e2902ea22a420b5840b9dc0ed02efdd8b53ff8b8aac7940aed790b484c52c4e9d18201053e5799a715f334dd9c1bc40c9a7d08507765470f9d84baa3dc6d0cb0f2a81d153e029168610e706b7ce62df5022e9ae7cca0ba8b0ee5f80840def3e26104a0e939a27ce7a0e2f4b8044c7a649ebc024ca521b91620c7cc882e6c458558eae9c98068c1034022adf7d9ae40451ac919404e9cfbbf02b8374441ba39205fcee859a02697eb05a0e65afddb13e0cc3eec1a60186a0470e37b5407355c896f8f0522337a3ad443e55274c940296ebed85d0250e0330d7f0428f5b43432203a9fb16d4ff518fdd5270394c3bcb6e913161ede7273806be4ca8300c7fc98a174f6b9c1b2404d76a0778126e6c7de0a6088fffada86001df4cefed18c384e76bf0d4831dc17c077a3504b9d6c8ec16e658700219f36f312a071880fce059404908dbe99924c7dfd4b80ec0dabccf5a66499eea893a5cc585e34885f8cd5b0527534f5f9251198376b00957ada15c0e3bf735a19e0cfbf2b807d6e8b13c8fefc8bc706b813d602b4b45719901143afad08cdb8614369f0532a763450f8f3e7b7da8068c1be015e151a39fc2e8ace8b01da8da9417c4b6fdd8014e54b06d141bd05831897e58941cc8fee8e417cfe82be45ba8bf19941b4f43719a06688d5d0edeb68dc8fa1ecda8f7eed04c0e7972cb1aed2af95916cbf9557a477b88be5d19dc86adebb00f800be01304fcbd9ad41989e2ff6013af77b03809c1736f50c9dfb6f31b65df92aa42f0109023f53807cf2965700c4bda6a5558035131f804caaf4856f408dd7de365f2b51a198f501ca89b0161b7dd7e7fe80d7fadcef6f00facc8f70be6e8124a588be6e8112d7446a8a16c8f1f17c2a800da7a3d7ea82c7be3e2fcd1a8767f85bb6a0bb40a9eb4b00d95f3a1f0c83eb8ce463c090ccb5714d68c16848d04417308e28acf286b16d8509944c6f00c5f20c98525916894f7ed1ca0e346c04c0bda19cfd02887a4e4faf007266e450a9cdf3a550cde4f80b507312def3f96dfffc5f5107ef0b02540ffbed181043c36bdba54f7e875b835063efeb4ff0d9cc9d9140944829ae04faa84c7619b9569820fcf845208ce4b9544b5593eb895958532f3a8def0422857dea9f0a607ff96699d65c23738474cf41e83f72f56a40ca10f5c7641837adea13a0c08b3dd64b2ba1c4311f0197ff411cafef7a0b052e72ba11e06afea53f21d75ef1a9fe20fcb8f8fc322058520d93fcd153c3e4ef70a681522446efc9208ef9cb738398417b0ca5d2f4a4f31583f8dadd8e0115c8f4275d7cf177694723a13794c3734085877ad520e6d8e3500093efc589002dbdd36b71074aa78b02ca4acc4ed70cd0d4acfe0a2029f5970d62f41f2ac01007ddcfb100e11d831fc0883db97f2e40f98ac99700c3b0be2d401aa71ee74b2ba14407fdeab5cae837ec0be0cdf05b0b0ca96aaf2e1ca352fb1c09d0eb07bb000240d2815e3b615a7e30facd34f6e4b4ae2e544cd1a78681f08efcf10c901cb4c20292c9a658de30884d496754935053eea8d771f12e96f4b5a4e7eb9c7f18609051d309cde8205a771d6771b9045058c5ceba807c374e0c0889e038f9f3ccd834c033e3c500f7ca4783d872ee7a067cdcc02054263b7d03f27c17069438b835c077f4ce20769830c5cf012a93cf150314bba5410cf6c6b74054872aef421aef8d64b3588809d393409243addf02c59a3ff327139d4051e8ab05922e22f540d3b35563d00148cfff7d0cd0117dc25b4a95429fed0064c4d8fa02e898bfbe3208c1397244b4409e909bd70025bbed1f00a488e8c722ec49dce87cd0303b60324f7b1637d65f013ae66f7a005935224d600b243a45dda6ff200ebea846d002b574a2b728c5dfae1a96e5a23905c855e3e1c780688e0b004e479de7d8f97b4adc9bf60e01fadabb2b0322fd26002944f678a8120b941b3d01e23dde4e00d4082923b6a905236224ba7c5c9e302ddf760ce2047a7d11c0f23e564ba7c4ae3c9c0132998d5165f5329263a9b7c855344505c3ff201433ef7b00f9f6ac970671ee371f02d42ba8e8a04a9fffdd3188d3e39ab1ad7409f8b93620f78fc1246c5a7b9f8009a2e42d6bae9ac64c4eb76383b8ef23c2b50035c3b9daa184a835c3505178b5a8560d62a072ec85bd56400ba9af9304222951e7a40268dd9e0c0d885beb0910bbb27103e811aab2c850d603e4a09f07c050050cae0490b6aa1703ca13dc035470ecfe12a01c0023267f4d86f6b4391620aa35dd01922c45bb80cc29367e314045b006c077b478604ad5ba467214cc0b592339ee0820f61cd20e15b24ea7cb06d18ec3a100e2c6d98f41f4e9cb85010593cf015dac2bdcf87ace7078b06d109f8ffea3d78a3d18426602bc76f5c5000719b6f146d56d4fbe0508eadd5d040ce98f512d40fcdce0d00005a23e6e88b16dd500b16797a9dd8c3809777f0c28459a0530728d4e0dd029bd09a053dae5b068652932d95c188418b8311040ec7965bb702581f5250126cccf9641e48858509fca41668df3a5958342dafae9097449e3d40860f47bf32f4826b6cc8662d1897bc3bcd2777461ff480095daf79341881bdbead31c9b63e758834de9efb4b929906345edb34b391076f1c880dcd8ea20aa101503ce4a27345cb814c0ea75b66f10dfb22d8072277fad1b44176e1f18e0baf264404abb0b0372763d185088656c802c756f10bb65d537403e9d0a10b3fabe6410dbd65bd780aa4cdb06247ca80ca816ae39a6189a7c6c10abf2581357e6a7a888d2de5e90a5cab75873fdb1c58de8e4be3546985bfa725d29bb09207d5044b6b500ad537a8ffee8dbed75f609503469f10b900c7354026a4a0a1d550079861e67837008d98923a96f4bd14901902e679376d852b471077072a445018afb2ed30e07d52cac02946762740390e814e1832d90d4872abc9ff8fc62710c90092bfc835aa0289b45fd89d214478de516d08e7c45c36c5c4afa1305b15ebe0024c25dbe03a4a75b5813a08afb7517c0f24817bc25f7a9b677910c4898cb30c8dbb678db1620f37514c899038ab8dd32fa39215cdd1f022a16e12223976947397b1720333ab7d7bec4af72f50020dd67d85eff83b8232f3f0250ff943ff45885ac5d46c9981638a6f95580cfaf9930328395fb4c986a4cd988d9b3003bff3daba1d2b82c4e0114a2cd487dfdaa9e86d6e9a201486bbd14e257bfeee112704bc3ea21f9717f7604488a88a6b75f6b06bd7c0326dc5fa2e4650b14a33964a06a9224e4ea430091256ab7347d05c4a4ada9416c7d833700b90872a9a693bb238d6606b139f6560035d2d6db99001a34ae4df3d2f0b1e3f6d552c5deefc4aedd6f378790608f0d3061cd7a06f1b52b745083af537e7c1118c739777c2580307134150849a944eaeb373d7cad17ce0d70f6f12f68c7fe8741cc8f3dbda54799fb377aac19207caf7e0aa0755ab932881974cff2b0c6e8e45e00f5cf99be96d09db4b668407a0bd69c6a2ee56b357d44a681e99b0032dddaba01ea9f89419c515d06bba19a5a7e1c18c4e7eb7c510e9174d408f016aee6fd668a9d70996dab157b62d2ede85b88e5c9efab0228ee74363425de50cbfa851cecd60f0cf8c59200b7c691860139a85864db6ac51e66f2a60047f468c580181acd8f8cba74632880d0bbac3f91afc2f0d9205abab96f1012caf2af00de831b1a972ae318cbc6d6e023509c770de8c23503ee739a413582e2b540a3fde3dd207e313b372067d7c88096fe01ea7b64036cc02706d18e5aab41f1c81fa7061470f49f20298dfe7e4119e21d831014c385b7f92b1e7f716810327f24ff6def269272768e00ba9aaf9d01c6a818cf63531ad8fa761b3bff4059acf2f51420cd15f686812386deaf00b28b4596b316681bff5a00c80d67f11140944dfe5803288ff369019090b71f233790c2acb3fc011871be6cc6da1f5895b5b06410e7fefb1b4041bd51c0f13fe00eb402a89194a20c4f0bd48ef0fcfbef151d3bcc39fd917a9c4037fc8925a5f0ea6c8104454c9c835652a27ed4af012a824b807299ac2d08e0a9f2a45fc87327f25db440fa31a4be1684dea173f90c5080f2253d26692b1def1a84a26a436fa9895cfae900d41f1b312d07b91bde2e65944869816661ea1a90a8567f4212af34648e29136779370370392bde0e0548b4b0cca4b38d6fc484c928a9cb15e687a5adf546803a9a97f469a596aeee01244baddf097027dc61e42aaed51dbc190695068a6bc2a0220344b9cbe85799cd7187f9515514e6ddd915a026e8d58a40a4d5cc890eaac8f3dd99b1b2db551a637bc8daafbbb248b008eb5edc0a9206aaee855ebbb8db064c467421b350d93c73c57a51b6932222b85b9011bf1ef9b89a3abcb99808c80af86e10bb65bf07d08577e7434095cfb38022a74b019c9e0bbd169d52fe603acc1d0ae344ae04300b9e302e0a54ca3f6c398d6e5ab858b5800d56fb580be2e36e1a01fc6097ee05b0f11d8c0c626c2f760510370e760ce204daa1831af2e5145f03017230ef5d0b20181d77047036de79010c148cbf2f80d08b2fcb1c20f43250cd906deb6e532044c9cef3c020be65f54b806f59fb1068e2aad1fc00461c8d53f5d80827f065fd624cc3fa2b02c885cfea207c37f2a7068a5a58f99119d4681b5f3c304085f46810b793be062ae1b4d8dd3688637e6b03a02d67f66110bfe86b6c49e592bf35c724f6ecac1a4427f7360c421da69dcea5af76f42d356fd9593220639b3e4e1e445f5b06214c8c160db0bebd025cf12219c49f0c4e0c42fed82a0db08b1506d4053c342068e2d180e25847062899960d623aa4be407c7e67bc64100bf9ed4e40f9e8ef0df0ed89860dfb890a0f51f66e9eb657b7e868e9d059abcfef01922eee635c8636e9bdc65130943b726a5e018ad4798a737f68290747bfe144d7ea590d18a384bc9b0274365c4f003ab4b66998bc90caa358b7436b9db6788bc49e1c89595b20a31f92f4708a0b4d875e9f03d2257f029094d2f60b406e49c70940cebf0edbc5d0c5b18e9201c58fae008a8f5ae26b4bc7562f014aca240cf8166b9dc67d805c9a878c8b83aed03b0cff7c9d6a035cdfae0cd07ed15279439511f7da823e87f84107a0b2220da36f59ea566f21eab983d27e68d1e99e6f6925a590c7ee1f012ce472e34200f1eb9d5e57ac57da3b05684a75bb02ecfc78b80ff390721e7be70029ff2e580d592e677bfa13e783cd006903df8e00a4844835533b6bae0f2b0196d8123d56e1da942217630b7409c81d8310bff0fb1c4ab84a8dfe84f592eb0781298a5d3ab99223f9f99201694677041003f11c1e5608ce69f740801eab1ac0842d7877082899ebfe38e669aa19dbbf98f7378062138a35038a95eae3c8c4d939623a5456fdd2c9b59c065ebe00923fdeaf01530abfcf1806393f150f34bdd639971b011444daa56a6a1be748efd9022db1c53b012264661301c27f3aa5413c23ea57fe07b149e75b03c207d50e259e78675ab6071006992d01cc71bd0f0312e7b1f5cd9df0e224640b6ec89f9c221a6c0e908356cf04f082fe61aeb7b2549c731cf32dc008ba752080477714b7f90f78adc080dbc9ae1e4a16bc1429a9e600bdd4c6ae414c98c3118058c0745c1b90e57d53209c8ed2e98641fcc9e9df2fe2f09cb0d3b5b254fcc9da9a80bcd33f0cb0bd2e19605ad4c729a57f7fd58087fe1ae0c0cdaa6c30c517fb1aca096903bed58e29b549af370d42b67c7c1698448f9dea1953745b2b33804aa2eea81d25125bef0f501daa12201fcac609001d7d315a16c07169706610d361ddbf2035c540cf202aadd841bab0e66ae9c4205ada7f37881ebb65eb73ccfbcda74134eca86b808cbb6a1002eb502357cbd55cf34335533e34a574565e3d181092d93788d5705f1884d4b7910da20b3baf06d1f4cdbfb7e04a9c0ce25b362a030ee0a141f4d8c2bb01c9e5970d08951d18c40ef3be62103bcc7d4780a1ec2c19102cb960104dbfd030282fedeb9e003e023f9aa70debe567cd20f4635174b95d718a8a8f40d8663490c26c21ec62a3b164bad40348a6ebc78419d95d1d378b91d5619fcf00575539059478bbacf0164b8e91e4be194d65a189e8daff200492c852f41f84ac7dd4015478321d268033d6f3507b981d5f03a474bb4c062cf57780a48bbe7e213554a4c19f03aed52b19a0d334c79e3c929097ab058064dcc763401fefb0c923400e655143b7050a755bec02d4eb2b8f06a1d6af27009c383b514baf05324f4eee0ca24f07db007698cee40920b9f0fd15a0abc64f611022cbf71450cbd35eeda08261e78b6f719ac0cce83ba150aa0c627e5c188489335d6483b02446347a0b248f757b02d84e2207400ba42deed0b04c42a1b47709509f6e9c0be0eb34d22f74e5415b3cb2a9f5f310e00c104f0218532a7d3ee9c5d3f38b018e4b4700124c17115bdd8cecd876fd0b502842a43b6d81547ba7ccd34a2e7837a70621c0afe819caa239fb12c0309419db6a12a526d32d3d5691e4ad44761855da3f76187d674b3ad733b4081779467b78c41c23f0735477292a73b4096035144b4cba7a30a40eaffe6430267ae15120a37463b0eb319e6e3703c084bbfa931e4a5efc9cde05d05c3dbd01a668036f5f04e442a36f99923ee9990554eb98bf635c6add09677702c49c7dac0308e92e3e7f0d620fda3810907c7a65105f8b243daa157d5d4c05f893a231209a94b7a8845f429733721ddedebb0062e02eaf6d25d838923a850199f3d9a49b1e4b7dfd03d027bcb47b2dc04337f70c62796ced1b447f7c7c03749d5dad0de2aebeb66f109e08a55a4a7282b47d2a10639b76fd0c4cadb8aecc0182118756430c4de740bfa0d860daad04f896839941cc8f8d1d037288e81923a50cd912a8711a50c354b56b7d53a0a6e8a15e3bc1deb0b62ac05b7e1f0c6243f9e2446ea65c8a30b78c14c698d69604b8266cff004af68f0db5a32431c91287562b8e86c07aafc1a64648fe6235a82c51fe66aeab625ffeca0614d565655b3d78f86080b7dca500a6c50d763acb853ab32d17ae6583985291b2fd3f88a5be561950e2f1da001bf0c020e6473d3688feb8fe302017e399412c8fd5bf76c43e56ce0c70c03c3720824a135796d5eb4f8370c2ba704bbb24311f0970594dfe05a9c23a1a7d153018685cdaf7fe07df0f06a1213988af9dbba0c5468f3a6c3c947af0250ebef1587aa9875d807e71790a502e82cc332c4a4e160152755ec4a63496a75bba1b00a4c87c7c00c839ee93b7581cdd7b024862c3c7686c5fb89f0900c9314766c116a8616705400d6b42e81dbb742fae092d9056f20b30c4c01d29325a202d1c5e04e3a9e4b1631a36cd38d81d0f0d42a43d5b03c87f6c5fbf901e6637d47263c9b8c5ea2340c2557306906266e316204fb74d7acc42ef069d6cd3f376095010eb556110ebb6c7d85af74914f8f84ff7c950da056f61d9805c484cba8418584c7a0009ce832d00ee62698d7624ce86624a9ffe8566740192a4d75e010a44b9e6e39c452233b52d38f7e975fbf5f52f0d887b65a02c384f3b0664b2a14f1d6f7a790fd050be3f1b8402f1ebc22024364255c60a512deb1f80073b03e4d5f9ca605b29bb477fb84ce41ef3c332ee7a0d98a295449f3c96d09bb0df8e33368b34b803480aeee94f6c6f78310889be64b02de346f1c5ff20c636332e76277ca1a5d6c1e222d102da71c3326dc5e2b0567ff0b5d2c12664dc39888bc42adb56e5fde3dd20da71c14055d3d84fd3f13e40fd71bd6840de0d464e0e87f9e503a0bd70af2fc0be8ee56cbe37c691844b400bd850960a01c4e20db6ad9a5450052ede2d882a11857abd264964ae9e04f0817f6706d58ab1fa1490b7cbb31ecafc387867f2d7922e701a68410ee9b3930de28ce28237ae1126f2afbe857c4ae970452052b7a6f19700b9c3ae99c9f33a00ff3f0e6bf55881b0f947402e89c4cdcf8f17eaad6d09605ed83e134091b9b16710025af12440be8b1f812ef686931701b4a3c36d01e971d701da8277de0cd05bce04284dd261ff68fa18963799a70a514d5b7b0678eeac1b10a1bb61101f57aba5cabb51dd1ac45c1fea1904e6a4b3550184dec38141fcc9debd01f1b77e0619537e1a80b6e0bd6501cabc1df605e4703832880e5adf32a0c6d02f409691951b0114cc2b6afa848f5bfb1268b8681e0114bc31ec0948a1aa67948cedeab34043a667b68b06bd54b1b26210b3f0f75200d7846f8d8be25e75beb4201aa62dd8a5ae676706b1d4fb6f069435d3b4aca83bbbadf981fb7eb15a0910f0f036112087c85a02e8ccc6e43bb6acbdde1890cce3cd806af23706d152897096b5af1f0cc8eeb16280c0ba6810a2f5fbb201b7820b0332b61d1b50ed664d20e6fac1bb86b289a488e55e74f2c48676e2d527f62f7c7f0748a47d8a764cc6f62fac003a3d7ae700edfcd501401ab4be805c121f0f016ac77948289389d461371b00c9dab306308a8f2ba3f4440b748813c7370721d14701c716487573fc6e106bee7b1320397999863999d8d7aa412c8f999ea1639ee415933fb7c61f0059ce3aa4c79983d07d1e0f00539490db4b00895fe77ced34c90ca6874a7442a899fc49c1cf008ddc551fa03d6834064cf4274f8052ab720b20bf9c2852de02adca65669084dec4456222d56f4205dd02d22513dd3249125916af000e443903e8aa31a4835a9136a40b0cba134bb00b8c9c0cfee5f7c4204485a98045da1b83f0b68d820eff419c40791720a1f7614d80a44444fa4d2cf446dee216a883a28cf97f102721812813c7bf1cad1bc44309fd9b2427ac63a0ac3ebe61cd59c6c5c36c624d6fa2d725f4961bfac520748e65c174c84376dcaf1e80f55210813951d6b7f24aedb0e3c1be00b1801f1d806afadd303f2416179f57061896a706b1f57d7f0128bf577c5d1ac4c14702bf3988915bbe03e8f6ba7c6340416d9647d636febd6840ed167d9cec516f3301644bec7313cbeb584626157eb06554569883383ccb453ab995c6630f22dc76e2d01d14dd13bb48ac5f09a051248dc2c4e2395ab8893c543b078541ec1fa76706217f5caf0a94715bc36366d2caeb7139db1b1b90af8ff552a549e4d8ddd1b7682f3c64979247447e615cfe42a969ba3d22b65605a8b38ace6062a7d65d76dc7a4099b792f552134492c9ee31b1bcfefa091893bc82a44413c9ebf999d3a3d66dfefe0280c8920ece04a87b7f7f0c9084b2fd2c404aeebb2d01bc187fd430a92a96670228aa9a426042de0dd65c2dd5dee68641c874935a205358e21120096559bdaef8ecd954a06243e1190da6a384197d32cf75f41facef19a0c666e45af13c44169db72d88f9f1742e404e15f2d3b50087d45dce5b65d24b38834de65167ffc1ca8100378b2f3a489aef5c6401a4cfcb8900b2f6e5d420f68f5b1661434ec862ef5900e5df655700d17a6366c02fc606d1a7e79b06f1b5fbecfc73c34f880a8b06542ed64325d113f0300768e09341dcf8ce970de25670a0968e31518cdf0d4897fc20a06bc2ba0141f01b06a87e591e0d1b7d5a3d1550512aff827159e1146b24a19c684a4db1cdafb0b1b5f786d84ff74b019222f6fd0bfc50a2d0680b245d0c3e0d62ae0f4e0d48a9db3508dfaf3d4d18ea7b143bfa05025ab13b35880367f8611013269d1990344223a7aa08c34b038a61fb2ddcb4d6d41fca3db8a286a96e42ad895bb3a26e770d629eee5f19c49f747e013ab4b67a06b129555383d83fca6d033c87fb06f171372b022403ea3f1984bbd8a3ff844de9f6c48002c1ab068422683534650cf686265d5311bc1147f4b4af239ad09da96f162797009d8464b09b2a0abc3d990012e0cf5f001566b08b3d80de1259cdff171240b3b90e90a474d2378828dfcb7d805e7bfe6640a69213809aded79ff8482a00ba8c1ced02249fee3d1a440771cc4f753bc99fb18f4de5399ca3ee4a0b7407e2f4985a253fd42fec065c02b46ed79f01be590c0c4242e9f12df643393d0248c63d1e1b50c0f106a0cb4837f6b1a9b323e3eb3407f1967401500735e7006be069a942dc13936e5a3ab1335d28757aaece0da81bd9054820c11c377562c545bad0770f7687a9f4ebb93a03487dbc7c6010c6d8720490c27dc02c4c782274f20240d795f74f8006ea7ac100efe30703241486d2371cb223b780f8a8b54b81b86975ae99dabaf2943f0b06113fc75939f50d67303388760c3f0d70f0ff30a0201dab5277a0f2a76b1083fd7569108e183f7f003ddd5880a62f68a0a433e0623507b1d43b6303ae6f1706a1d7fe523ba466f8fa0548cdf079641083fdca6a70f58e2fc6d6d9a3a63d83d8b57f0534835e160ca2933f983036404cb60ca2833a538368c7379daca221f985b96e37f1333e5f468ce2e3da808a5b2c42dde7da856410c310e54cff835032956a98e618f91ca74ecd4972c639a0c0780dd01c2332650ee2b5eb95004e36490f25e374b97c0fd0a5f9536f91e2eee7d620ac1a0376295957ca7b3af92f38f046409691438378c61373cc2eefd76b0621c271aab7009fcd7b3eae420a4e0f7a0bee1ee52fb3d06e497becc97f39cb8f0d98b87490af80cb8d4174e1ec5b0015d22e6b4e57c074736610b7b55da665a57c28a42b6c01ba8b13269d2c34e98019a4ca2c9dbd8941eca7ab1b02642625d87aea1c112b8b02d4f3fca4e9f692ff280c48bdd831203c9ded53d7c8fc3e312037f6d42084bc0dfd497f18324cfd0e18e169ff2430c132f2f4651097b367a643ad1328fd0810b954de18c4c7dd32a56a84defcfb6d40fae86410e2d73dfb58cd069b7fd5306948de4b01dc2b179f0d62e4ded48e4c9eefe24a00b7a4ad1540453bde9341cc8fe56d03ae2bfa964a818e8c6d5d87fda5586499fae6f9f16b100d7bd7e737d48a278ff35c30005c19203b6c0b7091d879145096b37d0114003fccc2467bf26a63101317ffb139887bd4424780aa2a5802a6ed753676988f458338f8d6df0db801d70671051cad0a70f5ba38368849f7adaf5562c58f2583f8fc99be56a96df0dd982a87592e6a83382b47eb0631505bbb0298c1b439b697e6b8cf1deb2d8a6f181c188470b5c20252cab25c5406d185c335012eab78634f75252e169930cd088be6fa8e0057d18d6d8368e9e99a411c27ab6ad85825ea7f0cb878eba1add0ff1ff4fd277c6d4f43395634c79601d7b7c200cfbf6783f8da935b8338c40f0508d74fe33701ec84972301be76960de24f4eae0d624a6d68c24c655cda378867f4f4f953b40a071aec2991c2dbacb946baada5438318a833f5ba2ede9b1a6c2549d011dd680fca3b06f8d3cd0c621f2b35f9152a3bd074506efde1930145325e046847cd36dea0f92eae6e0da2613b3f06d1c9eb2b023882de7136d860b7511ac443b73a06b1d48fb70c482af26810b3f0e6cb208c6d9f8b06c46adc0b6047ded7b828c1f48f96299107e9db6f09bb69b917bd5ef625271f1e0124d470d32aed83761793ae1c49a4ad62c2947f2e67270009ce97b13c4a57ddb95807f491a47bbc56b7d772e70c4092a672ffd520a49c43fd42822259cee620567614f9fb0f42d83c3c0748503cda31c03ef7661047e37b0f206b020974e680aa5d1300fe6369f918c0d8a65edc81cabfac6f1f00e7e9a5e97ff1b7df0019ec06ab005ddf6633801cdb4e2e00d8923a4719a04b33b1b3a57dd04634cc650136ae01a8b10b36a5d2f6b915fd4212ca324d97975aae2e01d25a2f7700f23fad68692925137e5b7380d59c2e94db5a7e0c2d5c691fb4fe85417cedd300a03bd0e4d620ee73dcd64a27107e3c3188c1aefb064462dc0374ad9e1606216e348f00a561e9eb19630ef1541ac4b99ff40b5dbca7a541ec52077a8bc6f6fa0f90696003201d4a77cd203402bd2f83f8fccb278066b2c6a5058464b21a748bcebffa38591330e9cd41ac97155665b24aeddb001bdf1420e3f4c2ae40d416ccef8c8b2fbcc4349776b06b9852ba01e72fdae17430ea20dd80f3ef264083fdfb6410a7fa372dd5fd365dd40064878cf5ad74644ab56410ce0b156b3fab3669591bc46ded8c69e9ebecf38301775386a1bd9b469a625c24ca4cfdca12e7dad2775322524b9b27df0e047016ecaa1de86053bf34207665d520449647b63e9b16174e04a22e60f9cac4b52be0e585014650d69cb23477cef60052222c560631d7ef4b0194f6c4d094be8a1e1d18443b28173507dc80af0da20b0fd530ed96671b06c4d030615482ab83ef46290366fe513be45f7871278027d3e2ab409405e8cc1828c5e1744e2f0c28b2c3c455604e3a63f465c04c170f02dc5e5f1817df5e3fdf0db0359606b13bcc1839df5e3fdf0ca2a5bb23037c7b38926a7ce132eac139087dd09b1e8a0aba20e1430bb8f0e29852d672699edd0b50fc99bc5f65cde6583ce9b564c12bea6301ca13542b0631a566fac54419421605e26e5a9039bfaca7e4e8bea2d76b45f9fe0e0ce2c0797a16883c7905d1d7659dc821a2d3a34e99382d96984ab2e7e72d006e16c57b47201a960bbdb6ca9475d75b2aeeb74b8cbe23ebf11b6f4188b4e9b72fa0302426bfafc40f13030ac18d0dd0493f1860e33b17a0eccc91a654c315f08767e8169d364602b802127653365d59abdf0430d92c0d0c626c577e04301ba3d82d954f292db05d38f5d1705380eb1b419b657bf30c4191344e653320f46f530d1b7007dafa03b1a1e0295b3ac8684f0fc541374d1e0c28e6b224c0ed75676210af9db217ca3a5b74f550aaa8a6d9508086699752daa2d47b33881e43c5583688c59d8b2b01d483849796739f88006a87d2489ef84fb8459fdc189025e0d7206e492b6a98a43ee22b5b108aff0ed53ae720a460894eedad115dcea1005f7bbe66104389a5680e62e2cef4f972065bee19c4a49be9b5d47d4bdbeaa05237717d4bc994ba1c1a9044f4da8015c5be6ea330b16fa5f23aa5354ddc568889b9ce426eb80414cb7d035c4535fa2aa2d25b35880e5afb166862535a537fe83879d76beb080d2daed4c976151d1bc41eb4d131201deec8205a7a3734883e3daa0ca2e9f9d02014331f7f80146e1f0694bbdd172041fd77f4471a10e35d72e0a481ac6f780ea7018a88fc184399c6aec4ba0690043bd804c8ec73b105b0ed7517a0eb6c37fa34398b377534d3448690fd3780a4bec353806e38d892925d346f170c080e4c06b129918427d98993b4cdc915e98b18dbe43be1f791015924f87ca706e78c4aed9d3016e1a67ea19bc5516110924194426f816e1664ac4f36c69e1e03d485d50820cbea65ac97546aa3df9a005cc4fe09a0f4e224169803560323570ea5feb9033840e81620e3526f0c7002f27540a974a7b4d4aea2ab4c29996bcb5b355dc7eb8aded2c87dae10202cfc8691fbb3f09e1ac4b78c19fdbf92b90f0045c860e06e419c2f9d212df555b43a3140feb83208f914fb5c4ace74d435887b1465bce620de82fb5cf2dd143fe939882556f70c629ebee8e31477727d6d10de2ee34fc04486e59e41382ffc9c1b84da85e8fc94d028965f3d83b0045055362579fee1fe92fe62bd160ce2e29df40c8ded2713d7e6daa26710915c1ffa38ad39f22acc411c5a5db594420ae954bd6e3f5896e95fac1753db7eb014934b7f99498f04e2f428eb4580c229a7ab00f40e2582e21c44d3af184a5f56cffa06b1d15337720ea2931b3d43e6daee8900a5aeaff427633de3c10025353b8cf37e916d6d0ee21e85ac9d74bf4d831b83b837fce86b514494d4c04c76d07d5b3188cf7f61063990edf70fc49578716240c6c78e411caf6f6aba92bb7e69a0748bfe5e328805543e096014e69e9de4d35b504524c9285ceeb029555cbdd264268027d32fabd216dedb9e004934eef87c07d4edcc0ce26b31eacc411c9e08ce4916deb4752f4005d4f56cc0759683cf5ebfb8cfcd413cf4f4ef17313ff6f5162ac474f6d91ced067cb8601082d1c2a940d4b2e9ecea179a4124974f2a86dd41d39b64252e57be0d6211deb36de926de39db32c02fe7480071f4449faf394659c4398880072c1249d9d63aa7fa387bc9b33bf86a4e65b8644b3305935b10b6e88cbf43d25dbd33db07e826fefa6110d7fb8f990129dbbf0c622fa48c79b207f3f38500a537899049b5b45fcf2c31791fa7d57301d5be4686a9b5c16e6f18845d7d794fa0c742e6ccae71a1e92cef0870cf5e7a3120971a13b7ae8949fcd1d74a60fdea18905880b1b5b916c7d839885edf6c0c622809b89c0304673f03c747cc60c906dded0b011c853711261ac6258d9f04a87cde3f14c087953280e92fd7efb741eca7540d4db6f0f66a014a2b4e5e0cc856b026a0bcf8fb0218dbaed9729a01579ec9b50017bcf1b30181c18706f1710b85416c9f5de6ba53c96d9f08e028bcc57a9121b558d5b88c959df0c98038be47831886e1854198d2ce3550ca0bb7cdf268f02149671a17e58759e6c069afa2f12d9a41edad31be76bf32888f9344afb299e96cc92026eeaa3e0e7b65fed64095d8d67635d8a5ccc65f06d44dd01c93f48936700ea2c7d6d452993857ff005978770ca2c7d2b941cc8f2be4e446aadfeb2783d850def4f91441c8771b02436e272b028ceddab2417c4b870da551c6fa6b75a1ee95274f065834370d42a29780e6dc1d37df06b119502423d9a2f9be2b406ce483e67a338861d8d48469a80db6b96d10f7fd1f7d6d13635bee874092fb488ee577084673cb409c954b6380fca5a85394ed17fc10e3926df3ace3d0cab679f64e003a707afa8564986e07a0e3e43a6650b65ff027cfb099b4770cb06c790b90e4f8762f406945bc5cb33d87c9c79665594d57af001de2072f0618851f0c886ba4e97625de7f31886bd3a17e213170a30128d91cca8c39600b7e04e816bdfd644055fb55800c8784b966053a76708ecb53ee2f9db53d8014ff2cb1fc6726bd04c85076ba6f10cf98d185f63ed6c74de5f7c9aaccce7137da04a861435aaa50c8b2b76710af9d4c00b2bdf6f50b6e7c45efda20ac2bd880b35386ac3294be346f2f0034b657cc75d96ff3353de65b748f19f457ab75d720e442fcc7b2afd588f8d9052e280b90ff723077011ab97a2840f2df7b569413938c7b06dc4dd574850020f367ddc4d3e7a3019766bec53771120b649b8d295f3107310cfd6b038248f85adb9129e7917d57af170cc236dfe7f3d3500fed1930f93b06216c3eac1a84b4d530f97d57a73cc11c84f895f70c422cc6e09fedd1ddbf3388bb0795f2b26dd1dd758016f257df20da3165e412d7b7723919c4d73e1e09e0c479a96190787e5b1ac460af0d05a89546da916c5b349acdec20d6321bf016e67af266f00b508eaa575e6b3bf26b631096f769df206e38650120c6bbf3d2352029d137405bf0db8641741009625b108557cb466f91345eac0828d93e33d991b19477cdbade975430cc194d4d1a3406d1a7f58a41d8a2337b9053ca0c2706f8e45d19c43dfb690d20c783317ba1add5644cc999bcd6e53bab212b1cea6d4f00a9efeb13a0cde0e7ce207aecb76b8062a66f10628f4ec2ec849703833870dc85b2acfe3e1be0d2cc4ee780dcd78141b443e74b26836ef9c0d4964777fe5932885ebf65aedbc5fb996fd1f53e2fb25e1c90bbba6f40744bd7208e572aa165173bbebc34e0aaf1f78bb08c7c1e18844e89bc4e591a810e11435961bf1d8237b29dc06f0706b12acfef0c426542f4759629be73521a4427efbd19441752ca383be125d10bd9a6f8d34b83d8a534b65200748ed84f7ddf3f665fafacd87d1720a3dfbbc605dfc0743605c876b2c3ae5de198d2718f5185287fb1a29c5d7d87cfb7e59d58f3398885fcf96140be605683effba8a1b22eef2576c23988a1dc7c1520511cb907b3f207e50ff6425fefbf19865afa752a8eb7c72c1a81376661cd30144f9f0238816be2d6a36108dfcfac06a51cea509cb30543dc6ff5f998168b7b759072741f1f1884d6e9579fefa8e7538338b36f59b735fe740595bf5a801261e25f643282324f6b057f6dac1984a8f0ae1e53a0f49a7e21e5df03f3a3563aedc7d28014d41a06697b48ac98a5aae86c1c1a8422626bd180e28bea7595a99ede1984e50c77e46c7547bd6f40a681194042cdf7be417c3e3954e70063fd95416cd2eb7a4b1703e6f6b9801cb88f0d0840e5e0b376e3e3c7207a4cf27ac34c4e18b8b37ccf73e2d05256d1aca340b1d569b02380b57ab4268032636b661053ea8919a414a169b4248077fafaae005ed0bd65032ccddc70e60971a33f8e0cc85d7a6c8003a600da8d747029808f001550e7207e31f32f7091d842fc6ae44db9bc601013174d4d0b98b8db5c126d79dffe34880befb93e7fda209e6b3ae0ed92b0cde7b9f34af4c78b418c7ef7ca80698960f46702ff03044dcc0cd06e68b0a98694f6d55295cbde2d0de217c32d8350bb3cb06e1bf4fcc5caba4118daf3ae4148c1530da52ab176ef05e8f5464dd7da2fd70cd883f60ca2c73ea702f4986e5a4dd5c4e43fd7c8293cece0d12024478ab7b64065aaf5f9baf2e03d98659bcf1f954104d5bc6b4aa110494bb702e8b6d6d4b0f6dffff38508aaaa2fd1e9680b2039e8e704209be74f4ced6a8041373f448f55d66e9c3f03f0bb48c8a795d51d978700a93b88e29c83907248733e07213b5c08286b75d9352069770720b5cb4b8c4bf567bdff02e8783dd12fa42179bf0168cb4187320764027f02e86b8fa706e4a8ba078cf896e357839060118caa3fa5cab3011a92bf5fe0d0ae5fe82e76b967106f39f8c7d8792db7ae6b6bfa6178ff972d599275a99c03952cfb8e513953f1e91be0085a6b9f7dbabb0aa5f2fca644023f8001602049c4746eed5b0109c40bb9423df9894f080965a9b95338319015cc9f2f06b24680cf5fb7801ecacb5f427599f0e9731650c3e71615d070b6db62203db66e47010d89475ca4f426811e17185d9d3ee78cd253563f9e0ca4c7c607e686ea65e1b34bc3f74d02a1023e1c89d3224b137c3e6e3df464ab7dcc654cd62a78d99e02b20e191659bd2cbc1023542f0befa131802ea1465e7e22791b3d188819cf73055297099f1e65007b4856ac989e73c5c76987efc50b9cdaf7d284b1028afaf72f0311e8b3a680b2327353405999e58889cb2460e3188acbc4db0a90e14a3551c0a7692d15b0195f29a0a6e0732880d77d16e4b5e265890b0a688dc0da67200b205602d843e21c720ca4071b9f14d08a08ee6e843efb2d9ddc5d01e9c10bfd425d7affd16420ab7f168e00f6aff34ef2d0e796d0ef751490a64bf98994f5f84f01afb6bd30e0e1ac3fc830d0b50a6c0c021d6ab4145083e35c19e89ed5a3023e01f383018f3c837346013999eeacc77b694255016f956d2aa08e112f060b756b792ea7800c6cce51c06b039b0ad833113190b1e9e744000ff0d86d1bca6a068fafcd0cc5dd113cee0aa814fee41490c55d2d14d06b7ff20ca49af22d55165039fd5a2aa07814fa0cc443b25a2aa0c44d3f14505b59ac0b9053bd247145be6339238993a5e6b98202aa73076ec465cd84bfb809e09d6dbfb102ea1716b89a8a1f26e0331142f1c3f85928a06ee087442ca06b77fd6f2963d299f80c1550c4d6522c75c5dd5801d9a0674e01bd767157405d96846ba51e53ccc7585b40cdeb810b8cb85dc0973f5bc067a9bd14506f8b374d84e298016f710f431978f32e700b785538775942b663c1ebac8097f1c50af870b5a202ea28f2954206f096ee27b751ba197f5e52406ea89f50016f675808e05302d8bf6e0195c2cb51001d39e4cd25f95281f840100bb893c7555d7d393dce1771ccf8e78302caa8fd510155f521f73ff4d437be702c14d74df07414f0420cf9896cb9e33b2042ddf2bfce0ae0ad6e5d2eb8e2ba0978774b18466283d8f287325770bb2920e3c8db90ec360b9a7cec6405f0fd625736d291747a6f5905d4dd98670464f970572ea7e2cb091c6ed6a23c8de69d12ab1e7de778ba561ecaf3c8587357329249ae675b01df6f7a13c0ab2a5adc66473ce4711357002face7b98230e2cb6d025e0c16ea368276590139cbf91a1e03f808ea17abae2b337831a905f416becb37147707f8c2f55037d2f385eb16f0dae2aa0276002c159095e20d42a11cfd8c2bd7177577f0cdb4167063d115c04b023a120fde151f2c0206d902d5175ea665009f61f6cd1539fea29b9cf1929fe478b50b9fc31ac67936b039494b9e079a93b502b296d344002f91a84ad465815dbbae80977bf4149009eefe0a60c74cbe29408e703b2b203b569598ca629f594d008f80f9d4ea509c08c1a3ab808c74836b54ac273fbd14508179c40ac8edf22b51f762764349d47d5926ee2ae07b5724f9e21198de1590846260ed92a1f4a14bb641b24402abb202de669228a0f676b012c06e869f92023ed48c7b4aea1118c60aa838ac870a48645e051dc652a3d6ae023ec14ee211b11f4646163adee7a33a425d44e1b5155081196d15f076fd8d008abac7c3a648ef8eeb0d19c896cc9ecb405ae43b8df7adb398bec16753467adddc9e6c619417a3c4770d4405693db8e31ce9b1677c074454906dd0a1c74056b87b19052490f7a1809735ca43f596bb2c03d91d17450ca467b0a2921cc912097fc5cf100780cf773d5b40652c0c18c870657e5540358a374d44ba66622a405a53de6a6f0149381e309055157ccf6af47600ec19c8e0bdb456c0575fb1847a454a69a7802256192be0c32b580fdd35e0bd18709172f850e648cf6363bf43a40e00f6e45940a3936a9e81f40cf85e400be8a1bcb52bd2651652e8d445d06d2ba09f0c330af82cc62f06e222e8cf19c8328bde44019f0ec4c5413d0239aa62915e25f81729a09f64e41bba02c061202b003ecb0a28a67c16b4053c04e4e4ebc971c53f06baee62a7802af2a7bc565c0419ce6c7511f0de95e8bd915ea2ae030947013d34c325595766f050d400de40b692874a179faf348cc445e0f1ce470ba822efd83a8847c0dbf61550dd0f270aa82f15fd29a0458b3c7514e9fe063e0cd9026ae6b72705d49aae5d05644f8bf20c99d3e2ae42e4eb2dbb5cb4f504eeed56016554215140569b8f3a8e74bbfef24f011bb69c02ea38ef2562b2c928ce2ba0d43a210371226425ead20bf6720a48643e3cdc025a255fe722e5f38e5487bb5f91ae99c83c14d0335e6cb575bdc3eda0800aae132b203d8a5cc57c7141f315a0d17bef3d9b2d3302e435133e834fd9ae9f53c0c7d1450aa8a3786333ae2b224e9102dee65a52401d01e7a180671239a6010facfc1c14f00c4d4f015f555b64a05347a1021e04fc29a0d7deb60a688077db28e01b94bb0c74dd45ac80d2e2dc159040a1244e2c7fbfa78087c45c2cdf0b313c057c08b1af80cac7a6c2404e3b599f1550e79bd74c44819cd57968292047269f051da913a1e02aa0a8efb866ab1321be29a0de16cf3447ea3370b8395107c06ea6806c9014fe20941d101d05bc285e724e8c52f5a680aafa0b0aa897c39b9c233d5a2fe92ae0b3b238f77521062f4b8af47082ca4e01259f674523d967113cf92dbaee82cf51b480cae9e2a1809648f0add406f0f5bf25562cfc9275289c7c1d78ff440a48205e926800dfe7c93b63233df160705540cdda4f57012f197928a0467c20699106e787cb986ebcf85d0bf8e49f70bee8328b31570f395ddde319bc4817518c160ac8e5ca8710477a9e81b4d97a20fbc553c017f4717d89644c7866e3f8de23c12658c6d94e77a48017e9ed04f018f9c8753fcae5c948b7b946e9f9eb52a42219f26c7f14f03c21774822de4412c465013c27ee71272ff26524feab809659b0d33ed223db579e025e16fd50c0db2ab8c0e8b101cd9a800c1fbfb61220bbf3d702689018bcd84ae9787f0f05bc3930144003de60c7e543c6fbce5104e29b598227bf36964311f9ba06030202e15180dc92c911935d14782c1550ce49bec4d214b45c01116faae1e4eb91ed938d001e124fcb0a488f9c3cf48b2f5ccfb1918ed97decfc714936a379aa844589189f8c0ee95ac705d9c0be1020470fbc04f0c09bd77f4466e0cd67dc89627288f9f422801357e53aa723f1f35d01b751050524d0ac2a80172f0c2205d436b4386f63ee3b80efe38b74f6fe43de22eba5fe3e04c45c4e45313ea23ce0fbe60de07bcd3b92da8057557ce937f874b16c43008f8079c96a24c36a7f2e792b1b0d96dc51d461f5eaa58062fa1009234ead3449ef69f482024afe68a380e7e6770aa85806ae022a96abf74329b31b0ae408fb87029e1a680920ff87c73728c7595d7aef2ae0d3c50e0c74a639cf40478d39057c1edb88810c13dc8502fa862bcf90a9f897bc56dadbdb9081b4a6ec9889f54cb7d21f03693c9f3305d421e1599ef84b26daef330594fc474e01b551e56f06d2bc5e48c238cffb09bd438981ec143eff32904ecde5a98066024e4305f4934399812c2bd8b7155067e2f262207d98f39f02def5ec2aa0676c1b0c64dde78e1a607b3f30df66c2892b48a797b7655940bd4fbe843a2ec80887c76216d04fb67b05d414f06a7d0b783d0cc7b4202794ed39f9859c1c59365340f536fe534015c89788c908271c28a0671c7a0c64a22c230f95be839f574099fd996520de8dd05740de1e3fa7801efa3766202ea475a080dc1d5e5601176d119907bcdedf848194f5ec5801fd24fbfe06252ea829a067b81b017c6bd7afe4ad78aea25001a5f6bbac808c41b450400566b815c0fb6f3f8a0cc4b715c50a28b57ca770acab5d960f05fc964001c574b014c0c7ad7f8281f883ae3505bc33b6a5808fa01e2aa098cef20a683a6efa29806f10e29d8ff1db0bd751406f09a180dfd256408eccd5400175158e1705640c3ea9f31debadc37cb5b305f496f54c01bd25f21590627c12a705dc4fde292063e06e15d06b792d8b05b45f6cdc5140cdda8acb87fa1c79959a05ec40cc29a088ed420594fcf59f026a09cf5b0554f74fdf0aa8fb757a3f83623acd28a0e5d97c98a90514533edb25d6d5507c03aa05d4a5f55b0a28a6ebb902be58e2470149c86e390be8b5732eb8bac46afdab805dd07305d483f59b0a382d925a19cd5f370ab8eeef14f0d1690b055c1b560a78e7f41b50ebc117b15840ad472fa3808ac3544a90b4c8c3bd02aa62939b02aa2fbc92c9023e8874aa802cccb8ab809a026970be79a5bdd713a023beb502be8a23ab80f28537a25840b572565040ae2c5ee11e8b0bdae705edb1ac41f31f1d05d402794f05bc99f60da89c3eba0a4864e7ac80da28efa180cac740b2525a8fd25601c763a4804ae1bdac8053fb52c0f1e82920917feb0a282b7f6b02d838fe5614b031e0ee97bae4ef150514b1674101af64da28a088f1e26b0b58b192028e695f01c574995740a5f057f2a5c89b8bf93ecf5867021eae028ac763a0804f4aeb2ae0b5b41905346ce2a53cb1eeafcc161550f558e614d0ec5b492a90b87fee67059c736cd7654ba6933929e07347e527e211682e14505a1a6f40f932136310f18eb299940f199bf29a9a5896357ad2db2aca1ede78a480ab475101ed6c9bf05bf452cccf87027ac6e24f00ef689fb009d66379c79c5145991aa87e2be0763fab80e2f1915140c561f1a180eeac9f440cc4d1cd271e58409a568b0ae8a1f15801b93baa9c953acbd3c82aa067d443051cb14f05b4eea2ce0557e781f894770b285fda6c0b75776da7a480acf6c79702aa957ff2d0029fccd1610ba3eb4f67ae029e6b6c28e00db902640cc45b65639d5ceac933c495d51b2ba0f12d1f1d6f015f24f9a98063da13c0dd9ebfae02be95a9a3802fa790ac9429ac615601d786ab028e87a3805699fc716dd075b03ce11fcbd546cedf5a0165c307db0f9d17fbce2be09fac1450bec41305348acecb6b6590e86415f026d6580145fdaba48024fcfc554026c7ff5440d31c7ff20ca9c8f9b6021aabb32b3cbd6b816a6549015fc3f352c08a050a282d9983021a137ebf7f426320ef4f01d5b94f96506712f9a4c558f66783f726c43ab5f85d54405e0576eb5b4005e673ae80f4e0f5a71690810dbe15d082a12cd7fdf77c2514b02f67ab804f5bcb29a078f0d91d16f04afbba02eec0f715906262fa3c3e63c68f3c057c58e55d001fa5df668bab13a9d98502aab7bea78014cbce15504cdb9102be19ce51c02b215d05b47329cf0df07b32f643016f998915d043bfca0a385f7e14d0aa9bcf9b003e3581fdc91690c835c939d961d77803ca97fc5201a596fd4116f041a41f0a7819ce5e01799d326f40f351ab86021a8c54a0805ab1829453998beefc29a0aaeee415f0893a0705543e9c9c02be8d71af80ca47fbfd0ceab27cea5b78757aada180525bff154007d7a0cd3648e7c45b3b055460e25f05acfa56011f31fcfe06c534d751c0becfb502f228b6370ac825ff79524003ab4541017558f77d05e4b6dd641590e33f27a995c3081b3b059416e74b011f87bb524051e7d31b2ca0a867a180a29e79ff84ecd86ea880bc927cbfba015c2b6b925a5956d0de2ae0a5091705bcafc053c01bb74e0a28ea9f57055c4ef30af8feca9a021ae144bf0a48f576ac808af6f91d53527ddb514026272fc552f6485463056c935b0aa8c0e4b70a282d8dbd028a7afefd0c529d6f1fb480d3020594969da380968bb5a5aacb428cfc5a019f663154c0ddd19902d2b47e54c013214505d481bf1d149084594f016f62dd2920098f522bf9f45bef5053c0932952a4c461b61b29e0a1d75501457d5352c0a77b6c15f04d577b056c2ed60a78ec7153409dabf3410139994e52927d8e7ae943012f80182be02375b907ab5b66ea1b05543ebe3f14d068edf9a580465a9df74fd85b3c50c087dc1f1550f9c80e15902d5c1615d06ec1725501cf593415d078ff525640769d375e584016a62dada99e5ef9a98097156c14f05904ef9ff02e9b37201fdbea43011f533c574085ae7b52c057c6e414f0551c5305b4b87629d910925336888b0a78cbbfbe85669bbce78f022ab88f8202beaa561227a3c6f558016f65fa53c04b24d60ad8159e574079bbb92ba0bcdd761550555f4101d5b9fa4101e9517d3f94b2f2263d94887dd26ba91e321f555b2be09c5b2920b7cbe25b015f4d1228a0ac2c7e29a0ac5c0f15d06b8f1f0a6808b8771590eab58e02ca39b5fc3cc9e52522101fb1132c351e34c209628d299f5a5d635b287bce9ccb4201a576f352c00d4ea08052eb3b0aa843729a2ae09c7b2aa07506524d7db9e24026427cee6b078f5f05d4ccafde6fa1c1c8816b946e86e38d4a1650172edf554031f51c059c2f5905e4ede95515504c77650514d35d45014d4eefde3fa1c1884c84e88db07cc1672c5bee82ed5101c5f4122b604da1802ddd5a018d5e4b9f0ac88e251505e4c9e3f3602de012d453402ec6e658409e52bb14d5a57beef80a681879c828e059af83025ec6775740227f7f2aa0e270fd5340ed4bafa68063da5640d5b4d6554022ef470a68cd449c55409bad97efa8d3da9ea5682ac384bafe844f35af6be2b8d3fbcd964e162d7a5a4ef5a65e28a0ac3c7d29203d720f05543d366f402b774e59056c83760a781630a3800f547ec7838c74f5a880edbaa380f4883562dcd9fc66bb2ecb2bbd8aa78012f7d55740898b8f0ac86a574f0a78d95a5901c574f97e28e56df2524066ab2ee594871a4e410412cf95966439e89a0f47b28022e6bdbfc167527f28a0b6b298534031d512249bbea543224b4583db5c0195b1e73b625481aeef6f503fa89e17c0d79b2ce51be263cbf714f0ba4f4f01a525f854406949ca0ac86592792aa01ac5070bc4722995773e2920dfd6eefd0d5a42b39f2aa01ac5a7cec6ba0e76bb51c031cd2ba046bcf8a780cdd69702325b32ab21c78b7bd75f05bccb37ab809b82be022a41cff74ff834cff76b6919dfaea9800affd9514043c05e5d01cdadf51a02f86c4abe20d8023606df0aa85323ae0ad94b8cefac0212c87f7f83ebcb4e01cf9c7514f065d84f05bca779a88052eb240ac816562f0aa8fb55ca28e0d48a1e45b1745f0aa8581e24a6e261cdf71570dd771570b1fc53c04b23770aa8f11cbf1450157bfd28a05163afa580322ad92ae03343bf145015ab040aa88abd782ca667c95f4205641dce590554815e13057c33cb87026a81be3c05e4daebb51590f93cbf7fc24752891e32e4a9b514908427c917f105177d057cecd99702ae510505dc858b15f0ed615305d47aa8619321cff543012ff1fe55c05d85aa021af2e4e70af8f0acac02cab9dc1b50a1ab49190b38b57f522c759f675b01cd368d4b0a2871e78502eaf3fb7d05bca966a0804627c787023e9468a8808fa15d2ba0227591aaced788fa9f52b443ba0ed997192bbdf60e50c08bd1f70aa8dbe3f714d0d8747457c0f9925740968eaf48b180f2e5f854406939de14f0454e92fbb25463f4544051cf7c2b2007c0e8a1800abf767a6311b9ab80443e2f155009425e01c7f4ae80ea4b7fa080acd4f1aa804b9002b6a711b762729ea3e72f15506de043222da0b44c3a0ab8c0840aa8228fdf0fe5b4bc9f4133aba39b024acb69a380557f2920e3788914d0b68ae753019531df15c0ab4bfd6f05bcf3f1474086dde96c0ce438079f2f4089f53887db4e0159dc625101bba01d059495ce4d0127ff530125dff51550f2bd8a023e8f7ea580b2f2b455c04b57160aa8eeffcd15902333947cf9648f40288ac9e2fc6b43019f80e92ba0bcf5ca0aa869145b18c86c02de80da97a8a280d3b25640866d7455c06989155056f2adc3165077f4d75540ada9cc030519ceca804d9f9caae1f146470b38b323057c647ba080bc5f7c659d0564d7654d5e20ab074f4b059473c9fb1b945aafaa80529b797f83ef8dd4d7f21a78afa180af489929e043238602684f91174af590a35cce2b0594956ea480aabae72be0290a28e08b3543057c679ba380865eaf9c026ab4c282021af2f87f0a6864e1bf5f4b95709428a0bcfd1a08103d9a0ac8a0785f0a786e5e3495736ac4192a57b504282be0d35f760a48e4714501e9c13bfc2de0ae534d01e911bfbfc177c87c2b203d8277c4f852ee4f0594fc68a980fa5259c9ec1c25dfff1809c8534c3f5c05f49648725f969b5e3a0ad81d765240657d5c55c04de3fb1924722eaf80af6aa92be0b55f3905bce93ba3805a20375440c95f5c14907ffd5554407a2cc528e5b9cfef94145036ac5c05d4c9bb4bf9d03b638b0a7807e6540115fef0a180ab7a560157f585023eadc0534083d5e7b702ae0d8e024e7ea080ba0ae3ba0272edbdf20aa8666fa51216f8bef9f5a7022e74a2a91ca073cc28a0c4c98cb7ee6c3bee15f029bc15053c79d050c0eef4a902ea5b56de806c32decfa03eff5c34fd96823b16402773782b314ab2184c260e65871d9e4b05940de7b3028afaa6a9809d190d059416add93cf4f26b50402297eb0aa8f588af0a783daee49c0cce7e1c0554812e7b055409d7f20c5d5036534036e891554075aedf5540654cd6c2c9d1cf786e1550e2ae0705e43dbf2e14708dfa5640aa272d05d4e08c020594fc9db4b77c56b8c707c4c6b26b31787c29a0faf25c28a08c5a5f14b0bba3a980cf4f5e2be005103b05d458bc3e145063512a28e08e404b0165e50b0ac8189434ea5c0acf7b0594511bc97dbdc5ec57011f6cf4544035ea5e50c083d53f05ec3d6f2920eb204b0183407cc17905947c591d6600ef0495a6514fe0ce2ae0ea112b205b2853f1b213d41b9c145045de1f14d0e4d24bd22223adc55501bd856f758bf50aaedb520169da7d28a021f1e30d7846b3a3801ccccf9502be0cbba2808bc356011587cafbb5d4c5474d019f8722a530caf0165531d23231741b2be04a98574015f970544051df4f145007fef1a9808ae586e3a1d776f3ad7fb11c8d15c8c69c502664f8c04b0bc8aee77f155009921170f821edcb9702cadbea5d012d5e78e61590bff0d75740563b7eff841c8873fd094fa525f25ad98654ca29a0c673fe54405d2799490ce5b482c7b7023206d2710e7940e395a180f296af9db180ca69b4574051972d11a18c5f9655053457e09405f07a982bb784b2dbd8e1ebe5633907defff9564026385c2aa0cc7e9d1450bef0defb58ce30737e0305642d2befb790814d3a0a28eacdf75b680dda78a1808f2c7b09e05ad95829a03a576c2860d53562d42d76c66c4f656f75f0cc28e0fd625040c5f2c753c02ef9a2027ae8afa3800a0c6ff9b7806701df6fa15238cc2ba059c0794101255f5aa090a77d9ca9be851d55f3b502b274e58602b21fb26820ccb283e877a9801cdd132952323124e633e44191377d03d243a6e2656bb9332f2a208fd1fca8808b031490177f7e5240ae8adf5001d9b16b4b01d5ca4146012936d578c8c27aee7ec96173c1130a782be44801a565e628a0b48c970a286f272b0524f2e5a080327bf2504015f92750c0a93d2ba0d4f6ff14906bef267ae47889f76ca6802ae1afc683b70e8fb929d0ddf9a33f05543e263b05bccff3ae80736eaf802cee36504059f9d353407e98754e01e56d6fa6808cd24923c6074c777c0514753e0fc5803ca57624b92fa393e15d01a545334a2697e63b059496d987023e27efa0808fd584027264fef4155046fd7a0aa82f25bb28c28264d4a702ee4b49ce15f8f2f84ffd49961227b31a61214f057728555def9e3c2ba0d48e22056493fb43059c5a4f01a576f6a980dd2e4705640c649f56c8e31767fead800601dda702eaf456246f79eac8798885f9a6031e9dbea4454e5c1ae414f024c61b504c874505bc0d69a380aa47b7af80da86715300b7621ad362865edb97222507c53dca0ae8b583bc02d2a323aaf3c27a7c740564d9384ac4a48b7f3a29e03ecc5301b7fb2505d4566a63c18bd282db590155a0f9560135f3f796023e69515f2ba7ef671450db20db7f429ff3652ce642368f8e4a0ad83aac15705bf952408af5bf1450d42f63057cf2e44801b95c2f5040339a1de99004b25e7baf80a33e109021432f9bd0f49ccdf345011fc0e52ba08c1a2d1550d4a7050564c746b102760e1f14d0bcd8b1ac806af6442216f259d03d7d2d9fa1ea495a423e6773208ac9bed7db1b706dd82a20d5658b99dcff125cdb0ac84acde60a48f57351015ff1280245dccc8b97c5003ebb94bdf87a67ac6cd7973b6383f3b702eed14301e7fe4401af0c3d2ba078341590624e59ac549ce7b7b0d5d6ab6bae7d053c799051c03f392be072ea28a0981e2b0af8be938700ee061e4b0a68dc50bf08e07e90ece333806c906c753380e74d39b3dfc7c19c14504c65db9edea17b180ae0de67a52120cb77e99d15f042f2ae02ce6c2ea7ef43675c05acd85d014f2e250ab8568a62dc717664f76494c9f031b4810272bac966273368e405cb45051c316e5fe4f61fb425a6d90c59a96c2820cb7babd918c8fd404ea7a680c6c87cd88b01398ac7f14b01b540655f002ff5eaf04022925edf2ba3800c6c4d7e92a3dc772a4d01b45eca91bd91512e4bf190ade50650d4a3a202f2291df52d7c0b51f647009dc31abca448c9268168a480dc0c614901ef6e1109f31cd3c65901a5a5d55040f128e405f0f1382f29dadced713a0d05e933dc64ac805e1b9615c4f40d8969810baeecd08d0a7cf8cd97a4968f7f753aec31d2838d649810c97afee0a980cf1cde2b60815c057c8070a080caa94cc844b262a6d212c07dcb8a64e537d9c260a13fa1a2ed0f34a6945190a32922590f23cbd62271b9fa370554d59f550594386fa18013775090234d7f14903d7d0d15f039dfefb750f988c60a38a32a0ab8f194925ca42e4b104c05e4f930f5b9003e50c86757965e7dc587aa5a40df9015aa7a17967f57408993a9b488b7fdbac95c01f5e95eefb750e264262062972b924800776a9258017de35b4a909725131c8a75f07254c6b01410f269f3bf0a28b37303017cd291276fe13e9d9bcc145049ae050ab2f48d8902aa0d9db602befde7a580ca6922a68f1daa683415506aabfa134a6da0f9e2d391ba6e225929fb0a64ae51ef1793c96939d5cba92f1550b194ed5072cc97d31c28e0d3b3dfdfa0ae42fba5806a54a7ab80f245f64745bc6b00723e4c1448b11481820c5f92b1164059e9c8c21403e827b2ca350abef89433318e019d040e4f0a8c6c2f6d0e15f059594d0594fcf24101ef7e6a282093238eee48b622ec1d056c71df0fa5acdcbc01ef7f91bacf1b0d9c4a5b01d9e4fd5c018d2bc53b2a67a9a15555407d87e54a01e5cba3a58014db88a661963acedb93021259167318403fd94b590f496467a731fd2237435e8a54c8e7b12d34a65c81645a50ce74735a6d05f4d0464e0125aeb453c0bb8e1a0a281b1a6f400d5fbbaa80725f15933546bb4f015ca33e34622cf2f6ac8006ef2ba940114f1c36f41901d9e450631af0996e6271233e3a4df6add923ecd2d7cad1367a407df9a880f5b828203db436c8b68ad7fb27a4474dac54cc2568e729a08e515baa474c97753807e908f039797e712b20e4435602057c5498148738e28932565d6ffd2b1d14f0ec4a4901df7b7f554015a8bc57c0471ed61490b99033aa623e02019dad004ecb292fe08becfaac2f802fc6fb881450b1bc71c195f3f9835d460125ffe00ae0e9c9c24d0037166e41809cf927af95ce77fba980f4781d145035edb404f080b7ea2820ffd8b7fe843b8ad14501153abe92cc003e189eaf0f8f63bd69b3aa80f7020602f8b58da502fa46a32e80bb70835000df0b98d187f201f58d8c029e8e7b036a0a1a1231d98fbc1d2be07ed04a01b72f650564943edb02d87c164a0af876caa2002ab8019f066c017d63a8afe5d3f86a123119151c460a487569a362f6c13a1fa27a8efbdad982023ebef15b01358df9a102cab9a27e833b2463470189cc57d45b4046495a4203f8d4c8ae00ae9535798bec58aef714505a2e33013c3d5992d7e639b3eb7f02429e2a8915f0013a22729ecf732cef14b0a6f20ddd6ddc57c0eeb08e029ef7f015502fe722e5b420d75788752870cdee1d14f0b1cd8e02b2da95b202b263b937e043674a0ab8b725f922a393c358010fdeeb0aa868d7bb0af8b2d29e02b2635dd1f49bdd0c2b314adfd41bf78b0b015cb32762e9bef9d68c6c4b0139991a6ce8f562cd5a5f01e5ed76a480d718bd147077e357c0273b227e04b083a83615c0178ff4970a78190e14b00fd65740e534233957e4cb28b34d017cf346430a8c0c35ba5305f48d76560175370eef6f7035ad296027f55c00474c76d9d8bd9029c8bf0165437bac801e7ae01ebd1e44daea2920cb2f3bcaf41ad1a6ab80afc0380a90729a5740439e489a463fa667c82ad7587bf40d053c38fb53c01da3ae02f65c7514901f662bad075fd0e7bb92fb01df3b9b2f29a09c7b2402b802b5470ae8275f621cf9c8d460cf83c4f765a54d051cf5f737a8d049d73a0ec9cbe27725b343be5565f650409d2b575e1bc6bcb6f8ac80dec2e79ec7ef83592b0ad8cd3054c08ecc4001595c595e694f94a616f9a480041a88e98bd816e6f5b56c61a66705548164b5ad3db89952fba980176248ce4594167f5e524085ce113da42bb93c2ba0e4cbda1eb99a1572b48d9c181becdf802cee2eab807b8ebe027263efbe0450c3073909cb002ac989b4a6314db7042b6980e32f3eb6599a9338c75929c521664dab62c762367da3a2025e031f28e0c3f6f5a1ac7ab7a080547f7614f09ef78d023ea6f8aa808af61d0af87aa4f737c8a0cca4931753bef8f397029e8ced2aa0a8d72e0ad821023771dcc47313df4d023709dd247293d84d166eb27493959bacdd6493c2ad9becdc64ef26073739bac9c94dce6e727193c44dae6e727393bb9b3cdce4e9262f3729b949d94d2a6e5275939a9bd4dda4e1264d3769b949db4d3a6ed275939e9bf4dd64e026433771dd64e426633799b8c9340d3337f97193b99bfcbac99f9b7cb8c9a79b64dc24eb265f6e927393bc9b14dce4db4d8a30c3741b9c347869f0d310a4214c439486380d8bf47f97705670d6703670b669d8a46197863d9c039c239c139c339c0b9c04ced518c734dc4d2d80f384f3825382538653815385538353a74055a561fec3e89bbeac09a705a79dea6b5edc117da3146ed3605edf85d383d38733803384e3c219c131d298184ce04ce1cce0fcc099c3f985f307e703ce279c0c9c2c9c2f38393879380538df708af000cf81e7c1f3e105f04278262fa7f06278268f7fe02de1ade0ade1996ccec0dbc233d99c83b7877780776459bd13bcf33b90b2dec50656368297c0bb5a7dbd9bd5d7bba7faeee03de03dd3f0b0c142f3c697d5d72bc12bc3abc0abc2abc1ab9bb6c6eaeb358d0d81d786d781d785d783d78737803784e7c21b994f32346378137853fb326f06cfa4670eef17de1fbc8ff4f333252661591b1cf3c42f78267979780578dff08af06185f61df81e7c1f7e003f841fc18fe12fe02fe1afe0afe16fe06fe1efe0efe11fe01fe19fe09fe15fe027546c8db8acaf7f857f83a9c5fe03fe13fe0b7e097e197e057e157e0d7e1d7e037ed34accc13ca7f55f8295350d7e1b7e270ddd547713cf1efc3efc01fc611acc1f6e0a4dddfa863f82e91ff913f8263e33f83ff0e7f07f4deb6d5a416392e167acf47e16fe17fc1cfc3cfc027cf343a3c9f7ff5a7e1140caef5acb2f02272dbf1102cfea1bf856df20b0fa062102c363040b044bd63758215823d820d822d821d8233820382238213823b82048105c11dc10dc113ca4d8466988adbec1d396dfe085a084a08ca082a08ac0589b2f04c6e0e4113452e12eb6fa5339d5cf7f062dbf6a1ffe9fe5d7886eca6fd044d04260d2deb11620e822e821e8231898d61d818b6084606c0b6f304130b5fa0633043f14a8173047f08be00fc107824f04c6c01921b2084c1a72e9a7f94d2185dfe96711a151ff88d041e821f41106084384469d07c218e102a131dc25842b846b841b845b843b847b840784e68727846784178409c22bc21bc254dfd04a8cf089f0959a05f358f39032c20ac22ac21ac23ac206c226c2561ada083b08bb087b08fbe9e740fe1e4a704d489b161b52324ac318e104e114e10ce10fc239c2df34983ffe5268c287b542e127c20cc22cc22f84393611611e6101e137c2222220721079887c4401a210514421d5378a112d102d11ad10ad116d106d11ed10ed111dacb8d1deca6ae131fd347f9f109d115d10994a6dfeb822ba21baa77f3cacbed113d10b5109511951055115510d511d51035113510b511b51075117510f511fd100d1d05adef099b66fc65e9987b8886c8b87c88409a229a219a21fab6f347feb1bfda6e12f159ac24084eeb1cab66a4ab0bf326fff48e5368ffd4ca5fc4394b1c1fe91b5d0862f6b858cfd8d72888c0e0544df888a8881d8b12d5becd9c62df61107884dbfc0411c218eadb8f142f48d97885788d7d618c51bc45bc43bc47bc407c4c7f4f3608d6f7c427c467c419c20be22be21be237e2036af31ef28212e23ae20ae22ae21ae236e206e226e216e23ee20ee22ee21ee231e201e2276118f108f114f104f11cf10ff209e2336763fe4c6cdd887f80fb111c2fcef276213872cdbdfd834003b6b46e39c4d7f9c475c481ba234c4dfff08451b8c8dd6b0401a9cd42e5fb0f0acb55df8580469f0d3e0a521c422c222c66281c5128b15166b2c366f7d4d586cb1d861b1b7067a71c0e288c5098b3316e6c9e754df458285b17435fbbec50d8b3b160f2ccc2f5f5894b028db3f8ce21656b0a86251c3a28e45038ba6e86bb8f96d3bfda363f55d74b13091ee6331c06288858bc5088b3116132c4c3c6658fc6031c7e2178b3f2c3eb0f8c4228345168baf77ffc1b66f36d8bf17392cf25814b0f8c6a268db37d5d788bb84ed45994f2b740e4be71fc13321edc615b0f4d3cfc0046bbb97be957b196219611963b9b0c9b77f2c5362f80acb35961b2cb758eeb0dc6379b0c66169de75322312abeff2826582e5154bf3db3b960f2c0d7c6159329f3472296359b1fd876515cb1a96e6f70d2c9bb6db608aea3ffb0fcb962dd7cb36961d2cbbb6abb0ec61d9c77280e530fd74b11c6139c672627b6f4bf3cc19963f58ceb1fcc5f20fcb0fdbac2d3fb1344fcbdafec3f20b4ba38849ad49f9379645acf02ebfa6ffb072b0f2b0f2b10ab00ab18ab08ab15a60b5c46a85d51aab8d0da695a73ff89f6ddb43f88fb0da62b54b7fbec7ea60fb06ab235627acce585db8e7bb4aa4379df6a3ed97af589968dcb17a60f5c4ea855509abb219ceb20936466355c5aa86551dab06564dac5a58b5cd270d7b3b58599b656df9aa87551fab81957535c4ca4d3f4d1859b81adb9ed96a82d514ab19563f58cdb1fac5ea2f0d1f587d6295c12a6b4df0ca7cd33c308f55012b138322d6b0eddbdac1dac3dac73ac03ac43ac23ac67a81f512eb15d66bac37581b1bf581f50eeb3dd6e62747ac4f589fb1be609d607dc5fa86f51deb07d64ffb4f1e3efc3bac5f124a1c8ca0f68f32d615acab58d7b0ae63ddc0ba89750bebb60da607653aa9eb0ed65dac7bf6cba4efbacf12af07580f6d295ebb588facfd5d8fb19e603dc5dafcf007eb39d6bf14527dd77f589bc47c629dc13a8bf517d639acf35817b0fe4e3fcddf456c808d838d878d8f4d60e5db84d844d8c46958a46189cd2a0d6b6c36d86cb1d961b3c7e680cd119b1336676c2ed824d85cb1b96173c7e681cd139b1736256ccad854b0a96253c3a69e8606364d6c5ad8b4b1e960d3c5a6874d1f9b0136436c5c6c46d88cb1994898a66196867e1a7eb099ff2bd8ee47db96fdcdd43671a607b9f9b56ddae62f0d1fd87c5a62b8e9bc9b7cda64b031fffb658331119b1c36796c0a69f8c6a6882d6c1778eb60eb59fbbbf5b10d28901333c436c236c67681ed12db15b66b5b66b71bdbc9359fdbad25db1db67bfb8719986d0fd89a079db03d637bc136c1f68aed0ddb3bb60f6c9fd8beb02d615bc6d6bcb88a6d0ddb3ab60d6c9bd8b6b06d63dbc1b68b6d0fdb3eb6036ccdeb5c6c47d88eb19d603bc5769606f3ae39b6bfd8fe61fb81ed27b6196cb3d87e616be296c7b690f6d9d342f72e77e6c96664b8b735d258ea774136b12aa621c60ed83936c93b0f3b1fbb00bb300de68f2825869baf992f2cb15bd92eda6e8ddd06bb2d763becf669386077c4ee84dd19bb8bedb498f1db2ec1ee8addcd7c52fb76e0f26b72de18a0dd1dbb0776a69f649efe4a07cab12dd11696b02b6357c1ae8a5d0dbb3a760dec9ad8b5b06b63d7c1ae8b5d2ffd671f3bf3a621762e7623ecc6d84db09b6237c3ee07bb3976bfd8fd61f781dd277626ea59ecbeb0336fc96357c0ee1bbb22f6c0dec1deb3ffdcfbd807d887d847d8c7d82fb05f62bfc27e8dfd06fb6dfab9c37e9f8603f6c7341bb269114e8bad1da0a6c196dfa62dd7fb93adb2fbb3fdbe29b3f651ebb4f0fea3fcee2fd827d85fb1bfd9bab2bf63ffc0fe89fd0bfb52fa59c6be827d15fb1af675ec1bd837b16f61df369fa9be4697bd095dec7bd8f7b11f603fc4dec5de3c6e9c7e4eb09f623fc3dec4698efd2ff67fd87f606fe264e297c5fe0bfb1cf679ec0b6930721471000e0e0e1e0e3e0e010e210e110e310e0b1c9638ac7058e3b0c1618bc30e873d0e071c8e389c7038e370c121c1e18ac30d877bfacf070e4f1c5e38946ce5389471a8e050c5a186431d87060e4d1bed43cbc6ffd0c6a1834317871e0e7d1c0c19a6c1c56184c3380d131ca638cc70f8c1618ec32f0e7f69f84dc33ce51fe9e7270e191cb2387ce1904b431e87020edf381471048e0e8e1e8e3e8e018e218e118e318e0bf399ea7b5ce2b8c2718de306c72d8e3b1cf7381e703ce2784a3fcf385e5298e078c5f186e31dc7078e4f1c5f3896702ce358c1b18a632d0d751c1b3836716ce1d8c6b1836317c71e8e7d1c07380e7174711ce138c67182e314c7198e3f38ce71fcc5f10fc70f1c3f71cca4218be357facf1c8e791c0b387ee358c4093839387938f9380538853845e91f314e0b9c9638ad705ae3b4c1698bd30ea77d1a0e381d713ae174c6e9825382d335fdda0da73b4e8f343c717ae154c2a98c5305a72a4e359cea3835706ae2d44a3fdb387570eae2d44bffab8fd300a7214e2e4e239cc6384d709a9acf54dfd30ca71f9ce638fde2f487d3074e9f386570ca4a307f7fe194c3298f5301a76f9c8a38036707670f671fe700e710e708e718e705ce4b9c5738af71dee0bcc57987f31ee703ce479c4f389f71bee09ce07cc5f966edeff98ef303e727ce2f9c4b389771aee05cc5b986731de706ce4d9c5b38b771eee0dcc5b987b3f9d500e721ce2ece239cc7e9e704e729ce339c7f709edbb49c7f71369f1f387fe29cc1399b862f9c7369c8e35cc0f91be7222ec0c5b1bf329f367869f071097009718970897159e0b24cc30a97352e1b5cb6b8ec70d9e372c0e588cb0997b3848bf94cf5bd24b85c71b9e172c7e581cb1397172e255ccab854d260fea8e252c3a58e4b0397262e2d5cdab87470e9e2d2c3a58fcb0097212e2e2e235cc6b84c7099e232c3e5071713e95f5cfe70f9c0e513970c2e595cbe70c9e192c7a580cb372e452480195ffa4f241e4cb39e04484224118cf54f164896485648d6483648b648763043f6e480e488e40433464f2e4812245724371bcfe48ee481c43ced65d395949094255438585e45524362bedf40d2fc4768a4c1f0169236920e922e921e923e92411a86485c242398e1bb19cd9b0ebb1964263f48e6487ed3f0673ec93fb9b78319eb7f3adb9637f940f2892483248be42b0dd934e45217bb49581e6614947cc3f4c3afc0d5c1d5c3d5c735c035c435c235c67581eb12d715ae6b5c37b86e71dde1bac7f580eb11d713ae675c2fb826b85e71bde17ac7f581eb13d717ae255ccbb85670ade25a4b431dd706ae4d5c5bd6145edbb87670ed5a8fddb5876bdf7a97ae035c87d62b7275ad87ef3ab28dd5758ceb44dcede274bf4ed3303323083b94f0cc4b7f709de3fafb8ff09706034d0b6ca2f489ab796fd635f977fdc235876b1ed782f57747867ce35ab44eae1b707370f370f329d0bc52db0ec66f41eaa2b6fe5fd71610d6379dc55891971d373bb5611d40b708b718b705eb7b5bfe4bdfdb0ab7f55bdf9bf9fe16b71d6e7bdc0eb81d713be176c6ed825b82db15b71b6effd6f7f6c0edf92f7d6f2fdc4aff5ddf5b19b78af52e99c164b0c4ad6ae269bbeaaaaff56bdf653a23b49ec9ffb7bef334fcd8bfff43df5b0d37139f066e4ddc5a763ee1ad6f1bb70e6e5ddc7a14a8fc2676d46806c7ff43df54dc854c6188beb73e6e03dc8656df9b8bdb08b7316e13dca6b8cd70fb617d6f73dc7e71fbc3ed23d5f713b74caa6f36d5f70bb71c6e79dc0ab87de356c41d56dfbb83bb87bbff0f7dab76c441fade03dc43d6f71ee11ebff5bd2fec489df435ddde7feaabcad214d17d698391d8ce7138a9b7778bfb0af7f5ffaaefb26d9d01ce10f74daa6fedbfeb7b37cfd9e1bec7fd4081f4bdd881f9fd6807ddffa9efea9f5e763b68be9fec28f97ec6fd827b82fbf5adeffdf6d6f77eb7fade1facefdd08f7c2dd0854c6dd6851c5bd66f5bdd7716fe0dec4bd65f5bdb771efa4fa76ff6ffa4626ea3ddcfbd69d7f1ffc4bdffbf03ff5e589b830f514a7c189ff8bbe5c842558b957ff55df74a6f18abb8bfbe85ffa1ae37037ca4cece4c57d4a81e62f22fbb2fb4cf545e0d8018535b86b0da9a3e7cffa77ee3fb89b18fce2fef7d6d7d807a3efdd48f9c9fade33b86771ffc2dde898c7bd80bb7971110fe0e1e0e1e1e1e311e011e211e111e3b1c06369f5f593ff9bbea6031eedf158e1b1c66363bd778fad1597ecefffb40fd632a4e2da69883490bec64a187dadf5f8ffd6f7b1537d5dd396a6fa5af7f7636f1b0053781f07abefe388c78942aaaf79b77999d5d7b3eddbe36c5d108f8b2daa26a21acc3f4df0327824785cf1b8e171677d1f0f3c9e56dfc70b8f121e656b1f1e15abefa38a470d8f3a1e0d3c9a78b4f068e3d149f535efeae1d1c763f0d6776d7e38b4731956dc7febfb70f130ef1adb86e1619231c563667dd08f1f5b728db88f391ebf664ccfed9b1986fd87be8f3f1bbcc97fd197ecc33bac44e28fffa92f1e1faee99fa8bea6f03e3e6de17d18714cdc8c7a390aa9be8fbccdd247c1d623336c7f9850c413e96ce6fcdf2175513e1d3c3d3c7d3c033c433c233c633c17782ef15ce1b9c67383e716cf1d9e7b3c0f781ef13ce179c6f3826762f57d5ef1bc597d9f773c1f783ef17c599bfb2cfd377da5fff02ce359c1b36afb30cf1a9e753c0d6ce269a2649ed9c1b36b1d26cf9ead7fcf7e3ae4bdfc177d69f2cdb6375e6a4036ff12f739483f87169acfab9172c9ed9bd887545f2ebfb6ff600aefd3c57384e718cf099e533c6714527d9f3fd6056c72f539b75ebbe72f9e7f564453904d517d7ed860cb6c1aacb89f7866f0cce2f985a7494f1ecf422ae8379e45bc60ff7e39787978f978057885784578c5782df05ae2b5c26b8dd7c6367146df97f9f2ceba175e7bbc0e781dffbbbe9b365e27bcce785df04af0bae275c3cbfcfc81d713af571a4ad609659a07d3c55cb7d2550d7b3bc1b32ee155c6ab8257d57e9a92742707db04abc416de9d794ecd2a6b4aebab6e3f59e5015e0dbc9a78b5acad7f993874f0eafed33ee0d5c3ab8f97f9e6102f17af115e63bc2614527d5f53bc6678fdd8bc7dcd6d6c5647bc7ed339d4c1bf024dacae8c40e69b262a9f7865f0cae2f585570eaf7cfa59c0eb1bafa295bb04941c943c947c9402944294225b7e4b314a0bab6f6989d20aa5354a1b94b656dfd20ea5fd7fea5b32fc88d209a5334a17941294ae28dd50baa3f4b0dedbd2d306727d39cdd48bd6e1052256df174bbcdadb4f53724b2f2bae2dbc5b944a565c533b770f94ca69a858f34821304930df3771a8a3d4b085f7d5b576b6645edab2fd5fa372c9a4a88352d7fa7c4b3d94fa280d501a9acf54df928b92f9d218a5094a53eb6a8b57d6db5f9ad99a65fac51a6cb6cf51fa41c97c9a67fda1f481d2274a1994b22819bd7228e5512aa064c42da20c941d943d947d94039443942394639417282fad092eaf505ea3bc41798bf20ee53dca075b5affd9be850f948f289f503ea37c413941f98af20de5bb8d67d9fcef13e517ca25eb78a469cd741e335d80f2b2fada39f626bbd8cd1f6a16ca655b728d195c0d50ae70034e41db9b7215e51aca75bbc0a3dc40b9998e2cf256e55bd35ae1720be536ca1d94bb28f750eea36c9e3644d9359fa9bee511ca639427284f519e59ff66f907e539cabf28ffd9a9fff207ca9f1232286751fe423987721ee502cadf281751012a0e2a1e2a3e2a012a212a112a312a0b5496a8ac5059a3b241658bca0e953d2a07548ea89c5039a3724125b1fa56aeff455f0a951b2a77541ea83c5179a15242a58c4a05952a2ae67feba8345069a2d2b2ee56c7f036af413112ff33d8254f3b2beeba8d4ac78a5be95a93bddddac99a4a0f957e3a6b63fe1ea4c190a11d221a712b068eecf8ad92f6c3ae05db4b3303b6ca0495292a33547e5099a3f28bca1f8554dfca072a9fa86450c9daa9a48af97d0e953c2a051b421303038b1cfc29aa40d541d543d54735403544354235467581ea12d515aa6bab6f7583ea16d51daa7b540fa81e513d597dab67542fa826a85e51bda17a47f581eaf3dffafaffa96ff5856a09d532aa1554aba81a5247b5816a13d516aa6deb9eaf7650eda2dab32a3b0d5b9c8dbe56d095ac777aa4ca6651eda33ab0cda029b6d5a19de7ae9a9f8f501da79f6930429b509da03ab55decea0cd51f54e7a8fea2fa67a72fadc479543f50fd443583aa79ec17aa39540d2c50e005e5a8166da80135c7ceef7b1dd43c3b235df353ad73e9eaab0a6a016a216a116a316a0bd4cc1756a8ad51dba0b6456d87da1eb5036a47d44ea89d51bba096a07645ed86da1db587d5b7f644ed855a09b5326ae69955d46aa8d5adbea671ab35fe535f631fcca7e972d59aa8b5506ba366a2d745ad875a1fb58184a115bae6a236426d8cdac44eca90be242b2ddfb3bd82beedbded4ae942af3f5b548db8b5296a33db0f33fd10f38709a4b2e939d47e509bdb5ead1938d47e51fb43ed03b54f2bb129c8b50c6a595b786b5fa8e550cba35640ed9b02ad7a2fa612a72ad781ba83ba87ba6f67ee9609ea411a421b4cd1ae47a8c7a82f505fa2be427d8dfac6aa59dfa2be437d8ffa01f523eaa7f47fcfa85f50370fb9a27e43fd6ef5ad3f507fa2fe42bd847a19f50aea55d46ba8d7516fb0beb7c7dbbfc3fa9a0834516fa1de46bd837a17f59ed5b4de477d6003a96c24ae1be8a23e4adbea175b03636ab94b6b223c4e27124d4a2776dc640be9c80a5a9fa26e3e7fd23f4c98a7e117f53fd43fec947bfd3395726a3feb19d4cde797b5bcf51cea79d40ba87fa35e4403683814445f92b8e1a1e1a311a011a211d9c9bb469c2ecabca44b2b5676766f75476381c6128d151a6b3436686cd1d8d9f2dbd8a37140e3680b72e3640b75e38cc6058d048d2b1a3734cc6f1f683cd178a15142a38c46058d2a1a3534ea56df4683ed03e96b8b708d87188d261a2d34da6874d0e8a2d1b3fa36fa56dfc6c006a3b52dc2267943345c34527dadfd7d58716d7f567ab88d311a13ab6f638ac60c8d1f2b6e639e8a4b41c46dfc5ab91b7f687c58e360f5fde560fe6e9890b1b6c274c81a5934bed0c8a19147a380c63705d27728fa16d1845d9cd274d0f4d0f4edca143b759a4533b0c114e46668ad44334233467381e612cd159a6b3437686ed1dca1b947f390c2239a2734cf685ed04cd0bca27943f38ee603cd279a2f344b6896d1aca05945b386661dcd069a4d345b68b6d3d049ffeea2d943b38fe600cda16d5a9b2e9a235b849b631bed9ae86bfe6e4ed09ca239b38b426de15da536811c371f69f845f3c74223f13a87e61ccd5febd5342314a36cf30fcd0f348d703f76586106e2cd8c1d1c36b356e2a679754e421ecd029ae68d456b2b5a40cb41cbb3f6b7e5a31550f867f92da2155a7d9dc4ea6b4aae5df6b34b1757f9acaf09adc82e0668c5682dd05aa2b5426b6ddb37d3216b6dd0daa2b5b3b6a2b547eb80d611ad135a67b42e6825685dd132bfbda3f540eb89d60bad125a65b42a6855d1aaa155b74361d3ffb5c6a162071ad110ad86f558b69a68b5d06aa3d5412b35be46e2560fadfe3fea9f49d8002df313d70e976c576cf56fdfd887f52db446d627d91a5b7d5b13b4a668cdacbec6d49a0177eb07adb9351acdb99b9824fca2f5876b16ad0fdb7f6819293356d396215f68e56cb9f6cd3ff36815d0322214adbe6d50f8b7bedabeb51d6b134cb135cab63d1bec124158714d07a36d608076682d6c3b423bb69d87f602ed25da86acade2ed0dda5bb47768efd13ea07d44fb84f619ed0bda09da57b46f68dfd17ea0fd44fb857609ed32da15eb42537d4d2fcdfa7a3c1bda55b46ba26f8876dd06fb47232dc245366e46df7613ed16da6d3b94f05ed26d481b376328cc67bbf35ff46d77d1eea19d7618dae62143d6b7eda23db2fd5cd3e13526f83e457b6c3f8dc46df3cda92dc86df3f31fb4e768ffa2fd87f607da9f14fed17fb00541f5cdd8a24acaaab8a4af57433b6b17e4b6bf527d73689b1714d0fe167d8b56f40ed071d0f1d0f1d109d009d13130b6339b9d053a4bd6b7b342678dce069d2d3a3b74f6e81cc43274d23fc838f4d039a27342e78cce059d049d2b3a371be1ce3ded9f7ddb3f3a0f749ee8bcac7db063d1b23511243187749dafd1b75362fb60f48dcc4fcad637649bb2193a156b228c51ee54eddadc4e0d9d3abb174c6b667b0ebfe834ac89303db34ed3c24e0b9db6ed3f74cc93bbe8f4fe435f310e46dc4e1f9d81b5b3b6a8a69a7686e8b81246acefa681ce189d89b5b39da9ed42744ccc7e6c77ad3347c7c4e00f1df3fa4f7432e864d131efcea19347a7808ed1a268d79f7581ae83ae87ae8f6e806e886e846e8cee02dd651a56e9dfeb346cd0dda2bb43776f9727750fe81eed6abbee09dd33ba175b72bb09ba573b1035c37d2abf76cc960ee174a0e1f7d1bdb1bedd3bba0f749f7643c3d53cf3658bb0b112dd12ba65742be856d1ada15b47b7816e13dd16ba6d743bb60bd1edda9e59b767ffe89a679ab79b27b8e88ed01da33ba1c03bf952714d6a6756dfee8f5d50d59ddb3597dddf7730fa1a62ba68c63e74ffd0fd40d744c5bc238bee17ba3974f3e816d0fd46b7881ed073d0f3d0f3d10bd00bd18bd08bd15ba0b7446f65dbb7de1abd0d7a5bf476e8edd13ba07744ef84de19bd8b84731a12f4aee8ddd0bba3f740ef899ef97909bd327a15f4aae8d5d0aba3d740af69079ccb8a5d6efb4f71495ffa34fa5e7fdefaf65ae8b56d23d6eba0d745af875edf76217a035b787b43f45cf446e88dadaca62bd69bbc25ee99afcdd0fb416f8ede2f7a7fe87dfc0f7d8db83674adb8bd4fdb7cf5327639f1ce243bfb8ff095ae0b32d0bc238f5e01bd6ff48ae8037d077d0f7d1ffd00fd10fd08fd18fd05fa4bf457e8afd1dfa0bf453f1d19f74d38a07f44ff84fe19fd0bfa09fa57f46fe8dfd17fa0ff44ff25a124a18c7e05fd2afa35f4ebd601dd6fa0df443f75993ff2bcca7a7db5fe07eb93f4d291db3fc38a3f8d7de8b7d1efd8ce59bf6b57e1f77be8f7d11fa03f44df457f643df7a650f7c7e84fd0377f986ffea03f47ff17fd3ff43fecf620a36cff13fd8c9d0aea67d1ff423f877e1efd02fadf14445f2abc667cdc2fa6c5a18c0164b9d526fd43c2c0c1c0c3c0c720c020c420c220c66081c112831506e60b1b0cb618ec30d86370c0e088c109833306170c120cae18dc30b863f0c0e089c10b831206e675150caa18d430a8a7a1918626062d0cdae96707832e063d0cfad6b130186030b44b1f072e06a3d495fa3f8269cd28d8458b591e199bf66d30fe97be830906533b3d3a9861f063279c06730c7eed02d1c11f061f187c6290c1208bc11706390cf2181430f8b6120f8a56f121307430f430f4310c300cadb8c348f45d55ec568d616c6deb7061c51d2e6d136c7a39a5e93b0c5736f8750cd7186eec0e96e116c31d867bbb806a78c0f088e109c33386170c130caf18de30bc63f8c0f089e10bc31286e6e1150cab189a77994735306c62d8c2b08d6107c32ea245bab72d5d9e1e7f61d8c3b09f86018626922e8623ebde1d8e319c58ffd6706abd07c3591a7e309c5b7f82f765ff6bf7601fa35d36973a21cde7d368914ebf0fff6c0fd7f41c86e6699fd693eb9bffcad860841e6631346fcf6198b7f311c3028646b2225cc075e07a707d5b90dd006e0837821bc35dc05dc25dc15dc3ddc0dd9a4fd1d7ddc1dd8bbe35db441871dd83750a9b60fe302155d9ae94708f704f70cf7623877b81dd9f78b58b32cb2db837b8771b21f701f709f705b704b70cd7bca20ab706b70eb701b709d77cb90db703b70bb707b70f7700776897d4f16e88acec3c49836be233823b863bb16b3bdda99d1f32c3017766177b5f3376df928992fb63a733cc78d7314f9ef3e2c4fae41d8cdceebff575cd433eac27b76422f6698311dacdc0cdc23509c9c135492ec0fd865bb4528e8091839187918f51805188918131460b8c9618ad305aa7e2da90ea3bda60b4b5faaefb18ed6c43519a60b4c7e8902e6d2fdbb6d884dd19a3a3ddb9609ae0d1c99aad9121178c128cae361ea39b757998b1b93155a33b460f8c9e18bd302a6154c6a88251d5ea3baa61643e1b1835316a61d4c6a8835117a31e467dbb027734c068685d04a609b27fbbe9e708a3314613bbe4f069be3fb5f3f30f13c919ae7dab8e29808f9d15da984e3b189b6364a231372aa783e0196b5d32314967e0774f3bfc353d335378477f76f6b76ca2f4c1a16422667806234ace1746395b788db815f3cf3c4605d6d70c2b46df18153106c60ec61ec63ec601059a9f6f5b7dc7e15bdf7164c55da4611cdbb110a96c24f63bd6d1bebbdb6e8dd177bcc07889f1cac6c3f407eb198cd7d6e48f3756dfb179ec0ee33dc6e639478c4f189b9f5c304e30be627cc3f88eb1f9da13e317c6256b1f6db7b4683d031b5895c7651b8cc4e30ac6558c6b18d76d2f6adcc0b889710be3369cb4ffefb8769435eed8dd0946df7197f58d76a42f8700ffd2d7f41cc63dabef7d6b4768e33e07f3b7a98ee301c6260ee6ed238cc7d6329876cc3a797f309ed83ed9788af10ce39f54df39c6bf18ff61fcf1bfe86bfa5ee34fdbcb31857779b7ebdaed86da0a4b6cf718a5c1f47ed61d8c8d88263de62739d6f73ec1388f71c11a7e1bad6f8c8b98001307130f131f93009310930893189305264b4c5698ac31d960b2c56467bd302f63946de5b57f98226c4bee00933d26074c8e989c3039bff59d5c545f5b84a9fc4e1253c06ddd4fcb6cda09fb473026c2e83bb9bef5753f30b9594f79c93cf06e437566ffbe99683f30795a7d272f4c4ad62c4cca98546c30fa4eaa98d4acbea53e26f5b7be9306264d0aa2efa48549fbadefa463c44d377ddbf09f124fd2d5e1a67d9bf430318f36e91f5ae360868c1313951126633baa9998184c319961f283c91c13932af36e93984f4c8c0a594ccc777298e4312960f26d97cedbe9c5860d34c368e4d60d7f9322a6c0d4c1d4b3beaea98f6960cbef34c4adccf6c119601ad9297a33ba4d7276898c19a14de377a055e2aaafb121ad3fd1776c47c07686220de66f9322ab6fdfaec7f9a7bed385d577bac47465f59dae59dfe906d32da63b4cf7ffd6777a607d9ba19d71315df4b4f05a65bdbeddaa5069a773da572beef468adc4f484a9f9bcd8f1e234b15efde915d31ba6774c1f983eed08ddd8b5e90bd312a6264e2642554c6b56dfa9894ac3ea3b6d626a046a63dac1b48b69cf2aeba55e98fb2af5156c781f65641ed5c7d4c837c4d4b5f3f0d311a6634c27984e319da59bca5371a73fb8ba083cbb046967de6b22f69b863f1bece2fbb40b61f49d7e581b627abe53f3f08c5def343551fa92909abba9c99ebcd5d774126c8396677d6df887bed302a6dfa9be45d677060a527eadc4ff2ebfc6f296afffa5fc1a7d670e669ed577e663166016dac1f82cc22cc66c81d912b39575f5cfd6986d30db62b6c3ccbcf28099f9ed0933f3c38bb50fb304b32b6637ccee983d307b5a836bda1f63164cc9b51e99b5dd416942f881d90bb3126665bb9ede745a6715ccaa98d530ab63d6b06677d6b4fd07bb253ac7fa5a4d7f3954073618623e6dffe1d77ad68dbea6fc1ae36bf47d1cb8fcda89e12697dffbceae67207d672ddbb859fb909a88599bed03955fd6372dbfb3cebff50d0bb60b61fa0fd1f73fda37a3884946cf86e78fb509b33e6683f47388998bd908b3316613ccd2b556b3992dc2c650cc7e6c833b9b63f68bd91f66469a4fcc32986531fbc2cce4441eb3026626038af8017e1cfc78f8f1f113e027c44f849fd8b669b6fcaef17f787baf65d7719e6bf762c6394ad9f6a173ce41e1cc39e7ecabdf0392e79addfdf617fe9d56a1589a5a32453d86418004297f29fe4afcb5f83cde8abf137f2ffe41ed66be23fe5167cefd93a64831faa2e7e09f750e8dce19ed6ce2ff26ceef1fa1175c8953a1fc8bda87555bfdb0842fcb5ce236989abb774fa9092e5aba92cdbf8a7fd320d8bfabf040dd86994e18f380fd9bfff81b5fff99c87767942f5ffabf492c9ff0dd8dbf42be0cea2703f15f3a970cb2788bffd185f87e56fc9cf879e5eb17746ed5e70397c42f8b5f11bfaa4b367cb68fb76c88df14bf257e5b7ca2e98adf13bf2f3eab1d8a3f5217c2e7c57c86f0872f5146e21be29b315f4b7c5b7cdec25527a1d9d299f36643e7c7eead2f625df858d3d1affd274e5dc8fd46198990afefa9fd215f3fa5564569e2cb978698ea4ce29a3b122b323b9206db9c163f2381488058444723e95104630926124c956f3093602ec1e26b1f687fbffa4bb8b3f4d73f63f0c6e022717effe82f1d86affeb624584ab092602dc14682ad8e2a053b09f66a1c82830447094e129c557fe7bce54582ab043709eeca37e099a7042f09de127c547f83ac043909f2121424284a5092a02c41457fc8aba2e6b80455096a12d425e0c79bbf7ce927046c4c5b8278f2fc91fb227ef93a0046c50cbaea3c4c7592ed276b241622ce66e519672c323c51c35d5453f0ee49d053c47fd55f5ae1da48dd4dea2981fe95af62edab52ebf14082a10423097c09021dd909d8f28865cc373074c11c8dc3cc95c0d4e022b0747efb8f7f86bf380febbd04b6f60f812301aff72448a9ef19a425c848281242c2b1841309a712ce249c4bb8907029e14ac2b5841be51b6e956fb893702fe141c2a3842709cf125ed426a8b96c497895f026e15dc287844f09f9a9b7841fe51b66d5e0b6ba12e634ada662ebee299f9ae687d116d34ad0c108f36a257285dfcccf71a4c78c9b57555d001c16f41740979931e7d4d7de2c2c4a5892b0acc4c38a4e18afd8c8aa843535025fb8d3587e102b743e6f5dc286844d09d9ecb68e3c849d4462bed4dcd541e152796b551d3c25dc7543dd8644403addaf0b3161453d09fb120e241c4a3892d09790cf134a1849c8569a125aba4023b425240b57424fc2948469093312894490682cd144a2a9443389e6122d245a4ab4d27be9a4ce462d43b4d674b1755da28d8e3f445b897612f1fc413d878ead91db74aee1ec87d71c35218c88e90253a3e920277394c9341a41c7ac934466cd52cce6d586d076534f9717894e3a0dfc9828e8e55589f3a4c6a2a6446755de88d75c554fa39b8a1edc356c4b88470f899e12bd247a4bf4d1c822ca2692e497382ae3bc4439854be5255ccd35fa261afd24d7c77bd9bc3c89786541a2a2442589ca125524aa4a549388cfd99088ad218eb6441d89ba12f524ea4bc4060d251a49e44b14e8fc7c144a14496448c467b024b225722472156bf6a329627454224f2d559492282d51460cf9f235a06305c658830b63a2394bb9d85656e36104ba6baba622a6167f3319fabfb923f9a618535db7de887f04fc94311363ae613d2d9bb11063a9f938c64a8cb5181b1d8aa4f21a5b317631dc472c3162257bd703632f065b751483359cc5b888714d24e66bdc74e0bc2d62dce32c3f4fe1ea06429378f5e2f5bb4464cc8f3d54b58da7182f31de627cc4c88a9113232f46418ca218253178011b5d15830f5f17a321061fa925465b8c8e185d317a62f4c560b386628cc4f0c508c408c588341d6b35d6bc37c310c3d45d85e8cc189618b6188e18ae185ecc970f9c162323a6880955343ae0656a659c10c69f3cad0411bf020d9449993d5e923b92b07e97c51cc783e891c69ce64427d8cda90eef1274c154e23c49bfd3a4ccc55c2847322dbb622e5578902026743db9d2911d732de646ccad983b31f78924eb630f3a6a9e4feb08d92aa7a3d493824c4b3a94a5bbe72459f6f17afdf1a57be3231dc43c6aee937912f32ce645ccabcebc993731ef623ec47c8af912f32de647ccac983931f3ea9f9905318b629694afc987ac885915b326665dcc86ee6e6336c56ca9ad37db6276746a8abf2ab3abe8cd9e98fc14ff6b28e62826eb8b19e86cae4ed5186286df9c30760654613a6d49c675a2c8096896a46cb236431d0f5e49f7801c9391461d3b8f115312b835dec214d3528ea61dc375628911d3ec9a84eb899912332d66462c110b628dc59a2412f36d3a2ae4cbc08c71c4aca136816afb876fb22582152f30dadcc59a8935176b21d652ac95586bb136626dc5da89b517eb20d6512795ad935867b12e625dc5ba89c50f3ec47a8af512eb2dd647acac5839b1f26215c42a8a55d265d4fbb36ebfc5965865ddd582fea25511ab2a564dacba580db19aea9c4447b15a1ad7e884a3adbd5092b044d3992c3b791d5485093141fca724e55a5b2731d9375a6d750fc83119092365ab1367eff6f5242d433d0e22acae583d350bb40354550a0f122b61f595b535106b28d6482c5fac40ac50ac28911fbe96f1cb57b75388f96e4315cbd424e4efae1388d78490af25962d163fe88ae58995122b2d5646f34b6c111b628fc59e883d157b26f65cec85d84bb15762afc5dee828fbbc21f656f9da3bb1f9a983d847656ac7f1f79e579ec5be887d15fba67cedbbd88fbff1b59f3a8f4bb8cd91ee37568cfef0fdb1c22d45dcf8c4eb067e84940b03e54b1bc28e915f0f39926f7fa8419acefd040a97a013e5657846be89e5b55f62bfc5fe889d153ba71a9d6bfd0b5f3b2f762191ff73be7651b707b34b62934545ecaa2644d935b1eb62135953ec96d86db13b6277353fd5ee89dd177b20f65033fbec91d8bed86c44287624b621b629b6a53983b61df37562be972fdf062f76c5f6c44e899d163b238e8803edd0aaa638e3787af12f7cd9fb33067b887adfad1fbe7f95842fc33c2ab8f20d63beb3bff125dcff277c9d8938d3447ef8b273fb4fbe897188f912ee2fdfe554f93a3371e6e22c748a3ee1eb2cc55989b356be9583381b71b65fbeb40fce4e27df9cbd38fcafa3382771cee25c94af73158717dc7547059add11bef6817c9bfcdfc7bff065383049ff4ce88e62fbf077bef78cf2759eff6ff2fd5fda07e5fb8af9be92fcead1976ff7f8eddfe899fde1fbdbbfc9770f4296ce5b9c8f2aa9931527a7a97c4e5e9c82ea6c29cea5748ae29462e265712ae254c5a969dabac3afa1214e53570e397cfeb638aca42b4e4f9cbe3803e5cb109c88e93c38439d6f7546e2f8e2b0dda13891388638a6aed49964749b1b06af2c13be89f74abeb3e93ff96a7a4ee397efff3dfbf09f7c1d4bfb37c7fef2751c715c71782615234efdf0a5d0f9fd2bdf3f2aac4b20fbbf70294faa5e5a9c8cb8222ec41dabf3909f7ff9d29770279aa8ca93a595f66fee54f9ba3371e7e22ec45d8abb12772dee46dcadb83b71f7e21ec43d8a7b12f72cee4537b37259cf4ddcfb2f5ff721ee53dc97b86f713fdaa1fde14bb84974c000eccb37ad7093ac91bff2a50b4117ed3ff9328850beb10bc1feed1f7cffabfe8d7c7990f075b3cad7cd899b8ff9a67ef8cebd2fdf6a57871de2bd8ebe7cd5f9edffae92fe6e9df954be6e415c5228295fb72c6ee56b1f5ca2ac895bfff2751be236c56d89db16b7236e57dc9eb87d7107e2b24d23717d71c92e1437d2d43cd7d0d410229e599ae342beae29ae25ae2d2e5bef8aeb7df932e872533ab8c5f2976f45470ffef0255037fd859bc87ff27533ffcef7abd7a338481b8827ff1d5f0fe28dc59b7cf97ad344fece97c1c5268a37929a7c9d331adf9ffeedc744887833f1e6cad75b88b7146fa5f993b40f34c1de5abc8d785bf176e2ed35478d7cbd837847f14ee29dc5bb887715ef26de5dbc87784ff15ee2bdc5fb889755077cb1d6f55344ece562c7b1281e9bcb7bf1a014f3e5f565e54b6bfbabbf76bc5e7dac6308434bbc8ada07f24d1c065d1d17cb1fbe95e86ffa9bcca491668258e1867aace747e255c5ab89c7a76b68ff46be5e53bc96f66f5efb6b1fbc8e785df17ae2f5c51bfc5d7f195f7843f158912f7343bc40f7503aece33c645e1dc61269c2a167e836379e299ea5f96735dec98e175ff0c011cf559beb79e2a5e2c517fc02d3e26524259282a4c6929a486a2aa999a4e6925a486a29a995a4d69a8392da486aab2668674b6a27a9bd8ed5e502491d247594142f384bea22a9aba46e92baeb8822a3897a55e7faa2b36a5ceaa18adcf524f594d44b66bcc55b529f38a53796d24877652bf93afd511a4a2a2ba99cf6908cd05449d9c8bca40af11aa0a6a68cf038558ccf972455965445525549d52455975443f9a69a9262d9965447525d49f524c5660c24c5ca4789fcd8df3d1fc99754106f79e9eb7c622ad4d99ac13dde96d6d2399b2d7458d65fe89687a948e3b7e24a33245386a44c5dd042beece85296a4c8c8d185442957527ce094a4d292ca485a240d498f253d91f454d23349cf25bd90f452178cf397915ec93d8af70cb87cf795d50d2407baf1687a2de98da4b792de497aaf7e2efd87f441ad64faa893d6054b271ad227499f257d91f4551755052d49df34abb7d68ad37b035561c41a3d7f4afaae99643db6e7a14680711a43e15a3c76ce32bae8b003cfa779e54bd26f497f249d95744ed279f5d5d2054917255d927459d2154957255d93745dd20d493725cd5b27fb13acefea3ca4db3ad5e62f758bcf7d4ea7c7b3795dcddd63733b92eeeac869ba27e9bea407921e4a7a24695fe1a6034987ca3a1d499a7f9a92b6246debe28bb4236957d29ea45392e62d329211c9403263c94c243395cc4c3273c92c24b3d475b9999564d6fa75663692d9aaecf9bf3bc9ec754b95cc413247dd3d68b194cc493267c95c247395cc4d112703086d5b479f337775d168015a3dc93c340725f38c87defb9a55967949e6ad06844e1e4d41326ba99d5857e7267460976dfba8e646ac3c2b999c64f2922948a62899924e1267ca92a948a62a999a64ea926948a629999664da92e948a62b19deb7cf32e69b4996155e759fd10c6f3fd205bea541bc3fe229de7f32a75b7c3ecfba73f59c4feb4b26900c6f13e90843c6908c291942b125e348c6958c27999464c82b135b6cf53c2013297fa06ba266d0ed5c17d05d3d56d0fd0f37d05fc70eba23d901baedd409ba7fd145decd783b9c1be26d3ca0db43bce8fd4acb84aec1cd421730e615712b822e1b2b4217e894d58b78b1b64ab22526a4aa0bb4e7370aa4d6bd9db50f9cfad02ce506a4195bd85a9cc930ff11fed65a52a487d486e69775a15f459fdf068142a7b2e945faf1787b081d7535a0a34d16347ea58bce0f26ef3963d7487f3ed44d72692665be8d775b5fc8981f48c75ba89ebe1b51c61bc550fde2edb8f96fac76807c530ec0efdc06a6c00c98030b6009ac62bf6e0d6cbe7cb155bed8295fec810370044ec05951e2025ca974c04df70f5d3c34d989bad6ea0377e0013c8117f096760a606d592007e8c2464d086bbb4041f6bcb2a8dfc5dd96711a34d08bbc829e2ee2dde2798bb282a682d303697b4005a8aa074621624dc68925e0b3d0da36803ac092cd6b016da00374015e3f02d8b0013004465260553e100021100106cb9ffd53d96b6f03f519e61bc0548e5d5e6701a4a9265307f4742e40b733910eeb25503e0c6be473f21932f1e63650bee331c6138c7930c378ae7cc70b8c9718af305e63bcc1788bf10ee33dc6078c8f189f303e8306b7d6c1f81a6ff9620b9f814496350d705b2d8c6f18df317e60fcc4f885f15b33ec86acf08371166322fea8191df0388f7101e378ca075d19b36125453c4eeb4c876e4f7c978ea19b0a3c77ead5f1530507e332c6158a22fece504cd5278bc7cc30ae625cc3b88e7103e326c66c4f1b63b6b68b714f718ffb180f301e623cc2d8c738c0384c24993f36d5dfdcb6e4c0a78d6223c0878f73e46bacc8a4e86c0a898f2d8a147a18db18b3592ec61ec629504df824ba0b0bf5788cc90fdfc954f94e7830c76481c9129315266b4c36f2f030d962b2c3648fc901932326279d95409f4fdebd3d31396372d1b551f51226574c6e98dc317960c2ff7a61f296fe00938f0c539864359b863ec0a88a490e933c26055d70fddc6aa6de70a8331d2c936d9028f3971adf4f9bce0326454c4a4ab694c6a4ace38dc6ee2ba61b9f7130a9605255cdfdc37752c3a48e4903932626fcb38d490793ee97efa487493f9124bfe4a47ce9991d8ed2e3a5ecaf6d4c86f261bda378b1479bac31a1c449737a3ec424c2c4c0c4c4c4c284d73bca77ac7c254b766c1c4b3e3cdb9d8977f2a7728f319d603ac57486e91cd305a64b4c5798ae415f7bc6e32da63b5da36eb53531a763c97084e91ed303a6474c4f989e31bd607a55bb39bdd1f4617ac7f481e93399d3c5f485e91bd38faeaca47bdbafc5950c757b78f2a553319bc51b6e3fe83c60ca2f86f5e7d4084cf38a785af8228ee1826124f94e4b98f2b8826915d31aa6bc35af6f62dac2b48d6907d32ea63d4cfb980e301d62ca3afd4412ff61abfb791ccec9dc2da6812eed20c7302fa6816948d12561fc533716aaf1e0cb774aa7f2a27ca7bcccfcf29d5affe4cb6f6bca56ba987a98a6304dc77c33f17e4334d763cce8d80fc00ee7dd954751f9ea18f950734756fc767bf2da6036c36c8ed902fc1a662bccd6986d6450c06c8bd98e7c31dbab7715f4313b6076c4eca46398d92a6667ccd8c8b39a1dda5c861e18247c756c28e14b2340bea44c45d6519b5e325b81d915b31b6677cc1e98f1162fccde6a10661fccb298e530cb63c63614697f312b6156c6aca2f677564de4ff17beb31a6675cc1a9835316b295fc6dfe949cc976ded922f663dcc8866a05b5fbd0cd5b545567bb955bf7b7b6336c48c0fe0631660c6d6479819a059eb4df407feff2d5f0b335b4dc4ccc18c673ccc5298f11132f1cb08d8978f319f603ec57c86f91cf305e64bcc5798af597ef797d35961dd6734a4e7ab7ce7877fe14b733c3f6acee15ff882fde1ffc877bec57c07daf4f901f323e627cccf985f30bf82ded2fc8ef943f9ce9fa0656cf6742f9b519970317fd379c0fc837916f31ce679cc0b9817312f615ec6bca2c35deca0688813beffb00f650373f2bd682f47bee8e8b8fb6cfac73efcf24decc31fbec93c71cc57d1cf6b7ff3cfe6f57ff7cfe60dcc9b98b7306fab7f36ef7cfd33eddfc6f7842ffb37cce9a8b123f2c954e1d21ba517014b82aeea3585b678defbe5fb8ffe2de19bf46ff37ecc7780f950f5773ec29c9f0d300f31e767f9fc26e616e636e66c902b262ff0b40b0ae88913379d457e0dac2113bfb3025fbe8bb1f25d4ce2799d94766ec3b5f66fd5d42fdf6cbd7bbb61314d5c087d43c75ff9fef46f095f2c66ba343be1ab13c303f5cc7e2634952ff5f75ff92ee6582c94ef62a97c172be5bb58c7fadbf9d1df3ffe193b996110fb678e6626075d2c3631dc982feaaad7757a692b2cb658ecb0d8637150be8b2316a7af7fb638fffa67e44bff6171c1e28ac54df92eee583c94efe289c50b8b37161fd0142cf890792c0a5814d9a1fd07df587f17252cca6a1f1615b50f0cd31b6dcdb3fbc3d727d01a1675f51fee1e160d350ee3d839a3674fff2cd98e88ceaf0eaec77c5943568308891ebfca4b2ff8478595ef8ce17e57edc3a2a93ec3a2a5f677d1c6a2830511f5b4bb5bf4b118603154fbb0e063fa6a1f16febff9bf8be0affeaf2c8beaffd25dfbf17fbbb775cc57e337e54bff37e13bc16f7cb1e07f118119f3b5b0b0b160fb5c2cf8d8fc3ef8918cbe608921c8728ce504cb2996332ce7582efec2f7ad7c970c9d0758aeb05c63b9c172abfddb72a721066d825755beb41224a54b21dc2f5fc6be8c026816921023f17f93ede04615ed36d997e6eafa0b6070cc208d9ec39fac0646168cdc12c4e4bbdc6379c0f288e509cb339617555856bebc6279fbc617cbbbc617cb87c617cb2796af44e2f86df9d6f86d3c94033ff0f9be5fa43cd2841773fc8d2fc68666befc6c478965f6cb9791c5ffc8779953becb3c9605f0db5a96b02c6359c1b28a650d0c5e970d2c9b58b6b06c63d951be2b1e7475162709de963d2c5992329f6484a52f1d7e3d01fd5f8670bf7c83b1ae4269f35ea1e6f37e6a6a1c508a83b7a96e0085411cc29dffc9d7ea295f0d2e62be8c9293f822e14bff2cf17f9711960696269656ec02b3d9bc97a3feefd2fdfabf4b4f23e3bff9bfbaffe40ecb946e18364cecef3ab10f6a82d5445871badc4a8d2f4dc4cdc1329dd8876f7c9ce69796f9eef2b812b5bf2bc6c663e5bb9a603555fbb09a6135c76a81d512ab15566bac36586db1da61b5c7ea80d511ab135667cd6963ffc3a080322a7ffdb3d5052b5672c3ea8e15ff97b77862f5c2ea1dbbc0fff41fd8bfd195965c39eee2ce6a883fb5ef32827e5d67971f455d8939dce8d8589cd84057e1b78b63e7b6fa48aa8d5516ab9c0611ab3c5605ac8a5895b02a6355c1aa8a550dab3a560dac9a58f11a5edfc1aa8b550fab3ecbe4fd2d7cbc818e932d4eaab30ccf56437d07d674f52b997722dd1b118cb0f2357e9b18627eb00ab00a25ed631561656045a656cc976e4d4ad26ca883154b12496195c62a132fb606d663ac27584fb19ec9ed8ef59c3f6aac171ada7e1a582fb15ee902f5c15376bc6c8df506eb2da80a64bade637dd07158ead7fa88f509eb33d617acaf3a5eb3be092dc19a753eb066e8c18b5fb1f0831facb362f2ee39acf35817b02eaa795d97b02e635dc1ba8a750deb3ad6aca789750beb36d61dac790d9bd7c77a80f510eb11d63ed601d621d611d606d626d616d636d60ed62ed61ecbd83eac53b1a4d5da9ac6777af5d9d18522c9801ea559fb1e54596f4633f0a8d69b313613e5bb992adfcd0c9b39360b6c96ca77b3c2668dcd069b2d363b6cf6d81cb0396273c2e68ccd45f893df5cb1b96173d7e19bcd039b27362fcdca7fd9e2e7b1796b7271c08f7cb0c96293c38627a944fcb3884d291edbae6053c6a6a2d3e65e139baa6e32a44ba85271eacd5ca727dc4c9ce934e3418cf5854d0d9b3a7b366c1ad8f0533c6863d3c1a68b4d2f16b66d80cd503c1e8fb0e1d3058a75136213616360636263a9c1ddd8d838d8b8d878d8a4b049639389df54029631dfed18db09b65335b58b8d54d9f7bdd5fcadea9a4efbda7e17e3127726ee70b6336ce7d82ec4a8b37fa37df8f2a5156687b5a5acbe7cb76b6c37d86eb1dd61bbc7f680ed11db13b6676c59cf15db1bb6776c1fd83eb17d61fb96e610db0fb659a997b1cdc5f3e723e9f2cabc9cfbd816b02d625bc296ff5bc1b68a6d0ddb3ab60d6c9bd8b6b06d63dbc1b68b6d0f5b5e3f889756fd0ab643695b6a403ac23858bf1b2ae9863e03218cb0f5758437c3fa03d05bdd46d81aaabf5b135b0b5b1b5b075b175b0fdb14b6696c33f1c612c06e0cfec87653ec66d8cdb15b60b76419db077d7188682a328d03638a5aeb4bb6d556f3a7b9726d5da740159e2d75415ee685dd0abb35761b8ddf76b4a1a1ca6e87dd1ebb037647758d691f7627ecced8f19a2b7637eceed83db07b62c71aded87db0cb6297c32e8f5d01bb2276254dacd335758ea66a3f879a5536e0c565ec2ad855b1ab6157c7ae815d339616766dec3a5fb8bb2e763decfad80db01b6237c2ce8f975ea6b023afa1963bb6939e3b6f6d6067626761c7763ad8b9095cecbc58f891b422de65e2574502fb31f613eca7d8cf629963bfc07e89fd0afb35f61becb7d8efb0df2bdffd01fb23cb587ff727eccfa00b3175b0bf627f8b770b9e691ca5e9d31ef6ec400ef196c64dec1f32ca63ffc4fe85fd1bfb0ff65930eadbf36401fb22f625eccbd85794f5be8a7d0dfb3af60dec9b3aecbb6f61dfc6be837d17fb1ef67dec07d80fb11f61ef631f88c1a687ba1ad4e49f9126f1e5588981bd89bd85bd8dbda35cf66e2c6c5b0afb34f699788d3c7018eb0e856d1787090e534d394df2218d95eed5c0b264e3309309af9febd8c561a1b1d961a936e1b0525d26eec31a870d0efcdf9d446f1cf6381c7038e270c2e18cc325962b0e371cee383c7078e2f0c281577e70c8e290c3218f438165ccf75054c48752c257a75dd97d576c1ddffbd4d58f21e24319870a0e555d5541be871a0e751c1a38347168e1d0c681adece2c056f67118e030d4814af23d8c70f07108700871887030703071b070e063383810042b4fe190c62183a3683ea42eb5b574d8fd3866a96308c7098e531c6738ce71d46c511c9738ae705ce3b8c1718be34e7bb6e31ec7038e471c4f389ef5a740b2c4ca3acba6ee35523671bce078d5b9bbfe4647908f371cef6a8293feedf888fbb7aaf66f044ddcc7278e2f1cdf387e70cce298c3318f6301c7228e251cf9910a8e6c610dc73a8e0d1cf991168e6d457c8cf79fc4b1a3139afb970611ecdf18441dbb38f670ece338c0718863ec2ab53a6a37d8ef75d9441fc700c710c70847b5bf389a526473c9c5c6d1d170f9e8aa7d387a38a6704ce398d1f7b09ea07c4f639c26384d719ae134c76981d312a795065da7b5ae4a4d5fe839d07fc06923d90a4e5b9c7638ed713ae07454bb793ae174c6e982d35543af3fcec3e986d35df70fe8a734c7d458279e0329d373f8b2a6f4d917d571a2ddafa8f3707aea90cde985d3fb4b9942a53e7dc4e08db26a0a4e399cf26a074e059c8a3895702ae354912e1b53c5a986132b6ce0d4c4a985531ba70ecb64fc21d455bfd99cf66f27deac87531fa7014e439c460afae4e3c4708ed14757bbbe53283402a708274383e0bff26547c7a0e364aa474cbfe264e164e3e4e0e4e24476299c788b8cbeedf60c9cc7384f709ee23cc3798ef3424c9e5feaaa49ba1054b1e10367fea21d9cd7386f70dee2bcc3798f6911e703ce479c4f389fd58612139d87f305e72bce371d2748f60fa0cf30fabb181bd56b4674a93cce779c798b27ce2f9cdf5fffe1f4c1f91397599c73e2f0eebcb280336f5ac2b98c73455d887315e71ace75f528ce0d9c79f716ce6d9c3b387771ee2512eb2ffbe5f340dfe3f4a9a8dbd0ace33cc47984b34ff94e01e8ea325f5d08fa67e7006756ca7b18389b385bba795469ad53c8b515ceb66af1d9d17eefece2ece19cc2398d7346df207c012e635c26b84c7199e132c76581cb1297152e6bfdc55c3632e7c9ad44675c76fa2b7e1e70d9e3c2f288cb09179ebfe072c5e586cb1d97072e4f5c5eb8bc71f9e09255a5a681beb01fe69f794c5fba90eaafd27375a4e25290541d97a28e375e4ab894351ebb5470a9e252c3a51e1ff34c1397162e6d5c3ab87471e9e1c2460e7019e232c2c5c725c025c425c2c5c085f7b570b171711289f95e5c9d10ba78b8a4349468b2d2342e191d04a1dcd389f3108f13a6e55d8c37f4a3368f719de03ad5f1c9eb0cd7b92a2f41675c5c17b82ea5c0ff5de1bac67583eb16d71dae7b5c0fb81e713de17ac6f582eb15d71bae775c638b5f2f89c14f3d717d499a57bec917d70fae595c73b8e6712de0ca0694702de35ac1b58a6b0dd73aae0d5c9bea6c5d5bb8b671ede0dac5b5a70922bab9482c49d648aea94e5b810858551fd781f660095f96d721ae238d2958f258cff83a6d710d700d718d7035703563e153dbb83ab8f2793d5c53b8a671cde8fba76fc06d9c48f2fe8b296e13dca6d278e136c36d8edb02b7256eab58d6b16c70dbe2b6c36d2f6188db01b72318cbddceb85d24e7e176c5eda666819118e33abac3b7076e4fdc58e71bb70f6e59dc72b8e5712be056c4ad845b19b70a6e55dc6ab8d5716be0d6c4ada52b4ce845dcdab87570eb6af475ebe1d6c76d80db10b791c6b237d6cf7bb125116e066e266e166e3618bbdf5cdcd89e1484f74a63c6966754ee22839ebe7c9bd10c4f4a0ef731ee13dca7b8cf709fe3bed05989fb12f7555cae71dfe8d80dfd87fb16f71dee7b75c5ee87588eb89f703fc7672eb85f71bfe17ec7fd81fb13f75722b1fededfb87f7067d5bc651ef702ee45dc4bb8977fa4827b35961aee75dc1bb837716f691c7c6fe3dec1bd8b3b9bdec77d80fb10f711ee3eee01ee21ee11ee06ee26eebcd8c6dd51be7717eccaee29dcd3b867e2b78d4395f431c66382c754d7d9564d3c66da17150c1d547bccf160b9c463a5d1f0638dc746c7071e5b091b78ec7422e7b1c7e3a051d9e3a82b8375b8678a072f3e53f407c1b251d764d692abeb31d94f3e2e785cbfd6f6c11aee783cf078c625bb015ef0c6e38307ff3787475efd8747018fa2ba108f121e653c2a7854f1a8e151c7832d69e2c106b0611d9631df47178f1e1e7d3c06780cf118e1e1e311e011e211c562e0c1a7b5f0b0f170f070f1f0f048e191c623a36f617f02cf319e9358a678cef09ce3b9c07389e70acf359e1b3cb778eef0dc83f6f479c4f384e719cf0b9e573c6f78def17ce0f9c4f385e71bcf8f76fa83aef6fe28e299c53387671ecf029efcb3846719cf0a9e553c6b78d6f16c80bef9b385675b438c6707cf2e9e3ce8e339c07318cb282e7d3c033c433c23f5ed9e069e269e169e369e0e9e2e9e1e9ea958d278667404f2259a73f11ae335c16b8ad70caf395e0b8dd95e4b1d7978adf05ae3b5c16b8bd70eaf3d5e07bc8e2c93f73be5f03ae175c6eb82d7152fd678c7eb81d713af572c6fbc3e7865f1e29579bc0a7815f12ae155c6ab825715af1a5e75bc1a7835f16ae1d5c6ab835717af1e5e7dbc06780df11ae1e5e315e015e215e1c56699785978d9783978b9787978a5f04ae39589df7ccb60dbd7f23dc67b82f714ef19de73bc17782ff15ee1bdc67b83f716ef1dde7bbc0f781ff13ee17dc6fb82f715ef1bdef7581e783f7fca17de6fbc3f7867f1cee19dc7bb00762aef12de65bc2b78577fa486771def06de4dbc5b78b7f1eee0ddc5bb87771fef01de43bc4778b39101de21de11de06de26de16de36de0ecb587fdf2ede1ede29bcd37867f011cd8cf98cf199e0338d6586cf1c9f053e4b7c56f8acf1d9e0b3c56787cf1e9f033e477c4ef89cf1b9e073c5e786cf1d9f073e4f7c5ef8bcf1f9e093c527874f1e9f023e457c4af894418fe553c5a7864f1d9f063e4d7c5af8b4f1e9e0d3c5a7874f1f9f013e437c46f8f8f804f884f844f818f898f858f8d8f838f8b8f878f8a4f049e393415634b3273b467612cb14d9d94f39477681ec12d915b26b6437c86e91dd21bb47f680ec11d9d38f9c91bd207b45f686ec1dd907b24f645fc8be63f9209b059dda6c1ed902b245644bc896416f9d0151b6866c9d65cc37db40b6099aad6c1bd90eb25d647bc8f6911d203b8ccb11b23eb201b221b211b206b226b216b236b20eb22eb21eb22964d3c86690134d59ca8d919b2037456e86dc1cb905724be456c8ad91db20b7456e87dc1eb9037247e44ec89d91bb207745ee86dc1db907724fe45ec8bd91fb2097452e875c1eb9027245e44ac89591ab80a173ae865c1db906e818e45ac8b591eb20d745ae875c1fb9017243e4467199888f5c805c885c849c819c899c859c8d9c839c0b76d4b91472e9b8f462c9c46bb081fc18f909f253e4677139477e81fc12f915f26be437c86f91df21bf47fe80fc11f913cb986ffeacc383f90bf257e46fc8f3f881fc13f917f26fe43fb16491cf219f47be807c11f912f265e42bc85791afe9e6dd055e5347be01dd109e1f6f21df46be837c17f91ef27de407c80f911f21ef231fc8c0413e443e42de40de44de42de469e275de43de453c8a791cfa02028008531e8ed15a628cc5098a3b0406189c20a85350a1b14b628ec50d8a37040e188c20985330a1714ae28dc62b9ff1c3c5078a2f042e10d36b890452187421e85020ac5b82cc57f9651a8c4c755146a28d45168a0d044a185421b850e0a5d147a28f45118a030446184828f42804288420476c80513058b6592bf3352a161a65758705070ff2e1e0a2914d2b1645014f637288e519ca03895f15c77998eb7f0467186e25c5f5dc13354c9e202c52518d415d7286e50dca2b843718fe24123b7e211455e7346f182e215c51b8a7721fde2034576976f145f28be3500ebc40360c50f8a59147328e6d58b62d0552ca0c89b96502ca35841b18a620dc53a8a0d149bf19aca78a1a5aeaff49275ad28b6788c621bc50e8a5d0d2e8a3d14fb280e34082e0e511cc57ffa28067abc62cd218a118a068a268a168a368a4e7ce0a2e8c525db964631c390109aea36466982d23491ff43bea5194a73941628b1b9479456ff2bbea5354a1b94b628ed50daa37440899f3da17446e982d215a51b4a77941eba4bbccf86fe8daf8ed8f61c945e28bd51faa094d5b94586b0a5dc972fe3ae525ee719e77cb6024a45ac6bbf7c9315d976ee2bd103a5920e0c95ca7fe13bfc1bdf52253ef9bfe65baac67c6b28d5516afc177c8723949a5fbea5d62fdf523b46fc2f7cbbb7c12fdfdc49e841977e5e6df3876fa98b520f25367af0c3778812efe5a314a014a214a164fce1ab112df9964c942c946c9d7de8a6745cbc44c4ee7fc7b7e4fdaff87a2de58bda3ff996527fe19b8ecb0cca8232501ea33c41798af20ce539ca0b94974ab6bc4279ad61457983f216e59df22def513efc8d2fca47cd47fadff32d9f503ea37cd1bdfe67af842fca579479a7bb6e3afd0fbee507ca4f9479cd1be50fca59947328e7512ea05c44b9847219e50aca55dde8b59bf917be83cf976fb986725d63ad4d4ba71dcb0de53bf3506e2adf720be5b664f8901d94bb3aee4383106345b99788beb6a683bff125cde3eb9f7c55fec1b7ff17be03948731df11cabe4616e500e510e50865e35ff82a62f22d9b285b0a37913f7c2965fbbfe45b6aa916d3bf21d0b2a39ba633022cbb528df91e7d94f9e42994d32867e2576d0395312a1354a6a8cc5099a3b24065a971446585ca1a958df2ad6c51d969fefe7fc59752d9a372d09c9aca1195d3dff85618b8871a49c788bf7c2b17f245e52ad10d15ca5d93f52a0fe55b79a2f252a0c4ca331486c57afead7c2b1f54b2a8e49466258f4a0115c687212aa5f84cf9cbb75241a5aa7c2b3554ea2c63fb90be262afc3ff0ad345069a2d2fac3179576c217958e50072b5ddd7d5af91645efc4e7e1930f5019a2324285ed0850612322540c5448d04285d53aa8b8ca57ca92e28379a8a45049a3924155d4feee825ffb5005aa635427ecdfc41aa23a457586ea1cfc2e09b7ba4475a57c0f6b54291b54b792ceeb04f361f195ca05e3b226e6a47312f0833be5382ba11a9704aab3153f92f05db1e603aa47544fa89e51bdc4e515d51baa77541fa83e517da1fa46f5836a16d51caa79540b2cbf7c13c4a816bf7c691012be2cab25151eff836fb5fce54bfb409a554a5511df797d4d557b5b45b5ae23c5d506aa4d5459551bd50eaa5d547ba8f6511da04a4623547d54031dc4390aaa21aa914e94550d544d1db14d9f7efd87aa85aa8daa834d533c5645e21eaaa9842caa69ca0fdf8c22ae092d016ae378818a0a59ab095e7d509be876449628c4da14b5196af32fe23f525ba0b6446da5c33735d6b6416d8bda0eb53d6a07d48e4ab97652beb5b3f2ad5d946f8d276fa8dd592adf6473ccbff1ad3d54122dfec35725f5e55b638d2f19f3de6f350edb126a6c31abcec99a8f9447ad805a11359e2fa35641ad8a5a0db53a6a0dd49aa8f1166dd43aa87551eba1d6476d209b00b5216a23d47c8cf959fe19ea409a1e47ea02d70cd44cd42c9dcbb9f0196cc9b05a47e7ca6a2e6a5e2c29854bfb504b8b7188b343d8aa4cb2034f2c50b834cdf5b12ea0d88b6a6e7d82fa544b52e69fb415f5f8a03e477d81fa12f515ea6bd437a86f51dfa1ceff3aa07e8ccf9c503f8bc78f5f50bf2adffa0df53bea0f965fbe8a982a5c67bd2f8548b8f5f7b7ac7fd4e14d70d7b37a5ccfa19e47bd807a9170512fc994979551afa05e45bd867a5d661fd41ba83751e7a7daa87750efa2de43bd8ffa00f521ea23d47dd403d443d423d40d4d52af9baac5753ebcad9317b7b6ee90d567e9a2eea0ced2433d857a1af50c1aa2ab4e1ae3d893fda0314163aa3a4ba08d191a7334163a12d658c6b2fa4a3d4dd742af79dcc4dca0b14683e5168d1d1a7b340ef19f891ce33f4f689cd1b8a07145e386c61d8d870a0d428395b37ca3c1bbf3a63934f26814d028a2514a24595f58fdaa70c2971049b35156b82c1b1534aa3168fe5943a38e46038d261a2d34088e7f76d0e8a2d143a38fc6008d211a23347c340234423422340c344c342c346c341c345c343c345268a4d1c8a029ba32a7394673224313cd299a33963a7fdca4f327baf862b94093b2d4a189e60acd359a1bcddbe57d9b5b34e3cd5be8d8ae3e120cd1dca37940937680d59ee295ed3c794e243ebea80d59b7d0bca27943f38ee603cda7f0c7d17cc553ee894cf5cfe61bcd8fc26d66d1cca19947b3a042a0cd229aa558ca6856d0aca25943b38e6603cd66225fbe09623479cbb6f225c76647e136f900bd58baf19f7d3407aac24db6728426110468866846681a68b27d169a369a0e9a2e9a1e9a2934d36866d0125ddbd41aa335416b8ad64c0633e5db9aa3b5406b89d60aadb5b487686dd0daa2b5438bdd4b5ffc135a07b48e68f1e08cd605adab8edb4ee2956fad1b5a77b41ebaf4d2ea62f556e2ada7447c96a3c672ad970675f48b5bef3891bfa0c734d3ad0f5a7140d1622579b40a6815d12ae194d7ddf76241abac7ffa4fb42a6855d1aaa1c50a1b6835d16aa1d546aba3945b5d3d68f5d0eaa335406ba89925ad512231dfb012bfeafb2923032dff876ff7dff8b2ae202e43b422b478bd899685968d9683968b96a74add4ac5c2c7c8a02dba64ac3d467b82f614ed19da73b417682fd15ea1bd467b83f616ed1d744bfc01da07b48f689fd03ea3ad5bfda27d45fb86f61ded07da4fb45f68bfd1fea09dd560ef92d75502ed9c2644a579415e06251d355fd735d6d08823f68e75954f0bed02da45753696acb38476196db22b29c47655fa6c5e4d29c7a21b7cf30c3db0761ded06da6c096b68a3dd41bb8b760fed3eb4c1adf860a823bf88d01e697254db4fe4cb17ed40d783916f3b443b12b71493652dc63ff97ecf9b685b68db683baac56d176d0fed14da69b4335fbe1d5dc586ce58c8b43341678a0e0fe6e82cd059a2b3d22ce0ce1a9d0d3a5b7476e8ecd139a07344e784ce199d0b3a57ac86e8dce45d42e78ece039d273a2fe98dd179a3f351bfb893a58fa1d90eedb466a91a5b9dc2b03f3a0a41077996523dede4d0c92b50cd2e3debba1f867c9d023a45744a0a71bfd5788165a7acd6b653896d2e0faae8d4d0a9a3c3eb9be8b4d069a3d341a78b4e0f9d3e3a0374860ab73342c74727402744275215ee182ce3f8a2632adf7beacbb76329df8ead403b4e6c7f2b5f734ca341e141c745c74327a596a19356be9d0cba6ac3d11deb79f2e5417782ee14dd19ba737417e82ed15da1bb467783ee16dd1dba7b740fe81ed13da17b96f907dd0bba57c9f8f1dece77c9b7d07da0fb44f785ee1bdd8f0ea76deae812eb50539eba39f531d6fcdf3cba05748b9ab45a65e5255d198101ba65742be856d1ada1cb0f3674a51529779be8b272ea23ffaba31c596a3cb6d633141e578ae876d1ed499a17f7d1656dbc638cb24b09d00dd18dd0359478d744d7d2f187ae8dae83aecb32e6dbf574d3c5011f8350d26084da13f4f0edd988f84bb9fa752aa83efc49f6a6e8cd942fb598407b73f416e82d63b8367aabf8e41abd8dcc7df4b6e8edd0dba37740ef88de49e38bde19bd0b7a57f46ee8ddd163cd4ff45ee8bd35c5b8f7412fab39c853b627875e1ebd027a45f44abad4b85746af825e55a33b9d4fb37497825624a9a29a080ddb1ae8d5d0aba3c783267a2df4dae875d0ebea4acc5e0fbdbe66e7f506e80d3506a39165599e6b54565e69d91b6934dcf3756ca1176862438f27796b2316f3876fa8cacb3f7b167ab626ef247c7bce0fdf9e8b9e871e71a4d1cba02fbaaab63f467f02fe76e8f692697f86fe5c8ffb0bd565dadffe12fd15faeb2f502a6c7f83fe16fddd8fecd13fa07f44ff84fe19fd0bfa57f46fe8dfd167854ff45fe8bfd1ffa09f453f877e1efd82ee2cc210a35f14aa49bf847e19137ebc02dd0a5ce43240bf26fc6afb75d5e27e03fd26faadf83d1453ddc2db5c6067eabc67bfad111d0deeb8a96abbca6bd9ef681a7abfab16833161bf8ffe4046a26118e1b2a4b5ed0fbfc2e3447ffb6c898f7e803e1b16a16f28e5be89be85be1d8b833ec978e813423a7e15e55253fcbef6a19fd1942f23a57bb50ef8931a633051be83a9aa2d3bfac11c8305064be5abfd7e198395f21dac31d828dfc156f90e76bf7c077b0c0e181c31386170c6e082c115831b0677f087327862f0c2e00d1ad04156f90e7218e46559d1ed1af495605d0c0aca775094774d5303d86b0d785fb6a72a7e1a839ad0f80cea18343483a437d52d90c99751498bf53731687df9d22090eca0ad7067bc6947072bd833ac18f82ca5c8aa78af9e06bb03fae6abefd6bdbc91222e6230c06088c108035f9d844180418841a4700746bc0f014f9adab95121267d0c2ccd2cf92b5f4d19aa9775c1eed1c3c0c6c0c1801c799c52833048fff0cde89f44cc4e4f53ad81e118c3494c76ab2a3c9caaf390c0a5b9a0fd1dce309c63b8c07089e14af90ed7186e30dc62b8c3700fba41c32386270ccf185e3064a44e052f6278c33c85e15d71174760ac317c62f8c2f08de107c32c86390cf31816742dbdbe9962aa27a520c118d79ea6f00c8b1a312bcab6221e96f48070674fe5fe786be4c6b07858c6503742c6b0aa64d591a87d3d87614dadf0a986615d5ddd212b69ea08993a0fb1ff306c61d8a62862d56517c30e865d0c7b3a853cecb38cf57738c07088211fc3c73050bec310c348bb32c66c43436d023dffa1f535c143a2e435accec39014d23f7c336043698e47c0688cd104a3a9b816d8bf8fe6182d305a62b4c2688dd106a32d463b8cf6181d303a6274c2e8ac0a3b229a9bbed86e71c7e8aa4bb40a3d8c6ed09ddab3183d307a6ac6d4e825fc318ede187d307dc79b6bf04659dde8bf60ebf0f92887515e07d5d89bd1da122e0f0897ce597529614b3d0a46c07b3ae085af7f16c3c5a8a0fe19cb5151115385e99f31421b953488a00ba15622c4a88c5125762a9a4a79548dfd330323d6508ff3d7e5277fbd6a62d4d034fc5113a31646bcba835157cd2e3577d4fbe53bea6b5f371a807df76884918f51a06637e1cbc862c41b47a01f323263be9638bc86e7f92917230f234249639451fdf545f74bf0c7f027f0a71a5f2cabf067aabcfe1cfe02fe5296257521fc15fc35fc0dfc2d7c2a57970e19fc3dfc03fc2316f5f8255607e54babba33c0a8e40f5f5eec9f639fe1a86bd8fc8b8eb1257cfd2bfc9b0611d4d64ef9ebfffe377cfd3bfc873a64147e19fe0bfe5b8588fd8ff67233b63fab8b2fe8a2c592acbf786ab2e2930f9c83cfbb16e017554fa9bc249bf065ff46be7e492d32f9fa65e5eb57d467f0ab0a9756d8afc1afc36fc0e7fd08a5fdd55fbf039f0fd983df87cfcfb271fcac0f3f801fc28fe09388099f8cdaf06d7de5e54c48565d34dff9eaafefaafefa1ef9aadb30e8ff557fd53854f81da4beb965d45fb50f69e54bb8d45f9604fda3bf6a1fe80ed38efb197d17130d6e10a93520d05151534e13b8897da86fd53e04a2a144a2bf74d4e8fb25fa4b8b144cbefabb7cfd9bfeea8aafb4ae000e6608e60816f1204359f5573bb4b496c112c14af597262258ebf843b041b045b043b0576b101cc05f00bde0e084e08ce082e08ae0a6f637b8237820782278217823f820c822c821c823282060d34b08ca082ad2b134320eaaffe8df6477d6fe2da8c995cda86bffa67bc25cbffd1b43387d9d83a11d1d23bad64da865ecdf160b8dd6d47fa8699950e6191ae5a081808fd042d0d6ae8cdf56d85155a5cffb757ed7bffe6fd041c0b2a7640991f1054d6d10bbc3ecd982816ea8110c118c10f808781cc68b035412be110203012fb510d8087ebcdd04314d0415990e2f5598e7691fd8bf05bc81872085208d208350744f142dc7082708a7086708e708170897085708d7083708b7087708f7080f088f084feaff8667842caf086f42ff3cbc237ca07510fe1ec3a7ae1b5eb510be10be117e106611e6b4070bf3080b088b084bf110c40d74e123565201dde1e8a9ca4b948c2cc21ac23ac206c218b49e61856d1068d845d853b7acceb6f51525bd8570a03adbaa48c47b0d118e10fa6a16c240c986a106116184d0d028233411f24f5bcf870e4217a1873085309d48cc37cc2012dd31261a239a209a8a794134433447b4509ad132fe7385688d68c3f8585fd89df1106d11ed10ed111d101d119d109d115d74d10b1f35ba21ba237a804f3be6f917a237a20fd8ee2887288fa880a888a884a88ca88248879910d5b028e882b7a88ea8a1eb031e155d1f90e4af474d442d21afa88da883a88ba887a88f688068886804dd7ffc89284014228a74dd4f8d8de72398882c4436220791abe3bc11db9f429446948121ba5b8e31863181310503422de7301630966a6d8d158c358c0d187f1b3b187bf513680a8c038ca326fc1a2718678dd98c0b8c2b8c5b22315fe30ee301e309e305e30de303230b23174b5ebc250c82988b3b89e1d2497c4b2d05a308a304a30ca3a2a9ea375657d535434703462d2e4b9afd67d46134603461b460b495afd181d185d183d1873180c1d68f60f83002dd3df2c10ae3354346a4efd4a857e439d0fc7583159a302c18b6866706c5d5f15fc383919274499768196961fc6d6470cec114856bb2ffccc01c6bc9ae8c94cd898236a7788d3548ab3e152edd5b73a62361e65c4d6dbb01c6291d964b982bf576cd35cc0dcc2dcc1dcc3dcc03cca386128cd60ebcd709e619544af30af306f30ef301f3c932e66bbe346a30df303f4ad0ccc2e467f214f16c9805d5e248b742fc1b5fb308b3a48be7e3b45fcdfc5d1c619675d39893a9b8cd0acc2acc1acc3a4cb6b509b305b30db3a3fe83c987e9c1ecc31cc01cc2e413fafa6ebe920333105acf35db17c28c740b43c6cda601937488c6d6417422be9661ba303d986c4c5a18911fd6c2c8d3cc686ab425ca91ee97059cca1a4758e3f8cf8982b6a6b066b0e63a464eb8ad06ac85968cd3686a89957179baa943e69d81060eec4b09d75ac25ac15ac7b25153c0ae8c4257c1e2ffee60ed75dac23ac03ac23ab18cf95a675817f573d98f756c5857dd14ccb3556a6cd6ed6f7cadbbf2ad0b2c56f484f5a2f2ea467394acad6b5aac378e3f7c4f96f2b53eb0b2b072b0f2b00ab08ab04ab0cab02ab0aab078411d56436e3d790f853f49ab098bdf041bddd681b1a2be050d56075617560f561fd60016098e60f9b00258212e45256b453ae56e199a776e99b02c0d1f180177b7ba16a5f9d43f8998badce1057c5256cb067bb0521a2cb06c0fe2adf774f73d854be5ed461af8ae785fa2c828d9a4efb245776d48fc30ba0af618f644d3526b77d853d8b34462bef4c0287fe10b7bae582954de587fe37d3c97b0172acd2e6c1eaf60af7589aceaaff285bd81bdd5f54389fe6e565ffdb577b0f7b00fb0d9ac13ec33ec0b6cdee5069bad79c07ec27ec17eebcbaae87ed81f7dab123d133b0b3bf7d55f3b0fbb00bb08bba4b33bf709ec1ffdb52bb0abb06b5fbed4df71f7cbd7aeabe626fa6b377ef5d76e6a26afdd82dd56b3d01ea83fab83b9caf75779fff0b53b6a0da8bf369fbda7426b60f7610f54b650fdb587b047aabfb61f2baf4a32feb050fbc092de024d2de1fe85e997ac915889b8d3638f6707b043d8116c1e9b3f7cf93cb6f2b575e9376c17365b968af9f2f1327044f74d4bf83a633813385338333873380b384b382b5d5f49fbd01a619bd3f9373f27b412750bce1ace06ce164ebca8d5d9c339e89a16e708e7a4709df3d73e38acfcaaf6c1b9e9e24a6bfc350e761dce5d2db2f380f384f3d231c9fa4e6daef3d6f988464eb1d238b04f3397bff6817e82f3d18105da5c271b23eeaaf2d2e6ea226e4f113b395561270fa7a09657555825e6db68c029c229e9c48f5356be8a72f9f51c8cc22f5fa7a2c2f8d8a9c2e123b1c5fc6c538dafd382d3d6359b4e4757b6385d383d387d38bcf750f93a2330967302b50f4e08278263c47c4d38c467c77c1ddddaa5bf45ddfeeddfca960eefb17fdbe47efb37c7d56df592fecdf1b45b7352707897cc6fffe68ad2a4ce2666819acb0f4dfbdac56d3370c7608fed4ee3d8a10b77a6643b71cf4671e7bffd1b7d5e976796aac2ee4a1153687ce930b86bb81bb85bd565aab0cb2bf7700f708f89c47cdd135c5e7ad1a962f7faaf7c15b17bfbf2e59932afbf2b5ff701f7a99bf7b9af2f5ff7fdcbd7658559b839b879b805b845b825b865b815b855b83535112e2b69c06dc26d295faba5ef46edb77162bbdb703bba5701f9ba44c00afbffe23fb80385dba07795d6836b5d52bd2f5f02a50a5373c997ca4bb854ea266f3ac4aaa531db238e7da9b07fe59bf80fee48cfd36830f0a5ff406f8c2aecfa8a5825801bc28d6259ab2e53855d03ae0986acae9d48327f617d937418535037fff46689f1256e35c757edf76aae1ed0fff5b66a7f95a62329030cab5c17ae2769f6d663dd0e22634a96374ec1e5779e8127ba97a237863781378537833787b700efe2ade0ade16dc03ad9b3793bb5b6d45f2f7e2757b602ef20e93dbc23bc13bc33bc0bbcabee2be0dde0dd75f19b77ffeaaf82fe37fd255f454c2890624aea4d35cde658c3626f00ef01eff9751bfee86fc297a6999d9ef782f786f78197859783978fa5f0f5cf4a7ca8a2aaf31fffcc2bc5ce994accd72b6bce03f9d23e7895d80e94e155d58bf81551b274dd3c46e586c61769135e5d7733daede035744da1d7d4ed28bdd6d75da32fecb5e175547fbd2ebc1ebcbe1a047da421bc113c1f5e002f8417c133e0b1420bd767c257f31f366f9db5da04f488414fd173e0b9ea9f791e3cde28ad69255e26f6cf5c9594a8979682ae5e4b8d919aa84da07160cfa69ddb54714ffbbf7c47f2d5dfd4f4d7f8a6664a999a4bb874d75273a41648f1fc4a1766926c6a8dd406a92d523b45fc7f11f75edb8eebbaa2edc7f05dcdd9d2a373ced96f9d929c73b6bffe02f2a89a61cdb5f7dd27ac530d4da5212b90dd300852242070bf7639bb37d983c91e4df6a44d5c24115f819b3dffd8dfdf7cc550642f2ab1828a18078d366f55afc56e64e5d39bc9de4df6a1cd5af619c5df896938ca4cdb64d56933d9b7c94ad1e5c179939562154db664b26593ad986cd5646b265b37d986c9364db665b27255c764bb825883133ca5ac3d93ed6b9e46e9146507263b34d991c90a38a9f354d7bc5da40033939deb427775d426e6b0d1f64d7e4f97aab66fd9b8ce1ac9269c62d669cae5c96806c951ad84701f0cf50d85d85f69dfa41dcba64c561e943159a1e19aac675c478d6fa7a3f14b5d8c6b8deb1b37d08173d9bef691cd5d1a37fcf12bc4ff7517c695232be3aebff22f7ce7919d15cfecdff0fdf698457f8dbb31ee5603c2b83b0d4e2b0a2bbf62f7203db79fc5c7eed1b827e39e75fcccbd18f76adc9b71efc67d18f769dc9771dfc6fd183767dcbc710bc62d1ab764a427e656cc7266dcaa66f35c5e34fd7b181ab766dcba711bc66d1a51345de25ed54106f1160e52b1b6713b0a5afc33b7abaf87c53f6b08919eaeab3a558ddb57c4ee40117f955a471eaeea9f8992bad178983b8a64acacc55d1b456fe3c52fd2aacd22b873e3c6d40f9b6575f9f6b79721ceaf5806f9358b6d7493c64d4564d35ff92b5fb1bf6e464c8176cf5c113792ecd73ea889703db512f3a5535f1bcfd1d851e2027be86a7931bb8bb9c634f2ac3abfd23ff67ce305c60b8db730ded2782be3c9c91be36d8db733dede780765ed1d8d7732ded978176ddfbcabf16ec6168d77375e9410fc9552bbe13d8df732de5b9757781fe3e574a1bb97375e41e3147a727e49675c6f86c62b9be5d9a9a97150cf6c5c325e45b7d2c590d641c8b65e725c1bb7c6c911abed55f5ed8370ecf6f565a5575311b7b7dcd0b7415edd780de3358dd7325edb781d9d98e3758dd753ca5edf7803e30db5e7e68d8c3736dec47872d5ec2b11df464e8daf748edb53b50095b3ba076201bcb98a9a82ab1ef1628e869a5b6aeb57165271e349b593c6132869e3658c27cf738de7e138e250386fd9010d1bede3043821ce026789a6205be36c70b65176cf3dce01e78873c2393b831ecec56c4738579c9b1397cbef68668027ce0be7ad2b58ee81699dcc49fefc3889318e2e7457b28b85336be3e44daf86537006317d3731ace214d5d40e7b5147ae20feb0be7313e56d8afbfcc6299b40ceafe0c899351d121b8ad991a2d6d1f0f24d9c96682e8edc595c80324e170d3fdcff524633a20fd1b4cc529209ba6a7446944150e4ebffd6156eabab8a19bf38a59d4a7d1d65b5a8e88e48632e8213d36c0cf52c1a6f591cf7249a02288de67e90832e8e28b3a388559f41636cf86888d4108d6ab844357c8d76fbb6e802c83de68006d2389989fc79d6e865ce5b175cd46298cb777e2aba98fc86ae177ea02b45e537ff36812ed1333b79564e27e954e5b43ca6a01105561574c265095336fd31a6a22fdbef5753954baae814e2baa9ef9d8c94ad817879fe444718a6134ceb27345c5c0ad946e71d75d137897da237bee83bc7b1a915301335b55929f91423d643fa4bd2a1973248b1e3687f4625e2abb3cabaa2bcd2c51125955e88e66011296d552a7b95083aea946784af531752d2428bd9f7502d8dc257cb7f9e0f16641b40080b58c20ad6b0812dec600f07382a5f4e70860b5ce106777898c95127e694debfe757c3135ef0860fe4200f0573971b16c5d442299ae7d0803254a00a35a8831c914f5b3ae3bc7931d5bc139307b541d45076baea21cca63af03896937b91f46100c34846308689d94915a40c33989baa9c198b240e0948420ac4d44a1d339005173caca33122edf7fd85c015fd8d9c5f81a3aa2a40457335abdbe66f5aacb642fe2c6fb016eb6303e76314a80db10be793c02eb12be793c2aeb172da16bbc3eeb107ec117bc29eb117ec157bc3de95af7d609fd897a966b1faca475f0397a5301fa71d333ba9e1189bc3e6b1056cf187affc0ca99869135b8a62a27735d471a768f652b732b682adea8cfe9adcbfa633ceab455d975209f4605d8a51c736c4b745bf21019dc6b6be88cd5dbecef1cf50af58de9994aaad537a456d6de7eb782962db8d104b957bd83e76801daa59b023ac147822db5f7c4b3a5b073bd5d42bc251d4f60bf7dff0c5ceb072237946dc1195b2f20cc1214cd35fbed84cf469d6894db12ed6c37734e6a7eaf719dfe2fbe690726243fc003fc45fe02f75c1717585bf12bef8eb3ff335abfb97af291ef037ba8448f8fa5bfc1dfe5e6342b6730aba57d1771375b9a79c763495a1c26d1ccdcec73ffd5a9a220f3d9bca14ff22a6565555c8fa57fc5bb4738f1ab486c0c57f98f81eff89ffd229e9d57a347673c47fe37ff0e5893d5d07506de0e7f10bd2a0e11795af5ffacad7fed6fe912f7e5973dc7c29ff3bbe7ec5f92495af5fc5affd2b5ffc3abe3cbe892f456fe377f0bbf83dfcbeb9088501bed4560a34c69fe04b9d67ff9b7cf1c53108ffccd789093b296a1c3ff145fce5ab0eef2cfe8b6ff237dfafadf847be11d914beb4e71335b842d676d538fc2ff055b8ff86afda073fa316c01782ee6fbee6de8b707ff98aca88dad64db947e0683601b1c98155be814f101084040b8225c18a604db021d83a83fe7fcdf76b1ffe996fb0fb836fb08ff82e4473ffe01b1c0814bada87e0f407dfe0fca3bfba73ff2236b1fd97afda07ff457051be819c96fee11bdcd444fc892fc1fdc73e085cb10fff05df1fe5cdc833cabaffcb4afc856ff0207812c8b3df486baec13ffec437c81314547f83224189a04c5021a822ce5020071b044d8216419ba04320d0e56be8ebcaa17134f1b4bafb4bfb160c0886ca376adf7ef84a6bf6ff83af6908d611c19860f267be0453d39bfef00d6604f31fbedacaf52313a1af82086204717512d46d982b621171c5820441524529ffc9fe0629b5bf41fa97fdd559391fe51b6494afe0fb6ff936e491590237e2eba9fefe23dfd051fd9dac088d7a13a175661b429f30200c0917844b42f9744d28c7b784bbff866fb857bee141231cfff61fc42c085f71a4fe6c1fc2e3bfe7bb34b507e189f0ac7320d52edd092f3f70c3eb8f28e59e0e3264c5431f9a54519bb27fc737bc11cab572dba77a66a2c2ca77f46ff92ad9f025f245fc97564e0dc52fbee1fb87afd887f0439853bea1902d1016956f58222c135608e5841a619db041d8246c11b6093b8452b81e619f70402804478463b512e144fddf88af98881fff2c9cfec157fddfdc0fdfdaee375f6ddffe916f38fbc537309549c4776e0629c25804341ec14d4464c5451b68181d51e188aff6d6c4d50d2e8449a2d7ec6a7943b936ad2288c38c9a88304b284c3c168e6af1e2eb9f8d7bd1da15699da62c8c5adb62a82961ff6c7fbf7cbf88bff6415cdb8565e1b308feccf7fb67e49fc947218b058b258b158b350bb96acb62c762cfe2c0e2c8e2c4e2cce2c2e2cae2c6e2ee0ca46e4fd15f160f11a73dd31892d1fa4d164f162f166f16f269ce2c13ea9fd95ffe59a9cf22affed932c6a2c0a2c8a224aa1a356b3155de4599458545550f2e6a5ffd655167d1f8d1df4553e507b1da87affeb268b168b310b7444a28df6247f996a576bd8878c4576cb11ae5e93fe82f0b29d980c590c588859463c262ea543651d65d213213f962fdb115a5b353144c73165293388b84da5ff1cf1622a9e8789a4586459685cbc263a90be5b49fb1b42c7d9601cb90e582e592e58ae59ae586e596e5ce145c967b0d2aab81ebd1f4168396346e4e3ccef2c0f2c8f2c4f21c2d6b1f21368116cb2bcb9b46e14cc9ce5d712f1fa63f60f944ba619595296559bef5559bee7c447445f64c2ecfb1ccb32cb02caaf15d9658965956588aa25cd41d5ed6a4d133f717cb3acb064bb9b33caecdb2134957cdf1b2c7b2cf72a0e662396429b71db394fd294bb9e734e2bb9c23dff952ea90701af24152faee2a8993d801a7249d37f981cc9dc49e654a8e185728a4cd531865584aa15d3508a2b36f41e9b172f48868f1ca68c76d6559f9ace4cf90d582d592d58ad59ad586d596d58ed59ed581d591d589d599d54513b3c4e3ce60cceacaeac6ea2eac593d583d59bd58bd553d571f5da2d6efb0cab192b67b1791bde94a9a957caae1f67ef477558a9cdfb8fabf1a5a20c5aa8c74a0575556b5e8ddf080559d55835593558b555b1d8955e7e75545428ada65d563d547cf1cb21ab192b2455d8cd59495706cab53bc9ab39223715609564956f2a0e8fd05ab34ab0cab2c2b979527c681f597ef4e1332adb573ab16598f5b27b115d6ac7dd6011a715a0e2e22fd959d25eb95aab31c59af596f586f59cb4df6ac0fac8fac4faccfca777d617d657d53beeb3beb07eb27eb17eb37ebcf4f30f5f8c25cfbac73acf3ce48ee56605d645d625d665d615dd590dcf334eb1aeb7a34f7bfc5bac1baa921bcb71e6bf9b3ad91031af2888ef6d6d65dd63dd67d39c87ac07aa8e364e985994e598f588f594fa21de9319f751b3f9b84a7c6c1b659cf584bad63ace3aaa46ba96392758ab51420c33acbda65edb171b467bc313a16b0b1b28df86e7c36019b90cdc291fef4465ff6b059b159b3115bbc1461b3d5948f2539b873323b367bedad6d0e6c8e6c4e6cceda8bdb5cd85cd9dcd8dc9dd79bcd83cd93cd8b8dec7fd8e4d8e4d914d814d994d894d954d854d9d4d8d4d934d834d9b4d8b4a3c44d25677267d361d365d333813cb1cf66c066c866c466cc66c266ca66c666ce26c626ae4abd49b049b249e9f84f454e4eeb1ca7ef6bcae8c50f9b0c9bac89497d5d1d441f88051f1a61b4f1d83a9ad74b77606ba3ad6f7a29b68178666c43b60bb64b1d1bdbaed4c86ed76c376cb76c776cf7dab3d81ed81ed99ed89ed95ebe12f1dd5ed9ded8ded93e9cbadc452e7e39c54047c0b6ef5ff2d1209eab996cd9e6d8e6d916d816d996d896d505de56d856d9d6d8d695f8b6c1b6f9c377db62db56fddd76d876d9f6d8f6d90ed80e4d461e37623b663b613b652ba59c472985b69adb6d17671b632bdb04db245ba96d9a6d866d96ad8b28e9ce31a2953bc30eb3759d81756a3e3b8b18845df0f3626d5cd59172d94e5eec42760b764b7d83d9ccab7336aeb35b0959f390fbacd96dd86dd9eda2ed9edd81ddd1a4657b6277667761776577637767f760f76427f77cb3fbb0cbb1cbb32bb02bb22bb12b7f25e2bbabb0abb2abb1938735d8351d37ceaec5ae1dd901159d927392839d68db35e7a49ada5def2ffafb8baf73b7ca77d757bebb01bb21bb11bb31e26689b395913f67ece6ec6208c15d825d925d8a5d9a5dc69ca50259cdf991e8ebc2f79dcbce63ef68ba38f17df796bdcf3e601fb25fb05fb25fb15f9b6e99fd86fd563537f562bf63bf677fd019bbc358b4ae6aa83b42b93f657fd4779771b9f0c4feaccb7d1e5d13bfb2bfb097eded4704eefecefec1fec9fecb51f6dfca71ff619f53a67bd92fb02fb22fb1973254d857d9d7d8d7d937641bf1dd37d9b7d8b7d977d877a58933624484efbea78823f9811b930acb39fd3ff8ee07ec87ec473ff6613ffe83ef7ec25e2a33633f672f28c78e34ebfb38fb04fb24fb14fb34fb0cfb2c7b97bdc7c141b3198aeb5dd79c35549d785207320f9683cf21e010725870587258a121a6ef1c3626f5e0b0e5b0337539b837fd21870387238793bea39c3cf435c46ba791877a737d0f246a2b709b399d38d28fe974dd7e4ae11ece1c2ed104865814ddb0a307c5381ce4a31bf22c51d2c343c91e9e1c5e1cde1c3e4af690e390e750e020fb250e650e150e550e35d9467c0f750e0d0e4d0e2d0e6d0e1de1eb54771cba2226ca99e7b8130e3d11c715ab2735ec6b5326f6e130109ace7ba5f6c1f007dfc350f91e46c2d7194a9dc71ce4cf29879949cbe3e61c621ce21c121c04628a439a438643d66c3b9ae7a394d65414d24d3ab81c3c8e8e263a3cc2d172f439061c4323b53d2ec42cfce62bcacb51ca7630dd3ac7d5dff9567ef195e359b9e79ae3c6245c8e5b7def3b939d9d8822d6d7ec11dce39ee381e3514dedf1a466e178e678e178e578e3287f3e5444a905faf1a96ddaf1c5f1cdf1f39588ef31c731cfb1c0b1c8516c4753da379df2e4c5a3f4217195f84753316cacecfcf03d9639563856d5fe7ef5f75853bec7ba1e11be621f8e0d8e4d8e2dd5df639b63876397638fa37c34e038e438e228974c384e39ce38ce8d58a7f9edcbd79948e963bff8c6392622be498e29d396a2a6396694afd8078de92fbf862dc7ac4e7caa9638ba3a31a7ddd419fd4256b4d595c779fa12fe175f9d299d96e76e15ebeb68c401fdf2fd4af6a02f7e4e8e26b03cc1c972f23905da711039859c169c9691ac38ad396dd46d386d55794fbbaffc7bbeb92887f19ff87e11ffc1f7b4ff335f4e87df7c9dbb94e3c8e9c4e9cce9e28c0b9cae9c6e9cee9c1e9c9e9c5e9cde9c3e9c729cf29ce48422a712a732a78a98054d68257cb31de57baa1a71ec84efa9c6a9ce497e6a5ba7b7e5d4fcf2752ac6a93bd2b239c38a91d66f674d456adbd2890d8368eab92016cd8daf7e4f2fe3d4d6779a115f350529294047df51caced74a08dce33ee2dbe5d4e324f51d701a6ac7f724951d739a28eeef7b36bfa8dcad1c99729afd977c4f734e51bc6f4d66e1fde6ab5372be8865a7f827bea7784433f1e5ebbcd3ffc237c9296596524af9ce339cb29c5c4e9e537d717694efd9e81ba2b3e5ec730eccaefd3fe2cb39d4e6ee2c8622c9792994355c4eb7c279154d405ffe4c8314d19dafa316fe0ff89ed79c37eaed9eb79c779cf79c0f9c8f9c4f8afb7c5611b7f77cd13133699ccfb7ff86af39741468c457114770ff908dff6ff99eef7fe17b16553d3bf2f33f3f390bcd37e70f67019a378922e70267d9963897390b8e2ae71ae73ae78606cbf847fb207cc53efce61bd9875f7c9b7fe13baaff2b5f55deefdc9cb4685ffbbfb10fbff93a3de57b6e457cdbff96af8e39484d3bffc4f7dce52c77e9731e70966b46c294f338ca3d16f11575fe2d623a7ef33d4ffe81ef79fa2f7c67ce472a3ce71ce32c774e20eec739c5594e164059ce2e678f8bc3c570e137dfbfb76f17fbc357fc30b1bf179f4ba07c75bb10f9edff9a4e4dfddfd8426795e9dcdec7577fb9847fe6fbbb7d53ac6e82cbe277fba68ddb6519bd7e8ff85e566a1f447f85a31807b11297b5f215e370d968cfe2b255fb70d971d92bdfcbe12bffc2f77254bed9d4dff84affe22be24d70397139ebe0d99ff95e2e7ff07d8cfec2f772e572e372e7f2e0f2e4f2e2f2e6f2e192e322752e28df8bf02a712973a97cf98a8950be17296b8d4b9d4be3cffe83a64a10cf49fc07f1cf2e4db5bf225ffb7b6999ca58edaf742252efbfdadff68f894807a6d3fff255ff4cfc07e17b54b58de640c6fef01f2e6d2e1d2e5d2ebd48612fd1d8588a4b9fcb20223bd426ee32e2223515c453f51ffec2f732e322df438c4b9c4bc2649a7fe79b4e2bd62f5fe3ff85ef2519d1fce1cb25f54f7cd35ca4da592ec2d1e3ea7035caf70a57cbd5e71a700db92eb82eb9ae8c3489eeeb87ef6ffff74f7c85a3f8675cd7cab7b9e7bae1aa9e83d88d6fff42d7adc502f57345792bd14c1c717e85f2d74afce2ab13cb06bff846fed90f5fb1c8dee00fbed71d5779ca41273608c7eb319213d733d70bd72bd79bfa6dd73bd707d7e7bff867d717d73757a9708e6b5e1d5e217b7ba8fd1587216ae27ef595557fc53e187193ffc6f75ae05ae45ae25ad623d70ad72ad71ad73ad706d726d71657296b876b976b8f6b9feb80eb90ab9c3ce63ae13ae53ad390dfadad46520f6e5ce79ac1e95936d2d9b9c6b8c6b9ca83925c535cd35c335cc55f4ee1949c6ea864db658de7f05a683087186a1c84a938bffdb84e7ffad5c5502b91cd7275b97aaca7dc1cb50c37a3f32f6e969bf4652e2a475dafc22de01672931396dab9b8adb8ad23d970db6ab76217752e6e3b6e72f281db91db89db99db45b611dfdb95db8ddb9ddb83dbd3a45adc5ec6a63531961e7feb2221e90edee4eeb2cd7393db15b995b8954d4fca54e156e556e356e7d6e0d6e426776873eb70eb72eb71eb731b701b721b711b739b70935acdb8cdb9c5b8c5b925b825b9a5b8a5b965ccb3e978150d1f57964764b9b926298ff0b83b9a24fd8ece1a912e8cd8a5bba8611d5335f32cf750a3184acb765f705f725f69589cd84aa7e1dcd7988ece9136731376b96fb86fb9efb8efb91fb81fb99fb89fb95f22b972bf4572e7fee0fee4fee2fee6fee19ee39ee75ee05ee45ed2aef0bdccbdc25d766adce5d10dee52b61677796847b611dfbb3cb2c7bdcf7da07ce372cd90fb48e7f30adffbd8c4e41613ee53ee339d247d9f738f396fa95e5cf9de136cae8e5629f917be77e1d53593347711b94a10b8dc3d1e8e26927fc0c3f2f079043c421e0b1e4b1e2b1e6b1e9b28bd5dcb24663cb6ba82655de3b1e3b1e771e0a12f78789c549ca22ecaaec9410d9ac3e3a2411ba4f3b61ef0b8f2b8f1b84770bbba4025f551ca66cee3c1e3c9e3a563928f378f0f8f1c8f3c8f42b453fc25251e657de5f3a8f0909bd714e2a3cea31149534718a43721066157e6d1e2d1e6d189e0767ecb976f8f47f787ef43f6fb3c06e83465cc6aca63f89baf26413719937e2116e021859bf0982adf872863d5796f79cc9d7ba07c1f311e711ef251d26ca532291ed26449a1333ca4c42e0f8fa7c3d3e8d4a7a7e5e9f30c78863c173c973cc5bbcaf05cf3dcf0dc3af115cf1dcf3dcf03cf23cf93112d7b9e795e785e4dc5fe856f22842ecfdb1f7c9f77e312816ef37cf0141d92dbbe78be797e78e678e67574fc598876463c8b919478967956b42bf1acf2ace990a340d49fff89679d67836793678ba7dcb6c3531edae3d9e739e039fc4ac4f73952becf314fb9d1d4aca4da339ef2bc98a830cfb8994bc5123c9346fa1a6ed22027a478a64d4bb61933d8eb80c333cbd3e5e9711868a7eee5f032fa4ef26579f99a2faf3f767a315e01af90d782d792d78ad79ad786d796d78ed79ed781d791d78997b0934f2fbcaebc6ebceebc1ebc9edabf78bd78bdd5268caa3af2704cf1fa68c427e1fbcae9d26cd15ff931bdf2bc0abc8ac254a7c97d95372e8f2bf12af3aaf0aa9aa6ecd778c93d1bbc9abc5acaf707ee2fbeafb63a0caf0eaf2eaf1eafbedad6d780d790971c1ff39af09af29af19af3920ac679257e4bc4f795e425a54cf3caf0caf2727979bc1d4dec260a2b70c502bfe16d75c2fa069d3e3dbf22f6e11d681cb92f5fe925bf43de0bde4be7319683bc57bcd78ef4dcde9b9e58f6f7d6f17d23bee47bc75b3e3d38e31bef23ef13ef33ef0b6fb9a71cb9f37e6856f2dad649be9d6c9bf793f78bf79bf787778e77de486fe85de05d5417ed5d52be8940d32e9562da73dbef7442c9bbac2bdec3954e86b4037d4f213b414dd312eb9ccf0661dc24073abc1bbf9bf45107711ee568d14f5227f88bc4752526ef8af27d5779d778d7d52b10c74bfa0eef06ef26ef96c27d4b213bfad15b2adbe3dde73df84ac4f73de42db788f4f72d2217cc78ff557fdf3155e177dc1857c7d222fd15bebc13621f94ef3bc93b85f8bf3aa216a8d1786778679d99dccde5edf1912feccec7e814c88f35bd1d1f9f4fc027e4b3e0b3e4b3e2b3e6b3e1b3e5b38bd6b665f9ecf91c743596b8cf9f239f139f339f0b9f2b9f9bf6320e7b6dd6a2b865aabf95f51ffafbb92b5f69d67e296fc477656cdfcc127c1e7c9e7c5e7cde7c3e7c726a707527ff4b0ac29a4f918f1c2ff3a9f0a9f2a929c7affe4aa749f4f7d3e0d3e4d3d28f3e6d3e1d3eddbfeaafd8df4f2fdaf6f90c4c561e3934a95eb46a706aa4bbf51969322c69d93e63752aacc367c267ca67f6d3be7de67c627ce27c120af723c54af149f3914b8491cbc723e790333af92667c9f9e4027221b905b925b915b935b90db92db91db93db903b923b913b933b98be3d5c85dc9ddc8ddc93dc83dc9bdc8bdc97dc8e59ce98c5cde34e4260568912bb271c995c895c955c855c9d5d4e0e6eae4c40e14d5a9d8cb9d9b3a3727d7d285eec2513a11fb67b4a8eaa00b804454859fca37d726d721d725d753f72bd727372037d4717469dfa443911be9b0646e4c6e426eaa4d5c6ef695886f6eae70652b7c7331e1eb78595dac1265dd15a6c257b1eeb65fbee4e2e412eaede692e452e4d2e432e4b2e4a4569ef38c69fb9677c81b9d479ab7e47df201f990fc82fc92fc8afc9afc86fc96fc8efc9efc81fc91fc89fc99fc85fc95fc8dfc9dfc83fc93fccb889dcdbfc97fc8e7c8e7c917c817c997c897c957c85731b2ad91af936f085fd3946b9be45b0a34dffe69dff29dc8f8467c9d6886a4f486f25d48ea5a2a2f5af1233b5929468f7c9ffc40ed437e487e447e4c7e427eaa4e587ea688f373e52b70a5439c8fe9b07a3e4e3e413e493e15495ab611df7c867c96bc4bdea3e09854978274d312fa9242275c5d34088117a76035159994b4e053082884141614966270b5712bac28ac296c286c29ec28ec291c281c299c289c295c285c29dc28dc293c283c29bc8c38008537850f851c853c8502852285128532850a85aaf1e448cd1ce46e750a0d0a4d0a2d0a6d0a1d0a52c89e46344c4821fb14061486d1ce88c298c284c2d48816176614e63a83a410d39d82d4224121a9dc0b290a690a199dc350c8ea0bf6829cef09561569368a8ece7310a742a7448e299ac8db2d51449db3a2a5e8530c7440a718aafe16171497145711e22fe5effbf9e29ae286e296e28ee25e5db1e281e291e289e259ed43f142f12aa22b588e31ed6b146faaa1f738c5bb19c8550f8a4f855b94c74837af68a67b8a1f8a72669e6281629162c919ca6965e3ca9f158a558a358a758a0d8a52dc16c536c50ec5aef22df628f6290e280e298e284af5a454538a338a738a318af2682958d2bca492298a698a198a598a2e458f9243c9508292a5e4530a2209292d282d557f4b226b9d985eda50da2a593226297ae3463a3b50d0df7924e254947694f6940e948e944e94ce942e94ae946e94ee941e949e945e94de943e947294f2940a5ff9d57f2b15299528952955285529d528d52935742c38fbd25e46a949a9a549d0c53a1ffac664d50e94da943a66b056152e7529f528f5290d1cf18b857269486944694c69e288d7529a3a81547246694e49ae9523094a494a294a694a194a594a2e258fb243d9e85cffb2a5ec9bcc9d724039a4bca0bca4bcd2f843e2e495d7943794b7947794f76693a67ca07ca47ca27ca67ca17ca57ca32c973f283f29bf28bf297fa40b67fa31cadf95da6335b5e23ff872799e72817211e93796cb942b2ae2b749fb56ae52ae51ae536e449eafec3429b728b72977287729f7d42297fb94079487bf25e25b1e511e539e509e529e519e5396c7c72927282729a728cbb333916429bb943d2a0e15a36b1dc4b7aff84887aa12525950595259515953d950d952d951d9533950395239513953b950b952b951b9537950795279517953f950c951c9532950295229512953a950a952a951a9536950695269516953e950e952e951e95319501952191951f6ca98ca84ca94ca8cca9c4a8c4a9c4a824a924a8a4a9a4a864a968a4bc5a3ea5035ba56a36aa9fa5403aa21d505d525d515d57574506443754b7547754ff540f548f544f54cf542f54af546f54ef541f549f545f54df543354735ff95886fb540b548b544b54cb542b54ab546b54eb541b549b545b54db543b54bb547b54f754075487544754c7542754a7546754e3546354e354135493545354d3543354bd5a5ea5173a8195d7852b3d47c6a01b590da82da92da8ada9ada86da96da8eda1ee9f2d68ed44ed4ced42ed4aed46ed4eed41ed49ed45ed4ded43ed472d4f2d40ad48ad44ad4cad42ad4aad46ad4ead41ad49ad45ad4dad43ad4bad47ad4fad406d486d446d4c6d426d4a6d466d4e6d462d4e2d412d492d452d4d29164a865a9b9d43cea0e75a30b67ea96ba4f3da01e525f505f525f515f53df50df52dffd96886f7d4ffd40fd48fd44fd4cfd42fd4afd46fd4efd41fd49fd45fd4dfd433d473d4fbd40bd48bd44bd4cbd42bd4abd46bd4ebd41bd49bd45bd4dbd43bd4bbd47bd4f7d407d487d447d4c7d427d4a7d467d4e3d463d4e3d413d493d453d4d3d433d4bdda5eed17068185d02d4b0347c1a018d90c682c61271c51a6b1a1b1a5b1a3b1a7b1a071a471a271a671a171a571a371a771a0f1a4f1aaf68fba6f1a191a391a751a051a451a251a651a151a551a351a7d1a0d1a4d18aa44da343a34ba347a34f634063486344634c6342634a6346634e2346234e234123492345234d234323fb95886fc3a5e1d174681a5dcfd4b4347d9a01cd90e682e692e68ae69ae686e696e68ee69ee681e691e609f1ea9b179a579a37c42b6a3e683e69be68be697e68e668e66916681691ce68b34cb342b34ab346b34eb341b349b345b34db363c218cd2ecd1ecd3ecd01cd21cd11cd31cd09cd29cd19cd394d39274e334133493345334d3343334bd3a5e9d17222d16995b42c2d9f56402ba4b588b64b5a2b5a6b5a1b5a5b5a3b5a7b5a075a475a275a675a175a575ab75f72a7f5a0f5a4f5a2f5a6f5a195a395a755a055a455a255a655a155a555a355a7d5a0d5a4d5a2d5a6d5f94ac4b7d5a5d5a3d5a735a035a435a235a635a135a535a335a715a315a795a095a495a295a695a195a5e5d2f28c50683bb48dae2c6b5bda3eed8076487b417b497b457b4d7b437beb0c3ab477b4f7b40fb48fb44fb4cfb42fb4afb46fb4efb41fb49fb45fb4dfb43fb473b4f3b40b9ae235902345da254d1f28c6bd5da65da15da55da35da7dda0dd8cd20fcb235ab4dbb465a7ab734f97d59f59a7ed1eed3eed01ed21ed91c914746224d104bd93947c4c7b427b4a7b467b1e89ecc468c76927682769a768a769676867b5ab261de2b64bdbd3ce5bc7d1ed6b46c7d0818ea5e37f25e2db09e88474167496745674d6743674b611d908aeeceb911d9d3d9d039d239d139d339d8b69ca6302f5c63a57339ed0b969fcc9bedced4ee741e749e745e74de7d3bbc9911c9d3c9d029d229d129d321a015d1e57a553a353a7d3a023c56dd169d3e9d0e9d2e9d1e9d319d019d219d119d3993849b9c394cecc884df0633a31b233a71333d2c407724e9c4e824e924eea67eef477d67427ad5e702743276b927289abeb86c50caed3ea2474bc08714c17b8769d1f91fd76f4b6ad6b90efa26b7590aceb6be7f872d08e7237d021b4d754b98b6bd10de92ee82ee9aebe12f1edae956f7743774b7747774ff740f7a858bf5bdd39d13dd3bda85e77af746fda61ebdee93e8c7c8ddd27dd17dd37dd8f065d1ec7644b374737af7cbb05ba45471aba6ec9ace42665ba15ba55ba35ba75ba52ac26dd16dd36dd0e5da9408f6e9fee80ee90ee88ee98eec4d037d213eb4ae56774e7cab71ba31b17c44e5698ca7e82755fe7a977933f7ca52bf19dfbff5d55217c056e5717047cf9e23f956f371dcd37f5e866feceb79b55be5d575fbc773d7a0e3df3c3f7b4d3555caf393dab0311a2d1c2b7e7d30be885f4165f89f8f696f456f4d6f436f4b6f4e4ca3dbd03bda3ca6fbebd93ea6feffc3fe5eba48c93ce3af129bd8b0933f4aef46ef4eef41ef49eceab46ef45ef4def432f472f4faf40af48af44af4caf42afea64e5772d07e5cc3a3da946d388b9efb5b82f756d45a4bf663610d0fa67af4daf43af4baf172d73edfd2ccc14c4a2ce42bcd7d7785bf797862312dfa33750b2bd21bd51a4c2b3688db694761cc94857baf626f4a63ac82b707b331d3cebcd7f10f7623a90a63b717a097ac9886cea2b5fbe697af280acda879e4bcfa3ef28d9be2a8deea8f27ef9eea2a54b56f9f67de956687cf088af19aeffe03b3dfc457ffb01fdd029c69c51d23c7cfa0bfa4bf5c0fa2bfa6bfa1bfa5bfa72e73d7d3928cf3dd13fd3bfd0bfd29707dd8d33a6ffa0ffa42f777bd3ffd0cfe9c4e97e9e7e817e51757655d161f57e897ed9645dfa15fa555de92a70fbb51fc4a2c2bdbe42efd7355c4e62af4bdad67135b2fd06fd6684781a2d238e642b6593cbdbf43b3af87b7cabe60a5c253bff19a51443f11ae98e742e846fbffb2f7cfb3dfa7dfa03fac35f7c47f4a54a13fa5345fce52b2658dab77fe14b7f467fae7ca553f467be7d297422e22b57a5ccc3d24fd3cfd0cfd297fa7b0c1c677c6560a2e53a9681cf206010325830582277909b0f360cb648177cb0677060706470627036e28a0d2e0ce4f25bb492b84e7852e283bba612cc66183c18e802205d2398ddfd20febd36689666f0d2393b655f8daf901dbc197ca29d5cd4ca894c74d6f420cfa0c0a0a89d341de16dfccc1df9cd77506250d67d413fa8fcf01d54bf12f11dd494efa0fec37720d7c8635a0cdaea2d086581abad5cc45744dc8041f79ff90e7a0cfa662cc8fa3f7c070306f2e0910984c898c184c19481947bce40ce8f339073e49e29065267e192652065f0183a0c4db492dd32f419060c43860b864b862b8d9b336a28dcbff195620c373f7ca51d13be430d1af94b85fb7fe3abeb52c42008d6fc48518ab60e7711e208ee70cff0a0f3fdffb7f80e8f3f7c8727e53b3c33bc30bc32bc31bcff85eff0a1f2af7c874f86af7fe03b14a51838b12c43518db4334a33cc31cc332c302c322c312c33ac30ac32ac319402088e26c3969ae3619b61876197618f619fe180e190e188e198e184e194a13c57bea49b13df0b5f234ef730c6501e9ad0e9398387c9bc35c0c097af68716c1f2d8c1faa8908e5b464641f1aca77bb62988a4c41c43782fb07dfaffe0ed33a31475f5b34fea77c336a7f8742c1d5f64df97a8c9c1fbe23a38110c45113bee257c8766495efc8279736c3ed97af999e18058c42460b23c51a2d7ef88e968c56663767b46624d76e19ed18c9090746474672d599d185d195d18d913ceec1e8c9e8c548aefd30ca31ca332a302a322a312a33aa30aa32aa31aa232a3c6a6afb366a316a8b52eb9b0b652d5775304d72f55f1165e5b95d5daa3978aa0b31ea31ea6bc448e9a38a9f20d6603450ca5fe3206677341451c4a391da5f69df466355e1d1e44f26184653f51fa47d13d5feda5f69df46b3bfdadf7b5f077f478220c628ce28c1484e9242a41965d4da8eb2ca74e446223b1e6347f86a046569dfa4bb3136ca772caef5d5b9079af9621c676c19fb8c03c621e305e325e395f18f8cd78c378cb78c778cf78c0f8ce5a05c7e667c412cf2f8c6f8cef8c1f8c9f8c5f8cdf8c338c738cfb8c0b8c8b8c4b8ccb8822f575519d7a2e46c6b8da3517b683482e6c748e7625c67dc30d9a552ce2e559dc5a3183719b718b775eda0301d771877c55bd0a581df364d7c0671cbc672669ff140d5d924180f198f749c773cd6915fa1fc7d79ac83677287890ea48da78c678ce78c6368f55522be63b93ec938c558486518cbdd5dc69e7abbe28d89c1fd6aee6f11c41307714927a87d9858333d32f199044cc25f7cf9e13b5930593a81ecac98c8c91b265b263b267b5dfa353930916b4f4cce4c2e4cae4c6e4cee4c1e4c9e4c5e4cde4c3e4c724cf24c0a4c8a4c4a4cca4c2a4caaba4868528bb6f5481a4c9a4c5a4cda4c3a4cba4c7a4cfa4c06d176c864c464cc64c264ca64c664ce24c624ce24c124c924156d1391a4996498647585d0c465e23175981a8d63b2bde8db8aa965ea330d54b5a7a1f63ea60ba64ba62ba66ba61ba65bd9467ca73ba403363d2098440da767a617a657a637a6f7a88bfc4ba68f489eba526efa62fa36d2719c7e547f67c679de99e6f4fdfc3da13dba699e69c1d957991699968c917b4ab12a4ce5488d699d69836993698b699b69876997698f699fe980e990e988e998a9947eca541e3d671a631a679a602a0f4d314d33cd30cd465b298f67c447de6f9939a67664669861a42b38b3465ad49965e6330b9885cc16cc961a345dbeb6d98ad99ad9267a4b74d7782f33b9c3c6c46ecc761ae93071500763b667766026b73d313b33bbe8eb8cd995999c7667f6d00928b327b317b337b30f33b9735eb611df5981599159494718666566156672768d599d598359f3974859db9174987599f59ce783595f6701dfe49201b3a1f2dd96f48de76cc44ce8c89d27cca69a9951aa3b1399338b318b339373a43229a4299f65986599b9cc3ce60e73c31ce696b9cf3c601e325f305f325f315f33df30df32df31df333f303f323f313f9b8a5c753152b0f9d5248c46adaf69901de637e677dd0ee34eec1aade5942e465bd315cb1719c6351e5f14319df9434517ba9c357bdbcc352fb9f953e7afcf5f6a97c556ccdfcc3fcc73ccf33a45555abf79411dbb79917989799979857995798d795db611df79837993798b799b7987b994a9a770e77de6835f328cfe1c29dcf998f984f994abe8e3c7b987fac2f89d623e633e57beb78ad107c798c79db5d04938f798b3953f93cce5b434f30cf32c73a99247cc2166a2984196986f56196201b190d882d892d88ad89ad80669a0623b627b62076247622753910bcfc42e08355a88c6c5eec41ec49ec45e1aa15abefbd89bd887582edae68915881589958895895588554d7742ac464c5c9724b186c84f78d4c4ea1bea97589358eb1b928f589b58875897588f583f9201b1a1b687b111b13131b9db94d88cd89c584cb611df589c5882983c20452c4d4c6a9825e6aace2ad6886fcc23ee10371a364910c72d719f7860a46ff6d5df5b9378487c11ad388c54b8245f7b9cf8d2f1c417793bc638fe86f88af89ab8ec6c11b7c9de11ef2a7e207e247e227e267e217e257e437eadf107f127f117f137f10ff11cf13cf1827648e245e225e265e2154d535aea9b459b78d55caac46b68d06c8d3069a4258c374c65a45bfda96932585d631497d2b6d453aecc89b775829a38dd71a9574767ac7e257e8c021f3ac693e35d9329ebaba3788f789ff8405b3fc11d1f6ac498f8485f2fddc2e8a3b14eb3d4b9c02a11dff884f894f88cb83c2c463cae0d5a3ca17ce3c91fd1fd88afaaf69ff84acfea175fe7b1fe83af1c89a722be69e219e73e269e25ee3a0729a247c22161a2d84b96844f222011925890589258915893d890d892d891d823163071247122712671217135979aa6994bdc48dc493c483c8d3325f132a5a2d90ccce34d42e4432217a579d44c84b2e59a7286159de35e779c6ec87da1f1e55a557d9d9cc89328d01ea9248abfa4a431d733059d08ecf4d52e7f0a24ca242a24aa246a1a45ea1b082251d7191409d9699268e932b944fb2b11df448744d7a4a5e852e83e890189218991aa6d62fc23825874393151139190caccd43e24e66a0712b1af7d705e4f127181ebdca349ab890409796acae9ca93d2243224b2245c121e49479a138d1d96b4247de384240392b25d905c925c915c93dc90dc92dc91dc933c903c923c913c93bc90bc529c3852c2e48de45de3af6b9ecd86e62eddf44dd82090ab1e4e3b6bf63ec9a7d3769de6d0a9c749be48be65ab6945a4c114eb9cfc90cc193141e2c369104fa298721d0d582d929413f21a6ddd95821548164996489649564856356c49b2a6512092759d35916c906cea4acfd32a0a51a012f14db64cfa4ab24db283de512ee82bcde480e4f0970c7ecc856cb56222639d16351ba9fd159aa7a3da87445c971bcaf15b458fcb379c9c929c919c938c39b6debbb924a59e099249922992699219e3de496649ca471e298794d1986d294bca2715900a492d482d49ad48ad496d486d49ed48ed4d4d4e3898204bea48ea14c999d485d495d48dd49dd483d493d44bc322a6de6c5db397fb7c34786a65a45dbe548e549e5441e3f769408df14f70390d8a36922e8974ff74097d141f463b23dff825b6af318dc294c6d7082e3fc7e5a0fcc852c568adcbe42b11df5449f9a6caa42aa4aaa46a6a0a36be624dd5493548357f107f1bba548b549b54e7bfe22b2622d525d523d5273570ac001a3a0bc1372235263521352535233527152315279520952495229526952125c85c521e6947839da40d69485bd23ee9807468b673d20bd24bb31989e535a5aae6866dbf49af34564cf5417a4d7af3c3371d859d94fdf40e5d061efb836f5a6e7e207d247dd21e87d7f8e9438be4eaca579cfc3ff3f573a4cf3f6641237e4b77e6f1133726b86a940221a9f18dfe937cd337d2d25865457f956f5aea297596babdd5eca63fa473ca7753249d275d202d3b25d265d215d255d235d275d2529f26e916e936e90ee92ee91ee9be393e3589a92689d5847aa407dad69526662bbf927794d8f8adb9775bd17e36291643f872d8911e6a8818e53bd2a457abc19ff88e7e890e5f10c47e1203d48a3ff18d22be1a733288107ff5f7ff1ddfb1735868fb969e447ca7a467a4450163a4e3a66ad538a4134813914e914e93ce90962352568f8c43c66864c78c25e39309c88464166496cad7bccc3dd46463b585717a2264a40bde26b326b331dba4ae9b3de9ea016dd0ae5b69d904b1347a64b664763a52d19693f7640e5fbebf112b6551deccf19ff98a2988f86ab68bdf7cc59110bee153df27fd47f966a4e9779d95d4f9ace1698309990b992b991b99bb235eb3c0cd3cc83cc9bcc8bcc97cc8e4c8e491b63b532453427ca3529a4c854c954c8d4c9d4c834c934c8b8cea2c998e792645c80814a12c0f1d706eeaa2a27ba8b3afcf555d00b3cd0862ede36586e20e9bcad4f1e4cc91c6aeffc69fb4ad5f5678fc138232bed3c0d4afc30f5fdbff1d9febcbf727be9170ff1ddf488347a5bff27f9f6f664c46804ec9ccc848e74cc8c6c8c4c908d3a4ce5ccfa4147146f065c864c9b8643cb20e59138db758b23ed9806c4876417649764576ad516ab31bb2db1fbed99d2056c9eec91ec81ecdbaeb545cb2a79f34c6b23d57c99e95f835a57e71ec63ea678d4f9bbd98514fe3f7f56b223a8c295835b8dc96ec55530d899b78b8aa9dfdc691d3507df97fe44bf6f6133f4ae05e8fff29bed9bbb3ed937d880a3b5bf953d0bcc8bec97ec8e6c8e6d1e8ec75b245b225b265b215b2c2a2861e94fa37c9b6c8b6c90abe2ed91e59b99b301d921d897dd0c85c59b9ed444594373b35fd2efb9539cbad6646b4555cdd2877b4fed91faa2f9c9d938d314c98ce886cdc0c136435f78222d691e228439674179944495ae43b4e0ac75f7110d3bacda6c426a846ff8edf17de357e9ff03d2dd40467857bea3fc33743364b56b4c973b66d6753c575708d46ca752dae6f96d28ea58cdde006b821e26cba4ba432d2257537e653c1dde2ee70f7b807dc23ee09f78c7bc1bde2de3478df37fda366807c6b92ee55d334f76273350878b7ae799c44d236cac75dd5ee46b7863885ee03a74c7ba89d37f719058c9ae8cb24ffa12296d769e9e8c4976f90fce12b1cdd97f2fdc69f74df7f898f78d9e8ba4e811bc90f5fa77a34d2fb743fb839edb9094437ff7f8aaf937f3af7a178be228e6d3bf78136716e01b7885bc22de30a41812e75ae6bac18b781dbc46de1b6713bb852871e6e1f77802b051be18e7127b8729319ee1c37664ae236c891b8ece0264cc332f5345f69f3e288b7e72675c4529a7b5a662097a74d5fb6723cab9d3757e07aaaa7df644de386a60410c914555e7b3c47e3cb47595954793d0da0ac9359cbe59f951adf8401d2450aee7856e7bb6b440895fffb7c3d1f2f10be8e2e3bfae82884717420c20bf116eaa2794b8d62e2adf0d6781b5395fd2dde0e4f2a76c03be29df0ce7817bc2bde0d4feaf0c07be2bdf0dea657c5fb98a3f4dfc678391df4f1f2ba68d62be015f14ad19be6ade93488e5a224dd2193a6060d5f55b01a1c1cafac1c13ab9fa4998278d457d10c175bcd64ec4a912a7ff0d5519eb646ab16bedf3c2ddfd19f30abef3b84ef69f98338d7fe0ff2fd8af255c1132e35bc3ad25e7b52c9165edb99c8f91dbc2e9eecf4f1067843bc910e077b826f8234d05a87395e0c2f8e973097b6913e88973455c12d0dce82f9c134e5eb1145cbe06535104f63a7d1c0cbf23817cfd3f8e0b59bbe7ef62fd6713463bc704cac3563b18820bea444ac632241f9268bd6b1246a42d63abe7502eb84d659e87a82efda0d3f6d9da57556ca5703751d94f2f6f09fe06b9db592dd0e544479393b2b29dcc63a5bebecacb3b7cec13a47eb9cac73b68ed4f96a9d9bdec57958e7699d9775ded6f95827679dbc750ad691da96ac53b64ec53a55ebd44c3d14b2d6a99b9adcad61a4cf66c5276b59a769ba0d9d3135907bca9f42a7639daec64f1ddc4d5620f694af00d5c46e0795282fb48a3b8f7232f4f53573b2188de0fc0b5fd1e8fd53f86a38c7f0f117be91fca7f8e63eda854bcb6703b1c2d6195a67649db17526d6995a67669db97562d6895b27619da4f311fa5279cd17639dac75e4120ff93e8ca3d1960cd6586b7c6b026b42e6c72f5f537d4acb66cdc29aa5352b6bd6d66c18dcac910b77d6ecad39d82897a7a99f34ab7c3665326f6bce4a737f349dc937a979843592dde2cbd79a8b70b4e6aa648d7cf7beb666e5fc374996ae9d138b217ccd5ddf875e86bfe53fc2d73c84af354f952f5fe97799b3355237399eb3266f4dc19aa271e548c99ab235152b1d3b53b3a66e350f8b506b59d3b646aadab5a667a384b6d60cad66681f6b26eec955a76e6baeeaa9d524b673abd94ae3510ea2a4d56473e24064ac6625727ff8ba4393956fc2fb83ef6fc4bba5d5d41dc60237f377bee6f6e5fb5d92f8075fecff53be1ad73eb08456831b48055696b565a3f6416312eeacc68f3b7ca394580dc973b11a21e26675b9bc94fe695e73ab2b6edf968fd58574794bc1523427d92fb16e5a5db351b13ae7bf66759ab9781272b06575e66cc7ea0cc89ea56feaf2b8c10f5f860a543a69def04f7c172a27395f9959e9ce7df90ad9d850b7be3c77a216e35116a74db9eb2bcfd92fbe9baf285fa7b2653113be96f9dff85a6202d7ea70bad8f88125a988e34992f2e094d511ad8c3887c257fc585df6964bff1e9f14be56ac91b40bf2abde8e359d83fef39dd843f9dac0dad05ad9595abbb2766dedc6daadb53b6bf7d61eac3d5a7bb2f66cedc5daabb53753985a7bb7f661edd3da97b56f6b3fd6e6accd5b5bb0b6686dc9dab2b5156babd6d6acad5bdbb0b6696dcbdab6b51d6bbbd6f6aced5b3bb07668edc85a29d844f557f8ceb2d6ca2366d68aa3168b5458cc50ec375f1d0489f8aa84d91fbe22dab8a973f6c3f71b34e6375f0d489bd88badb3366e6dc2dae885856aab9420a563ea8989ee6c7c6be5a48cb55912f2916bad27b8ac6f74407d5bd6ed3de13c86aabc2f479363c815beef2402a750b77e60fdd0fa0b677db2fed2d9ceacbfb2fedafa1beb6fadbfb3fede195cac7fb0fed1fa72ced94afbee5f9da47c7ab3feddfa0feb3f9df9dcfa2febbfadffb17ece8aee882af945eb97ac5fb67ec5fa55ebd7ac2f4f6c58bf69fd96f5dbd6ef58bf6bfd9ef5fbd61f587f68fd91f5c7d69f587f6afd99260411b2bedc3c66fdb8f513d64f9aa49c9cd2946319b973dafa190d6412e549a63dd324b19a6d68a26bbb5cf934abd37ffce2efe4383ff9719c8c86aa36aec072adefd920eabc89feea687a4bc40626daa21a2d6a67b336f06d10d820b4c1c206cb1fbe11d9487fb1c1ca794c6cb0b6c1c6065b6727b7ddd9606f8383b3ef3bd2fe04471b9c6c70366d63838bd541939a537edbe06645118287f4956df0b4c1cb0672f063839c0df23628d8a048b16e03f9b46c838a0daa36a8d9408e346cd0b48194b36d838e0dba36e8d9a06f83810da4d8231b8c6d20459ada606683b9d9c9cd633688db206183a40d5236482bdc206303a9a06b034f7c091b3afa72287d51273771fc99d49ebdb176bfebe5a4236743a39d8bf6f82796d43ff02d6a86424dc1227cc53c8a29087d1b06d13b37c786f2434eda7061c3e5cf1bcfd6dc862b1bae6db8b1e156adc1b6cc336bc39df3ded9706fc3830d8f363cd9f06cc38bb349d850ee7fb3e1ddd965ac3405e1d3862f1bbe6df8b161ce86791b166c58b461c986651b566c58b561cd8675671fb761c3864d1bb66cd8b661c7865d1bf66cd8b7a1947368c3910dc7369cd8706ac3990da56c311bca55f25029b6d43f6d4379a814cfb5a167178e5d18bb408dd3c2b78bc02e42bb58d8c5d22e5676b1b68b8d3976d8eda5af61175b931cdbc58e2021aafaff91f65ecbaee33adbeec5f05ce5285b87ce39c9513ed30b5b393adb57ff03f298b367afee2fed5d85a1921528f2191008500c7062384921b1dd1f40967c7eda1d43be5c30f7fa154ef65fe82ff375723897e2e3d05ae0167d1e58790bfd9d14fabbfee1bbb56dad291aeaf05db7ef2cb5daf3a97d1a70ee701e709e7697775e70de703e9a7fb13936765a70da703a70ba707a70fa70388b43382338633813385341eccc44319d391c0e8e79bb84b3122be19870d6703670b67076e275387b55e50c1ce058709845094e194e054e154e0d4e1d8e0e87b3d414b28e015783ab640114b6f92ec13dc13dc375e0ba703db83edc006e08379215785979dd186e52cc4b99b00a4b9b592515b21c1f336bb6186efa9dc9006e665f38855cd61ffa4fbe6d43a65a9f70f9739965b9f8f8f627dfa24fc99f7c37702f70af706f329aa5b710be41667f4a70ef70f9614fb82ffbc83fdf5acf84fb81dbd2de4bb86db5e2bb3a8574e1f6e0f6e10ee00ee18ee08ee14ee04ee1cee0cee12e447f5dbe6b059713e1d26ec404bb5bb83badce2cf6700f702db847b8fcac32dc0adc2adc1a5c2eb90eb701b709d780a7c153b26804d7a31ec13b81031ccf81e7c2f3e0f9f0027821bc085e6c47bc93c04be165f07278ec995de049fbe477e147f91a5f0ca315b8b214fadd6eafa49bcf5213eb1cfad284f667fd06efa65522e12b4b34715a7721e83dbe7d1ec43878cf1f13e1bd7efaf2987b786f781f782d78edaf7d80d781d785d783d75707cee500de10de08de581b99f02660e7df9bc19bc35bc05bc25bc1e3e36b78fcb82dbc1d3c4ef660f33be859f08ef04af0caf02af0f8d1357875783abc86720ce1eb35ed1ac332e06bf095ac26c53e884ff04f82d53fc377e0bbf03df83efc007e083f821fc34fe0a7e06ad6cfe15fe05fe1dfe0dfe13fe03fe1bfe0bfed4d15fe077e0b7e5b26058ef8fa8ea0dc2d7f6c427b655b9c5a97e5a7e9bd63c8a882cc96251afec6d7efc1ef6b9323fc01fca13d3bc01fc11fc39fb0af06762afd197c86c23958c05f0a77e6ebafe09bf0d7f037ca2a5c60ae48979cb92dfc1d7cbe80d3b1e073b2258d8dac5f86cfa971be6bf0ebf075f80df80cc240a02190e649f1d0d84b094e08ce081cd1dfc045e0d91bdef1110408420411821841225e73c06feb5e6ac220439023b820b822b821b823782078227821788bfe061f042d046d041d045d047c4b1fc100c11001273e463041304530433047b050f503822582956831bb6b0d7e96f9eb1346b1a6d3f86e1bac40571659718f2bc0e1446a3c19be61890a17f29d7fdd43b096e5b4830d82ad6d726e7608f6080ed29bafe8968ac0e29f088e22acca410941195c6b0555047c635d3a4258a6da734675040d047c8b815043a8648532f66b434278427846e82074117a087d8401c210618430469828af61b34d0c538499dde49d1ce105e115e10de1bd68aef46d8b937d207c227cd9cd31c237c20fc216c236c24e215d843df0fb140e100e118e108eed263f77624755845384338473840b844b842b8426c235c20dc22dd84f0ff7080f60f7313c222c212ccbfa22564306c34c39cd8aa034a4c613a351dd89cc66451faa9af486ff74c57bfb93af36d9d841247c437e3cc3b2d8040be2b08e5067c4081bf6cc2a7e36bf07111a8834444a9676e3802022ed7e42c47246e4803df3c843e4230ac0e62c8a10c58812f05b1665887244174457443744b2fe9b96f2950fb0c314bd10bd11b1d9698a798d5a88da6225a20ea2ae4c43e7fa5a7d237ca31ea23ea281988868886884688c6882688a6886688e688168a9066d442b4426a235a20da22da21d224ef980c8427444c489971155c0e8a31aa23ad8bd891a889a609f32d624a2ab6a123db30ac74a743696d5ecb8c69329416541f48ead6d2406e1d8f35c2d7cb883f4d32ee45ff88ac27ef9c6f4175f5664461c9ff8a0a8737c46ec2076117b887de98d9a0e11078843bb93228e10c7883943bc9f21cec155447c457c437c47fc00c79af10bf11bf107710b711b71077117710f711f319781531b211e239e209e229e219e235e14b244bcb2552cad4221276e225e23de20e612729ef7880f88f925e50c1c1197c0ee5d5c415c455c435c47ac236e20e622184834244ad6fde368312124272467240e12178987c447122009852f8773f548e662d79602970d4272fde1db48788b24929e965fbe1cd0fe93af2613bc2f91c4120dfe83ef8f0ac7a702740949822445922191519c4858ae486e48ee481e489e485e48de483e485a48da4838075d243d247d24032443242324632413245324332473240b244b31280dbea620c85a9c9848d6856c906c91ec90ec911c8a2f753df91f70fd9658488e4838578cf2a0ad39271524552435247524bac4dc490309a76620d5902a594891c3ef94909e909e913a485da41ef84d4a03a421d20869acb205584f99ef762d337ef2fbf7b5b65fbe56b35850faffc4374d7ff8b29e161daabf700b15beb37110becb54f8a699daf35b799259ba0e29d21ce905e915e90de91de903e913e90be91be907690b691b69076917690f691fe900acf2e908e918e904e9d46e71d96648e748b9544b6dbfd2764da42ba4a6dd3491ae916e906ec5b6a63ba47bf958d7e88a27971e905a488f484b02372d23ad20ad0ad6b486b48e5447da40caa919c834644a56a9e47a2b23cdec233b213b237390b9c83c643eb20059882c42c6efbc2d7c0fd6ff962f5771ffc11759a2754f7fe3cb6ec39f7cb3f4375fd168d6df2c13bedba6da16b3a0599cdd1cd905d915d90dd95d2aebec81ec89ec85ec8deca3c673647cb08dac83ac8bac878ccb3640364436423646364136453643c6572ec4ffcd96e20f642b710f3213d91ad906d956228b6820c621dbd9754e708fec80cc427654462a6f43c6392c23ab20ab8ae5cd6ac8eac874bbfe41c6c5692233906bc895fc77735b1a9172427e427e46ee2077917bc8b92ef5a451ed977d401efccd3efc9ed2f69f7c7f46d01dfe3bbe7f1987826f21f5ef887ae4a1bdc8597fbf7c91f3b363e409f21479863c477e417e457e437e47fe40fe44fe42fe46fe41de42de46de41de45de43de473e403e443e42cea59d209f8a92e63341c9af703e47be50363f62897c25a699ab35f61c54dbaef2a34de46be41be45b09d8f21df23df203720b39e7b384bc8cbc82bc8abc869c2fd091379037911bb868b828596bf5025c0897132e675c1c5c5c703076f17109644d69f61ffed77c8ba97cfe956f97d30d0bbe8dff862f2e913ddbe012e392e0928a7d60fb7bc970c971e19d2b2e375ceeb83c7079e2f2c2e58dcb0797162e6d5c3ab8740531d742971e2e7d5c06b80c7119e1329656b4cb0497292e335ce6b8b0ffc4b72f0b772d552b3ebb929f1753d36f52b9b175beac71d948f3e6656b73c575d9e1b2b789491d70b17039e252c2a52ced70970a2e555c6ab87011f8ca86345f5c380503574dab6f7155b2a2ed15b812ae275ccfb83ab8bab87a3f7c1bc95ff59b31b01bd5bfd56fac9557ff7fc1f71ac8f0c172a570c8f41facbff8cac12b5f13e11ae39ae09ada7bd8ad2aae19ae39ae175cafb8de70bde3fac095ff9f2b5c5fb8be71fde0dac2b58d6b07d72eae3d5cfbb6e21406b80e711de13ac6752210af53a538fd9968ee65c628d569c1646dcd5574fa822e1601e792cf4579f9df60c7b631c57581eb12577ea289eb1ad70dae5ce61dae7b5c0fb872ce8fb896702de35ac1b56a37e6b8d670ade3aae3dac0b589ab819b869b9275836fc08d703be17616beb1d859dc9c1ffb5bedfcf61fec34fe4b7fd935e64079b5fb3d82b9a8df2a068718b26a5e95537771f3447f05ee2fbe375fa4f0d2700b700b718b708b6de7c461056e2c296e196e396e17dcaeb8dd70bbe3c6173f717be1f6c6ed835b0bb7366e1ddcbab8f58a9d3e6e03dc86b88da4f3a4aee336163b706313b112cab7296e3321dee4ff16efcf6d39bb28b64bdc56b899b8ad95d3b477fcac0d6e5bdc7685ec713be066e176c4ad845b19b70a6e55dc6ab8d571e30771a19ab81962d3ef1aee0a775bdaeeef0476e4ef67dc1ddc5ddc3ddc7de1bbd817bdd8d7225ccbdd1c99fa3e4abf70a5f76a95dd2d252dc51c435746455f1391826fe7ac352ac59ab13aee32b3c68f65e098ed1ee21eb188d160bd66d7d8e44cc4b827b8a7da63a3d63eee19ee39ee17dcafb8df70bfe3fed01a9ccb27ee2fdcdfb87f702fe0de593a3f88b954aca16c61ef5d9bebbd7b0ff73eee03dc87c5886f2ef088635fdcc76213ee13dca7b8cf709f17b519676c813b1f5fe12efd4e7067d9e0cea9ed70e7bb0eb8f33547dc4bb89771afe05ec5bd867b1d772e6303f726ee061e1a1e4a16b77e000fc2e384c7190f070f170f0f0f1f8f008f50554289328a19c3f188587ea60e67d6bff84a88c1dafd88656c57f959d47232a15ac1b755c32311fbf048f1c8644e0d098b21b3406c1e3f63e6657077a918bc690bdf47ae7d9acc178f0b1e573c6e78dcf178e0f1c4e385c71b8f0f1e2d3cda7874f0e8e2d1c3a32f35fb83ab32c336f6780ca5367f8c8aed188f091e5365e678ccd482cb36c76381c7128f9576ad2a8f8b6de2b1d6567d6dc385dc88957f6cf1d8e1c1491df0b0f038e251c2a38c47058f2a1e5ca83a1e3a1e0d3c9a7818786a782a5927fc093c09cf139e673c1d3c5d3c3d3c7d3c033c433c233c633c133c533c333c737bfdfa31118c58567cbaffccce5eac3150aca1137f71e379b1778b9f66b6628046617f9f573c6f78def17cd80b4ef4291c17fcb0179e6f3c3f78b6f06ce3d9c1b35b6c7b78f6f11ce039c47384e718cf099e533c6778cef15ce0b9c47385a789e7daae701936786ef1dce1b9c7f32076e369e17994f6c367c93603d1be6719cf0a9e553c6b78d6f1d4f1e4b3cd62e5f4a2ae67af965f8ea78197264c5f0a2f5b3ec2bd08af135e67bc1cbc5cbc3cbc7cbc02bc42bc22bc62bc12bc52bc32bc72bc2e785df1bae175c7eb81d7d34e0ad7edf5c2eb2d5ff65e1fbc5a78b5f1eae0d5c5ab8757dff6775f17ad58c92154b3a94c80ff4ba3c58133363fac5b3355befdf454bb2c785bf07d0db46659f8be86788df01a8b07f69ae035c56b86d71caf055e4bbc567899c5768dd706af2d5e3b6dc499e6d21ef0b2f0e2bb4a7895f1aae055c5ab8657dd4e2acae2a2ea7835f06ae265e0ade1adf0b6e5fbe49bc0eeddfb8cb783b78bb787b72f2106ff1bde01dea17c7a784778c7782778a7f669887786778ef705ef2bde37bcef783ff07ee2fdc2fb8df707ef16de6dbc3bc57e17ef1ede7dbc0778f3bd23bcc7784ff09ee23dc37b8ef7426cf77b89f70a6f13ef35de1bbcb778eff0dee3cdd9b06c6fa62a8184181cc59935bc8baf9f7122acbf9ff40bc1bb847719ef8af458052728fd2affe0fbe63bb930fa2fbee61f707ff17d378a6d136f031f4d99848fc2c796cfb81f9230ec73c2e78c8f838f8b8f878f6fb381fb044ae3e3213e113e313e093e293e193e393e177caef8dcf0b9e3f3c0e789cf0b9f373e1f7c5af8b495c55776f0e96a86864f0f9f3e3e037c86f88cf019e3c34f9ce233c3678ecf029f253e2b7c4c7cd6f86cf0d9e2b3c3678fcf011f0b9f233e257ccaf854f0a9e253c3a72e9ff2d8f9fde8f834f069e263a0a5a1a5d0b2e5c3748bd03aa17596118755f5d341eddb8dea2be257c43fd66336854cb73b13efed5c934fcee7a27f2a5a2e5a9ed62cfdf06df93f7c7f1b875680562896a115a115a395a095a295a195a37541eb8ad60dad3b5a0fb49e68bdd07aa3f591169616dfdb468b6feca2d543ab8fd600ad215a23b4c6684dd0e23ccdd09acbd7a0d602ad255a2bb44cb4d6686dd0daa2b5436b8fd6012d0bad235a25b4ca6855c04e21571bad3a5a9ce1065a4db40cb435b495aca2de06da84f609ed33da0eda2eda1eda3eda01da21da11da31da09da29da19da39da17b4af68dfd0bea3fd40fb89f60bed37da1fb45b68b765a1534bffe960f9a5fcc52ded121711de89f8291d5161ef2acd98d52e6fffceb7ddfd8baf98da7ff015c4b1e86fbb87761fed01da43b447688fd19ea03d15beed19da73b4d9fab458d05ea2bd42db447b8df606ed2dda3bb4f7681fd0b6d03ea2cdcf2da35d41bb8a760ded3ada3ada0db4f929063a1a3a4a569def001d42e784ce191d071d171d0f1d1f9d009d109d089d189d049d149d0c9d1c9d0b3a57746ee8dcd179a0f344e785ce1b9d0f3a2d74dae874d0e9a2d343a72fdffc3b037486e88cd019a33341678ace0c9d393a0b7496d22ff8375f41ac7ef8f2f6cbf78bd8ac71ed87c014152ea4e0db59a9c6cd0e5cd1df8e59d887d27fea6f67fdc397a5b311fbd0d9a2b343678fce011d0b1dce62099d323a1574aae8d4d0e1d474741ae834d131d0d5d055e8dab6e94b57902ea17b42f70cf65bba2eba1eba7c3c4037443742374637413715d0dd0cdd1cdd0bba57746f82b87b47f781ee13dd17ba6f743fe8b6d06da3db41b78b6e0fdd3eba037487e88ec016a03b41778aee0cdd39ba0b7497e8aed035d15da3bb41778bee0edd3dba07742d748fe896d02da35b41b78a6e0dddfa4fd7ebfa41646bfea5c855f5237ff095304f06238afc9d6f5747b7f1c3974ded5fcafb77bedd26ba067a1a7a0a3d5b3acdf408bd137a67f41c819b1dd173d1f3d0f335aedc7a8154f43dde89d08bd14bd04bd1cbd0cbd1bba07745ef86de1dbd077a4ff45ec5cebb904f21ad1f11d07c7d1bbd8e80ee75d1eb15d2476f80de10bd117a63f426e84dd19ba137476f81de12bd157a267a6bf436e86dd1dba1b747ef809e851e67b5245f4ed9f9ed95d1aba05745af865e1d3d1dbd067a4df48cff135f69a6f81bdfbe86beb283e02fbe1c62fcc9b76fff8d6f1fe813fa27f4cfe83be8bbe87b02b7efa3cf957e8a7e887e847e2c88fb09fa7c24433f47ff82fe15fd1bfa77f41fe83fd17fa1ff46ff837e0bfd36fa9c7817fd1efafd1f61e2fd81c897787f58c808fd31fa938238a73c457f56c81cfd05fa4bf457e89be8afd1dfa0bf457f87fe1efd03fa16fa47f44be897d1afa05f45bf867e1d7d1dfd06fa4df40d0c340c1406b674b31a1006270cce7ff1fd5a8950fd6585ff691ffe3ff265cbcb70070e062e061e06bef01d041884184418c462197abe7de6530906290699b4790f720c2e185c31b86170c7e081c1138317066f0c3e18b4306817c2297731e861d0c76080c1b0901106e35fac077fb11e4c7e58b3760fa618cc309863b0c06089c10a03138335061b0cb618ec30d86370c0c0c2e08801e7a72c7cf96d185430a86250c3a02e5662a063d0c0a0898181a186a1c2d0966e6c43c2f0f4c397e1b25c6a3f7059d86ffb07df7fd887ffe03b3cff0bdfa1f317dfa12bedbf43cf66ca431fc300c310c3c8cede18c6182618a618f2053986170caf18de30bc63f8c0f089e10b43beec83610bc336861d0cbb18f630ec6338c07088e108c33186130ca70297b7c39908c3fd6ebf947f6c08a739c77081e112c3158626866b0c37186e31dc61b8c7f080a185e111c31286650c2b185631ac6158c750c7900bdbc4d0c048c34861644ba7c0116174c2e88c9183918b9157f0f544aabfaab5af2ffc751e387afee5a2b1472c01f47fd66fffca97fddcdfc6f73ff83e9f18f918051885184518c5182518a5dae18d51068e3846178cae18dd30ba4b9bfae88111dff2c2882ff860c447da187530ea62d4c3a88fd100a32146238cc6184d309a62341361b8a3f98f0cff1081fb4b460b8c9618ad3032315a63b4c1688bd10ea33d46078c2c8c8e1895302a6354c1a88a510da33a463a460d8c9a1819186b182be9d026d3a80163c2f884f11963076317630f635f46bf7c5d609657fc97ffcb71dd17eeef009add4deffa3ff15d25ff1d5f96718071887184718c718271aa31be7186718ef105e32bc6378cef183f307e62cca7de187f306e61dcc6b8837117632e4fbf9001c6438c47188f0b2bc14726184f0b9915322f6481f1f297acfe12463f36315e63bcc1788bf10ee33dc6078c2d8c8f1897302e635cc1b88a710de33ac63ac60d8c9b181bc277a261a284efc496beac13c2e484c91913071317130f135ff8d65ad211edb71d28e2b79fe0a26adba7928ca1fd46ccffe4abca3d4c024c42e13b8930896d73274a3a4930491114336efc21986498e47670c7e482c915931b2677e95a3a7960c277bd307963f2c1a485491b930e265d4cf8117d4c06980c0b196132c66482c914931926734c16982c3159616262b2c66453c8566438fd4f5d66d693dd8ff0cfc91e9303261626474c4a98700e2b985431a96152c7840bd5c084511a986a982a4c6de9133c254c4f989e31753075a5c5976b8ba987a98f698069886984698c6982692ac6b79cfcd8dfdf21c69ff51b5b896549e28b16a796b109965a2e7e14fd4b3c7e70cea2f16b3ebd607ac5f486e9bdd8de8aa9b80a592f456da70f4c9f8ab572fac2f48de907d316a66d4c3b9876a5a7deb487691fd301a6434cf9e718d309a6534c6798ce315dc8f785e912d315a626a66b4c37986e31dd61bac7f480a985e911532e6a19d30aa6554c6b98d631d58508577dbc231679fe4b7f179836306d626a60a661a68a51c4c08c303b6176c6ccc1ccc5ccc3ccc72cc02cc42cc22cc62cc12cc52cc32cc7ec82d915b31b6677cc1e983d317b61f6c6ec83590bb3b6cc0e717faabaabb62b194c1be7f62997b5bfeb16661d1659a7ef47b66ac52152c70e39922cea37adcfee06e786b52cb06f7c75cfbe71ba7dcc06980d5964b5160e4967a342c636bb44b389bde7624c319b6136c76c81d9527b54a46be96c859929b1b23bd42e7ce51ab30d665bcc7698ed6585c7d90133ced611ec65cfca9871ca55cc6a98d531d3316b60d6c4ccc05cc35c616e0bdf393027cc4fb215dc35e1cbca3b3f8b5ecf1dcc5dcc3dcc7d51db798079887984798c7982798a7986798ef905f32be637ccef983f307f62fec2fc8df9475adfe72dccdbf21965dec1bc8b790ff33ee603cc87988f646d337b8bf9f83b758c20b657c2f717e2df7c5539ffcb7b0bb5c2fece272cea98dbe7b7ed36b53767745a086b424d84462c98cf59a4d3ec7c810f177e69a7fcf815e626e66bcc37f69aa17026b8d87bcc0f985b981f6d8fcb59c2bc8c3997810bcfb0ea98eb9837306f626e60a161a1b0b0a5fbfe82b0386171c6c2117c0b571476e161e16311806b5d114fe4cb771109df458c4582458a4586458ec5058b2b16372cee583cb07862f1c2e28dc5078b16166d2c3a5874a5ca5df4b0e863c18f18623112be8b3116132c38cd1916732c16582cb158a9a62563919bb05f4359d84c6fcbb87abda32ac65ff1c52f5f426cb14cf82552f05d9858acb1d860b1c58233bdc7e2808585c5b190d2dfa50c991d3a477251cb0616552c6a58d4b1d0b1e09f4d2c0c2c352c1596b67d9eca67c725b0242c4f589eb174b074b1f4b0f4b10cb00cb18cb08cb14cb04cb1ccb0ccb1bc6079c5f256f867732cef583eb07cfec597f5972d03f35dbe8a0bde587eb06c61d9c6b2836517cb1e967d2c07580eb11c6139c67282e514cb19967cfd02cb25962b2c4d2cd7586eb0dc62c9a9edc54a2c0f585a581ec1f67459c6b2826515cb1ac35539df52c7924bd4b09f2f651403e71abe48c593b9bd2a9eaa70b99ad25cb934785bf05d69aa9960a5b0b265f4c78ab03a29a3614397c1337f17acce5839f2e5cd3c61e562e561e56315601562156115837d8f558a5586558ed505abab8c0b5cddb0ba63f5c0ea89d50bab37561facf8781bab0e565dac7a58f5b11a6035c46a84d558ec03b36313b19a148353821f13b19a8a305c46bc9a898eafe6582db05a62c5474cacd6586db0da62b5c36a8fd5012b0bab235625acca5855b0aa6255035bc9958e5503aba606ceaa015383a964a0b60998042ea07986e9c074617a307d9801cc106604338699c04c6166307316d66e9817994c468684f335d7efb6f01fd2aaaacdb5464da126efbe79837987f980f984f9fa87bc617e6ca76a6ff86c0b661b66076617660f66dffe70b60630873047f2dd2ce02c8e614e604e61ce60ce6172fa4b982b9826cc35cc0dcc2dd85d31397f079816cc23cc92185666679661560a85d585ac5915f94677664d10cb3575d16e5387d980d9944ad234b0d6b056c5074688415f13d6273123eb33d60ed62ed61ed6bea4b60eb00eb18eb0e6b309d629d619d639d81d5a5fb1be617dc7fa61b717583f8b550f07b2d459a583f5cb564b99384d6632e07bdf5f91f9a6d874b06a1752e8effaa3194759cd1425ac5b58b705e2a28235a7d2fdbbf0911ed67dac07580fede54b71d5b41e613dc67a82f514eb19d673ac17f23182fd8df50a6b13eb35d61bacb758efb0de637dc0dac2fa88353fae8c353f8813a9615dc75ac79a7114f51b5bf38d868d12b8acc2ec3cb0daf23ec3ddd8a2dd1b6043a2c59b1336676c1c6c5c6c3c6c7c6c02a1b909b189b0e19d049b54eeda64d8e4d85cb0b96273c3e68ecd03ac289b17366f6c3ed8b4b06963d3c1a68b4d0f9b3e36036c86325f305768a58c059b11d76936dd8a651ff8ecf8b7d8de44c4dfcbe4cd8514fe43f3208b38790775e58c32a68ef6a9ca92c6277edef4b7f04f1154b1996133c766611f2d6c96d870094d6cd6d86cb0d962b34387b3b5c7e6800d5f70c4a6844d59da5036156cf8f61a36756cf867039b263606b61ab60a5b5bc6a36d09db13b667a9bbb60eb62eb69eb4dd7c2b3a46cc7cf9201be8ad8f6d508c620bb1e58b636c136c536c336c736c2fd8f235376cefd83eb07dca3faceb61fbc2f62d88b71f6c5bd8b6b1ed60dbc5b6876d1fdb01b69cfe08db31b6136ca7d8ceb09ddb5c8d6f17d82eb1e51d93c53e1db15d63bb61b15dbe71cbdb626787ed1edb031e9caba27f8956fe08dc12a7c8afe787fd07fbfcb103cee5f16ff21bf499b355c2b68c6d05db2ab6356cebd8ead836b06d626b60a761a7b0b3b163939d6147d89db03b63e760e762e761e763176017621761176397609762c757e676f986dd05bb021f575faca73b3e72c7ee5128ef00bb27762fecde62a3771fb966309256cd5d4beac05d1bbb8eb460ecbad8f5c471def5e55fb5e31b87d88da4ad6ec76727c27737c56e86dd1cbb05764bec56d899f28968b7c66e83dd16bb1d767bec0ed85976a784dd11bbefb66c7395beab60572da4865dbdd8b2e88c5eb4bbd816f6b7c60f6888fdb575ec9ad819ea98a95b2e6e99531629fc33fbd4fa8abaaf6466cfb6060e3ad8f6ed95e23041664b02f684fd09fbb3f6b861ef60ef62ef61ef631f601f621f611f639f609f629f619f637fc1fe8a3d5f7cc7fe61eb1f69eade3fb17fc9bbbf7fcbebbfff60df2a4c842ebacceff86fbefbb6b09366cc17f61d69a864befb2ef63decfbd80fb01f8a1fc2d7ec473f7cf77cd744dacff653ec67d8cfb15f60bf94ffeb9e9f6562cf65d960bfc59e73b2c7fe80bda52c4b6d97c56a1a25457b592db5eec83ce3320ddde697fc4ce9a536159958915de372f85dff8d0b70b4bb5cce12f665ec2bd857ed90b352fb2d76cad9ad8b09deebd837ec073fbb5896812b87bd81838683c2c196e1a507c2e184c3190747fa4306fcd3c5c1c3c1c721c021c421c221c621c121c521c321c7e182c315871b0e771c1e76a78dc31387170e6fa9e2b81e93b6ca7161190abe1cda1d3e38b470e02b3bf23fe0b36c3a0e5db1128c983d8d430f87be5cffe5cbfa7b6019e230c2618cc30407be7e2635de618ec30287250e2b1c4c1cd6386c70d8e2b0c3618fc301074b264ab477f6f32ed21ab1e070c4a18443b9580751847d3896c24de6a757c47f387cbfbf1daa38d470a8e3a0e3d0c0a18983014b83a5fe105bc6e55a04eb04eb0ccb81e5c2f260f9b0025821ac08560c2b8195c2ca60e5b02eb0aeb00a45b6eeb01eb09eb05eb0deb03e9ab381d582d586d581d585d5d3d8f0b119b1fab006d2cbdc1ac21ac11a8bb55d145658e016759435813515c4d64c4c8435978899b59b3d65e66b2d602d61ad609945485d381b621f0ac4d61a163f7a2bfa6bed60ed611d6059b08e62c1ac12ac32ac0aac2aac1aac3a2cce490356139681a356882ab676b18342a8d89e8aed1947074717478fb705dfa38f638063886384638c6382638a6386638ee305c76bb173c3f18ee303c7278e2f1cdf387e706ce1d8c6b1836317c71e8e7d1c073872792cbbcde98c701c6bcf9ef46e3a4e34e214a638ce84f2718ee302c7258e2b1c4df9487e5ccb50a1e306c72d1e7cd90ec73d8e077015ca7c8fc75fca5bf065cb20facb19288989182fa515e258c6b122ca7bace258937e24c73a8e85c966ed3e36706ce268a0a4a1a424cd92cdee124a84d209a5334a8e16f0968f7b5285947c940294429422b0fb554a504ac1ce83488ed205a56b21b742eec5f6516c9f28bd507aa3f4e16dc1b7d442a98d5207a52e4a3d94fa280d501aa23402577ab265991432456986d21ca5054a4b9456289928ad51daa0b4456987d21ea5034a164a47944a289551aa201f481fc85255fa45976a28d551d2516aa0d444c940594359a16ccb6896325026944fc2b77cfee1cb6f375b098e35183157775cef959dc238b4846fd91576bdbdc02d7b28f3d900e510e548f872e8518e8b26a1a9085f39d9a29c88052fa7286728e7285f50bea27cb339def1749cba28dfa5235af981f21365bef28df20765ce5efb977450e6cb7a28f7511efc5d86288f501ea33ce16dc1b73c45798632676581f212e515ca26ca6b9437286f8b2dcbae903dca07942d948f2873d9ca2873a9aa28d750aea3aca3dc40b989b2818a266bcdba1d546c54a0dd8b41421552d15dec72e584ca1915de71c191e588f77db8336504a8b084a844a8c4a824c2b7928a0560e1d79c8d6925432547e5f2c3974d70e58a0a1fbf0be2ca0395272a2f54dea87c846fa5250df695b6341b8d66e0d0a0d245a527f6a1d2476580ca50ec436584ca189589a638f35331c715be986f5fa0c2fb2b544c54d6bf6483ca1695dd2fd9ff92032a9cd41195122a65de167c2b9cad2a2a3554ea76c2a9e8a870705cb54f6f9182907de6623459643fed6b77477b7d503150d550557c2dbbc5dabb8a2aa17a42f58caa83aa8baa87aa8f6a806a886aa47168578d85663541354535433547f582ea15d51baa77541fa83eedb882ea0bd537aa1f545b6282ab6d543ba8760be9a1da47752088ab435447d25e51e56b26a84e519da13a477581ea52f497295757d2e181f97e1133dfaa2926a5ba467583ea16d51daa7b540fa85a3274a07a44b5846a1955ce0697a8866a1d55dd0eaa3273d2be2932e6223464461a917321c4826a53e6cd9ec66a1a7da5e05b35a441bda64122645b191c44756c1ada5f6c3528a3c1821a157242ed8c9a839a8b9a879a5f48609f1ea885a845a8c5a825a8a5e2e870d876dc09af5a865aae6daaca69a27691812bb5abf238cd1b6a776dd9438d6f7faacd4de3f7aef692a9766a6fd43ea8b5506ba3d6418d8ff3657dd406a80d511ba136466d82da14b519d8c5e468825578bc1023505b883161df915598f92e39a9256a2bd44cf920c22e736d2d3687b5b8b6416d8b1a177f8fda01350bb5236a25d4caa871b6b9f835d4eaa8e9a835645af7c959591335f5d5792a92c46aa0c9cfaca5f657358a6defa38e25b5bf7de5bb7e0067baf99baf6d2b8e3250330ab8240d3d5a03750d75a5bd0d76dd98af0dc7261d75dbf63d8935ea60dcda9d506739a17e46dd41dd45dd43dd2fa63fec4366e3ada01ea21e49f7c8c742eb64dae225c35aeab1d6f6b4093f25413db543199c2581499d2547fd82fa15f51bea77d41fa83f517fa1fe46fd837a0bf536ea1dd4bba8f7e443e764837a5faccab8f01fbefa5b1fa03e943e25f5917c6a6223531fa3cecf9da23e437d8efa02f525ea2b7b7d92aec17513f535ea9cd416f51dea7bd40fa85ba81f7ff87a43d4b9d425357ca8bec13f1931ea659937902f38960b151629f4b75ef98b6fbdfa9bafa86abdf6a3bc7ff2add7a515b8aedb61c7665b53e7b336ea32d521ea06740dba826ecb44273a413f416694d5597919ee8f0aeb8ef4edad5da1bbd03d5b79d07de801f4b090087a0c3d819e42cfa0e7d02fd0afd2fd54bf41bf437f886eea4fe82fe86f7054a2b7a0b7a177e4db927ca95b41ef8af3c07c59797ff3d57b85f4a10fa00fc562e823e863e813e853e833e873e80be84be82b2e0d7413fa1afa06fa16faee2fbe4c53df0b5f86cbfafb07df7fd1dfbff1d50fc297e308e15b202e54f8cb57e0167c31e7c84767b8763a962d83e60044b7a01fa197a097a157a057a1d7eca62fe30235ab98bb28d6362e0bf4ba20d67519bba237a4a7bfced00dadeda2a1a1a1e04eeda80cae051a4083d038a17146c341832ff0d0f0d108c00e7c2342234623915e398d543cad4686462e3171e3f2c3b77145e326f6619308dcc61d8d071a4f345e68f0d90f1a2d34da6874d0e8a2d113e5e5b7ad31406388c6088d311a937ff265e320d3057ef9feb60f1c73fd0bdfc6d45ea5c2b7c1ffc083d463c2f7fc77beb53ff82ae1db98a3b160b17399e81e8d251a2bfb5e4583f3b746638306977987c6deae30a0031a9688d7fc22162d6e1ca51335577d8d12eea6f652da55663e2b2833dc8a1c6f70823534ea68e86834d0e0bb0c34353415b8ae6515e360a97942f38ca683a68ba627cac8ae18ff5f9b019a219a91206e16ad68cd443e33375334333473342f68f2a91b9a77341f683ed17ca1f92ee483660bcd369a1d34bb2ae227f6d0ecfff0b5c63f7c7b3bd5dbfec917cd815886c5f02bff27bef51fbecda17c3a62a6cd91fdac0bdf742c7c9b6334276872d96668ced15ca0c90757689ae28735d76872d9b65fc4c2b7b943738fe6014d0bcd632125c5d170b38c66453975a9f49afcb81a9a753475341b68f25d060c0d860257100660108c138c330c07860bc3132bcc8e84e18b67c6c657f4f70af6fc98ef60012314be4604238691c0e0fd0c460ee302832fbbc1b8c378c078c278c178c3f88039325fa3fd275fc8fc967ff0e583ff33dfc23efce26bfc977c8daef065cb10a4c2f7591745deeb307a30fa30063086304630381313185cd4198c398c45c1770d63f9c3d758c130bf88d5b4293188b196212bc606c696f9dac4ce4c086307630fe300c3827184518251865181c139a9c1a8831d1ecea1c1091aa469a429d26cd2c036973422ed54c819933d690e692e691e693e69016921691169316909b61fd252d232d272d22ea45d49bb1157d9da83b4272363e3601fb33ff912bf71de40e40fbeffe63f783af325ed4ddae74fbe5f17ed5bbffd85b8ceb96f91d6fef265151613116f6c87cbc08fec92d65311e7b24fda80342ee188b4b10c64652b56f0951dafc97c499b90369591f38c5877d83b266d46da5c1d3faa76d0fa5ce005694bd256a499a4ad49db90b6256d471a933a9066917624ad445a99b40a6955d26aa4d549d3496b90c6e91ba434528a05db9c942d7d4aa627522045a478e74cca21e51257b06699944f2a20157214442a2695904a4965a4727109963d59ee087d654d1928c3fdcd57968b618b217cafaa51968b2b102dae40f892bad82b4ee58ae983d4cd7ed66cf083efdfc882141f7cfc7c8b03e7e649ea25fbc19dd4bb98aaaf6ffbbe7de2c27c48b548b54975487549f548f5490d480d498dc4ff5613525352acce4b443d75afd8c68ad49cd482d452f4379b91e22326a9b5f0551b6dce19db0a5fb523b527752065913a922a9162229cbd2a297ec5eaa474520d524d7eddd0698baada1abf0064db32119b4d649fc83e93cdc75db23db27d74db24539185644764c7642764a7644b8f08b2592e645fc9be917d27fb41f653f0315c7321648f47d53bfcc8578b7b1b91512c73329695502eab82affd22fb4df687ec166623fbb12d3e6e5684b2cd39e814d2b59562df18fb0ad93dd9f77d811b640c9af7c9ee933d207b48f688ecb1fdd893ac1a3f2559a57c5eac66bd54af32c912c1a6c4c447839d6292454d37246b21ee54836fe7bb0e5af7aaea7ccad29e5d9235b44a248bf154b42d5f50255975a44eb2984083ec26151388924cf669cb6c762092c9d9ce24336fb924d319f9248da4bc1312229281bf091563ef4806755f4846c4de4886163e48066ebd4886dd7c48465fb4497acd77093d55d7189fa8ea8a03b53e6160eb7eb1d3ff4fcab39b3a56be52f0953e9823c2585625bc71ba13c2541df9a9339296d485badd59b092408eb78425c778623dcec5072431d3b0f9ade473f5aa7cb8db1eb5c78ee41bec9aa49d7c4bd8a915178c7d092efc410bb8c6e7539656e2b3d2baa78615b56004256dc5068779950915d6689288bb56c42d3aa65c1876d69a3f7cb96a13fbcaafba740922fe5b5944ecb3b789ce444e21ae180af2887ca28028248a8862a2842825ca8872a20bd195e84674277a103d895e446fa20f518ba86dfb0399c279c046fd28938fb398265187a8fb4b3a225fd68c382c0be2420abed423ea130d889145539596e5735100ad5595ef72b539d1485159d975d58c55c08519134d88a64433d5e07ccc55b54ab4205aaa8873bf223239de205a136d88b6443ba23dd181c8b28311d191a8645b3a5199a842542da466eb7c4b1d0fbe9d4f35d82213311a834e1a9d149d6c9960f1c4004f743ad3c9a1934b278f4e3e9d023a85748ae814d329a1534aa78c4e399d2e74bad2e9c666974e773a3de8f4a4d38b4e6f3a7de8d4c2b543a7369d78dba5538f4e7d3a0de834a4d3884e633a4de834a5135bb38ec469b3ab5dba2937d774d3a648267adf2c65de77967d2e62cd45564331cda7f9570abeac26a7259d56743235ae673a2746ac4d36da3062a1d3ba908d2af13ba2d3694ba75d217b55342c6a061f3cd0c9a2d35163672be31296b4d6914e653a55e854a5538d4e753af1650dadc98c9ac4c6faacd159d1d9963929d9da3f43099d390c71f7a8b1bddaa176a1f389ceecd86e4491cf0e9d5d3a7b74f6e91cd039a47344e798ce099d533a6774cee9ccb75ce97ca3f39dce0f3a3fe9fca2f39bce1f3ab7e8dca67387ce5d3af7e8dcb7d92fbecc9591d8b5329d594327741ed27944e7319d797f4ae7199de774e6472fe9bcd22a9c6153abd5e8bca6f386a558b440e4676afdf54ac4e25bb6dfda8fa5e07bded15916c6a2f381ce96d6f799af1dcdb49ea7aeae9d6f5930ebca54d9dd1b5a5cc26321253a73ce2a74aed2999f5aa7b3ae6e3751f90697aa41e7a6f2f8ac418e468e22c72607c55b7b22e74c0ed73326392e391e393e390139a14c746f67e444aa792727667b6dfbbc9330747252d45372f86c4ece859c2b393772f8ec839c27392f72dee47cc86991d326a7434e979c1e397d720628f15386e48cb03b695644ce989c0939537b6db31d226746ce9c9c05394b7256e470aed6ea3d226743ce969c9de2ba97a5cf69eed575ab22c3ae3be41cc8b1bea2b4358bac3ec7aff29c4d4a47f5d6855d2ec677937324875f587e6459a62878de953e65b85a2f90a9a2c3b79d9554b2c424d09a65722a768ff35725a7464e9d1c9d9c06b1b3e5187c8db8376c5bd212b91ab98a5c9b5cb00d24f744ee995c875c975c8f5c9fdc400b9f5a1a921b0a5f3712156677c28d05ae9b909b16ab706ec8cdd42a223727f742ee95dc1bb97cc183dc27b92f72dfe47ec86d91db26b7436e97dc1eb97d7207e40ed1e65b46e48ec99d305c72a7e4cec89d93bb2077492e3fce24774d2e3f654bee8ef81fe91ec8b5c83d12dbd9729ddcb2ca5f4af105155948eaf156ee558db82cdfb56244f8278b2c7dc4a77aa6bdd8a8fe5028f78bf882dc1ab975fbc84fd2c96dd8fc1fd3a776c0456a6a46cd0e9fcc5710c7eda29b7040ae61f766e469e429f26c996596eb0fefc47cc93b3362f21cf25cf23ce1ebf9e405e4858aeb742f222f262f212f252f232fb79b81d6c9c9bb9077556593c9aac6587b3fc9bb917727ef411eefbfd85680bd7def4dde87bc16796df23ae475c9eb91d7276f40de90bc117963f226e44dc9e3eccdc95b20d9c9bfca7b89f792736638872bf24cf2d6e46dc8db92b7236f4fde813c8bbc237925f2cac4af9d57553e275bd31a7c7d5da54f5999ebd455c34ce4d4b675af802b5bfef9155949a6cc39d19539fd4ac1d76b90d714be9e61c74be6ab19553b9a2b5bb15960b2e46b82387c17568235faa94d0e85522f18bad80a5f916ff305a2f29ea5b59a32af2f7bebf703f927f2cfe43be4bbe47bc49e9c1f901f921f911f939f68fdb6da31f78bdd4e6562128fad7383fc94fc0c3adf9b937f29e6d7e0ebafe4df882d86ff20ff49fe8bfc37f91ff25be4b7c9ef90df55d15b2c80df23bf4f0cc81f923f227f8c13df38217f4afe8cfc39f90bf297e4afc837c95f93bf217f4bfe8efc3df99c674bd6e94b5c95bd55f652c14296e8e2cac39aff16e52c6551a941b1b49463fe257df6ac62d6dcaffc9daf7ffc1b5f685fbe3f12be99f8972ff925d16b3e5220164916fc93555e35f86c59a575f22be457b55197fc1af9fc53279fc1356df6347d83028d0245ec8d0410c7c9bbdae90af73907ca149c283853e050e052e051e073dccc8eb0ddf22908280889dfad20a620a120a520a320a7e042c195821b71d4133c10f29127052f0ade147c286851d0a6a0434197821e057d0a06140c899d99604cc18482290533c57e4254a360ae9250f933957f543017e53d4ffe24fb0762f35fe47fe61bb6d495cbb6f857be76f8b183c096722e459d597f83d5ffc03730295853b0a1604bc10e552ef69e8203051605470a4a32937d854b5ba6a0424195022e649d4d87b4baa5730a740a1a14307783428d4245a12d335eb32f1b9e283c53e850e852e851e853185018da5c0d861185318509852985fc33a7f042e195c21b85770a1fc45a12be88f31c7e842c6b62545392cfb9203eb2876a12a3c85bff0af7ffc8376cdb953d859d9ffaedeaa86a8dc2ee5f88bfca5baf335f0ee8ffc957f66d25f681a352e65be677b322f621ec51d8a77040e190c21185630a27d0b8d8530a6714cee52bdc65a5b8aa0c17142e295c51c8055b53b8a1704be18e42ced8417be4322b87c97759141e292c5158a6b042619542ce2adfae53c80569526850a4b1874a912db38eb3471e9d283a53e450e452e451e4531450145214a9b2ae2e3d957d288a792bcba3269120661311b1f13555defeffcd374afee4ab354b14a55a17e28d3d6f326ea010c64751a6245e6715f6952c44c1c5c8b52e6737ff2ff946178aae14dd28ba53f4a0e849d18ba237455ca416456d99e0b054c67d41518722ae402cdc27b2e2f436476b65674d8a7a14f5291a5034c4989f38a2684cd184a22945338ae614f1bd4b8a56149914ad29da50b4a56847d19e22ce8045d191222e5499a20a4555622310d529d2296aa821678c1f61281ab03510c4ccd7b734a3afc2bd0a772ad88a63c06ec33fa5afff8b0c6652b3f5f65ff9c537d67efcdf5869fdd04e96b2444aa3c688bf2afcf57f35a3fcc397b5586cb1c670bfc2ff09397275b5e65e6bb06733d07aaef08df9df098948e313c5678a1d8a5d8a3d8a7d8a038a438a23184f8a638a391b29c5993ab429ce29be507ca5f846f19de207c57ccd4bd97cef9be20fc52de25727ee50dca5b847719fe201c5438a47148f299e503ca57846f19ce285da8c3583935a52bca2d8a4784df186e22dc53b8af7eace3a6e507cb0d55bf1bbc86a2b700f6c3428b634593b77286bfefe63ab86a900fd8feda2f70fbef151e20b6b417149abdab6c6f1f151a906476b3f2afc14ca6c2e98ef17310720accb7264e87e45e20ed66e0efcfe936f99e28ac67e7c5ca5b846719d629de206c54d8a0d4a344a1425b6ac1a901025274ace943894b8947894f894049484c43a95c4942494a4946494e4945c28b95272a3e44ec9839227252f4ade947c286951d2a6a4434997929eea5728e95332a06448c988923125136dd4a0644ac94ce99cc29c127e0362dbeea8805df88d682e5b649670f7c357d6f41cfce79651b2b6fec71673b10cb29ed7fa577cc17e6bb2a2c4a464ad8db93c1be5a44ad61c88be88590465a3f615e12b4d255dd16e4363a1642bfb7c3c63be074a7658f1c1bdf04d582c4a8eda802196282953c205ae5252a3a44e894e0917b5498941a946a9a2d496e51952a2f444e99952875297528f529fd280381e49234a634a134a534a334a734a2f945e29bd517aa7f441e993d217a56f4a3f94b6b44d9b52960ea55d4a7b94f6291d503aa47444e998d2899a65eace29b3d28db4e35b16a465b3f095bcadaebb82e6bf09d3fc17e9169afb27df7446a7a5cd2e513a67c756303563695b38078cb8687028f0d575a50c11cf1227b751a3d35e33741699a1e335e02a51ba6a6765551a2b76b3d385ed36295d8a0aa72b4a4d4ad7946e58b421ffdc52baa3744fe981528bd223a525b56534652db5b4e8a5c9c10aa5554a6bc5b64ea94e6983524ed3a04ca34c5166cb4219195176a2ec4c9943994b9947994f59405948596427ec510eb5e6cb8ef95f3e545a9bb258a5bee250254bd49d2f4e29cb28cbe96caa4b9fc35f59709d29e77ce58589db1c707bfaff52a47213b2bbaf147cb32bfc91bdbc5276b3ef07ec4bf6b9231dd965ac0be7fe5ec883b267312883775e94bdf908e60be29a377bca4f195b3551465de9738e8fb1725433c57c4e598b32ce6887b22e653dcafa940d281b1632a26c4cd984b22965ec7e3aab5b8d32be6561eb39654b4d71c957859894ad29db50b6a56c47d99eb20365166547e2f0272b5356a1ac4a19df5ea74ca7ac415c316606e5ffafb4336b4e5f47a2f8fb7c8cd1bb2a24ac354f402010b6b084ed4d3eac2190785faae6bbcf6999fc972433f7deb955a754c636b6fc73bbd5b21aa4cda5aae2b65e077095ea9ce01af53a35ef7c84c72a8a64121317a6e80b9471474d26f23e8c664867daeacab4d5bbba715aa496b3fbc3d23adf4f7cdd8dcc793199cbbff20d78d9a9ce4a70b74602b17bb83babbd3309edc78330758fb67c91f7eedb26dcd395b2fb6a7f15931ae70eee19ee05ee1bdc77b8ae79e2c578707db8812da9102e57c67013b8a9363c0e8f590743a23dcfd8b4e2195b70db701fe076e076e13ec2edc1edc31dc01dc21dc17d823b863b813bd56b329dc17d863b87bb80bb34172334d5a358aebb82bb867b03b700f756d55af2ba40e0ced58a87659d8bbac1a3951860c32d1bc3af54943312974a707fb2fcc2b70ab7064f3b7c4c3c05f9ad5f1976f6398a066b74595e9f7b305ac1dba85a59deafcb9a2dbc1da56a45787b133dc33ba81aad9e2b8faa06782ff04ef05ee19de15de0bdc17bb7a50bcf83e7c30be085f02278b13e708744df71530a2fd377dc5358c36b685387d784770faf05af0def015e075e17de23bc1ebc3ebc01bc21bc91a3623d5e295380f7046f0c8f6d1117a67a39235fa37953d7b4df2bdfa2671b2be298c19b99326bcb4b98c35ba88a31d535bc25bc95dc808f78f68ff50bdc0fbede5afeaaaf5090f1378ff7f6a4d3aa8c60ca805b598cd48a76ca8f3a234ad6be201f75c599f1c26e65044074e74ceb269b3bf3aad964f08a966fc9c27db3e22da9c0abc2abc1d762dabe826fe03b3280e06ff463579f4f7a50d423adb367f85bedccf422d1f321d8a5f4f7f00ff08ff05fe09fe0bfc23fc3bfc0e771dee1bbf03df83efc007e083f821feb51590642d78142431d62d5e179e9dc581f5218ebe94a5e89b5ab4e895734839fc2cfe0d7e1374c8d6513fe3d252fd73fdaab3f273b686f75e5eb84ac6e0b7e1bfe034cd3f84d9b0155744a9a10b9261f1ccab3fcf2114f71cd24eb77acba70fa262ec27f14e73bafc2ef992dabd857cf15e1eb0fe093d108fe13fcb19a10d604fe14fe4ccd357ca29cc35fe89b5b5de6c212fe0afe1afe8d560ded706b013ecf75079fa728c12f6bd3d0b71bf815f83c570d810619060681a3d5691cec64b8c78fd5a86e5e2b0836149b38ba603d6b2a372074b5b955fdbdd22b045bd549d4e8c11cee215fdc3b6a21c3680c42820325493a7f1eaea4a33dfcce3738227871922e8213023ecb3ce8d9b0c31ad0756961972b78b37a975f19ce7a5c96ad816be521f089989bc857c6ee7ef01d16c566830041882042102348ac099f557f41a37616e49222c810d4f5b08d80dee05e9fca74175c40d0d42d20e0420b01b73e20e82060651e759358598d3e8201822182118227046304130453bdd2f40fea18306c308cfc82998a3bba32125bd67d45c71a3cabe205c11cc102c112c1cad13cda9a882de81b996af28e352f4892e4dfe16b0605b3e495df22b883b4e04450728a9b1f2e42bc4420326623b26bae4969d63f185db2fea140eec2d7bd3520858a0ac7eaa926fe37a822a821d408154223738d916fafa77a6d19547c7fd0ed1ec28dee8ef5e656ef1c845b49a06816453781de5f10ee10eec1702a3c82e12a1fb8f015e15937ee1072eb1bc277842e420fa18f304018ea73a8274a99ba3abeabe8cc808c8104c3358491f00d63a578d204618a304358372f05845cdfe082ea6df57d196113e1bd6498fd45e7408793cbda6fd89279b29e58bfb6ba4c4cb872a60db36dc8083131850f790ab0a00c3bd08c57d60c306488de5266a327c11c2df7a0ac47ee49fc60a0d61e5488b08bf01161cfb663fcd8b7e2a186e23718b48523844f08c708279a9de6708a7086f05937ab08e762b9e142b70865897085708df0066141ef78f1b73a5b20bc13471116f531d4b7dc5442c84d1584fc7a4df3498ab4ae8f747da8970a91b253473b741aba5542047dfb8c68233d02c60fc10d4d98923ceaee596dda88b632f3aff09d7f15a2dd574922a57ee4bdc965f9467b99d2228e111d101d11bd984d45921fbca36da68e4626262a4bd0169d10bd8ab5466702350ef7bf38a35b92159ad19b917c9908d1bb84195ce36d10b9883c31587ade88571b200ac1c0d37b75c67b443c698228459421aaeb6d490286886aeac61ad13da296d86f078878b50f883a88ba881ef5f3bb1e76f4982ddb16510f515f9fdf110d100db5e13147889e543c653fc25ca08e9e7edeeb89463456310fcb9e6a57b7abea85079c1a6d47cc5603c92e5d5f04ee8392c474f1bf4b710e7ce4c5052f3f9763d664f6a9945c55496a472eeb1f9eab606815f1862c102d11ad2461e7de33bbb228476c1ccbf715d1dafa07c96b4774238869a402d44849c7ed1c9c798d37806b24d8880ae282a35bb1d9e8ee2af1bf3c69d1f2e561cb882a88b8a686582356880d624797eb88a19ff6daf4106f106f11ef10efff986f7c407c44fc82f8a42efcca2be2b3d203c4174abd1610bf217ed73717d56e18d564dc2a8923920369d3ff69bc6cf1c837cc183c207629532d7c2ac5ea79933e95741144dcaee4b2f61b7bcede43ec230e1087ce24d0f47471f4f337c7f9cf8ee96d6bf74e952ea291a7fe81262f4a7e116b9322ceecfa947b22ae93af982a818a5bb0e272dcb06a22be47dc02bb58c754f797881f10771077113f2226d63ee281de93d410f108f193f08dc77aaeb433fdc457cc9f7cf90cc513c453c4333538217e568f465cb0e9485fe362d480b8e7baf2a8fcbebc419ff418b70a5fc60c790e59c7fa84cb19f182c12fe2a5d5ea53c9bb82edf85369a3e0ea35a4eb4439df35e21bc4bc27b78825a1cf99f29a8bf96f8eaf7cd1b1e9ec92c28eb86455fe45152b86bd75bba922bf21d8d69de1400de6886bb62b616d36d1a2f0514d0e6af68244a9fe08899119351320d9c8bcd1779ee40596d648b64876e29acf5013eebcffc97777ccf96a3cfec637392039aad11909f73fa9f603925775ecaa7255f5943a75295de921e10e17246f6adb53781228f2687fb4fb84dbae49b7825dadcd2b92772bf773c93e31b77e29d99f5618e7a5e59b78ec1923f19104d23123e82444123995a1d96dec9f544b2a94393f3b0b5e001f5d866b7db32b7e2a25a3fd3c43c230f322ff2e351cca9a05e38a929a9d90a44239c9acea481a6ac4a8c357f44e4913c93d921692b666d096104a47b7fa60c8983c22218ebed1bc0103244324233deb0b5f6a3efc8d2fbb7cc91392b11a1e914cd4b98c64aaa2848d98a2eb4f58b7672473552869dedd2aefeb42494bd392e1f4244fd6cbdbae690e9780843e35e9995de353f9fdfb49969b7b354c652c63687f5f28a3bfc90ac95ad273921b24e47bebf86fd7dc489bc1e724732477488a26ae980b2b4ad0e54f25f747529189f6aae4426a35e2765e4a48b59a6ccc53ec5c3ca48ae2023f9ad5b37aaa2035481d7d6aeb97a3247da51ba45ba43ba47ba407a45cf982f484f415e919298d6e84f44d376e7ee52b53a87ef0d517eeff8ed455eb895a2f8d6922e5797dfbee9ca70b908632b646b8c721715cf9a6f689e6a3ddaef249a719122bd258a28b7c60e2cbdbf46fdfbbcbb8910c321d6404ef62ff1f1c69a2ce3c41ea8c79a919d23ad2868ee67656c2968e66f23ff6fdc49c7a246bdedf64aae37a292fcd3295c9f56ce9b065981df365b518ca9a6a572ddf4c784ba929e934d5d828394b931fcd652ae5db831a1491deeb177269216d237d40cafa74913e6a2741da43dad77d221e08df7478e5ebf484efacff1bdf94f4c9658c748274aaba7b65b86686f459de845516a6c2fb34575b2343eeec1c1362f22e2f158dbc1727d9dfe0a60b53dae7a36da634fd54e6ef303f972f3cd752f537b972be2b67ce1bbb467a83b460a21b92fac937341f5372b7ad85d674b831e95ea889955d4b21157e538a789ce021e76bea45eaca57f6e1d5de21e59a92ae7387b2a6934d5999fe385821adea4da60d2dba864c2353c88c0e2a0cddf45eebe349f8266b990739ea23833ebbc836c8b6c876c8f6badae2432a2f76b303b223b217c5703e3b89f5a999a8dd94e1867df1aaf1c37581eb29eec0277d734f94c85ed5eee953a92b937c59ed2411e2ba4ce3ed6f55f798cbf2cdce0aace505d91bb27764ac90f783ef754a636bc5f2c80703d994ee0550bafb217efc569ff8e6887ff0a58b9072e120f3e92290059a0e34ed5ba021b2681c2cc6ecc26631b2446f9f3ff8ae243e63fbf63ddf145986ac8eacc1a7185913d93db216321eff416d12c9c2cb09521f70917572fd842b37a02c88b73db2fb2a31d57c817c77bbebf27aa9c707f530565ec6d2c6bfd9cc647306bcc8bae46b0abb5ff95eedf703ae79e16d78344fa1c0ca7a3f65d97d9570b47cc9d17ea5af96be94bff0a5774636509d11b2a1aef3f8230bf4491be70bdff1777c694753643376ea4ca1828cbbf12b0b644bba57642b64dce70659e1ca77e17ec22a405b9dab72b26ca672b5cbb9fdfe05bed5b6be4b75b9cfd2f28d8bd2b5fdca97ee35e74be30d8d6dafa6cec5ff3b7c0937e74bc9cac9fa83efadea3d22bbd3f5b7ffc2b7f83d5f43b2a55ff9ea0a81d26c09ba6af9d650d7395ff5dc465d09df0f57207ceb8658c53b5bfdc6d7c603ff0f5fc2b5b2ff0fb3f67fe5fbc33fc8ef310d1df1d43a87038d9770d91c91afccfb4e4675fc9445f6555ff9a2bec911ff2fbedff887e2f7fe21e75bdfea75599bba3e6c50df7dc7b7f5d37ed548f8da7f5ffcb05c3b14547ce3c2d58a73d73cba27e2bc35fb26bfe423f524cf2cb92ed3ff768f62bf56fffcf7bffef11f813c3ff4 - - - - - pbnOK - clicked() - PluginGuiBase - pbnOK_clicked() - - - pbnCancel - clicked() - PluginGuiBase - pbnCancel_clicked() - - - - pluginguibase.ui.h - - - pbnOK_clicked() - pbnCancel_clicked() - - - diff --git a/plugins/plugin_template/pluginguibase.ui.h b/plugins/plugin_template/pluginguibase.ui.h deleted file mode 100644 index 24fc72f46c35..000000000000 --- a/plugins/plugin_template/pluginguibase.ui.h +++ /dev/null @@ -1,21 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - - -void PluginGuiBase::pbnOK_clicked() -{ - -} - - -void PluginGuiBase::pbnCancel_clicked() -{ - -} diff --git a/plugins/worldmap/COPYING b/plugins/worldmap/COPYING deleted file mode 100644 index d60c31a97a54..000000000000 --- a/plugins/worldmap/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/plugins/worldmap/INSTALL b/plugins/worldmap/INSTALL deleted file mode 100644 index 54caf7c190f2..000000000000 --- a/plugins/worldmap/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. - - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/plugins/worldmap/Makefile.am b/plugins/worldmap/Makefile.am deleted file mode 100644 index 13bbe3106c11..000000000000 --- a/plugins/worldmap/Makefile.am +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# $Id$ - -# Ganked from qgis/plugins/plugin_template/Makefile.am - - - -libdir = ${prefix}/lib/qgis -pkglibdir = ${libdir} - -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.moc.uic.cpp: %.uic.h - $(MOC) -o $@ $< - -%.uic.h: %.ui - $(UIC) -o $@ $< - -%.uic.cpp: %.ui - $(UIC) -o $@ -impl $*.uic.h $< - -## target plug-in -lib_LTLIBRARIES = libqgsworldmapimporter.la - -## qt designer user-interface files -plugin_UI = qgsworldmapimporterguibase.ui - -## uic created headers -plugin_UIHEADERS = $(plugin_UI:.ui=.uic.h) - -## uic created source files -plugin_UISOURCES = $(plugin_UI:.ui=.uic.cpp) - -## uic created MOC files -plugin_UIMOC = $(plugin_UI:.ui=.moc.uic.cpp) - -## MOC files -plugin_MOC = qgsworldmapimporter.moc.cpp qgsworldmapimportergui.moc.cpp - - -libqgsworldmapimporter_la_SOURCES = qgsworldmapimporter.cpp \ - qgsworldmapimporter.h \ - qgsworldmapimportergui.cpp \ - qgsworldmapimportergui.h \ - $(plugin_UISOURCES) \ - $(plugin_UIHEADERS) \ - $(plugin_UIMOC) - -nodist_libqgsworldmapimporter_la_SOURCES = $(plugin_MOC) - -libqgsworldmapimporter_la_CXXFLAGS = $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(QT_CXXFLAGS) $(QGIS_CXXFLAGS) $(GDAL_CFLAGS) -libqgsworldmapimporter_la_LDFLAGS = -avoid-version -module $(QGIS_LDADD) $(QT_LDADD) - -BUILT_SOURCES = $(plugin_UIHEADERS) $(plugin_UISOURCES) $(plugin_UIMOC) $(plugin_MOC) -CLEANFILES = $(BUILT_SOURCES) - -EXTRA_DIST = $(plugin_UI) icon_wmi.xpm - - - - - diff --git a/plugins/worldmap/README b/plugins/worldmap/README deleted file mode 100644 index defc3c24541a..000000000000 --- a/plugins/worldmap/README +++ /dev/null @@ -1,12 +0,0 @@ -This provides a plug-in for QuantumGIS (http://qgis.sourceforge.net/) for -creating and analyzing feature spaces. - -The current version as of 3/10/2004 is 0.0. - -You have to hack variable as the top of ``Makefile.am'' to point to the qgis -source hierarchy; eventually this hack will be eliminated when qgis has a -separate library. - - -Mark Coletti -mcoletti@usgs.gov diff --git a/plugins/worldmap/autogen.sh b/plugins/worldmap/autogen.sh deleted file mode 100755 index 726644039008..000000000000 --- a/plugins/worldmap/autogen.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh - -# Automakeversion -AM_1=1 -AM_2=7 -AM_3=6 - -# Autoconfversion -AC_1=2 -AC_2=57 - -# Libtoolversion -LT_1=1 -LT_2=5 - -# Check automake version -AM_VERSION=`automake --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$#\1 \2 \3#p'` -AM_V1=`echo $AM_VERSION | awk '{print $1}'` -AM_V2=`echo $AM_VERSION | awk '{print $2}'` -AM_V3=`echo $AM_VERSION | awk '{print $3}'` - -if [ $AM_1 -gt $AM_V1 ]; then - AM_ERROR=1 -else - if [ $AM_1 -eq $AM_V1 ]; then - if [ $AM_2 -gt $AM_V2 ]; then - AM_ERROR=1 - else - if [ $AM_2 -eq $AM_V2 ]; then - if [ $AM_3 -gt $AM_V3 ]; then - AM_ERROR=1 - fi - fi - fi - fi -fi - -if [ "$AM_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your automake version `automake --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AM_1.$AM_2.$AM_3" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check autoconf version -AC_VERSION=`autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -AC_V1=`echo $AC_VERSION | awk '{print $1}'` -AC_V2=`echo $AC_VERSION | awk '{print $2}'` - -if [ $AC_1 -gt $AC_V1 ]; then - AC_ERROR=1 -else - if [ $AC_1 -eq $AC_V1 ]; then - if [ $AC_2 -gt $AC_V2 ]; then - AC_ERROR=1 - fi - fi -fi - -if [ "$AC_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your autoconf version `autoconf --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $AC_1.$AC_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -# Check libtool version -LT_VERSION=`libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\)\.\([0-9]*\).*$#\1 \2#p'` -LT_V1=`echo $LT_VERSION | awk '{print $1}'` -LT_V2=`echo $LT_VERSION | awk '{print $2}'` - -if [ $LT_1 -gt $LT_V1 ]; then - LT_ERROR=1 -else - if [ $LT_1 -eq $LT_V1 ]; then - if [ $LT_2 -gt $LT_V2 ]; then - LT_ERROR=1 - fi - fi -fi - -if [ "$LT_ERROR" = "1" ]; then - echo -e '\E[31;m' - echo -n "Your libtool version `libtool --version | sed -n -e 's#[^0-9]* \([0-9]*\.[0-9]*\).*#\1#p'`" - echo " is older than the suggested one, $LT_1.$LT_2" - echo "Go on at your own risk. :-)" - echo - tput sgr0 -fi - -echo Configuring build environment for QGIS -aclocal \ - && libtoolize --force --copy \ - && automake --add-missing --foreign --copy \ - && autoconf --force \ - && echo Now running configure to configure QGIS \ - && ./configure $@ diff --git a/plugins/worldmap/configure.ac b/plugins/worldmap/configure.ac deleted file mode 100644 index 3337c6fdf95a..000000000000 --- a/plugins/worldmap/configure.ac +++ /dev/null @@ -1,48 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.57) -AC_INIT(qgsworldmapimporter, 0.1, tim@linfiniti.com) - -AC_CONFIG_SRCDIR([qgsworldmapimportergui.h]) - -AM_INIT_AUTOMAKE(qgsworldmapimporter, 0.1) - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -AC_LANG([C++]) - - -# Checks for libraries. - -dnl --------------------------------------------------------------------------- -dnl GDAL check -dnl --------------------------------------------------------------------------- -AQ_CHECK_GDAL - -dnl --------------------------------------------------------------------------- -dnl Qt check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QT - -dnl --------------------------------------------------------------------------- -dnl QGIS check -dnl --------------------------------------------------------------------------- -AQ_CHECK_QGIS - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_CONST - -# Checks for library functions. - -AC_SUBST(BOOST_PATH) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/plugins/worldmap/icon_wmi.xpm b/plugins/worldmap/icon_wmi.xpm deleted file mode 100644 index 6fd842ce3492..000000000000 --- a/plugins/worldmap/icon_wmi.xpm +++ /dev/null @@ -1,374 +0,0 @@ -/* XPM */ -static const char *icon_wmi[]={ -"22 22 349 2", -".U c #67381f", -"#3 c #79432d", -"#D c #7a4f36", -"#4 c #824634", -".v c #82503a", -".O c #834f37", -"#2 c #87533d", -"#i c #885f47", -"bm c #8c644f", -"a6 c #8e5c46", -"dl c #8f927d", -".C c #907052", -".7 c #916249", -"#j c #916850", -".N c #92644a", -".H c #93785a", -"cm c #939381", -"#C c #946e54", -"cb c #949582", -".0 c #957559", -"c. c #959381", -"cc c #969986", -"#5 c #996752", -"#1 c #9a6e57", -"#a c #9a7259", -"co c #9a9b85", -"cj c #9a9b8a", -"cg c #9a9f8b", -"ca c #9b9c89", -"ch c #9b9f89", -"cn c #9c9c89", -"bn c #9d7962", -"c# c #9d9d8c", -"c8 c #9d9f8b", -".8 c #9e775a", -"c4 c #9ea08e", -".w c #9f765d", -"#b c #9f7b60", -".u c #a07b62", -".1 c #a17e64", -"aV c #a2785e", -"#p c #a27c61", -"dy c #a3a494", -"a. c #a5866b", -"a7 c #a67e63", -"#9 c #a67f65", -"aP c #a6836a", -"aU c #a78169", -"aY c #a7866b", -"dz c #a7a896", -"ck c #a7a898", -"ar c #a88a70", -"dt c #a8a998", -"cP c #a8aa94", -"#s c #aa846a", -"#o c #aa8569", -".T c #aa8d71", -"dk c #aaac93", -"cf c #aaaf9d", -"aX c #ab836d", -"#8 c #ac866c", -"a# c #ac9275", -"aW c #ad7d68", -"#k c #ad8c70", -"as c #ad9478", -"#t c #ae8a70", -"dp c #aeaf9e", -"aq c #af8d73", -"dc c #afb09a", -".6 c #b08c6f", -"cF c #b0af9a", -"aT c #b1927b", -"cL c #b1b29f", -".P c #b28f72", -"## c #b29175", -"aw c #b29278", -"c5 c #b2b4a1", -"cd c #b2b7a5", -"aQ c #b3957a", -"bF c #b3a087", -"cY c #b3b39e", -"dd c #b3b49e", -"cz c #b4b39f", -"#0 c #b5947a", -"#B c #b59a7c", -"cV c #b5b79f", -"cp c #b6ad7e", -"cM c #b6b7a4", -"cW c #b6b8a0", -"a5 c #b79b82", -"ax c #b79d7f", -"c3 c #b7b8a2", -"dq c #b7b8a6", -"aa c #b8a486", -"dh c #b8b9a3", -".2 c #b99d80", -"at c #b9a688", -"cX c #b9baa3", -"cl c #b9baa9", -"ci c #babba7", -"ds c #babcaa", -"ad c #bba084", -"#h c #bba385", -"cy c #bbbaa6", -"cS c #bbbba6", -"ae c #bca486", -"cU c #bcbda5", -"d# c #bcbeaa", -"ap c #bda185", -"#H c #bda487", -"de c #bdbea8", -"df c #bdbea9", -"aZ c #bea06d", -"bG c #bead92", -"cC c #bebfa7", -"cs c #bebfaa", -"cw c #bec2ad", -"cB c #bfbfa8", -"db c #bfc0a9", -"#r c #c0a286", -"aS c #c0ac92", -"cR c #c0c0ab", -"#G c #c1a98b", -"#W c #c1af90", -"dr c #c1c2b0", -"d. c #c1c3ae", -"#6 c #c29a6b", -"#X c #c2ac8f", -"di c #c2b98b", -"cD c #c2c2ab", -"dv c #c2c3b0", -"bV c #c2c4a8", -"cE c #c3c2ad", -"ct c #c3c4af", -"bW c #c3c5aa", -"dA c #c5bd91", -"c0 c #c5c5ad", -"do c #c5c8b0", -"ce c #c5cab8", -"cH c #c6c7af", -"da c #c6c7b2", -"cA c #c7c7b2", -"bU c #c7c9ae", -"#n c #c8b08f", -"#N c #c9b494", -"c1 c #c9c090", -"bB c #c9cbaf", -"dm c #c9cbb2", -"c6 c #c9cbb5", -"#O c #caac79", -"ak c #cab595", -"bC c #caccaf", -"#Q c #cbb294", -"cK c #cbccb5", -"du c #cbccb9", -"c7 c #cbcdb6", -"al c #ccb798", -"bl c #ccb79d", -"bf c #cccbaf", -"dg c #ccccb6", -"bA c #ccceb4", -"bS c #ccceb6", -"aj c #cdb697", -"#F c #cdba9b", -"by c #cdccb1", -"bT c #cdcfb5", -"cN c #cdcfb9", -"ab c #cec2a3", -"au c #cec4a5", -"cG c #ceceb9", -"bi c #cfd0b4", -"cu c #cfd1ba", -"aO c #d0bea0", -"cT c #d0d0ba", -"bh c #d0d1b6", -"bz c #d0d1b8", -"ai c #d1ba9d", -"#l c #d1bf9b", -"cI c #d1c798", -"bR c #d1d0b6", -"c9 c #d1d2bd", -"dn c #d1d3b9", -"ba c #d2c4a8", -"az c #d2c5a8", -"cv c #d2d5bd", -"b9 c #d3be7a", -"#. c #d3bf9f", -"cO c #d3d5be", -"bX c #d4d5b9", -"aA c #d5c2a5", -"bb c #d5c8ac", -"bE c #d5caaf", -"bj c #d5d5b8", -"cr c #d5d6bf", -"dx c #d5d6c5", -"dw c #d5d7c3", -"aB c #d6c2a4", -"ah c #d6c2a6", -".3 c #d6c4a2", -"am c #d6c5a5", -"bg c #d6d6bb", -"bD c #d6d7b9", -"b2 c #d6d8ba", -"bY c #d6d8bb", -"aC c #d7c4a4", -"#A c #d7caa7", -"#E c #d8caa8", -"cx c #d8d9c5", -"cZ c #d9d9c2", -"bZ c #d9dbbd", -".S c #daceab", -"aF c #dacfad", -".M c #dbc7a3", -"cQ c #dbddc6", -"aE c #dcceae", -"#Z c #dccfb0", -"#7 c #ddb972", -"dj c #ddca83", -".I c #ddcead", -"ag c #ddd2b4", -"b3 c #dddec0", -"aD c #deccac", -"b5 c #dedec0", -"b0 c #dfe0c1", -"#u c #e0cdae", -"b7 c #e2e2c1", -"c2 c #e3cf89", -".V c #e3d1b0", -"ao c #e4c57d", -"aG c #e4d39d", -"#R c #e4d7b4", -".G c #e5dbb9", -"b8 c #e6dca6", -"bc c #e6dec1", -"an c #e7d29d", -"av c #e7d6ba", -"b1 c #e7e9ca", -"#P c #e8c980", -".B c #e8dfbb", -"be c #e9d58d", -"b# c #e9ddc0", -"b6 c #e9e9c9", -"b4 c #e9e9cb", -"bx c #ead68e", -".D c #eadebb", -".Z c #eae1be", -"bk c #eae9ca", -"cJ c #ebd791", -"bQ c #ecd890", -"#c c #ece2bf", -"#w c #eceac4", -"#V c #edeac6", -"#Y c #eedec0", -"#x c #eee2a9", -"#J c #eee6c3", -"bJ c #eef1cf", -".f c #efcc6f", -"cq c #efdb95", -"#I c #eff0cb", -".x c #f0e0c0", -"ac c #f0e5c6", -"aR c #f0eac6", -".j c #f1d072", -"#m c #f1ebc3", -".5 c #f2e7bf", -"#S c #f2eac7", -".p c #f2ecc7", -"#U c #f2edc9", -"#v c #f2eec9", -"bt c #f2f0cf", -".g c #f3d073", -".e c #f3d174", -".4 c #f3edc4", -".J c #f3edc8", -"#g c #f3eec9", -"bu c #f3f0ce", -"ay c #f3f4ce", -"bK c #f3f4d2", -"b. c #f4eccf", -"#K c #f4edc9", -"bH c #f4edcf", -"#T c #f4eeca", -"af c #f4f1cd", -"aN c #f4f8d5", -"bd c #f5e9b4", -"#M c #f5f5ce", -"bI c #f5f7d4", -"#q c #f6f0cd", -"bM c #f6f6d4", -"bP c #f7edb5", -"#d c #f7f7d0", -".z c #f7fcd3", -".W c #f8f3cd", -".9 c #f8f5cf", -"bv c #f8f5d2", -"bs c #f8f5d4", -".R c #f8f7cf", -"bO c #f8f7d3", -"#z c #f8f9d2", -".A c #f8fad2", -".Q c #f8fbd0", -".F c #f9e197", -".o c #f9f3ce", -"a8 c #f9f6d1", -".q c #f9f7d0", -"bL c #f9f8d7", -"#L c #f9f9d2", -".r c #f9fbd2", -".s c #f9fbd3", -"bo c #faefd1", -"#e c #faf3b8", -"a9 c #faf5d7", -"br c #faf8d7", -".K c #faf9d0", -"bp c #faf9d7", -"bq c #faf9d8", -"aI c #fafbd7", -".y c #fafcd3", -".i c #fbdd7e", -".Y c #fbe499", -"aM c #fbf9d8", -".L c #fbfacf", -".k c #fcdc7e", -".n c #fce69a", -"#y c #fce89c", -"aH c #fce99e", -"bw c #fcf0b9", -".X c #fcf3b8", -".E c #fcf4b9", -"a4 c #fcfada", -"bN c #fcfbd8", -"aJ c #fcfcd8", -".h c #fddd7e", -".b c #fdde7f", -".a c #fdde80", -".c c #fddf80", -"#f c #fde89c", -".t c #fdf9d3", -"aK c #fdfad7", -"a3 c #fdfada", -"a1 c #fdfddb", -".# c #fedd7a", -".m c #fedf7e", -".l c #fedf80", -".d c #fee081", -"a0 c #feea9f", -"aL c #fefad8", -"a2 c #fefbda", -"Qt c #ffdd76", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"Qt.#.a.b.c.d.d.d.e.f.g.h.d.d.d.i.j.k.l.mQtQt", -"Qt.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.q.EQtQt", -"Qt.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.XQtQt", -"Qt.Y.Z.0.1.2.3.4.5.6.7.8.9#.###a#b#c#d#eQtQt", -"Qt#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#xQtQt", -"Qt#y#z#z#A#B#C#D#E#F#G#H#I#J#K#L#M.B#N#OQtQt", -"Qt#P#Q#R#S#T#U#V#w#W#X#Y#Z#0#1#2#3#4#5#6QtQt", -"Qt#7#8#9a.a#aaabacadaeafagahaiajakalamanQtQt", -"QtaoapaqarasatauavawaxayazaAaBaCaDaEaFaGQtQt", -"QtaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZQtQt", -"Qta0a1a1a1a2a3a4a5a6a7a8aMa9b.b#babbbcbdQtQt", -"QtbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwQtQt", -"QtbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPQtQt", -"QtbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8QtQt", -"Qtb9c.c#cacbcccdcecfcgchcicjckclcmcncocpQtQt", -"QtcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIQtQt", -"QtcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1QtQt", -"Qtc2c3c4c5c6c7c8c9d.d#dadbdcdddedfdgdhdiQtQt", -"QtdjdkdldmdndodpdqdrdsdtdudqdvdwdxdydzdAQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; diff --git a/plugins/worldmap/images/marksml.gif b/plugins/worldmap/images/marksml.gif deleted file mode 100644 index 20f5768c5668..000000000000 Binary files a/plugins/worldmap/images/marksml.gif and /dev/null differ diff --git a/plugins/worldmap/images/marksml.jpg b/plugins/worldmap/images/marksml.jpg deleted file mode 100644 index a0cc5b552aea..000000000000 Binary files a/plugins/worldmap/images/marksml.jpg and /dev/null differ diff --git a/plugins/worldmap/images/title.gif b/plugins/worldmap/images/title.gif deleted file mode 100644 index bad238a6213f..000000000000 Binary files a/plugins/worldmap/images/title.gif and /dev/null differ diff --git a/plugins/worldmap/images/title.jpg b/plugins/worldmap/images/title.jpg deleted file mode 100644 index 3921466bfbf6..000000000000 Binary files a/plugins/worldmap/images/title.jpg and /dev/null differ diff --git a/plugins/worldmap/images/worldmap_logo.gif b/plugins/worldmap/images/worldmap_logo.gif deleted file mode 100644 index 1e4d961c22d2..000000000000 Binary files a/plugins/worldmap/images/worldmap_logo.gif and /dev/null differ diff --git a/plugins/worldmap/images/worldmap_logo.jpg b/plugins/worldmap/images/worldmap_logo.jpg deleted file mode 100644 index c30d7c27fa45..000000000000 Binary files a/plugins/worldmap/images/worldmap_logo.jpg and /dev/null differ diff --git a/plugins/worldmap/qgsworldmapimporter.cpp b/plugins/worldmap/qgsworldmapimporter.cpp deleted file mode 100644 index f90c67e16fba..000000000000 --- a/plugins/worldmap/qgsworldmapimporter.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/*************************************************************************** - qgsworldmapimporter.cpp - Import tool for various worldmap analysis output files - Functions: - - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ - -// includes - -#include "qgsworldmapimporter.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -//non qt includes -#include -#include - -// qgis includes -#include -#include -#include - -// xpm for creating the toolbar icon - #include "icon_wmi.xpm" -// -static const char * const ident_ = "$Id$"; - -static const char * const name_ = "WorldMap Import"; -static const char * const description_ = "Importer for WorldMap model output files."; -static const char * const version_ = "Version 0.1"; -static const QgisPlugin::PLUGINTYPE type_ = QgisPlugin::UI; - - -/** - * Constructor for the plugin. The plugin is passed a pointer to the main app - * and an interface object that provides access to exposed functions in QGIS. - * @param qgis Pointer to the QGIS main window - * @param _qI Pointer to the QGIS interface object - */ -QgsWorldMapImporter::QgsWorldMapImporter(QgisApp * theQGisApp, QgisIface * theQgisInterFace): - qgisMainWindowPointer(theQGisApp), - qGisInterface(theQgisInterFace), - QgisPlugin(name_,description_,version_,type_) -{ -} - -QgsWorldMapImporter::~QgsWorldMapImporter() -{ - -} - -/* Following functions return name, description, version, and type for the plugin */ -QString QgsWorldMapImporter::name() -{ - return pluginNameQString; -} - -QString QgsWorldMapImporter::version() -{ - return pluginVersionQString; - -} - -QString QgsWorldMapImporter::description() -{ - return pluginDescriptionQString; - -} - -int QgsWorldMapImporter::type() -{ - return QgisPlugin::UI; -} - -/* -* Initialize the GUI interface for the plugin -*/ -void QgsWorldMapImporter::initGui() -{ - // add a menu with 2 items - QPopupMenu *pluginMenu = new QPopupMenu(qgisMainWindowPointer); - - pluginMenu->insertItem(QIconSet(icon_wmi),"&WorldMap Results Importer", this, SLOT(run())); - - menuBarPointer = ((QMainWindow *) qgisMainWindowPointer)->menuBar(); - - menuIdInt = qGisInterface->addMenu("&Biodiversity", pluginMenu); - // Create the action for tool - QAction *myQActionPointer = new QAction("WorldMap Importer", QIconSet(icon_wmi), "&Wmi",0, this, "run"); - // Connect the action to the run - connect(myQActionPointer, SIGNAL(activated()), this, SLOT(run())); - // Add the toolbar - toolBarPointer = new QToolBar((QMainWindow *) qgisMainWindowPointer, "Biodiversity"); - toolBarPointer->setLabel("WorldMap Importer"); - // Add the zoom previous tool to the toolbar - myQActionPointer->addTo(toolBarPointer); - - -} -//method defined in interface -void QgsWorldMapImporter::help() -{ - //implement me! -} - -// Slot called when the buffer menu item is activated -void QgsWorldMapImporter::run() -{ - QgsWorldMapImporterGui *myQgsWorldMapImporterGui=new QgsWorldMapImporterGui(); - //listen for when the layer has been made so we can draw it - connect(myQgsWorldMapImporterGui, SIGNAL(drawLayer(QString)), this, SLOT(drawLayer(QString))); - myQgsWorldMapImporterGui->show(); -} - //!draw a raster layer in the qui - intended to respond to signal sent by diolog when it as finished creating - //layer - void QgsWorldMapImporter::drawLayer(QString theQString) -{ - std::cout << "DrawLayer slot called with " << theQString << std::endl; - qGisInterface->addRasterLayer(theQString); -} -// Unload the plugin by cleaning up the GUI -void QgsWorldMapImporter::unload() -{ - // remove the GUI - menuBarPointer->removeItem(menuIdInt); - delete toolBarPointer; -} -/** - * Required extern functions needed for every plugin - * These functions can be called prior to creating an instance - * of the plugin class - */ -// Class factory to return a new instance of the plugin class -extern "C" QgisPlugin * classFactory(QgisApp * theQGisAppPointer, QgisIface * theQgisInterfacePointer) -{ - return new QgsWorldMapImporter(theQGisAppPointer, theQgisInterfacePointer); -} - -// Return the name of the plugin - note that we do not user class members as -// the class may not yet be insantiated when this method is called. -extern "C" QString name() -{ - return name_; -} - -// Return the description -extern "C" QString description() -{ - return description_; -} - -// Return the type (either UI or MapLayer plugin) -extern "C" int type() -{ - return type_; -} - -// Return the version number for the plugin -extern "C" QString version() -{ - return version_; -} - -// Delete ourself -extern "C" void unload(QgisPlugin * thePluginPointer) -{ - delete thePluginPointer; -} diff --git a/plugins/worldmap/qgsworldmapimporter.h b/plugins/worldmap/qgsworldmapimporter.h deleted file mode 100644 index 29761897831c..000000000000 --- a/plugins/worldmap/qgsworldmapimporter.h +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************** - qgsworldmapimporter.h - WorldMap analysis result importer for qgis. - Functions: - Buffer - ------------------- - begin : Jan 21, 2004 - copyright : (C) 2004 by Tim Sutton - email : tim@linfiniti.com - - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - /* $Id$ */ -#ifndef QGISWorldMapImporter -#define QGISWorldMapImporter - -#include -#include - -/** -* \class QgsWorldMapImporter -* \brief WorldMap analysis importer for QGIS -* -*/ -class QgsWorldMapImporter:public QObject, public QgisPlugin -{ - Q_OBJECT public: - /** - * Constructor for a plugin. The QgisApp and QgisIface pointers are passed by - * QGIS when it attempts to instantiate the plugin. - * @param qgis Pointer to the QgisApp object - * @param qI Pointer to the QgisIface object. - */ - QgsWorldMapImporter(QgisApp * , QgisIface * ); - /** - * Virtual function to return the name of the plugin. The name will be used when presenting a list - * of installable plugins to the user - */ - virtual QString name(); - /** - * Virtual function to return the version of the plugin. - */ - virtual QString version(); - /** - * Virtual function to return a description of the plugins functions - */ - virtual QString description(); - /** - * Return the plugin type - */ - virtual int type(); - //! init the gui - virtual void initGui(); - //! Destructor - virtual ~ QgsWorldMapImporter(); - public slots: - //! Show the dialog box - void run(); - //!draw a raster layer in the qui - void drawLayer(QString); - //! unload the plugin - void unload(); - //! show the help document - void help(); - private: - - - //! Name of the plugin - QString pluginNameQString; - //! Version - QString pluginVersionQString; - //! Descrption of the plugin - QString pluginDescriptionQString; - //! Plugin type as defined in QgisPlugin::PLUGINTYPE - int pluginType; - //! Id of the plugin's menu. Used for unloading - int menuIdInt; - //! Pointer to our toolbar - QToolBar *toolBarPointer; - //! Pointer to our menu - QMenuBar *menuBarPointer; - //! Pionter to QGIS main application object - QgisApp *qgisMainWindowPointer; - //! Pointer to the QGIS interface object - QgisIface *qGisInterface; -}; - -#endif diff --git a/plugins/worldmap/qgsworldmapimportergui.cpp b/plugins/worldmap/qgsworldmapimportergui.cpp deleted file mode 100644 index 631203512d43..000000000000 --- a/plugins/worldmap/qgsworldmapimportergui.cpp +++ /dev/null @@ -1,338 +0,0 @@ -/*************************************************************************** - qgsworldmapimportergui.cpp - description - ------------------- - begin : 1/1/2004 - copyright : (C) 2004 Tim Sutton - email : tim@linfiniti.com - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -#include "qgsworldmapimportergui.h" -#include -#include -#include -#include -#include -#include - -//non qt headers -#include "vector.h" -#include "string.h" -#include -#include -#include -#include //assert debugging -#include - - -QgsWorldMapImporterGui::QgsWorldMapImporterGui():QgsWorldMapImporterGuiBase() -{ - //disable the ok button until both input and output filenames have been chosed - pbnOK->setEnabled(false); -} - -QgsWorldMapImporterGui::~QgsWorldMapImporterGui() -{ - -} - - - - - - -void QgsWorldMapImporterGui::pbnInputFile_clicked() -{ - QSettings settings; // where we keep last used filter in persistant state - //an auto_ptr means we dont have to delete the object later - std::auto_ptr myFileDialogPointer( new QFileDialog( ".", - "All Files (*.*)", - 0, - QFileDialog::tr("File to be imported"))); - - // allow for selection of only one file - myFileDialogPointer->setMode( QFileDialog::ExistingFiles ); - - - if ( myFileDialogPointer->exec() == QDialog::Accepted ) - { - leInputFileName->setText(myFileDialogPointer->selectedFile()); - } - //check if we can enable the ok button - if ((leInputFileName->text()!="")&&(leOutputFileName->text()!="")) - { - pbnOK->setEnabled(true); - } -} - - -void QgsWorldMapImporterGui::pbnOutputFile_clicked() -{ - QSettings settings; // where we keep last used filter in persistant state - //an auto_ptr means we dont have to delete the object later - QString myOutputFileNameQString = QFileDialog::getSaveFileName( - ".", - "Arc/Info ASCII Grid (*.asc)", - this, - "save file dialog" - "Choose a filename to save under" ); - - - if (myOutputFileNameQString!=NULL) - { - leOutputFileName->setText(myOutputFileNameQString); - } - //check if we can enable the ok button - if ((leInputFileName->text()!="")&&(leOutputFileName->text()!="")) - { - pbnOK->setEnabled(true); - } -} - -void QgsWorldMapImporterGui::pbnOK_clicked() -{ - - - - enum FileType {MINIMUM_AREA_SET, SPECIES_RICHNESS} myFileType; - /** Values which represent null or no data in the file */ - float myNoDataFloat; - /** Current column in the matrix */ - long myCurrentColLong; - /** Current row in matrix */ - long myCurrentRowLong; - /** Position in the matrix expressed as (current row * cols) + current col */ - long myCurrentElementLong; - /** The FILE handle containing our input data matrix. */ - FILE *myInputFilePointer; - - /** Flag indicating whether we should output debug info */ - bool myDebugModeFlag=true; - /** Char array to hold each line of text */ - char myCharArray [1024]; - /** Flag to show whether file opened ok */ - bool myFlag; - /** number of cols in output matrix - must correspond to worldmap dims*/ - int myColCountInt = 360; - /** number of rows in output matrix - must correspond to worldmap dims */ - int myRowCountInt = 180; - /** vector representing the complete matrix */ - vector myMatrixVector; - - // - // Determine file type to be processed - // - if (cboInputFileType->currentText()==tr("Minimum Area Selection")) - { - myFileType=MINIMUM_AREA_SET; - } - else if (cboInputFileType->currentText()==tr("Species Richness")) - { - myFileType=SPECIES_RICHNESS; - } - else - { - /* - cout << argv[1] << " is an invalid file type - filetype must be ma or sr." << endl; - cout << argv[0] << " useage: " << argv[0] << " ma|sr infile outfile" << endl; - cout << "Where ma - minimum area set file and sr = species richness file" << endl; - return 1; - */ - - } - - // - // Open the input file.... - // - - if ((myInputFilePointer=fopen(leInputFileName->text(),"r"))==NULL) //open in read only binary mode - { - cout << "Cannot open file : " << leInputFileName->text() << " for input...aborting" << endl; - //cout << "Cannot open file : " << argv[2] << " for input...aborting" << endl; - //return false; //give up - return; - } - else - { - cout << "File : " << leInputFileName->text() << " opened for input" << endl; - //cout << "File : " << argv[2] << " opened for input" << endl; - } - - - // - // Open the output file.... - // - ofstream myOuputFileStream(leOutputFileName->text(), ios::out); - //ofstream myOuputFileStream(argv[3], ios::out); - if (! myOuputFileStream.is_open()) - { - - cout << "Cannot open file : " << leOutputFileName->text() << " for output...aborting" << endl; - //cout << "Cannot open file : " << argv[3] << " for output...aborting" << endl; - //return false; //give up - return ; //give up - } - else - { - cout << "File : " << leOutputFileName->text() << " opened for output" << endl; - //cout << "File : " << argv[3] << " opened for output" << endl; - } - - - //populate the vector with -9999 to initialise it - myNoDataFloat=-9999; - int myCounterInt = 0; - for (myCounterInt; myCounterInt < (myColCountInt*myRowCountInt); ++myCounterInt) - { - myMatrixVector.push_back(myNoDataFloat); - } - - - //skip 12 header lines if the file type is min area - if (myFileType==MINIMUM_AREA_SET) - { - for (int myCounterInt = 0; myCounterInt < 13; ++myCounterInt) - { - fgets(myCharArray, 1024, myInputFilePointer); - } - } - //skip 5 header lines if the file type is species richness - else if (myFileType==SPECIES_RICHNESS) - { - for (int myCounterInt = 0; myCounterInt < 5; ++myCounterInt) - { - fgets(myCharArray, 1024, myInputFilePointer); - } - } - // - // Parse the datafile - // - unsigned int mySpeciesCountInt=0; - unsigned int myRecordCountInt=0; - unsigned int myAreaInt=0; - unsigned int myElementCountInt=0; - // Read the data. Bail out when no fields filled (0 means no fields were filled) - do { - fgets(myCharArray, 1024, myInputFilePointer); - // - // // Get the record line number - // - int myResultInt = fscanf(myInputFilePointer,"%i",&myRecordCountInt); - cout << myResultInt << ": Record No : " << myRecordCountInt ; - //set the vector value matching this area with - //the number of taxa - if (myResultInt < 1) - { - cout << endl << "Record Number could not be read from " - << myElementCountInt+1 << " of input matrix. " << endl; - continue; - } - // // - // Get the area number - // - myResultInt = fscanf(myInputFilePointer,"%i",&myAreaInt); - cout << " Area : " << myAreaInt ; - //set the vector value matching this area with - //the number of taxa - if (myResultInt < 1) - { - cout << endl << "Area could not be read from " - << myElementCountInt+1 << " of input matrix. " << endl; - continue; - } - // - // Get the species count - // - myResultInt = fscanf(myInputFilePointer,"%i",&mySpeciesCountInt); - cout << " Species count : " << mySpeciesCountInt << endl; - //set the vector value matching this area with - //the number of taxa - if (myResultInt < 1) - { - cout << endl << "Species count could not be read from " - << myElementCountInt+1 << " of input matrix. " << endl; - continue; - } - //see if we have an unusually high species count for this cell - if (mySpeciesCountInt > 200) - { - cout << endl << "An unusually large Species Count was found on row " - << myElementCountInt+1 << " of input matrix ("<< mySpeciesCountInt << ")" << endl; - } - myMatrixVector[myAreaInt]=mySpeciesCountInt; - ++myElementCountInt; - - }while (!feof(myInputFilePointer)); - - - //printf ("%i Elements read\n" , myElementCount); - - - myOuputFileStream << "ncols " << myColCountInt << endl; - myOuputFileStream << "nrows " << myRowCountInt << endl; - myOuputFileStream << "xllcorner " << -180 << endl; - myOuputFileStream << "yllcorner " << -90 << endl; - myOuputFileStream << "cellsize " << 1 << endl; - myOuputFileStream << "nodata_value " << -9999 << endl; - - //show the user what we got in the final vector - myCounterInt = 0; - int myMatrixSize=myColCountInt*myRowCountInt; - //cout << "Matrix is " << myMatrixSize << " element long" << endl; - for (myCounterInt; myCounterInt < myMatrixSize; ++myCounterInt) - { - int myCellValueInt = myMatrixVector[myCounterInt]; - if (myCellValueInt > 200) - { - cout << myCounterInt << " has an unusually large value (" << myCellValueInt << ")" << endl; - } - //decide whether to start a new line - if ((myCounterInt % myColCountInt)==0) - { - myOuputFileStream << myCellValueInt << endl ; //note endl! - } - else - { - myOuputFileStream << myCellValueInt << " " ; //note no endl! - } - } - - // - // Close the input file again.... - // - try - { - fclose (myInputFilePointer); - } - catch (...) - { - //return false; - return ; - } - // - // Close the output file again.... - // - try - { - myOuputFileStream.close(); - } - catch (...) - { - //return false; - return ; - } - - emit drawLayer(leOutputFileName->text()); - //close the dialog - close(); - -} diff --git a/plugins/worldmap/qgsworldmapimportergui.h b/plugins/worldmap/qgsworldmapimportergui.h deleted file mode 100644 index 43cfd1fa9982..000000000000 --- a/plugins/worldmap/qgsworldmapimportergui.h +++ /dev/null @@ -1,51 +0,0 @@ -/** \brief The qgsworldmapimportergui class is used to import worldmap outputs. - */ -/* ************************************************************************** - qgsworldmapimportergui.h - description - ------------------- - begin : Sun Aug 11 2002 - copyright : (C) 2002 by Tim Sutton - email : tim@linfiniti.com - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ -#ifndef QGSWORLDMAPIMPORTERGUI_H -#define QGSWORLDMAPIMPORTERGUI_H -#include "qgsworldmapimporterguibase.uic.h" -#include - -/**Gui subclass for importing worldmap results - *@author Tim Sutton - */ - -class QgsWorldMapImporterGui : public QgsWorldMapImporterGuiBase -{ - Q_OBJECT - - public: - /** \brief Constructor - */ - QgsWorldMapImporterGui(); - /** \brief Destructor */ - ~QgsWorldMapImporterGui(); - /** \brief Applies the settings made in the dialog without closing the box */ - void apply(); - void pbnInputFile_clicked(); - void pbnOutputFile_clicked(); - void cboInputFileType_textChanged( const QString & ); - void pbnOK_clicked(); - void leInputFileName_lostFocus(); - - signals: - void drawLayer(QString); -}; - -#endif diff --git a/plugins/worldmap/qgsworldmapimporterguibase.ui b/plugins/worldmap/qgsworldmapimporterguibase.ui deleted file mode 100644 index b8c31e3cd39d..000000000000 --- a/plugins/worldmap/qgsworldmapimporterguibase.ui +++ /dev/null @@ -1,341 +0,0 @@ - -QgsWorldMapImporterGuiBase - - - QgsWorldMapImporterGuiBase - - - - 0 - 0 - 593 - 432 - - - - - 255 - 255 - 255 - - - - WorldMap Results Import Wizard - - - image0 - - - - unnamed - - - - pbnCancel - - - Cancel - - - - - spacer2 - - - Horizontal - - - Expanding - - - - 410 - 21 - - - - - - pbnOK - - - OK - - - - - layout1 - - - - unnamed - - - - pixmapLabel1 - - - - 5 - 5 - 0 - 0 - - - - image1 - - - true - - - - - pixmapLabel2_2 - - - image2 - - - true - - - - - pixmapLabel2 - - - image3 - - - true - - - - - spacer3 - - - Horizontal - - - Expanding - - - - 280 - 20 - - - - - - - - layout2 - - - - unnamed - - - - textLabel1 - - - - 140 - 0 - - - - - 140 - 32767 - - - - Input File: - - - - - leInputFileName - - - true - - - - - pbnInputFile - - - - 20 - 32767 - - - - ... - - - - - - - layout3 - - - - unnamed - - - - textLabel1_2 - - - - 140 - 0 - - - - - 140 - 32767 - - - - Output File: - - - - - leOutputFileName - - - - - pbnOutputFile - - - - 20 - 32767 - - - - ... - - - - - - - layout4 - - - - unnamed - - - - textLabel1_2_2 - - - - 140 - 0 - - - - - 140 - 32767 - - - - Input File Type: - - - - - spacer1 - - - Horizontal - - - Expanding - - - - 20 - 20 - - - - - - - Minimum Area Selection - - - - - Species Richness - - - - cboInputFileType - - - - - - - - - 789c7dbdd792ebca92a6795f4f71ac70573686a626606d734132b5564c353617d05a0304c0b179f776c4ef11794e55776ddacab5be0410c2ddc3dd4380fb7ffcc73fbe5f1efff11fffe3df9ad66a23e71f4e68d5fff80fb7cbb2f1fff97fffefffefdffe7d3dfb87b1fec7dc5c98ff58fcfbfff56fffae8fff70fef154e4de04ed9c409bcd66cbd96ce2ce113c9f2dc04dc9ccd7fb05f30adcfe085ec8eb43c7ccd7cf29f31a5c9b8297aafc9e999f1f35667e7e1898f9f9c663de305f0b5ec9f2ea353397773e32f3f3bb67667ebe477bd6b32dd7f7cb6cf0fd89e08dbc7ece984d7efe5df056b6b74f99f9f95e67e6fbf711b3c5edbf136cc8f2774766bebebb176cce6ce64f6697db8bfe5a8a43c1b67c7eb099f97ad70a766479bdc3ec73f92bf07cc6d7bf05bbaa3c8fd9e1eb3bc19e7c7eb801cbe747c8c39fb37ef67b669657f734f17c3e677db5a2ff743797d717e0f99ccbbf67e6f276b7cc52fe81e0a5bcdec460c28de046f05ade7fda324b7d2f152f45fb847dcd3773b697dd3bb331138369ef33b37edb86d99db9e2ba183f7363eecce6c27ed01e73cef26b7c666f6608863c2cbabe15cf0bfb9bdb745db4a717f63b7789c5f8ddf5ccfe1ce5e37e97fa8bfb51bf37b751fe2e04d3754b945f09f6174b5c1f857e178bc51af2ea45798be5623517fd3dbf2a5e4d1c09fb5ea8f1d5de8017ebb9a87fd8336fd0debd68ef62bd3070bd7715a3bfa3e0cdc2427ff696e0edc2447d55c16ccd7cc18fcc36fa93e27943b6671cc00b13f2ec5e99ed39e41f8097b3b929dadf33cfe7902fca3317cedc16f77f8197ebb9a87f14fe6e61517bc4fde38ad9417f5a43b0bd5ca2bc40f89b8523dbd7fb606a8fa8bf13fe61e12efcb9e84f07f9b9cbc5dc11f5435e1eb557b4a75a322f20af5ee877e12f3cdcbfcfc0745db46714f647ee763917faf5457f9673e9afba014cfd13edd544f9347c78fcb71a98ca13ed8bc4785c2affed9f98d9be93142cc76f7305a65fa07f1df302f5b55f9217b8df625ecfc5781a2ae60de4b5fb96bc10fd4f2f05afe6dc5ea765e6f6b41178aa50c8a364dece85fdb7427ecb35d52fae5757cc2bc8ab457f36cbed622dea7f6236d0deea8ed964f9a78a614f73c90bc8ff2c98bc3fda976f98d9ffb517602a5fb4cf16fe6769c8fba31558caf7ec839736da9309ffb634a53eb41bf09cfd7f9580a9ffa27de58fe405c6fb9e992c5ce803f59b1470c5fd3ee46349fd97cfcc1ccfe24766ae2fac993dbe1ffab3a87fc21f5473661bf2eb02c90ba1ef61c1eca27f21ecd396f2b01e99d91f4717cc2c4fc7004bffdff0fd541efc1fe4e52c3dd4b7477b1deaaf183f8e184f4b57b63f86fc5d193f2ac8cfa5df607ce279979e17fd73c5f85f7a723c053133b7cf85fe55fc3cc33ebca5bf10fe66ef82a93cd15e6726d897f76747300d1fc4270fbc5aa0fdbe8867d4798e8f510556f6b305af164be16ff72df36a21c65f26ec6b3597f20d6366d6affbc1ccf946658365fb826b66aebf47fd739237fcab09a6fe09ee63c5c2dece17cc4b707110bc90ed295c66a99f2358c6efd462366762fc86c25fac9652fe510096f9486c31b33d7bc25e562b696ffe0733dfeff5cc3cde821d58f63fe4fb657b925b661feda936e09501ffe2897c74a5f2511bfd5fcbf8ee0a7fbcdac8f68592f9fe00eddf507c17e5c53ef36a06fb7c63de827bc863b3da2e118f636613f24ed0bead944fff005e194be11f6c91ffac0c297f5707cbf1961e988d99b0af64c16cb1bde6e095bd84fcd13ee5bf32f4df94f69acf98d99edc27666e9fbd6276517ebb07537b85ffcd612fca5fb9576029bf08edb5487ee2feaa675e21bff3853f5cd932ff4bae996df42f9c333ba8bf5830bbd05f358069bc0a7f97df321bc8675cc8c351fd3931b33c830d33dbd3f905bcf2317e7391dfaf5c393f4967cc2ccfe21e2ccbd7a03f97e2abd0bf6d309b887f0ee4e54979654bb06c4f3e326fd15fc76796f62bef677bb7215f8ff24de16f63e1ef56be6c5f8cf27c9227ecfd9599f5698bf14dc914df9f7b60d91f776076a00fef1b4cf216fe3316f9e45acd6ffd9699edd7d983657989c5ccfdf57e98b97d5109a6fe203f12f9cd5acd7f730d2cedd7e3eb64ffe2792f64f6d1dee0094cf627e4938ccc2bd84b72c36c201f4e4c6617f9baed33f3fc203d83297f847d087daf291bc4fc24bc6276a11faf65f6913f7b90ef949e89e7d30be60df2796dc16ca3fedd06bcde2e457b43313ed6148ed01fed164cf99de0ea957983fc708ff6add6c652f4af99313b2b51bf03fdadc97f213fdc81a93e71ffce60a68c48f457c4a3f546fa7bef0e2cf59b79cc26cb5f5ee7f9570e7d6c68be02ff80f66c65fcf32ec1d2dfc71f60d297684fe0311b982fe48364e8a3abc1eb35e4351e996df8570bfd31e47cb1f8052fe6b08732643658dfb05f63ca88853d04cc263868985dcc673ad897b199ad301ed15fca5ed1df04f66192fe84bc3bb4c794ed6d03e6cd4ac8aba9990d702cfce57af2a7980fdd30b33d87276607f21851be45fa463c0a99dd15ec6baf58c8c383fddb349e30de311e6d1a8fa2bdc123b389feb83eb30bfbcdb760ca0791ffa7e0b58df69f0b666f25ae2722beadd5fa8987f21c159f5e986d8c9f12fa77e47c3689983d9edf6a8a857c3af81787ea13fe779833fbe87f80f1e3923c857dc701b305ff1d7f82697c09f9666b661ff94522fcefdaa3f12feecf77cc2ecacbd13f4fda573e675e637c5b5b661e0fb9cf6cf1f51c2ce7d7fe1bf316f667a5cc26ec4fe3f2970ee4bf43ffbdcd7c85f182f1e5537c11fa76d13fea0dc6975f336fd19e3062b6a15fb707d3fc53f437db306f309fe8603f3ee91bf621ec879c23fb6fdf63e6f504bf03cbf58da866e6fe070533db73b2542cf4e99ec1b23d8d0da6044dc867e7322fa17f4fcc3f3653ba23f411bf322f58fe6766e96f0266b6fffc9ad944fb9c9cd99d0b7bc8578a457bdc0a4cd365517f182a16f2cf6f989798ef240633cf27771198da2fae7716f36a25da17a3bc855c2ff31d660ff6e7fb60d91fd76066797a57cc1eb7af01afe6d0e75e07537d983f1892d7e2fef38a79bd16e5b962fd6133c52fc199c9cceb39f95231e65fefe0a503fb2d4a6617f3fbea16bcd9c09f965be62df4e988f8b95951ff45f911caa3090ce4e18eccdc3f0bfa5fd18c5fd4e7bc31fb98affb681f4d2830bef3164cf150f4a7e5f24942a2fc71cebc59c3dfdd306f617f4dceecae912f421f94a0c0dee30df382ed0dfaa60400f6e46bcc4b8cf7f28199e73721ec774d1920d6b7201f0a1fa8efac336fd1be18d7293b407e95ecc1945089ebb9c5bcc478b03f99391e468d62e10f7ce85faddf0467660bf24d62b06c5ffa0da60e89f67790c786da27f87ccf6c427ee39762f807f096f2478ce707660ffa8e77603260d15ebb65dea03f5ecaccf123f861e6f11aafc1723cbad7ccecff538dd95888e7ad3b66173cc25f6d3716eca3dc303b687f89fe1a245fe48f57cc26ea8fde986d8c8f64cdeca33d01f437adb78afb038379cdf1e09e7983f53e07fa32d63cff6ff87e92b7d0df5e63b620ff18e3635adfc2fa14ecc7a47885f5a6807903fbf49e98797c670b661ff12a80be4db9fe98f3f3ab19e4959f98d7581f39c17f99243ff83bbebeb1b97d62bd6d6391bd8af19aef99b790a7057f63917c208f07668e4ff9af62611fde82790bfdba97cc0efc413c80a53ff04be635d68ff290d9867defa07f8bda0b7fb56676e01fdb07c5c27ec78d62f847b4c796ebb941cebc657f65329bbc7ed733fbf09705eaa76c0beb8dc91df316eb5fe98ed9019f9fc11b0ff6705e2a16faa8a05f9bc42b3812f9f4c621fbc57cfc9299f72bf2676639df9d337bb0970afec559dadcbe8cd9813c53c89b6627b89e7d306fc1e50c4cf2c57e043f4fedc5fa33e4ed6c676bd1bff6cc3c5f23bf837f75a5bf730ecc1ccf134d31fc4bceccf1ca9b31f3fe4282febb646f423ede8979098ed6cc1eec3dc578a26c1be3b1843f73a93fa2fea6627661ef2d974ffdc3fec892d95f8bfa1dd8cb945f8afa8a39f39af3a50b661bed8d9f991dd897e331b37e02d8b327fd47a8337b58ff74f1bc2ff3a5e29199fd41b263e6fd1307f1615a3f15d7a381d9c0fa640bf9faa42fe4eb21f37c8df128f2ffed4ce6cbce2558cec7029f99c77734673630be9d07660be33933985dd8935f81697c637ede306fd1bef88bd95d627f88db43f287bc85fcb673ca57b11ef2c2ccf30f1feda17c0eed49568a914f9fc0723c161533af3fb507b094cfae635e6dc4f38ec877a9b015e243f9c46ca07fb60e96ebefe19a7989f5797fcfcce3ad10f6bd5d923f853c026603fa7596cc9c7f978fe025fbbf969fdfae37d08718bfdb951c1fe18a99fdaf0df9aea93d427efe9a7983f28a27665e3f8def983de823afc1eb19f28958f8c7ed94c062fc5e3073fcf40ab0dc2f718fcc6cdfc13d58b627da30f378cd21ff0dcda7910f89f8b6ddce79bd2883bea67c409497ce997d94e76ec1543ee6876b6673299e4f7b661b7c46ffb75b7383fdb6b562611f05fa67903e84bcbc7b661ff617b5609a1f09fb0af9fe9585f5e1ea1abc3530deda5f666b83fd398fd9863e0b8c2753d617a760d2af283fbf60e6fd47bb633630fe0ae8cba4f921e6a7b01f93ca17fa28178a85fe761ab3b3c1fc2e04538283f10bfd4df11af9309eb7c8de71fd93d9407ed1c25fd8527e11aebbd3811a313e319e5cd287685f1783b73eea73447eb2f5e478b67ec03463c0fa25f4e7537f45fb63f1bc31a3fb91cf9dc1347c31bffd02af69c48aeb5bc5a2bebc67dea2fc5d0e36e61b21ef93e425f747b4c7a06c05feb12dc0c6628bf128fc0d19ff9af747e6601affb08f19786d2f85fd9c32b0b1863e6ca17f6329f381dd35d8a00c5dc85bf87f6345fd837c50bf5a7facc47ccc58d3f8c17cf30e4cd32bac9fadc106651c42df19b3bf15fd8b85ff3636529ebecbecc25fd8c2df185bb9bf958bf16818abe552c82f437d865c0f38f960aa0ff211f66f90f6219f780f5e19f0c7e527984ac07c8bef37975b319ecfc27f1b169527e4d13f2a16f2ea0d66678bf50f116f0c9be20bce97a0bf365dc7febec6eca1bc5dab18f109fa77e4fea68be79d8d81fef547b061a23c17fa98d6af30bff1c074bf60e795d9817e63d89f4b1320cc8fc5f830bcf506fa74df99fd15e2c33d58ce7f6d13bc75909f9d212f8ff409fb457b3c73017def2cc5a23d19ecd3a77c485c0f84fd9933393f0cae986dccaf3c915f9873b9de682fc03443c67ce0174c1e08f1f00d6c981bd1bfde039b0b03f3678b79b945fef5c9bc823eda15f3dac0f813fda1e9d106f2f417ccdcbe16cf4fd33dd8fb37f302fa197f99d75b21af408c077345fac17af123d8dca03dfd4a32dadbde2b863c77cc1412041f980d5cdfcbeb26e4ad09fba2da1de437e7114ce589fe9d35e62d9e1f74c5a2fc3a6136b7f0df68ffc6b4707f2ff207736b920717fdfd61b6303e4261afe6341f4579e81f992fe45da7cc26c6cfb9966c203e38cc9681f87566b60d21cf6ec7ece2fe508c57739a6f22ff44f926dd8ff509e8cfb416b87f847c2c6a2fd6c36c66db80ff13eb3f2645b315e6833e98ea13e559229f30a7f909f27bc8d7a10025ecc1837e5cba2ee495dd321bd0c7ee056cfaa82f15fedcf4290312f5553ab3097f7dfe005b3313e7f584fe887cc87fd880297d853e1be68581f50ed11f6bbe99a13fa7184cedc57c40d82f4dbf9798ef9edfc0d6d214e5d731f306f525423fd66acaa0262e72669bf30d136c6d517f22e61bd69a3c0aceb3bc832dc3807d9a924dd19e41d89f45136a3cbfb7990db4a77b61360da1bf10fd27eb45fd610b26f342bc10e3c93228fe63bdeb114ce31ff12902db0b13eb7dc2bec83c4ce8b313fed3b22d17edebc4f8b71ccbe6f60bfbb75ccb33e15f843d5a9e4d1e48b45fe4df964fe5637d45c4237b26e3552dfc953da7ebe2feee8d9946b4909f90afbddc1ac85f42134ce307f986f057367933c4efe8126cd8c82f7657600a67183f223fb1b7f6da44fe27ecc99ec623ec05ed312cf66f918827b649fe0ef3731d4c7760bda165b62c948ffa2ddbb430ff39819da58df312221ed8b6ed5938aff9a018f9bc9097ed527c11fa1c50be6bfb96e8dfb8502ce4710ac1cecc12f7d7229fb03ddb43ff861a4cd7d1be7bc5d85f1d981728bff964b66cacaf0b7bb47dd217da770196fe6e770376e678be0e9969c22aee17d79d998c3741c9ecc1df0e3e98fa23fcf71882a93d583fc1f373e9afbb23987e83f8bb918cfe0f77cc2bb4a713fec059507f91df78cc2b0bfbab2ef306cfe7c29e9d25e95bd4df7f81e97951dff0c8bc4479dd1df31ad7c7847963c1dec57877a67827eaab75308d0fe81fe5ade87e317eea1766c312f2d550fe9afc01f2a96730a557189f2b66cf46fe0ef96da83eacb75d31db9c6f7d83c9ffc19e4cb063e0f99dc36c42fee740b168fff98ed9827c53c86f6b58b0d7ae02530d38cfbc960c7beaa10f4af0d0bf5dca4c0d14f23d335b36d62f453c71c81bc17ea21c4c0310fb1590070520ae4fb26d237fb4991d1bf94ecdecdac867600f16f51ffa70986ddc3ff4cc0eca6b778a457b13f4df267f89f8ffcbecb07fecc074bf90e7f0c1ecdac8cf311e1cea1fe6bfb00f87e22dfcf703b387fca58cc096cff63380a93ca1df53caecc3df0c9f8a853c4f81629c9f407f5c399e4fa8df257d0bf90c26b30bf954f76077061e509e47d791dfd7ccbe8df318e89fe7ce517f02f64d87f39d4b303d0f7f9981a97ce4277c9d9e873e5cc538bfb6655ef2f879956cc3df89fbdd994b1e42f83b311edc395d47ffde9857d04726e6832e794313fef411ec2e50def0a018f152f8777749e5c17ff5cc2bf42711fede5d91be60ff35989e473efcc5bcb2e18f02e60ddad7bc31d3844a8c37e19fdc35f94721cf2a03bb5b5b8cf77229d981ff45fb293de1fce1062cefeff7cc342285fe3d660bd7f727c90ef2bd2db3ef607f1aed35e83af6fb453ee89ae4b1046b21b3097f180affe85a949f0979ed1db0eba0fefd13b38ffacf901f0538d457a03e873200515e0f7d92413ae2fe1af272bca583fd31e10fdc293e623d0afd715dcf413ef6c0ec43be89184fae673b16ce03a07c8f4a10faeff9ba37477b73616fd45acad0c5750b4cd7050f27c5c86f057b336a0fea13fed29bf21dec773d323b886fed1b98da87f7575ec11e4db8853c853cbc05b92bd8b301f616b83f729997183fc19cd984fd39623c7a4b291f37067b6bf8bbfa59b2037f3d487645fbeb27e60dfa9b08fbf6c89a91cf385b30c52b717fd130bb18af960ef67cd8577c03f62dc82b12f6e94df68efdb13398c63becf31eec510411fafa550c7f76c76c421e16dabba17c4df8839305a61ae05f52e60dec6d7fc36c32178ab1be74cfcce3a3e8c1fe1ce5d9e02d0508eca76c993dc83bb0c1727cec3ec09e09fdf65bc5a2ff3bbe9fea43fc9f33db2ee6cf1b66cf457e0bf96efd05fb0f913f92743cc4dfec13ecce21cf7a07a6fe419e36b3e58afeedef986de8679829c67e10ecd5f067783e5d321bb08f9388873459d83aa2bdfa9ed986ffdb5f4be6fe6b8ab1bf1e31f3784c1fc0246faca72c9817d04724c6af674d1217feb566b6d19ef656b28bf946cfecc07f8c4f9221ff08f66051ff901f63bcd9347eb0be8cfa6cb227ec177e325bdcbf19b3ed0afb2bde99d9bf9dde983d5cdf5d30fbaeb0dfe4054cf50b7d9e2ac5587fdb4a863d74ba6251bf7e669e3bd83fff568cf33722de4ebd47fe57431f945ee27ab367765c9ca74e985d17fe9c9fa7f663febe96ece13cce23b38ff60ddf8ab15e02fd3ad41fc4c703f31ce517b7cc5bd87ff6cbecc31f65289fb2118cef9499c60bfcd525b38d7855458a853eeb92d9817d369d64945f7d33bbec2fb692a1af7a64f6d0bedd1bb30ffbea378a319fe5f6517f317f594986fdef7e15c39fdd30cf21bfdd9762d8ff05f312fd0d3de60ddaab87cc26ae5bb662ac9fae997dc8df067bd25f57b0578ff233212f1bfe92b48bfc27d3990dc8b37861b6d97fae987dc8a7b9978cfe9d678a919fdc49f6305ef87969ef95a118f3b15bc990477d629ec3bec62bc518df978a719e81eb23ff01795f4b867eed827985fa03ee9fbf46fd812c6f8bfe764b6603fd8b6c668e6f19f797ec17f11cf6ee933b10f2d6e1cf7cb25ff89790d946fd2794ef537f918f5f32cf616f8dae18f9e92df302f59dde15c3bfe68a71de96eb277bc2fb9b2f925dbc2fb5635ea1ffee8a99e3e9fe4b32da1709f9526bd7983fa5b7cc3cfff39f983de4dbe50798c61bf2a72f660fe325f963f1bc3e63f6e1dfca5632c6cbd880491e584f289817b097ddab62515f7fa118e7f16ce625e4bf7f900c7b1ae4f32bd8f7f82119f59d6f98399f3a7d4b86bcd39c59e61723b30dfdb90b6607d7bd9a99f3df50deefc2de23793ff73f15fe8cbcbd83f95bfac5ec42fee10f58eac37e0453462ada9b86cc4be453de86d9857d5ad7ccac9ff495d987bcea3d98e4097de88ae1ffcf8ab1be564a46fc68af1563bf9adb43fa40be7d2519f21a1cc5f05f0be615ec7dbc508c782aeb5b439ffb57c5c23e3cc906ec317d512ce46fb5cc1c1f1d8dd985be6b4b31ee3f327b9087d52916cf8767c5384f9f48f670fe4cb6d7477f2a5f31ce63158a113fc57c71f26e58eff1d09e05e55f584fbb900cfb6a5f99391fa9a1ef058d509c67bf508cfcee997981e7b58079097f70fe96ec21bfeb99d7f0bff58362ccb78f8a31ff93cf6fd09e6aad58946785cc523f29b3c9f3c32fc9687fe8325b282ffb61e6789fcaf673fe95ed14e3bcccb562c857ac9750ef589fa9c1ccf3e5fe0d4cf2c2799967e615da7bba92cce3a1550cfffc2519faef6f14237e8dcc6bc8bfcb25c37f0def8ab19e6949c6f80a0ecc3c9f3b7d48863cc64831d60fd5fde8bf6d339bb077dd61e6f8efd6cc0eae07ae629cdf97e5733e587d28c6f9b33bc5983f8bf84ebdf7507e8efe4d2f90e1bc5dc9ccf99215302f608fcd997905fb1a9e99d7b0a76aa618fb81b2bc35dbefad62d84bccbc81fc875132fccfa049463ee30ccc9c2f8c9964d8d729528ceb7bc5884fb27d06da3bde2b46fc7e538cefa390fd33a12f5dcac342fdd65231e6e79fcc36f4e37d30bb3cdfec247be2795df69ff5677d28c6fe99af18e70f52c99eb0efe64731ce4740be6b77817c3344ffd6148f703e2861de20def83fcc06ae27af92117fa29899f3a712f6b896f3a55432afdf9c7e2443ffc19299eda7be528cf9782999fd49cfbc64ffbf95ccfafb655e41df7da618fe4ab6678df24f27c990677bc7bc813f48d7cc3c3f1a2dc93cdfba558cf9c98364d8637f508c2f0b7a62e6f9fb5e3e6f60fc7733c5d85fb9528cf3e30eb309f99d06c5387f6c325bb017b761667b8b0c66194f65fd2eec335e30737cd2d91e64bea35f2b46f973c5785ff14db1685f7aaf18ebf1182f1b9a0fc3bfd5ccbc1f92a0bd1b77c5eb6b2b30d91bf68f35665e7f727a66ce576dc84fad1785b6629c672899171c1f0e92110fc23df312e3b75e4a46ff838199f3f3b263667f763298d93fb96fcc5bce4f1792d93ecf92315ec7176603f1a35c29c679e007c5421efa2fb389fe8cb964f6bf3f8a71fd4631ce8fea92e11f4eb23e8bf3915c31e61fef8a717e3c61b6610fe75bc5783f51cacf81fcf647c5388f1733f37cbf93f2f03cacf7c9feb1fdf9778a319e22c538dfe328c67ad2bb62bcdf89f66c3dde0fc92ae625f2edc8615e237f4b37cc6c5fd12d33e71f0ec6c3d6e7fc3d5d49667fee2a16f56b1a33db4fba655ef3fcb563de421ee59562bc0fa4331b18af892799e3692519f9cb79a718f676af18eb6326b3097f35ce14231eaf15633de787d9e2f9ef8362bc1f502ac67ee937b3cdf357d95f9bdb7ba918f677ab18eb1b521e36ea6f178a71defe93d981fef71f8a31dfbf60e6f98225f5c3f6d61492d15f77cfccf385e4a818eb2f9d62315ef59499d75fecb364f69f578a61afaf8ae12fff18e781de15633dc9520cff9e2bc6feb76c1fafe7c4d0075903e69721f283e9b80cf67f6f99395ee706b3077b2c901f4febcd787f98cb93f3c1722f19fab522e615c78f4bc588af33c9e88f7bc7bc61fffdc788e70db3f48fb27cf68fc31333fb47e78b99f3e3ec2c99e79fbd62ac1f7992915f9edf150bfb74647d168fcf4a32cfff9f1463fee04a867d9673c5b08f0333afef973792597f778ab11e742119fd3b2f1463fe5630f37cea1c2a46fe1428c6fed12fb30bfb3ded1563bf6a64f6a03f5fea9bedbf382a16f2ab1ac5789fc36266fbd765ff64bef0a618e7d99f15237ebd2846bef5a458d887f6771debc547c558af0c14239e4b7bf0a18f18f29cf64fe19fe0ef4ccf823f2ad11f53aef7593d33ef7fc473c578de635ee2fe306396f3cd4bc9dcfe6fe62de4dbdc321b685ff1c6ccf61a8dcc3c5f38d992391f94edb5600fed9562cc67e4fd1c7f4f6bc578dffd2019fe6e7c532cecf594303bb08fba538cfc59b6df81bfa965792ef4510f8a853c348399f72f9c9859dac75a31ced3998a857c3457b1689fb6578cf9c35131ded76c15633fcb578cfdbb2bc5785fe74e31fcd5a7649e3f7d2bc6f966b497b223e4a719e2b925edc9f96176713e227d538cf3579162bc1f86f86c917fc57c2b552ccab37c665edf2c5e25431e76c6ccf655da92d1fff64332af6f7c2a86be2a6683d7a31c66debf38cd25c3feca5fc9904f7662b6a0afea5231d64ffeaec3bfc9f22cf8b766508cf8f8cc6c733c558cf69d1e1563fc168a715ea0538cfdc125b3dc6fca25431ecd42b1686f9728867fdd28463e21f5c5f3a55aca9be7efda8f629cd7dc28c67ee9bb64f4bfbe518cfc7eae18fb8f8d62aca7cf14c3df3c307bbc1f76528cf33c2bc5d82f91f2f0d17ebd97ccf9ca8362f8e756b19097de28c6f9fe4a31fcdd4e31f61fee15e37dc937c5f83e94bff2b01ef9a918eddf2bc6f7653c2a867ffa568cf30b67c9ec9f5479906fabfae323bf467ca1d90be60331fc3b65979cff3c33f3fe78d54ae6f52fd88f4df349e44f6bc93cffa99979fdaad424435eee03f316e567ad64ce37ae99793dbc7524437e76ce6c727b5e15e3fd851fc9b0b713f757c6932a560c7b92cfdb2ccf5fc990a77764e6f9dce94931ce5fcc1423be6d15e37db26fc9b0e7f341b1b87ef099797feae02916f24b23c9bcdf70568cf34e3f8a912f49f9b9eccf35c5d8df92f5f1feb22bdbc3fb03d58362acef2e25f37ce95b31e26dc3ccf3c353ad18efcf748a912fb99279fc6d1463fc9d1423fe658a457ff52fc5a23fda5931e69bcf8a114ffecac3faee8362610f96a618f9aaa518eb4f7ff5c39f7f2a46fc94f6e1b37ffb508cf59b77c5c837547bd9ff5e28c6f9d3bff2f03e21f4ef786bac070519b38bf944664be6f502c41747ee2f06a3628cef9c7905fd2401f386f3df9d62e4cfbf8ac5f341cfcceb83e55932ec2349980d94970d8aa1df3933ef4f5a37ccbc7f726a99391eee4dc93c9e2cc990dfc0f22009607d32578cf3833ab38bfab34631ce6b678af1fd9107c558bf7215e33ca9ecbfeb21fe3e29c6f77dfc30f3f940fd5131e2d15931d6375e2573fea018fd6b9f14233e9e24fbd0b7ec2f8f3f7d508cfde65bc5887f8a391f7d578c7c64ab18f1af568cf36f6f8a31fe54fd3cfe46c5588f2c1463fcdd2bc67c33530cfb741423ff3b29463eee4b86bec73fc6fb1f1bc5b0df9d62c853c907fa6a3e24233edab8df9dbe404ac4fb23339fd709778af13ef59ad9c3f874606fae5c7ff55c663e4f665d31f3fe5a36326ff9fcc613b301fdd41933af7f771fccbc5ed9dc48867fefd575d8672ed9e67cf59799e73b075d31f23b4332ca6b968a857e0f0eb38bfa0fb662ac77198a313e5ac9f00fadba1ffed09a33f3fc5bf314637ffa4e31e2dd5a31d613168ad1fe5fc5d0ef8b64e4b3d605339f873db88aa1af2fc598af7c2ac6f8bf568cf363ea7ee8ab0a15637fee4631fc9f2a8fe35ba118f1f95b31f6af0cc5f8bec327c558ef7e510c79f492793d3d558cf33daabd3c1f56fde1f5f847c5384f7aa718ef3ffc5dc7fbd5d23e7c1feb87d0b727cf776811b38378e45f30b37f8c31bed5f9ab2c60e6f151eaccbc7f99cc98f97c6b6928c6f9967b665ecf721dc9bcde622a467e74a118f17e900c79695fccbcdedfbe28c6fef0ad62ece77c33f3fa6c562b86beb78a219f0333c79743a018df6727dbc7e3678814e37dcb8c59c69b1fc9bcfe6f2bc6feb9ab18f622e5e9f17c6c540c7f2fefe7f872d014e37df35bc5f8be1e4731fc752119e3a37c578cf5825231e2cf4a31ec5395c7f1a8538cf5c64bc5783f3f528cf5d79962cc37be150bf9b94bc5f8feffbff60afb894cc558dff963ccc72e14e3fba43f14e37c86b45f1e8f85a118ef931c14e3bcc6bd629c2f7c568c7c47d5c7fb1ba362cc9763c5a2fdbb85629cc751ed47fcebaf2523feb59562d82ffc8def9878ff267b66b6f1be4b847c7a7a5f06fb396fccfc3e4ac2cfbb6baccfe7dfcc26d68b824f6607f351ef5632c7d380d9e5f242c9b85e398af17db9180f246d3eaffecbccf1d8df302fe08fec8a79c9edf9558cf3e7578a71be41debf827ff367cc7c5edbde2bc6f88b15c31ffd306f703dfe63ac97bd2ac67e03cb6bfa028189c317c5b0774fb1282f2c15a33c5731e6938e649e2f14ccfc7e50e628c67a5fa918fe39518cf5f433b3c9f38d77c538eff6a218fdb714637de35331ce8748f9f1fb1049a718f9e28762acc7a78ae1bf5f15e3fb216dc97cfe565ee7fdb92c538cf7457cc5284fca8fdf8f48ee158bf2fc9e99cffbdb978a717e4cf68ffdbddb32733e99ad14e3fcb5a618e707ae15235fcc25a33dd99562bc2ff6ae18f343291f8e0fe15631ce63be2b463e23dbcfe7cf825631f6d32ac5c8576f148bfa7d69af327f92d7d9ff173f8ae15f5e14637d07fecc97e7afbca562d8cfaf627c3fd64e31e4632986feef25f37ad1b362c4f74e31d69f22c5c897cf8a715e95e5a7f2fb4831c6eb5a32ca4f1e14c37fc68a91df7e29c679b40fc5f04f2c2f799e5cab25a33fa1a558c8b3b8518c7c63ad18fe2a508c7877ad18f19cc7bbdcff747e15e3fd8e3fc6fe99a518ebd7a164decf8f15e3fb535e15c37e6e15e3fdac4431d6db0bc5f8be9c5431de07fbbb1fe767a4fc783f363424b3fe6bc5d8ffee14e3fd1c4d31e437538cef337214e3fccd9b62f8fb5131f2f59562c8bb6196e7d93dc5f8bef54131cea3c68af13e62a218ed7b508cf31847c5989fdf2b46fb1cc5a27d5ea518ebd17bc5983fcafa79bf5ab315e3bcc34932ef27ce14e3fb29df14239e778ad19f3fc6fb7b7fcf63bc8d8a317f081543df7bc5981f3c2ac6f76ba48a619f9c8fc8f36c5aa218f1ffa418e7bd22c538bf5029c6fbcf2f8ad17e5731de9fdc29c6fec0a818f1fa5d31fc9fa618f946a918f148ea93cfd739521e1c8f7dd91ededf0a3bc5f06f96629c1fba528cfdc78d627c1f62a518f3815bc5b0ff6fc5c8677e15637ff04331ecbf558cf731a4bc0c5e6f97fe96f3055bf6c7e4f5e25231da7ba518dfe7152bc6fcaa578cf65a8ae15fe78ab1dfff571ff2ff5431e46f4ae6f333d27e381fb1e478e6f313d6a562ccffef15235f8815237fbc530c7f7d508cef23d414e3fbf442c558ef7e518cf7c33e15c3bf4b7fcff3593f518cf6dd29863f6e14a37d7ff723ffbc578cffbf51ad18fbadb962f8c39362f89b2fc542dee1b762d8c74e31d603ffda8ff3606f8af1fd6ad2de79ffc696f6cce7c32de92f783fc74d15c3be72c5588ffa540c7fbc538cf968a518fef8af3cecd7ff31ec6fab18dfff9d2886bebe14431e8362cc3faf15237fb31563be29c70f9f57e8557f78bd40e63f9c4fea9964c8c35b29c67cbc500cfb382a16fd7f6d15637ff45331c6dfbb629ceffa528cfe6f14c3ffb98ab15e5c29c6fb716f8ae1dfff9ec7f8fcbb1fe7bb5f14433ed29ff37a4a3d578cf34c3bc5d85f7e558cf575e9cf38ffd535c538cfb0550cfdd78a118f2dc5582f7f548cf13b2846ff53c538cf1b2bc67ce5ef79f43f518cefff3b2ac67e8d1c7ffc3e6da1dac3ef47aafe20be94778af17d59aa7e5e0f7c568c7825fd958ff9cdc1528cf3888e62d13efb4631e67fd29e79bee0a9fb395ff715c33e55f9ac8fa562e4d78962ac17798a619f7fe563fdf5af7ee867508cf75f0dc5a2bfdaa562bc0f612ac678fd558cfd9f67c578bfe94331f229999ff07a9176548cf564f53cf453a8f6413fe5dffd98bf287d607db7ec15e3ff2f5029c6f9e76bc5d8ffbf508cf327a362ac7faafe63bda9fcab0fef67b48af1fef74a31ce876d14e3fb3aa4fff0b1bfd5c68ab13e552a5ec2ffbcb6baf6bfffd0154bb7754777754ff7f5807e867aa4c77aa2a7c4999eeb855eea15ddebe9b5ded0a7d53b7ebad34fc4bd3ee823eaf93fd522ead1f43395b1d3f7f4f3a05fe897fa957e4df5dce8b7a29e3bfdfebfade781daf3087ff22f9f4e7cfef9374fd4239bcab1f567faf9a0bf508f5ef537fd5dffa0de1cf53bd19a4b51cfe95feaf924fed2bff59fff524ff7bfa9c7d67ff5993ea73217fa525f514d6bf1d9904c0b51d3f49cac67ab9e97f518bac9f574ffdd47d37543d3483e866669b6e6401e9a4b3f3fa7f2348ffefea45a6af19bedbf3c3d5d596a3857f0dfd642f504538ba896508bb4584bb4947efba5655aae9fb482ca6d453f6aead127ddedfdd7766abaa8e7933fff2c2fd996e9636aa55669b5d668add66927add7526dd0726dd4ceda4edbeb2fd4b7866af1c49347f5ac288f6470d02e443d27d1df7fad47e37be99a76a95d51e9d7da8d76abdd69f7da03d5f448fd7bd29eb517ed557bd35ee93e4ff7c40839aa674569dabbf6a11d453dcdd467923bb547fbd426bd69da37fdfcd47ea8b442fb15f5ccb4b9b6d096da4a5b539d1b6dab199a69e9966659964df7399a4d166e908d1f850627394ee322b71c9c4315d255f5589ee5d3dd8615909d7d5a21dd6f5a91155b89955a99955b85555a95555b8df64b575aabb34e2437c3eaadc11aad33fd6bf7578f5e597beb60fdc9ed12fdd6efac4bfa5cd1ddd762c4ac49d3ad754325de5a77d6bdf5603d5a4fd6b3f54277bc5a6fd6bbf5611dad4fddb3beac6febc7fab56664991a493b433d44477c2f84d04e27fa58d187fa6e2df48a34fd4db663584b6b25fab7b636d6d6322c9306ad665bdaa3367d579f639dc80e06dda0a4d7b37d3bb0432ae15fead1deed48d99b267e57d9b19dd8a990b26167764e3f8bc91bd8a55dd9b5ddd8adddd927bbb7077b2449dbf6996ac9a676d83b7b6f1fec0bfbd2bee27aeaa94cfbdabeb16fb99e8efab6239935f69d7d6f3fd8644d36791bcdb19fc5f8dbd82ff6abfd66bfdb1ff6d1feb4bfec6ffb47d4ff6bffeab53da3decced85bdb457f6dabe22c9fc733d1bf66f9da8e752bfa7dedcdb5bdbb04dedd1d185dd39bae1688ea57b76a2cda6ef3ca3a4d7737c27d05227742227a6516a58574ee2a44ee6e44ee1d0589bea712aaee7cefa62ff368de1a3f629fa73efd44ee3b44e477f9f9c9e6a19f44f6724bf56396767e7ec9d8373e15c3a5754cfb57343d76e9d490396736fdd3b0ff6d279743a92faa7e80ffdcb4e9c27e759f587c7951d3b2fceabf3e6bc3b1fd6ad73743e9d2fdd73bef5a5f3437f7e9d99337716ced2593927dd76d6a49f4b6acbc6d94edf5fe7eaaee65a4e4236ff3d8d3c9724eb3a36e7b51c29a68f6635ce8b4bf99c93b981f3e1866ea4396e4cbdb1f4a59bb8a99bb9b95bb8a55b595f6e6dbdbb8d6eb8addbb927b777077774cfb6e6eea651abb7ee9eae1dec882cf752c5057832d11ff7c2bd74afdc6bf786ecf792ecc1736fdd3bf7de7da0ba1edd27f7d97d715fedadfb66bd51893595fcee7eb847f7d3fd72bfdd1ff797da3673e7ee62fa4eb3c90368d8a7ac94e7447fd6ee66fa1631d72407b1f6c437ea788ee6eb4b4a7cefc4f777045ee845d3f35e6c6b5ee2a55ee6e55ee1955ee576dae0bee92f96e5d5da2bf5f75dc5854ac44378d18a3cd783d778add77927aff7066f24bf6079676f477f2fbdbd77f02ebc4befcabbb613ddf06ebc5befcebbf71ebc47efc97bf65eb40dfdf6d57bf3deada3f741ff3e7a9fded77faee7b525db0e9dd2fbf67ebc5f6fe6cda7efcff256de9aead8587b6f3b7d3f92affbdaf4bf99f32d5b9c079cce28505613f8532f07ed477bb54e7ee4c7bae1277eea677efe4f72fbe4f858391bbff04bbff26bbff15bbff34f76e2edfd5ef7fcc1faf247ffeceffcbdf5e21ffc0bffd2bff20affdabfd156feadf3328d6dffcebf7797fe039565f88ffe93ffccfdf9cb4d26cfddf92fd6e0bffa6ffebb65fa1ffed1fff4bffc6f3bf17fa8a65f7fe675d3772ad8a135e8e6f436f9f446a9ad592fd4beadf633ad36f966a093d56f022db002db4d03ac97dc683a593af9287719b8148f1d3fa1517cebbf055ee0074110065110074990069993f863900745500655401123688236e86c37380534a6a7152fcaed9a60084627b1e7c139d8057b3bd63be4ed53a6111c820beb2db8245bdceb9ff6cc1ab45370155c0737c16d7017dc070f5456ed24de75f0183c05cf54c74bf01abc05ef01699ba4f0101cb517ff9ef4f3492337093e83afe03bf8097eb52a40be3ec54e6fea0f49cf08e6d4ab05fdbd0c5664111fc13ad804dbc0084cf26127dbf5c7500fb5d00ae962e87a9a16fb5b7dab157e1c7a14872ead5de85b2f6110866114c66112a64ead0d9867865938458027ff656a8b6f8445e80517f49b38a8ec7958865558874dd8869d7defbf86a7b00f698c876378d67ec31dfd6b3fe998a221b5d5e9c24378115e865754cf757813de52ae84f51a8a52e15d78ef69fe417b0c1fc247ead1d15d6a4ef8143e3b2f5a1fbe506dafe19be5e966f81e7e84c7f0d3bea7986d699bf02bfcf622ea6b12fe84bfe12c9c878b7019ae2c235c879b704bd652e8782f9b62616846ba3d8f34ad8f2cb287594491127a9b625ee46857fe4b445940e4457e1444611445b1666abf5112a55116e55111955115d55113b551179da2de9f478347961d8dd119f127a8a25db48f0ed1457469cf3daa50f3680c4494479fe8beab60493fafc99b2ca39be836ba8beea387a08d1ea3a7e8397a895ea3b7e83dfaf09de8187d465fd177f413fd46b3681e5acea757478b68897cc79d1a39462bb78fd6d126da86b793c64544a5484ed66b444664c6fae445b438d6622b26771bbbd12ef6623f0ee2308ee2d87b8893388db3388f0b72f1655cf9635cc74ddcc61de2f6946dc4a7b88f8778f466f139dec5fbf8105f68abb0d4ba70882fe3abf83aa69c27beb5e7f19d1d90d556f17dfc103fc64ff173fc12bfc66ff17bfc111fe3cff82bfef6c3f827fe8d6791a7fdc673ca33455c8817314946dbc4ab781d6fe26d6cc466a2275a6225140c13377a49bcc48faf9220fc4ec2244a62e73349743349932cc9932229932aa9932669934efbb5b7c949fb75369395b961f0a6fdaab86d263d8d3a2d1992313927bb649f1c928be432b94aae939be436b94beeb5debe4b1e92c7e4299c27cf649f45f292bc266fc97bf2115a5a3c952a6cc68c281f4e8e54e6a776a9dbc957f2ad3f26a29ee437784d6664b19fc93c59244b374f56c93ad924dbc448cc544fb5d44aed686795a993ba4e9e7af673eaa781f611bca5a1f6a19b6994c6691219691a1cd32ccd223332d35cdbd1954237d2d2e3f7e988ebb409dec2cfb44dbbf494f6d65d3aa4637a4e77e93e3da417e965fc9b5ea5d7e94d18a7b7f4ec5d7a9f3e44cfe1903ed2d394d1bb247bbda1b8b6b6426b39c5731af171fa9cbe44cfc8e3b5cbf475ea77fa46a654a7efe907d577f4c6f093f4f110ecd3cff42bfd4e7fa83fbfe92c9da70bcac2b574a97da42bed483fd7937ec91b1c49cb83c8e58d7433e599e99662eeaf9c97d0bfb6a991d2a8cb74faf7f439458f99467f2c37240f739fd99374324a4e322ff3ed791664217194c57e9025c11b65972e892b733eb23c2bb2323dd2dce594514eabdb719dd55933d593b5a2eccb8cac253b65bd666543366abf6e4449d18b176bc7ec9ced28297cccf6d921bbc8683ea49b7692bc6557d9757693dd6677d97df6903d664fd973f692bd666fd97bf6911db34ff757b7bd55f685f537fa0cda907dd30c8d3ff4ef8172d28db3d11ea3e7ec27fbcd66d48a79b6c896b193ad68566066eb6c936d332333dd63aee75a6ee576ee446deee65eeee7411ee69135e4b1e6e409d7236b79a6fc813e344f434d54579ee6599ee7455ee6555e7b4f7943a1397136799b77f929eff3211ff373becbf7f921bfc82f132dbfcaaff39bfc36fcb6b7d68cf2d6cffc0eeb85d3884d8bfc3e7f509ffbb4d02ea90efaf8a376cc1fb59d3fe64ff973fe92bfe66ff97bfe911f533bffccbff2effc27ffcd67f93c5fe4cb7c95aff34dbe0dde72b287dcd43e68eaaf09bb2ef0a17ad467e2a976aaa78a9dc22a6cedb1700ab7a0a4a308ac216b74b30863573b1651111709dd9e1579511465511575d1e4c782b45e74c5a9e89de742c43959ee3f95ad3e44553116e76267bbc5be381417c56554a4548bf61a3d91f51c8babe2da1b8b287a29cef4873c7271a37d9095d2ecb7b82dee2c4ddf200ff9cf72223d4c9fbf7a9c224a57d4fea4b82f1e8ac7e2c9d914cffef4c447f14223e818bc15afd3874a3f865f54fe5bf19e78c54741d72253bf455e557ca29ea9dcf0abe04ff8c5f5a41ee9a7f82629fc14bfc5ac98178b6249b5ae26bf53ac8b4db12d8c6220e99c8a13dd39688762101fd3792ef552a35284dc4a8b320a47332972bda436f946faa43679b497fc387d4a5b3b968ef651baa557fa6550866554c6e4992dfa1d8d52aa6728d3f8aa4ccbaccccb82a82cabb2d68ece53d96847db85bf2e5bbad295a7b22f87722ccfe5aedc9787f2a2bc24ba2aafcb1bba7e5bde95f7e543f9583e95cfe54bf9ea7c90063eca37eacb07da337da6111fd15898fee0a3dbe5bbf78975d0f2834a3a969fe557f95dfe94bfe5ac9cd367512ecb55b92e37e5b634b455695278d52aabb22ba7729d8f8aa258e557819084fa08690ff8f07adaaa0ac57a67443270493343155709f56aacd22a235328aab2aaaaba6a265d576dd555a7aaaf866aacced5ce0d538a36d5de7b8766ff4bf9a8c3d386ea50619dc2b66e9c4f7ae6323f565724bf63755ddd54b7d55d755f3d548fd55345d9a76d552f5154bd566fd57bf89959bae97c6a63f5511dd973fca7f2f9b3d46d6a7f25faf339ad7c545f54d377f553fd56b36a5e2de8eab25a55eb6a536d2b237a7612921249a8d62916c7b526e28b595bda33eaf92f752ce5a7b66bac7b7bb523ae9bda50bb9345d65eedd7411dd69176ace33aa9531a07cf759657754edaa7e8ef3a14950d6da49c7a14a3fbbfe9515ad605e45697765e57754db6f25c3775eb3cd75d79ac4f755f18f56421c77aaccf93fdd63be7a9de5b9af6511fe873318d3c696f1cbb7e279f22eb9d3e94e589797d7d493df9adaf266dd7d76407d7e5757d53dfd677f57dfd50f6f563fd543fd72ff56bfd56bfd71ff5b1fea42b5ff537f5faa7fead678556cf0badd048b7e2835af1273fd68b1afb8b1ff5721ac7f5aa5ed79b7a5b1bb5591e68d2a535566357178d4361df6bfc2668c2266ae22669d2266bf2a628af9bb2a99aba699ab6bc6cbae6d4f4cdd08ccdb9d935537bfb664f7f0e79867ab4ebd26e2e9acbe6aab96e6e9adbe6aeb96fdae6a1796c9e9ae7e6a5796dde9af7e6a339369fcd57f3ddfc34bfcdac99378bda6c96cd8a7eae9b0d7db68dd1984d5b1badde6aadd590a5b5646fc8435a87bcc4b1755baff5dba00d9b4d1bb5719bb4699bb5795bb4655bb575dbb46ddbb5a7b66fbedba11ddb33ddb76bf7eda1bd682fdbabf69a9eb9696f9bb2bda35befdb87f6b13cb44ff4e7b915fa695f8aa17d2defdab7f6bdfd688fed67fbd57e53293fed6f3b6be7eda25db6ab76dd7cb49b76db1aad392de276566753cbcdf6b9733ab7f39a4de777411776511777499776d924fb2eef0a1aa707e4a379da95c5d0555d5d8e5dd3b55dd7b45dd69dbabecabaa11bbb73b7ebf6dd817e7bd194dd6577d55d5729dd7b435a183bea437747fa29bbfbeea17bec9ebae7eea57beddebaf7b2a7f8e3619f24ffc8c8a2bb8feed87d4ed6d67d75dff4f44ff74bff9e75f36ed12dbb55b7a6df6de837dbcee8cc6919f8649dec937372abc3c93bf9a7e0145687b23f45a7f8949cd25376ca295094a7ea549f445e756aa77175a2acea742a3b8a03c7535f3d9437d3b839d1e8398da7f36977dad36f4e278a2da70bfa7339797ded78a2d15066a76bfa0d49e47473bab5b46a4dbfbfd33e4ef7a787c9a79f1e4fbcce777a9abcc189f2d3d30bb5f1955af5467fdea98e8fd3f1f479faaadf4fdf939d9e7ea8c7fde997aecc4ef3fa772a7bf2f5a705fd59e2efe9b7f47bca5529e77b3a3d4e321276fd74a216d48bd3e6b43d19271a3bbddeddf55a6f352545a0436ff74eeff61ee9bfedfd3ee843b2e3551ff5719ff469fbdb93c6fbbc2ffab236fb8a22d7a1b9ebeb66ec1bd25edfb77dd78bf583fe547c9c6efabe1f9ab21f9bb63ff7bb9e225d3fd597f417fd657fd596fd757f433f6f3ba7bfa3bfeffb87fe91fe7eea9ffb97feb57febdffb8f36a69fc7feb3ffeabfa9b6eb72ec7ffadf49fea29ed9e40dca9b7ede2ffa65bf6aefa9be75bfe9b7d41f6a5d6ff4e6a093a3b27ab2b881ac997e6ae409dac1691e06771af9553578833f04433844e538c4dd77d30fc99096e4cb866c10eb4843a199d5ba188672a8867a688676e848ad87a11f8661242bcb87f3b01bf6c361b818c87a87ab815a3adc10ddd2df77c3fda93fbd52b90ff4e7917ef33469b24f4f145b8667edc379729e847ecec3cbf04af5bef50bba633c99833dbc53691f937e86e340d63e7cf58be19bfefe197ee9e76cf81ae6c362580eab613d6c264be877c37630a826b39e9ddc511f35b2c58fd11aedd1494b51cf144128228ceee88d7e7d538e4d3906e538868d575e8fd118371e05eb847cf7f1f43ea6a4c48cfee463419d4dc76aac8b616ca8fd6e4fee68ec468ac8633f52a6388ee359376b5bdf8979fd72dc69e7d3030daa233d1f8dfb292e8c87fa9662c21dfdc6a7bf6fc9ca491af4fb8b61ba8b46e47839cca81d57546a4ed6dcd16faee9f7d7e3cdf035de16034529caae3573b272510fcdf1b4dff14e3b8ef7dd4c947533d544cf3dd0c7274b1f274d8c8fe313d9f9381caa7cb8ae2eaa0bfa37e55ee3f5f05355e3f3f832be9697e39bb8f3797c2f53ea2765bfcda1817f33dc9566681f96361ea7b6538b3ec7af91b431fe8ce47bc6d9381f1793958dcb7135ae078bfeb519b7a3d1c5fd7a34cf3a655f87b376b69a4d7f3edb67a79c9fddb377f6cfc1293987ce0df2b7696eaafd9e23e7f91c9f29af1a6fcee9392bafcff99952f8f186bca7d3efcfe5b93ad7e7e6dc9267f63ae7dc9d4fe7bed99c877ed73c74c9793c9fdbf8bc3befe9da81ea238f7bbe3c5f51467c7316fee07c73be9dfa73be3bdf9fb3f3c3f9f1fc4496f03abe9e9fcf2f64d7def9f5fc767e3f7f9c8f9d7bfe3c7f9dbfa9ac9ff36f7b759e9de7ed9c6a5b9c97e7d5797dde9cb767e36ceef476bed3765639eeecbead7f791e4cdeae5aef9c9dbbf376feb0db05bb70f8a07ba2c61eae76f12ed9a514bd36bb8c628d33c5a6ced9e5bb6257eeaa5d4df5b4bb66d7eeba36de9d7664e0bb7177deed76fbdd6177515eb77633226ef7b3dd65b5da5dedae77374db9bbddddedeebbbbddc3ee71479a277adebd9487dd2bfd79dbbdef3ee8ef23f9156df216ddfdee73f745357def7e76bfbbd96ebe5bec96bb153db7de6dca7eb72dc8e6843f789dfc4e31ec8c9d39beedf5bdd6b47b6b6f77c9de69cabdbbf7f6fe3ee836fb701fede37d525e932c16fb749fedf33de522fb725fedeb7db36ff7ddfeb4efdbc7fdb01ff7e7fd6ebf2f86fd81f2ef67e947eb60ccf617fbcb466b1fcf25c5ecbbfd55399f6c6c7f3d90bfdfdfec6fe9e7ddfe9e467e3f79c6fd346a3fe8ef47faf3b47f2efbfdcbfe75ffb617e36cffb13fee3ff75fdac7fe5be6bdfb1fed23f168a4d1a8dbff52ccecc7e7fdf4ef398dd8b1bc2e748a254fc34bf15166da71bfd85316b65f15037991a73df9c53aa0798fa8977e6e6a7fff405192eeec67fbad46b1b0ec51cfb4caab5deed7da615a45d19eec68da931ea75cf87b6f340787b2787ddaf720dfabffb807ddd68abda999795217f95d9e35872913a459e2c7f47743729a3ed36c37fbcebed3a2fa3d60df79a54fabe43fae3be5ac7a173807aaf260050e5df939d06c4e3702a77c2f4fc56047d19972f36e4f32f79c83a57985bd37a6dba78cd7a5ffe8fecb7fcd7c65defb7fa847433d34a33f6a837d1b3894c71eed28fbd22dbd3be8ce13d5a3691e49c298ca9fca2eecc23e38ff25a3a73fb29ee91eae6735d5a38f0777aa879e204faeff785fde276528a7a91ecdffab27bfd3cd833d952fcafed17ff23b3b9a3e6abf7e75f00ef25c80aa87fa35d5e34ef5789fd4029af950367e97fca01ebdf33e3d47f30e8176a47a5c9be68207672a5fec7252f9ea5cc00a9fc0b16f2df7dffffffff96fff0b7be732f8 - - - 789c44bdc7722bc1926d39afafb856392b6b432105520c7a40adb5665b0f5200d49a3c3ce4fbf9071e5f7b13c365c8cc101e1e1ee1e11efffb3fff39dfdff9cffffcef7fbdbdb7ef37fd7ffaebf6f53fff337c3c3c7cfd7ffffffffb7ffeebbfb37af29fb419ff272b264df99ffcbfff9ffffaefd1d7fb7ffaff24e3f9afa87ec030991a74ff40b3263069ff81eacb20fe516e1b4c032c19cc02f8a5e524beb26850fe034569d0c457fc8e323e5b7f1ac4678bdea08f97de1a0c51f4ce200a569f0a54e328d88641168fbc18fc6ba02177c1aae25f8bbdba2ed524c060405d7ebf126d5a5c1bd4ff1e695b837fb51dbdcc0cda00bf8f50db9141d4366f0cfed576f4b46910b5cd6b8359fcc3b5adff557f34db3148ff8177d7b6cea2726ee43a04e6b13288f6b84e0da26f4bb77a1dedd17c182063ab0675fcc3525847ef170b06d11e7716ba3ada63b262d047e56e0ca23d1edd95f534dad43d57d31e6ee426dae3293788f678755d9a688fa72b83688f270b5d13edf17467803858d69b2a5efafb8e108727f77e13e2f0746fd0c523bf258ddeaf2e0ca2b60feea8368d6e981844491ffe184439eec606d1c84fcf06f1d9bb4b83f8cabb45aa8d26bcf1a8eca209ef5cb02e9af0c695eba2096f0f0da260b7070631a2a67f0dcaf8c79101453f338816bb3d364060ce0da22e534b501702d35960baa8dcd5834154ae75f5fba85cefbeeda372c3ba4154ae7503f551b9d6edd1ff938f83f72d83a86df7fbd2a86debf6e8a3b6bdc5a10f81e93cf6fba8fee0daf651fdeef7912e3e6be1effb00bb0651fdced5ef63bc748f06d11e9d3b7b08f539f13f86688fce8d3c447b74eeca218647eba20f51fdab6583a8fef0fb8fa8ed95a782212a37b891a7f195c14a698a86d13bd24968983211288bf8c7974168cb894a9ac6dc306a7b83f8caddb74114fdf1dd80a17e6610e5680a832847fdfb9598d68ad42046763336888215bf9f8dd9b43911406bbfba7235b3d81f83a86de982854e1ebdb60651d2fad8201af95d6d9a4a396606313556970651b9ca456f98c45db9d05243f5fb8e10a9570dc2545aeacd2004e6f1d9208afeb16f1003792ab14c5128afae7e87d0b91c2894d625ed42c65e5f0cda181e1b06a13f5a7725fa63ea7e417fb46ee48e01746b308b976a8a4e5128edb901e3e5f71f5197c12595fed83308291c5cb9d01f07ef3383d01fc3ef2351dbc14d88baf8f8fd47d4b673abf7684bb729eae26ac580da3e19a02e64b2a431b28789545f86b159ea1f599892a317895456325e1a83d074ef854114ecf18f01dde09796ffca311dc940cbaa981aeb458390e4c6058b913d349b060ce4890126cb864134e1d29a410ce4626c80397a6c102df6e4cf6adcfe3540f84b036c879941e88fdcef9085921a847c3cb91c617f0cb9ecf52c4c85d1edba0136eead41b447b16410d5cf770ca2d59f35e1648cb9ab370314fdab41d4a5ad0c50f4ef06d1d9af4f064c6bee39c6dc7061106d3ab8604ce289344ca631971b44f5fb470306616d90c788ca0ca2725d6f10954bae0d98c58e0c98b33b03e6ec43032ad71a3045bba362cc1dbcbb724cc099a4302f5848a8b3731667d58a414c278d268b9c99b0690da2e84b7b0651f4f7dc8011a57ec92b5605af06d11eef138378a99b308f11357a7f31889edb7b33889e5b9296ca59aebca70631909b4f83e8b9477f9679eedd256500bddf1b448bdd6b3192378c4a97a3c5a4fd6b109f9d1c1bb04aba3388cf3e7c1820c992b19c39aa2d0d26d1b7ae2dc23f9c19201fd706a12d935b83d085c3a501c3a33088cab52e3aa361f8059870ee1759b0470608ffbb417476ff60801db46c1075e9dc1ec8fa70601075f9d836082b2757df1625caf1c000253d324070fd8f58348f9e2e0da2fa57928fa2c1987837c0507c3088773c7406d1c80fad41bcf44ef6588138dc3706d1620ffe0a2bad577f05f5f9aaf9b690c9e292a21cbb2b039ad09f95b9f166c004ac5159d0b753b75868ba030fd3428b91258368a02e318892be68104e26a183f26f8328c7bb2a3761207f68104e18a64fdb06f4be1f61f1fef161c04bc706bc5406fc44abe857035eea82a9e712836954ffd0801d0109ff84b1ffb160104df8303260b25836c01e9b18606bdf1b44491f560d589c1d18d0959ae62718ac577e84c9b37739a42e4e0d30e10683a87e2b8199200e1f5b064d94a33088d9233b37604aca0da2c55ef4485922b88941d4e543cab164b2f8f83488827d483996b185347afb6310b5fdf86b108fbc2e19c4576612a992e5caf5d8205efaf166c066866c879256bfd192b86410765303d60d6ae412f5f9b16910aa2f57579631458f5e34f15531450fb944aa9af08fdc20bef2f566c06890a2af4a3e3b1884147ec820a9c2c61d7ddd1960e2ff3188972ead1a30c4a4832a1af9edd3203afb4d63ae62ccddbb2e8c97f74b83e8b91b1913151b440f6b0628c7758378649a1884683f6c1830b20d505b1f32f2ea228afe2e91aa3115b27d8368b1b70f83e8b94ce250b3f9f77e6710827bbf6810057bfb364029f91fccfb534d163556f0876a5b6b4fe9cb006bfcc400cba03408033e53133645bcf4ebc32066b16cdd808249929b099593b66cd8dd58922e6cb0b6f6de0da2d5df34081b6d75ee1884383c7f1a44373cfb11e4a36f0de2b357ae0bdb83d3ce8016fbfd474872a27e697a66a07d83e8ecdc75611bea4d7569d971ce344c5bbaf2f98f41d4f6597ddb6a8523596f91e4fd7303f4e9aa415828d9b101cb26699816e36a9a19449b2ee91f5db839465f1afb1dcbc84c23aa43d32d7d19c43b9e0d90c28f650394c18a41ac0a3219791df6e98766a03e646cc8d5957d3864466beafd9e3572a6a2f714ec78cf20c461c9ef401c9efc0893e79504b7a74df72f0d685335f210b23e3a56ef0f4c164b47064c16b94168ba6d29d8f9e22780e463c0627b5b30887f5c49e50ca8adfd3383d0da6feaa881ae7cbb336026940937cd990ad45153f62e5e65394eb54f9719fc7b4772531bb083267b6c2a713836888d884ca3618a38ec4bd34d655baa09a74c5a1f5a6accf228d897cc8d19bdbfafae9ce1c2da5667cfd0fc4f06b4d8716310ff7893d69eb1f05e422c53bb9f2a031a682c406d5f2f0de291f50701595bfe075e8dfd55010af67c601052785c1b306ef70458d02ca13ed39461faaa4752b4e56b29a0924e0c42b4dfde0ca8ed850105fb106078bc5d09d084cf8b06587dbb02dad6df3308299caab6299dbd2d9069dcfe023654cf0da260671f0651b0ed7d016ca907d545fb41cf87068c976b01d478766210edb1bf66c0a66c6d1023bb7f3188da268900fe86e71583f8ec3eba30cd63072db9918ce5ea86c2202af720a1cba9dcd5a60073f6d59641c8c7d5b6410cd3de2f1de21fc9a901abf91303763607037c7cfb06518e357da5c03bfb7a66809652f50b0d8f7b8378e9db4c00edf0766c10ff585f3788ba3ca402cc84b78d015f79348826dc1f1bc4a8dcff7d47547f5b22553035f60b0688f68e0145775d68e4d9ad00fea8fecd80971e1a8438f4a5418ca8d91f8328699f1bb0d2ea0de839b7183d370c0651b0473f328d82257ee994594cb59de0d4d9ba3488aedcfb05f1957549e14483f0c280694dba702287ee488051f9b66810d5bfad0da260eb4f0651fde34303148a14db84cd9de4d1203aeaeece201eb996ac4fd041b36f8390a0c425a5e786ce801570661005bb7349d52f4706f4cb54601a9f4dfc0ef58bdb03d7625218c467f799b3d31245bfa5ae2c51d25b8541fc237d346061756210edf12c392d3580360ce2b3d71ac865581743766a10923c2d0de2b38f9d417c36793260ffa3310839bdd2102b1940b33b8328d86cd520fa65f669c06ee09101432c3540f51d1ad051eb0651d2bb67013a6a4ba25d6119ac6d19842d95ed18b09f2c9553313cde5e0de8b9cc20e4f45c63bfa25fb624da15e6e8f6ae017383dfa119d95f61bca4d20e15d3daf5aa4134d06cc5201ee9170da23daefc5946d4f5bb0123eacd005d28e5584917ba60eaca35835006d3438328d8f52f60ccb91cf4dc736e1005db92a9506b067a3460027e3088926e493e6a3aea75cd20aa9f1e1ac45752bf8321f67661c0a6ac0c811a3db6bd63105aea6d498049fc7ad920ca31db30606ef87d24ded1ff3ec2369424b946b1edff0246948b4e374c6706f1954f4961c354b0ff69808639338847b64e0da2605b6303e64a594a2cbc937ed520feb17767c06e8f2ad720b86f7e8406ba5e33a0817e1f89569fd6066c88540698704b06947462106d9a3c1be0d2735d68e46bb7078d3c9d1a44490fd87748db10a964a651d9cab47e360891dabb3588721cfd358872dcf9a588d4feb641bce35d52a8f5fedb8a01f6a93fab36bd30603bac318826bc3e378816eb7f5f4a8b69a8b79a5e170d68a02b038ef19d1a4439d6043a1c76c71a0d9da45002d369b3fcdc201e496f0d98093503752c02965b0346a5962b9db4e5920133e1ba01066b6dc0f45a1a447bf41a0d1df34b7260104db8af82f558d21fea869ebae84862da63f47e4f0da24d8fbe0c182f1aeabd7abf32405dc8e8ed99e7f625dadabb38fe36884772bd6340399ebd1b84582e485d0c14fd7b664037dc1b44f59755f481ca9dfb1d32149f0ca2f7cf970c30bf3a03f69365c20d2883eb0d03a679c9c780eadbd76898d20d472b06211fc7eafd296bd32dd565ca09a28f3383d8301bcb4e9ed2513a513507f1c8726710454f65a06943a43f36e0f88be47416bea4e15252388b7224c99541f4cbb93a7b4613a6db0668fede00d17e3440c3ec18a02da51d6628c73d0437e30c6bf2f06ac0c6dd9a003ead7dff43166c2b80382cff3508d1deea0ca8cb8e01bb4e670232593e04b01caf0f0442f893bfd830591abbb4a3a35501f61d8e54524e8725b31301fa767ddb201ef9ec0ca24dbf070176e01f728378477a6a802df528200bd625e548e211e336cb985f9299004d98de194413aee606d1847bf70651fdb56701f4c76c2480eda0497c0e4282920581690cb13db5588ed17b9c08e09e5cf86350459b1e19c40e89e6972c579b5e1b44d197bf0d28fa93006dbabd6080dbe75c40b6a524289fc64bc72a58810d736680da4a3383e8a875bda3a0b3b77a03eab26e10ef5853e50ae697db4a8099704f259db071f7f96c10fd92aa2b27e8a0e3d620e463f1c2204afa7d258038ac4d0da281d6d473135aecf8cc207a2e753928fada8b01fa63574086803fabd5daa540b47a728342c94a8a5efd8290a0e54f01d4d69a8647899c6e2f1a50976583908fbbde205e7aed4764d36d1a44493f2552152e9b4283b0428daffd02ace0c180f59c1ab962eccfde05d88739635d996965b126a1abd551ef0654eed320deb1fcfb480cc2e50f03169a1207ad3d8ecf0d985e2f0da291cf55fd1a8b6d7bdd20be32d6571a8e368dd5fb0d5b7b6bfe07da722b3108915acd0ca22ee98d014597d0c9d64ecf0ca260bdead2b065f229b16cf1132eaa726df4dc30de3088eaaf1606d173ab130164ec7330a01b1e0cd8c5bf3088ca1dfbb3b4692af5d9b2d7772dfdd16a83e8af011bcc5f0233fef16d807c601865b271abda20146cafda769474db8fc852d22c26fbf45a5dd94d990a9e0ca2fac98701bb0acf0628d82d8310873df55ccff4baa081dc3337ac8e0564a1487ff4147d7fd700db52d6452fd34972dab3c7d66f1ab0ce7e3188ea279f06ff5e9ae8605b3670ca64e1504076a1a6c641b2be6810055bf83060f75c7d2b0f5ef16a80cdff6e40e5528370c7e9dce71c845ed7d1b76c080d93c85b3d07984e3303e66ca98b611a7599b91c4ce20beaec29aaaf566db171470baacb1495b3363388da2a0c696e1884bbe55233f24c2df665107549fd8f0ea34616ca8c31b7e87f4892d11fb96ccb8d330386c782015afbdb20de71d4188438ac5e0aa0943efd08d3fce2b941b4c76a6a101dd5af0950d203a6823c65f5ba501bf0d207014cb8c54501b4f6c22f089b7ff834606abc37e0a50cf55cc791570f0de2a5d59141b458fa6d10d52fbe0ce2a5abb541f4dc86da23a72b570f0498b4aa6301f4693a364005ab1b7229fa0f03ec0f7f25d467b280ace73a5eb9b36a40c14e0568f54f894381e0a6ea6cb97dd20b017df68f41b4c7825a4cf6d8ce8a01eae2c0202ab7f26dc052434d88c5365c96024c49e347036631033a6a87b19feb1cdb8a3aaa24f46f65c100a55409a0940e6602616e24572a7a29717817c070de9148559ca7db91ac73086bb8948c691b5bc14eb936a957cf0da2601b7e2962a970865cdbd8e99b008ba20dd662791d7d9bac5d1b305e760ca2a356d5b71846898e57e6328cd6ee0ca281169f0458462a822ae7f4cf6843a2dd729863e3c320ce169f160228fa45554eb6c39e7aae0da1ebcf55b93666d3feec5660f6efa5c90bd35acea99be45692dcd1ea3b99417c764fddd0c57a2ed1e1c93988ca2d3e1bc4dc706830a53dd4623db6d4e5a741981b83e4b447292da606acd65417cdd90b6a8f01d37ae1d2201a68a13188e373979264cd73851f61b37c4f636e60dc1e69dc0e183567fb06a1b56f6f0430ae56a471a72c56fb53836875596cf914adbd501ac40ae759c3741aed91b43383983d3655fd690cb16457da6156c43252516939a75d129d739c83d8ffb8d03bb4dbb3ba6fc09a50e23043b4f7a41d6674f6e28b418cec4383591e5278631083b0a2810aedd4ec8d04c20a4edaa9408876727b2d30a5728cec8290bb4427110a85cb2d5c1844497772837f75e9a54f0b45949d5502b37fa3a1cdef0c38547260c046446110c7914fb03e0b0ea60ca78341bc4361f245c6c4b7b22c10929ce85478a173284526c068987c1a3067ab723a5472e64766ac1a53837fedd19f6c1a84763855abe7b8b056960424a7138368d38d6503cc40558ee08d649419445d36160d62000d4f06518e99bf320d5d78792ac082e6f0c32024e86c6c803e657e2974fe6367dd2006f2c6aa41087f9e1b848c0d0f021c353f5b301842821a81f03526b35280c5593a18a03f7eff51858cf92b21da6d7e2f10b51dc6bd4154eef0dd2014db868607b643f2726a106dfaae7268b767634520642c51cc48c13e4cf2b068103276a67ed1d184746a10e3452744e6e05f7bb4639723bab2cd6f05e8cad34f032c147db6e4f0d382da03fb23e94f04249685412c026e35f64be6dbb106320649f2b069c0c69d7abf9ca272ae0ca25f0e4a837f5fe9b59e2b4aba61dc19c457aed54015d13e0bfa4a853131525d305986f3738378a4565d7092270f0b0621b867aa7e35e51fab0645147d62107539fe2b109aae3fd93068426b33e114759cca4ad6d41e356ba09d4d83181e172a07eeebfef05500b53556f56bacf1872583d0856395b45637b81c2cbcc7a54134d0b832081d74aacad5cc40fb58e373933f5afd5503a821907e415aaa89357272ab92369c6519bf1ac4101bee0d4282c6aa7e83488d6f0d42f80fa42e9a50066dfe68808cd50631800e2a832146d499c1bfd1d04e342535b3e89746256d39cdb022296cd1eb1bd2852df3cbc6b701fe394d162d6a5c87050b8ccdd158256da35fdae345835017a77e698cfdd1e997400cf576b26f80ab443d2767ec8ec4b28ba13e5c3c1b8441b2a1d180ab3579d094a46da8cb0f8318950a7828fa1ae1d764d137680729c73ea4b03d280c9a28faa1400cf5d1e11f83505b8a5c2a86c8ca933c4be8e4265d914e9613b4ce0d62e21bcbca19c2d64e66954134f2e5b74134f2a51a79e074d8e9820102732440abeb5cce7c46c29652134e5902ae68104ef16969a3bb907b32d7009a8625dd2a00b59886e0f62712ba6968fe76b26710aaefd29f0d494e1634f1cd88573fd6989be1c252ca90026f64f2ee4798c475c8a698850e4a6ea56067584ad5bb01a2dd1884ba189e0d62201f4af3cfd82fbcfc63c0418c1b01e639258b9a28d94bf521c082e6e8da20baf2e8414092fcd780735b9d41f46d7e23106d9aacd02f9334423392b7424052d80bd084cfab022cde0faf0de2a8b9cea04de46b4c470678bd1201a6a4b633605fbb358811953f19841ad722710e4282f691d349968521b037119844d1bfbf04220542b2a372908b20e90781d895ecb55c99c8a3b9b365c06aed5b20a682e45bed2117a77276cd015b7baf0254ee78c9202ab7eaba301a8e3f0d422c57d462c4450fa7b702c4f19dde1920a7065806a78b027cf64c45cf63de1f9dee1b70e64ae2c059eb64742cc0be43bd2e80524a4a01b4a576262698b4a3d30d03565a57020cf5d5c42054f0826a4b546bf272611086b396a29309a3528bf7c984e1b1fbd7201ae8f65e8056cfaf0da23d76b70c508e1a516538fcdbc32f83307b8ed595a57658255225e697f650e680b5d8d420dae3f2dd20c6feeeb600edb1a67254da2d3e136077f4506dca39c7e4ea48209c18ed416ec00ae7db80295a9fad241f3b06f195dd4d8390d3cd9141bc43f9e9260429262f12981aebe24825ad192fdae79fc8c8db5403d55a261c1b50b023831884bb6f06615c4d760da21b4ecf0da24d373a0376aebe0da25f0eff1ac400da4c0c628adec37698708a3179d4506fd8a53d93e03668fe5de9647923275706fce35200f793764727d885a3dd758328d8ee860153c14c006bebd4e5c050dc7d328889ef74cf2094f4eea341f4cbe18241b4d8ee8341ac80e5d499af3343a1dc6888b5e8d35623bbc51370e447589c2904600ea8ed85010bbc5a80a5687d6ec098fb3408a574a69e6ba3b6edc5820195f357d8a8f2506f55db7b035add95630f655b72da31036d68007571d838592c0ca2c55af55c171e8956a15d938e635a776aa08efd319dea9c831840b5dfc1c22a191bc4d9f38b3f06319de8a8d71ca072d48418cec9ed8341c8c7ae5f2aa15303759ac5d60d42b477cf0c42079d8d0c18738b0674f69541b4e9b2404fceae23f56dcf36d44a6b1046cda5b41406fce8f2c8206a7ba88eea658e5e18c466c6e4dc2034cce19641d4e5f4d4207a2e7f356000fd8290b1dd6703e6a81d83309cc79706e8a025035afdc62026be0986f36408afc6e0a1cede7872bf6e10f221fb7422b7719d19a0c72452f2125f750611c2ace31e13a24987bdd420e4d4da72607136c8b61cd8cc787c34a0a35c0e2c47056e4db4a0b9cc0d308b5d526d77fcbe832db52b03645d5a7b60b2c8df0ce21dc72b06f4ed8b0166b1eb82ea5b96684f99f8362606a1d8b66e0d3026960c426b5fa8a453ed0769004d075c369580da63dd80f6783660abe2d520c6cbe5ae417476e29732df5e1e1bb0b5f76e10d389cd9e69b4473b4e0dc2ba5028f56446825825bd9bcc58357e1f19c4f0f8d667f1de27b7b22d597a25371a2f334d8d5b0674f6d4a08f924ad3cda8cbd88f6843b5316054be18302ac7060cc25383b0c7a6ac2c4ab2ac260aa52ec72c9a9f2a017c6b976b025aabdf1ba0c7f604d40d7f0c307bbe0d50b0ad0193d69d4134a1dc1c651a99280645c696ca70b8b36010ff5024794940ee305e3340a4960db0e9560498a22f970c5834af1a84a9a050a639887eb97c3160bcb406b11d769818c4003aec0cd810d911d01cf56a10c3f4d9b5a54d2f0f0c30ad8f0ca21c178b062869d7361ab9fbcba82cb3717c76bd17883dc76efa26c0f16c1d582e332cc767b5077ea0f65405e3b46d72fb21c0a6fdb06610ff78bc37082df5f8604003a5028c17e5402cb5143d3d31083d76c4302df3c8dd9168355fe6b1121f5d48a4947fec60d58033cefe471cf71836ae0ce22bcb12dc1c27e8adda23471924970248d0776f104ae920358895f8c1850172aacae5d2fc1b0631a2f27703569e6ad382cc2dbbea06f26d0d8ae02e0bdc93f71706b1b19b8f04a2fac9a304a69091776510b27ea0dab28a6e27db022c8ae4282bf1142577eaca49ec05270b9231cea124fb5706d1a68a6d2a951b6ab9104049574f02314725ca6f3907615d5cf506a11c571a8190c2e134338819486148e5444b627f45fb418b06a11c4f6f0498a2c77ee90c1b06ad5d96c4f1952a6989a5b4bb67109396b247959c65194e2e0d420a9754522def0fce0d4260f6fc15099dcbc11c3591522ab5be6d0d42e59c760658d20b0661086cab4d2b3ccd0ab52f2b1ccbcbea4a023f13059f97b89f46171218c57956cf06b1d2bad2b446c065f27867c0a6caa68034ae6aab2d82d3de00d7803f2b9bffc42074d0b7c65c1d1121c9e74c809e3b4c0dc2cab9bf3488ca558f0298b41beab97a60a34a22c5be4372abb15fb3463e1c1bfc7b4777353588f1e2f9a589db08924d29692525da515d9a0e9fb81f8925f1f0b46c102fbdd35738c19c5ca506f1c858c3832d82e476cb20e6a8c9a601234a9338ebfd44e91c4a16efa3d3df7fb0ae5c3060bb435aaa6d598b698ac69734bc9d19c44bbf0f0ce2a5df870651db2b35721b93d670f16e80c04870b5343fbd369846bf0c0651d26daccfb28ba3e6c9a354708793fc6ed180534892314e1f27c9b9c13f29ecee32034efdeab39d0ce76b83d0da174b06515be5b82b9561a87c3208236faf3060f25c3788263c5833085d782209ea59ad299969c989aa61acbaf4035f51c138e3dcddb9606c0fdefefe03a35773368be6441942e6e0df50ef3a9714c339ff3088a2eb3c4cc9ea35d1d19572a01b76a40b07c9d89501c10aa50067032f547dc2f606ada2cb81636b8f5f0631f1290542c9ca73d83f35e8a23d64e50cd20e2b06acc5fc59c441698a4b1d06bb3c3768a281360ca2919501620e3886a3be9d9631f695c0af249e30d109f7f96c1286c0b1341d27a9934152388da20f63ff83beed1b839020ed8f9553ad2c8e0d62debfbc318821a6a89272d6a2606b01c515c8d89c7110e362c580b8c6dc2092678d354cf1ad75774706b1f2dcdb30c00a5e35c0fe583460df616480241f18306949e866a1f93ba5392fb526bcf43b58025e2606549f472a2ec968ebda00f57928d0e2ce5f13e8d130fe8776f1bf0558ab0f89013d37129031e1cf868c75575706f18e926ea8d292539d170218ac8a9c9e83f8cace9b00e7a5aa7b83a89c8ee0559c2c1f9427af4a63a37b387d30601f57d54f318cf65c306cdcbd55037aee484043cc5f99e17f690d42a12894ba4a25c98f06f4ad0bc64c78e9caa9b32f0d58375c19c42e5cc94c5829bef2b13008195396b32a8b461e76570c427f3ca9e738e837ec6502d162c3c1be0011a98fb706589f1f06f1d29b6d8328faaecb31e5b4cba280bc2b8d013b24a5012d7661407bcc0ce2a505d35a452aec51b3204086f69b73014cebc7458390d39b1b012c03cdfb55cec6eeb8354082d60da22b2f260621c93aa754e1044d927d038e6a7c1b8432b8f26759025edc191065736c10e2a0ec2f555144472940b92af0686edd188496dad7573892d88e5517658f3ad81520bd56a1a217f83cc789012177d20e1c271c5d3406eca0f50675d4d60563a9a16b9aaa491a22959f0894b86c54b0491cd548363604f003694b6d0ee2a5ebad414c49ca305411ce30dc4b7089154d1ed52f93d8751a4e5301a602e541ab5846268f3b023a3b3a31605b3f3388ea0fbf200c01a528afb4ae94c7aa2a43b4934d6987323600920fff03e5f8a99792963751daa23940f3e702b177d10d0651b06153efa8220b5eb2796810bdaf14b215b97f06054a574ad373a22156c930fa6b104bafbd678318c80ffe2cd3ab92abcd0143ac34e01dcb06b85bd48495ba2137408d4f0d70fb683aa991208521554aa073a0a2d79c88583c31881948d91be620d4a7d27ccd019553396a4e870dd2ebf891bb2bbf83e964d832403e26066cdbbae8ec06deeb1d4d58b0c9ba94b49680bae5ae52c6d863b55813aaaf55987ca5c3827b2f06a8607f051df4aec953296516d4c82de12e99ff815876a941c8fa53638021a0a991442d8912c456386387d32b03ce161706b136d5450a158705938789418cec8303030c817703e2702e0d3878203dc62231195c5b75546910727af6fb487454a2af749c85bb5339ba1a4f91147d87582a2abe22983659f73b3883a6fc1f73c076fab6419881c79500f3fe476b10237be7ce20b61895ab620ea2e8bae0a2eac28dde2946a2c207dc5df91ddaeadc3288821dfe826864b99faa9ec5c8b754701f2eacee5eb5edb161e4f3ac7a367697fd8fa87e27a75fd5875dd83d3e19703ef91784dad22abad252f4425392569eda73ac5857f69974d040cf9d7406b1fda38b8b2ad2f226ab2ae910954b14593f07d11e7f65280eec3addf92b2d36ffb541749416ef95dca47fd60c42f3eb1ac08ab5e968a33760d3ed5320e6b9e1e0cd2084ff4212348482edee7e411813f2f15564f24df6a54fa715d389fa65ca0ec98e1f69106d7d76ca618e1b4d275349a1668f2936ffa10c81690ce461ffc320c441a97d2b9c8fc3dd1f8358020e2e07bed7936383a84bfb6e107afd448fcc2661191cc90e9ab1e4799404cdd8f9be9668cf889128d5953336ee147d5d113095a4aa9c96b3075f069cb794893fe3b0a00e1d559c3f4d5efd153afbde2fe5bce554e376c67cdbf81d28b6ab7b03ac4f344c3d2e42d6d55135d755260a82afb99eb1dd3b1640b15d7f19c43b941aab26eab9932fa9e62ac14437d5d45abdde0c026c44dc9f0ae0473ef43f62be1d0e370dcaa85c6740dfa2f9eb74127a4cf78bd5695cb3d2eab8e91c30c4760422396372b767107551887bcdbd6fc9d29900deb7ef37836875f9d66a22ca864535216ed24ed7efd59c944deed70c42e32a07408ddf74d0b1823a6563b75b310817e79a6b8b2d5557066107dd9406f1d9abda208669a7ca652516fdae40288376451294459aafe4af6a9b114ff8f7518038be66dd8098c4c40081b935882949de843988f6582f04b0e936fcd2303706a519ad33da43896b6a16abc3d1b201bbb43b06d1b763f4699de7f18ff30d81b802a3935eaff338d7d72a9d764d0ee6e473d520d6849bea7d22da7b2537a9f368a07ebc6710b555d6959a10f7419bb23511ed835c253501ec83a216eb5c07b9340859018f4e160c3898f2fb8f307b94dca426c22e69d5952c89db35ff03dfdadad880e31e8541d8743ad43a072174f269d545112da6d09dbaa810871b8168a0f6ecc12014ca7a621033722aed507042e4e2dc20a6933b092ee9923b39416bb2230f3a375e93fbb89da8f709db9bcfa106e1053c3b3388697ecfe5a0c516fd0ff4d84d61c062e4dd20ea72e7da4a2ca571277132a33d51134e38faa64540cd8541c3fe8d413842ee25522cbcbbc76b83e897037536ebecf662d720faf6ecc9203aea462a874b76066d66d49390d3eed19f8db3e7c3d405434e6712a9890c813f06f1526537adb556d7fe693d91585e1844bf28f5e21c849177bc631076e1ddef3bd8759a1884c0e896bb39886ed0bdc47559a1e84f04e4b291ac97b8167568b1e610f8f0ed77d062d7aa6d29452f39258170a2142a350186c3716e1072ba22b555b268beb83460bb63d7003bf9dc20362236d495dced93e86c4fcdcd3dc9d185414cc02fcf02dc08fbb26c109fd516745dc5d1b741c96f6a3622ba7b4d9e4ad6b0a3a98030c6e1a333888e52c6c79aec0d83ce27d7158370f1d4209474ee4788cefffbc7209a5001863507da87f3da208c09453ece41ec8f958d41b4c7cda34114ccd35aa50df7d6803d47b72913f0b55e5a8fb12df58ff93cffaf1cf76a8f9aa5e88eeac2c1fa61ffde200aa6f0b01a9f78a7fdd339081db4eccf123bdb2c1984587ab2a849a073f02d20bf98dfc181432d79e62074906e759b8368f5638925c7f7930f7f163370d37561cb553728cf411802776f065117e5639b83d8d62f7f1f094da76bcc6b0ef8278f7b0631d48fa4f989044df6370da21b4e7a8168f57673dd204c05ed07d5e42d6e0fd5845c18d4ddf9a5f85e3f5f0d42e34e24960a0d3d9c19b045b0671005530c4dddb06cba3f368806bac90d62c219bd18b071b76810e3e5eede201a48576fce252aa62445fbcc258a08bb7d011ae866c920dae373c320847f7424c0e5adab5b069cdc9124737151fbb968408e88dc202ab769105b59ed456a1012b4eaba84ca6995f5ad26b95aa29bd06a220f06a5829a03f487ab3fe5a8d7a741fce3427621e9d7da35bf94596ce5dd80ce9e1a8451d3bbe874d4ce60109f7d7339d0ebcf92d3aee488b7e4b40bd11ed6a4e83900d17efa1fb11bd84da5c7b8622969338370b734df06510e5de850779c0a5ff905684b896587a9d01d18845d787f6e109f555aef9ad8844edefbbad3f0b83688a940d14f75a763c06e0f2d9bfc15d24a1cc964613b6c3876d119401fcf06d1b7ba70bdeee30ebb443167731053e3aa26f11e67fdf6ab010b09bdb44770bdc2e93b4e1049c192c12e3978378885d581a602b2e1b49ffe2cbbc59ffe8a36116e0d5836c9a8e1b8c7a0d0d09a3db6e1c2b5a509758f554d1445a7db3a6b622412dd2e57132331d8c4272462d08d6c352744863b371029544e570d623ad14dacb58e8c9c6bd538e46c5469593d10097ab165106aeb4b73c350d362d2c90361379bbf2016bc9bbb062c9aa51c89b3682f64c29161a8fd9465c07d5a6d2dad3db021a2eca635674806e5d6afd9c91b746d553d3057de3c18841ebb3f3208ed6083953324eda67a6e1a375c0eef9a3ca735e1b66ae4694b4cb32468ca81d491da5401db0a1eadd9964b6ebf0c88f57a348877dcdc1b84d6eeb60c70c8bc1844493f7e41146c26153ccb4392756d773d8bd3c7c3978ccdd924c6fe4c5d398bd8fb61e1dd20fe71227d3a8bd3faad8e23d74a96fdad95e78ce3fbfb52d2b39892baab4f8310982d8d86598f38b8a44c277fd52f3acb32290d506c3706b1ac5ef13b705f2f9f1830e1a8a3886f182d9f1a100cb7658067f5c02046e5d9bd010164ab060cd36783301546ae3ea3729f8235e398815a65596dc6dc6aff3612a8d930ab04b01dde3704887dd3a4350721b8656b105da9dbd49ab1961afe0a53928e8ccc010e880583d0303ac1dc8c7518ec408030a41b3fc2c183face008fd59641287ae5b49f038e597c0b707cae73c1a2e786437f8563c0cbc70621c9badb670ea2a3badf4708d87e3488e964746b1026fefda10122f55b0e8ef2a0d89ab48847ae2b83e8fd462d966a7ffd52203c45bd72ff34298bc403b5581ab907dbf715014e00b4a900cbeab630087dfaa9ce4e71943da9a3bce5fa6910a2fd323388ba7cad094cd921f93620d6eb1784248f5dfd981a939b0f8368c2fade203a5b3bac0dbbb4c9cdc80005bb6810caf1a635c05e7f32e024a40bc682a6fb6b405a89ce802bb82606a12e941eb8c9f21873ba3eabc9d8c8542adb260b83a455a2b8261bd8b8d367b368b14129fd1b8e140d7b7e0792bc5e1bc49cad15f01c3037fc31082b47a76e1a1d3aaa7a8318738fbfff886e285d52bc803a8fdbe4256137570271d773776f10e7b57b9deb6bc872962880acc9897e5adc3488a22b2cabd12eeddea9418c4a5d4cd3e4dad6d7c8ce39b6765d1b44ef4f770c98e60b8370f897a941b4fa2df35c53e421a747aa4b5106504a88a6c060fd903228c2304af6d42fdcc7d7be2f18c420dc517b28975ab36b1096d28dd478415cd2cbc4804b42d562ca7276726280c054068c972503ee7d2b0d42c3e806c33988f9e5efd4201ae881e9b599d040ba43a621cf44a733680d79261285ff345c529ed4ea39b2deb7937581880849126918b62993fb3f06747665101274e582710a295932886d8664c580acf78341d8525f2e8776373425956c66aceb113632db4f95945c6ac96363103e8be2c52066a0f56b83902045b53625c7b4366b83e8ec177514b7a9b57b12184266927bc9070131c9fdbe414cc0d77e074d78ff6510ad7eff6d106d3add3688a9e0dc45471cee64a154615bb6ba85a8a98ab0c7ce24c91501fdfb52e355588edd8d66202e186fbff704a2c55a5daed770355a77f560100d74ef77b06fa95dfca6526ddf0da21b3e5e0d42e5e8e69e465136d59541c8c799bf827ce4d8744d1d8ed444f7343735819f7b7a474d849df6719b5aadfe6a1053c1d386417c654b23bb09f7c2b0a3aee4b6ac4ed7a9379c751abefd0fcea0d57e4708ccb0f70b88e5d93108b15cc90d62dedfdf37a091a5fab483f6e7c880ec2f1303e4f4c52064acf757d0dabaf3b1618fadd565834dcb867baa466e4327b7f7920f4e650d1bea286e12487665c3907eadcd3503b5f48b8bce11abe4fec480e3621a0d4abfa61cbb4d2b197b3208c15dcb0da8feb341547ffcfbd2e8a80be9a02ed662bd4e97365cd2d526d20e64c4686d5a77acb4166407715bd6a0a4334d37b0a0d110534eb797c280eaab4dd9dc49ce53034a2a39e5b6f0f65312445eb84459451b6e0b1f941da8e9d9b69577a52186a6556ace46e12e4d6d10e697ae776d06c4e142951b4ac4525392c24cb4de6f94b1edfec12046c39f6d83e897ebd48065c2ef23d1a6ab8b06313c5e7f419474d0509f96ffbed29ffc8218ea9f5239da1128470624593936080bf6cf8e01f6c79501c6e69141aca3cefc597a4eb95ce76330c44177a4ce01efd02c360b191b941ea7d1999abf1a5133b4c397462519db5a65b3685834b7ba67a49929bde7d800a7f02fa072bf8fc457746b79c32ababd38348829e92f7b9f2d770df43aecd38e63be6de5076ac7b8c0155bdd8e3973f53911a02ee5bd01f6c7a501fb413b06f195f4da20cc9e32316003c09fc5d62ef4488a91a78b02db94262c1f0d98a2170d6287e4606410ef18ef1860d4a0c6db2cfab6cf3e04a41d3201ade7b604645ddc1870e6ead620e6a8cfda80fc966383a8ad4298db3c86c7b0b92dc04253499ada1c0fefbd1a884314c9fd9d4188e5f6ad012754df0d502895011b7712874295bb32406bdf1b8442793a3208c3b9fbfd078ed46d031656bf802c120c8f76423ed8526dca09804e93454b82b664e95080538cfd874154ff6bc32006d07e67c07987da803c5707023874bffe1aa02d6706d1515fdf06a11c9f8e0d3829bb6c104bc0a77d83d030e9954188c30976505ba2c69560ba95c37fbf17d0aa606a10055b480c423e9e6f0d28c79e418c97c31303a635891461e1c9a13e5b69935a05ab427ff4ca4d390721eb4f7a69c540d6254c2d310183d227b59ce74f74e3672bbfba3281b7952ad71a4467ef37062196972e3ab5d541f25606abe25edb9a6d3979135a79789f760d382b591a10a7a5566f54f43383d810d1dd932d66e0f0dd184413965706acc4b70ca2817a8dca16cffba67a0eb760b22b25adccb54bfa4a37e510c5bd0146cd2020bd7e67108f6cff8228ba72feb524e04ab6be0cc28629670668876d839075a55b9f8310072d01db9e05effaba412cbc95bfb0edb57c3b35e0916503f683760c4227affcfe83f9f6f7a5d11e972e077a4c21aa2de657f27566c0111ac9c710bbf8834e0fb6032b0be5869a83f8eca2c6be8dab2d8328872e826b89f24dd2d220c4f2ebc420d4c5449dad1b1e749d7a4b84eeb0b963103b7965671095bbd7c89e4af38f0c62f57a5f1b50747f85a22f1e183008af0c62cc7d639eb733e474b73088562fd42ff259b463831098d48f200ef78941e842b707d65672571ac46e4f736910fb1fcdb901fb63ab069ce8660075e3819454a9002db67868108be6e6c280e08dbf06c468ae1bc4147dfb68c05cb96410e550dee22e25ae607b4f001778b129a0fc85170691907d726910a3b23d174019b47e44f34b6b10e2301c19d0c81383b0fa469d41d47671c320844e719e9d0c34dd2cd9c9403b41c1769c0b4e143fd79172a8d5d5465da6ba5c1ab006523938d3dbead69d8ebde041998dbb4c9a7fc580f1b26c40442a63bfcb71b6b5670631088b1d03ce393e09d0a67f160d428fa5950111438541b4e97d6340c1560c62b2d8d44b39909aacdc09b004d48648c7ee68a294217310d55f5f328826d481a1aed0e10554703789b3e7bd521e76985f8992de7564d0ed8b2b037c5a8f06f115595b1d473493ed35832869f56280a2fffd47b4d8676140346966c049d9dc80343d8d41b498b27877ec39f6951aa86407fe4c42c7d1c8a4d830c0a2d7889251f3b46410054b270628facc001953abd704807c1be810e797005f5979368826fcf3681042b77460104227776d8795d36ebe1b500ee6a88e7430898ef175daa8fa3c3688ae5436cf4ee183838ace01aa5ecbea8e48bfe46b64405776065c5cb46b109fd5ae64a7d0bf03ff83467e5a34a0f75303ce7d6606210e7f360c9075e6db8ee8b8769408508e257d165b2a59da368856d76d269d82e13e8f0c68647c8d5dcf8cbc24fdd123fc1b5f06d1735faf06d1627f7a0392443e1b30459f19a0e9fe1a8424ebd87c27b3e7cf8201c374d580591da3a6d39ed2526610c3f4ebc5805139368882ad6e1b6019fc35a0a40b06f8807f41147d71d9008b6dcd204abaad31372569c4baba81e426c9bac6ad2e0ed85e35a0a43b065152cf4053cdea5f06f195a73703ca212d356351b4ae01a4b42372c874326a560e0dc8dc9218444917df0de21ddfbb06a8ad47030c9217038afe6d40139e1b44d117a85c3fd64a3c1750efef19303cf60da21c7f1e0ca21cba28b0575291a7570336fea94b4f0ac8e4e9de005d7824204db765c04d13bf20a4503aa8576c936e20ebf178270a0ded65b2542c137af68392a7470106e1f68a01ddb06380013f1860189d1bc4675f730316cd6ad39cc5eafa89013178a702980a2bc706b4e98b01960173764fb2fd4431cd3d091f12dda23a07f1889c6d3dd74525ba0eb92f94588021d64fb0e8b7d42fdcdb946c2f0bd0405fa901abc6678378c7eb850101fd2c237ba5c55b7a3088f6f8db18c43b74b96f2fb7a005862d93e4cfbd41b4faebc400cb8029a9af68b1f55383f88a8e15f4040924dfaa2dc90992573fc2fed8f726a046f36b31d273063e518c55af595d0eaa5e7904fedc1aa0a4a706149de56c8f932b59fd16e0a58bbd012fbd338821a649ab6fd91c5e5e3188ae3c978c116a9fc853d46b025e539b72b83691aba4778e6ef59cd6fbeb9706e43d6f0d6291f8bd65c0247e6d10455710494f36ad64e3cd20f4e9cab94188c3eb2f40c3b05aeb95f86aad3088565f52676bf6585a338856d7f1b9de8be6ce205aec7bd500157c65100db42a6d29e7c1f786018fcc0cc21c6d688f614c02d0ef13010e93366702d852ca9634689f7fe91744abeb3ad341cbd9ef75035a1d81197433cbca9a417c76fb8f01d1c68d808ebcd706b1a5b6f1608061f46e80c65d31887ef973634028028370e09a956153d557eaa3a50f83d8db5a59358892ea9ee62123806c59d527a150b2fd2d408b697532e82ccba56a2b8dbbfd25405d26029c101956d5a61306e1faa3005be1cb1b06d1eacbcf029a5fce0ca23d742bf5c00673b2f96ac00539aa9cb4a56eab18b4c1fcfd0b7829723a54e40b3ed91660c37df94580ae54a6c541dbb6877b06cc9589412c7875a1d4a0342c3ab23a702548a253ae0337c325db9f024a2fbe6210e3a5526d1b4643c66c3ab4f1d2b6556d5bd2052939d2c0fa65500688a1232a4d17f40dca093951ab739bfc5cd10a600666ea6c720fb6ba66650ea2e899ba721ae71dfa6ac3205a2c3b3108595fbd17408f29ddfaa0e404999a101767df5c19f00826feb4208646a708a664261db81b2c1d8fab181ecda141b4475e19c4be76b36310c644b36d101b99cdef4b6353a57e3088dde27cdd20e483a2cf0119966b9723e2f787e2f71f31808a99417465edcf4684ff30e90c62afefa91020a0ae3a37889dbc279794c04f2cc71f10a7d49e9e0ce25cf0f48f00d798bf7e18c43f38a7f403626773fafb8f68b162cde05f8b1dbcff82f0374c770da2a437af069110e4da25e516f7ab1783081e25bfd40f88ba90f8ea0744d1a79706e1e32317d20f88ba70faf80744668ec4fdc29d8f89fb854c36cf6e532e5deedc1e5c79492a971f101b66edbe4154ffca5d4962b4ab44809be089c0fc01211f9311202d43c68a1b81389d3ee2faac1f8048d506b1e7582d1844491f3e0548cccaa1b41f40c1d40d2949ffaf9e0d9ae8db75837829f1847340a82c39437f4074547b68f0af5fa623f56d46bc47a3726424dfbb9758925c7e74ffd7201af94a9dad740e576706210e574f06210e6d661052386c1bd0c81a5139639f30d71f80e04a0a73fcc8cf770674b61f21efd7955f4a106b5719c400aa25854589fe583188bee5bcf60f88cf3e4a1914910c68989c087037fa74c180775c03269328d8ab646c52d3847a8464ea4359184403d51a51e5243e5bdf18444791c6291de3581e7150271d936c6e28d58425a7f62a75769587e0d66ad36a821a9742a9428d8f3ed41e55e8d3d187144ac52590d32583e89717c929e1c7a35b7da5a6c53ef488eef3e4dadd743e59c6579ef7005384ee4b03791633d088932a694a00c8e8795f0029e446c739e0baa8871d832869ff0ed0edd85c10fc0342f81f760d68640426cd636e18ede70292537d2567dcce6e04504acf9900f7f13d4e0da2d5fb894154ee61cf00354e37a4589f23b29bfe8068202e4dfd01d1a6b7970651b96dbd83a41123a27ce700057b7d6410d5bfdd16a0c5ce0f0ca2b3b926f20784a27f152823bc74f4a672940ce4b72383a8dcec5a00adcd51d134adb89df2e15b00cdbf55026ace9e73ef4a9a125b3d225eec07c43f5e51b0691b698b46cf2f02cc956f9220ae991deda92b078a7e3b064c918f7306613a63464e3604b8de84f4166936a63df002ce01f9fa8e1f04486bc5253b6926cd4f269b342b220dfe28dd1260bc7c623b64252d466c649a91e07194ae184457aed151598d5e27182ecd5a2ac7dd8273c07d7c5c7999661d2dc69564738024e3f69903eeb299e9a5e4741bf53450c6354da34fe6a88c10c4d1d9b6006dca99ab39a06fcf7f417ca542f3e79a1ad3170146d436e33657b0025760a439679c478ba89cbc657e59a4f7f3bee162ef5d01a27d0a3da204e49b2960cac9d053e4b45034d831b52d587926b728834243fd8cf1a29be047bbbd0021115c259816258dbcc37452541857a77f0458f1f5cc84c540dfe291482719361df92ed2c944f70262d4e832ca810cbae944c7d56fcf046263b73d3560d1ccc9f2d4b7319e5e1a70795a631012b4d91a90299e56d7ed83c95665c0ad3b4c279356698acf0d424b6daa729d3251ac09288fd185412cf0a46174435db2851938d78df1d9237a6e32d5d579b702dc8179c99c3d99e91e894b83a8dce1b2018dcc402e11dcb6fe16a02e970c8f52315627d89665a1dba0f705786497262c756c8d0b1dd25231128ffa6ca3ccf90f02c47a5dcd04a81c374ca5ba8c21b943a4ca0e53e13411d06d267706fce3dc80d86afaa5d44d7927d80ee5809c72182c75a2fc042b58f9e8932bd50557494782c71f105fb942602a0ed726577f056831ae1549952abd1bce0cf80a4a5ae9c5bbeecb8034a3a90195436b57f81b4664074a95c67a9048554a7c75f52ac0862a51cf3f20accf631ab99ab078dfa25faa92ec62dc23315fbdb00bc73509a912c40eb838d34a61040fa501927c27a047d00e55a7cd2ef46935e484a86602ec5ddc306e2bc589272a0767ad8753aa5fb37c1b885e4895b06ed8641653a2b8eee649404e2ee4b42e428d77773b0204f51ebc0aa0a5361f0cc2ff52335eea091b8893c28073d2830007ec3891992a7b547b42bfd4583903e7d7e78013661c264d95a429d1b249499a46045ca64a39345cd3ea75cd893b4d38b56e95dd6805d841bb5f16e02c8b0c34e776796100d58e08191b44e5662847655e186ee8db7ae0acd37a61102f4dd595536e1cef54399df87f5d3320545695934773746710ef183d18c423a4064f1bc66d325a3088dd9e97c180c8032cd8862bc893fb1d01a52f480c623a292f0d888ba61c4dd693fb785780f3b88497a60a404da64872838f2fd1c25b818ead36009a09633f55d1cb9ac09c3d014aba8e2437a4f51e64e336ccb7c3d3a641147daadab605b109745483921e0ee84a85aa0c3d82dbccf0bc5f67021a2f8541083f71af69cbbe54a255a3a2065a2ea34c5be2c45b324fa60a1218be160c6249fc96197030455fc9382bb98d69dd2ae5e1f38d00e2f089626b49a69e1c1c19c44baf181e2d775fb7f99e01b9e55283f88a76045a259c220460bed2607e696b010a76a6f690fabc56f5e528eb3a035ccfc7061cf760edd1923224d9fa16c0eaeb068390f5ae3788927e9d1a1097a4af4c89145ed910c0f77ab067c07d8d0b0684a9ad1944bfec5d1b701afbcc001fceae41d485bcc5e97cbe89917d80e6ef7478617d5b8081bcbe69109523fe650e10edc51d8378c7139ddde9d0c0d39a41d8eb0fe8d32ed31978b45497eb1fa88b4e77d62f32087f0fa5618d77a54ecaea1f3a2eb68192f6c92ec2e57e40142c4d0d50b08854a7d848e2f7e7007138fb2b80387c9e1844494950ff0310877503fc95020a0e5cff3608b15c5c3288ca7dad18700a8945c07cd1185da9954527e1ff12d081a13faa8b5cad7fbe0d42296de9a5dc08db72183df5219b9527038eae6019f4f2246e627df6192733bee8281fb3d0b67eafc08b8626ecab9e55c1be80cec03379f635997d3619623dcbea81933b73c023c4e0a5bdcec07f22dabd0f3f31c47a0e2eb5eb6c310e9c60ee12da6360059c9099740e5869add02f03a918122e504a075d79c9f9d3745070cf26251d269cdc39dc15a0b337991b869244c65baf023a048e040d4abdc81518a97d7c7b2a18c2df0ed47650506fcb301d74d7c044ffe8a21b86d1a9809c5c89015e7314dba060c926964dd9cf9d5bff94d2cbad01bbe70f02a44e2b4f0cc23e6d560d7094dd1b84e9944f0cc2e6e7bab91f10f2517e1bb0f1fffbd9508ec5ef67a3609c649a8348d630649941188aec4c64f67aa1717f00eeb8d220f63f9e5cd2069f96ff1121eea3a7a9013bac83006e306edaccec067b3935884738c43907ecb1cdfc59f671afbe0ca25fee5c0e39b9de04c2a775f0ee6ec0a7c51507997d5aac09b35f9fd68e417c76eaa2e3d39a5e18c452f4e6dd20d6d93716185c585cb095c98575f0ee0662dff2e6d980ba580ad92dbe71d1d9e9bdb138c466d730d13ff0478d48619ffd2c9ca2f7338398f8aa53031e5137a4b1a338546706d151377f05f058717fd40f88a23fee1844d1b9f52fb3c7eac3ffe022964cdd904d422c5969fd80d01f8d2a9785db783a9a1a849cdea87219ced897c1201a889b14e700cf6a571a4447ddec18c44b874d017945370c1098d400c7f239209fe07d53dfe6e14c998e6e0d62a84f9605700c3daa2e722f3cad1b84e0dea406d140a5c45237285fe506f49cea92e3a02a5f0d1862238390f561d720baf245925ce0f02f2e0de21f8f5b02ec6b7389db1c44a8dbe84e4257b03b7af56d10257d54d1273503a810505766060cc2df7f84e0961a4013ead2abf7b99778f4a1da6a6f9c14c3d9cfdd46d1b7d2c9156dfa2259af1b646cd320def122096a78692f8ddbb08d7dad72b4f8c4ef3e0172723dabd567ec497f853191a563def18ac0a469831bec4600fd7142e5525cada3872f01b41437c2fe0076e00f04d8b49fe911ae571b91b8e607c4f0786c01853c45c706518ee991008ea107da349da8fa0f0678f09e0c98f86602ecf3dfee1844c1b6f459dde4bca5cf960ca0e777015c36eb53011af956752147f7e85cad5ed21e0f0b00dd96b554016a04f7589f95dfe3416ddab325ff8afe981b20a13f382d3707e8f5e735039a90593d9de25a24eb4a96ce104b325065190742466f6b02bcb440b43312f98cd691b1ac426bafd3d919b1b3a3fec4203efb49036564d01df5db02ec7c93df32cb3aae34dc7b1260b220cdc61cd073e77e04ef6c7f2ac095759c3fcd3292998eb888e507c4d89fb50621c95cd33407a4a0e6c2e42c1b7072cd7a03bcb3bfff88269cbd09e08edb56d1a7cc84d77b029494c0cf2c9b85593c62c597e5b22e564b83381d76c223798e2b8dec2f593e89797f20854a96730a7ac41e4a96cb3fb781e6cf7ba6d75dc67e4e686872cb84538cf1371c1d0248c5d05efc1560353fa3b605b16fa3dd4e8065c22c372077293ab920d3407bcaf02848e9df8e0f04b49dfe6a10d53fa4d50b1d1694522a1a9ce4dc6c9d152de2402457369f3c626386fb4db362aa0c98df026c96cf626d9a4d327a2eed05f807f971b3c904f579360810093a41294d58e124c39700adaed130a97a6ea86b051465a397b2264cae506c9386b17fba25c01ae8e2d180f4c0bd419474938e9a68257e8b9c4e34e62e0b01aabfa9a2cb21b3391870d5e48e0161480d8018ef16276836210c7ab483044d38a3389238940a8425f83c2b5354ce213d57b2ce1e71094256167250a1d84ac50272902b2b1bacf1437d45db0c7f69c2b2e34a32d91f25b15ec3656e10ab5752b766f24725b78865890e4a6e5530f47a7777664042215aac5412e25e052371efc0359159c98552dd702e807c901d39ab4833da719e6e0ef02571382ef3d5bd436710efe851399576ad39f69a5519f99438f937078cfd5b84bfca396e9a2041f636ed53f46a12ef18c62b02a4e4ee760528c797ca51b2f7c906f31c7027c629a25dd5443d3f540288e5096d5ae1d5e86e560594c28d8ed2bd80c9335363d531691d30015703e95fc9ca330748f2b14a3a2589e8216a5c176cb517ea17ed6bff4505d79c83ed3a3e5ba7bac0e0c580abd0df0d4884fe6c109a9f3335592d87ee9d5eaa4b75b9cf229393ab954eaef3319eb3338101afd74460ca4d46a5005be1dcb9f403a2e7b86d2fab3917dc12db3407e4bbf8445dd493a87ec259a739401c467a8448e11147f032dfddb2f2c780c48a2a6985e35076504dfc6df7a07fd4a4d899de0b200e474b063167739438735efc3b26beb905173b689ca5cdea9e0c10bb3b02d80e643c98030c236dbbd444b70ce7954128d8ba31e0d26575b662576e9e0cc88d2d81d1fefae8c600afd7b341d4e5afde312b7093aad567a42aed2430b8d28699ff812ffa917e69d8a949eeb7042869776810fd227b4ce981930b66f52665a36af148803d696d99381daeb66e1a224292d1cc20d6c85c379729b7ed70f26c10ef98a1fa1a1da17939306054324c9b9cf3962785004ed0975e80fd75198a8d1dbadb06d1ea07f4be33602e3f0ab031f33212506c02f34b8365d06eaafa788ada56d5d7c523377aa49133169ddcb49197b6fd549b7678245e72016e547a5d10a0f73f11cbc6cea547035274a981700c0d6fa94174c31f56c04af2362a770c706230a21aee384ca6cb027ce58877b4630ed7b2e13e0778f0b830396be590b964c26933f2d272bd49e69c5dcfd706f18e853b8328d81f24b995494bb6e81f40ececa5418c391cfef3a973124d888b226b95cbf58c29c919973a7d16974d5b628db7baf08374523f201ee17af94c1975da2bd55651e0078706613972f742e64c3657acb35b69182dcd5b45c775538330f246bd41d4f66cc180a9400d24a5b4be62803b6edf805b77d60cf0e021742de9e79395158390e4db07039cc2d4b6e3246442e056a6bc2cc93a42d7a58ae2dc32085ff4702ca058d14d03e2700e0c6220af20eb4e3ba21d2365e6489699813a2e824b2a549f7255b403edd191db36211763a6b412c91663bf93975823ca2ebd63554e0e3b2eb6fa01b88dbf0c48c3323588771ce81d4acdb9f26540d4e2aa018e43b587629b9e3e0518842b4b06d1400502d3e97e0f4edc654e5fb0aeae1c0887dac042e9b4585d44af770a85fc3c3420d20f35de6b4ae276ec1f10eff8a6e8bdc207bf309d7a8dfd6d81093ebec5370185bab1ffd1b343927c6f0bd0ea47d8b83df769b5eb5702188a5b2706b429b5ed1b0e0d900320eb5baa4fdceb1cf0954f7d45c1b40417678e8cdd66a8f7cabcf08a965278e9b0ad069a71c5e3261d35a83dd668b121c751b63212407daea2c7868238cf0b74f2a0e4d0dacc184ad27cad32e6860ae7233729ce010ebb8c396a60c19b107e9c0d1d772d4ec2b69c1bb41879cdb20121662b06f892fc0ffc738486fe80586ae485410cf549621036ddf06410a6c264cd203e5bf6066138979b06d16224fece15d9364a1a0302626e0d08887914a889c4b810603bfd612a2037c79941189bafaf020a317b37202ccbd5270e67f220c0a268726f80bfc1ed811b0cfb34b7932b71c1f069b57b06210e853b4a515833031ab906a425717cb706b8386f0ca2e8b95a3da59139fb958fb9ba77f4a4eaa72d6eb0758368a0fb4f03a29f3e0c78e9ef3ba272dca498ff9c6788369d18c423dd9a01ee053f224fd10e209b50db678112ef6c6d805743a321c375547c1944399e0ce4bf55e5325c14b7ea860cdfc95526801fe871cf807f5c1b10b726f9c02f36d43940e94eebc2807dfe050105d4dd1bf0d9c680d160807bf24603993b7447375b02c4145d8d0df0256d1b102f2609d2a5bad922a08834e743b6604047a9818ab82562a8570de2b337e70272c7fd0204e6580019bbf53b90b19b1b037c4912a9096704b8b77a0e70e872c3436e37d8bb3eab53bf9524b98cab8c875a95e3f6d2d1472b10c6f7e8a536887fdc4a824a9c8f2cace6a0c58f2c8d5ba1825ff5954a0eff0d8328e98b0661d5e1ac4f0da24d5bc97a5df2d97d01c25d6ea52d6bb5e98341b4e9edbd01c1701a840da16ee5ba01ae78b5baf2d137fa2c19da471f527d1ddeb79ef1928ef148bca3d85232fa8d96ce051851fdb7404f9c6765802bed56806096e9b141a82d6ecacbd32c12c38f96de005c5e327abf12a0c55879fe005c58cc2fa9a4f0795980dde2be3288ae5c57e5b4379e3c08a0f9d768e4b4c429fc7628a0d31d9b065130ae799b036a7bcb8c3c57eb1c9051e56a3c01eb28d8b441e3728372ee58af2953f45c8bc73ff6d11fe90038a7b6994e3324fb02ec499f332ab302f7e439fd92957a079f9d2bdc78840c877380387c538ef9aa99b02cbdb45500d944809891fe42803dfa3f48d0dca48f16e3ccf71c28826a4d005f23c919f3b9a588d76b2680938b4d953c1b0811610f25cfc8a635da3f3488821d302ab319e53857c1b8d66cc4ce449ecb6dbcc0b4962b4c6def43009dcc3dab792edfebc28241f4cb96dea150a655ba326f90c2d513408b6fed9cf1325fbbc757c67a847ddcd122d35aa1a34d84cccc01b23e3e13c03fc79df573c025d467b541f4fe19e528b4e17ec6670b9c4ba36f6ca982cc4f23f28fe5854232cff4d982cf9ee891099d7d762ec05571c7df028ae6a06f8b922d57f23be44545e5d8419b770b0d74c6202cb88b332164372fa64461154cf305592446bb8d00eba8516c99e413b2158cc899914fd8da1b1ddd1b7041306d3ac9a2e7dad3b100feca0de46352c81d772320d7224237d1f6b14c8509c919db8b0703aecfa22e931a67fde9a60025254a2f9f346cdd5cd00d9356e161db0621965cc5914f3ac57a31b227be2573598095f8ea08c0850ea3c33301b2d09ca83da65ccd7abc2a406d09efc82733ee9f23f1f70f0863823c9b79297b7de75080ea1f31f64b92aa8ed895cccb9c0da2fac3207aff88cf963886469748504902d081b49a7323305cf1dd1d8aad6c11cb123d369f09c20dc6ad3bb9fc73c9d51f016efce4b0605e928379444a995cc15fa35d81a96e71d767b5d13dc23ead3804de71ad592ecfd9a8a4b6558a0df3ad47b8d5adbb591660ff6340d1574addbaaf9712b499708a710e74ab2c7d5bb181d8ddac18c48ec0031aa6224dcf889c3b7985ea1b4ef5155d9073fc578073f42754bf622fb8ebf48f4e7be37b06149d715bc9c35b3f0ae0e638d667753cfb552f9d72086b6722c071a0657450351b888efb14d02d3395011176a706b1b3396698d6638903fd5213bad3756f02bad89be9a4e644f7c0598539a0f76fd60db860fcc420c421a772f28bb507cc2f35b3d8707326c0150777bb0651b0bb3d8358e0e1b09b0336fe3967f003e2b3274700e5c76d9f0c42071d6f1bc4c60c179de7758977f61cf559576c323d5c08e07c1c8e0c88e343f87515fa305323b79c6638eb0c62a8cf4e0528e9e8c320d6512f5383d8751aa981ba81cbd21b015c14d7ea39792438079bdb73d66d1a9025511d45c6b6d1f2a1c1bfcff6638cbc7a1627ee86b32d018e265423039c4b980abacf33197d0bb06d3b2d0db8802d3188771c61a03529771d1d7e0a300157ad802e0ec80de21d3b28c72623abc6f2990093c5d1970117051e1b44d1a77b06d1c81f8c6cb9c1126d88f8f6c1fb5d036ecd583088bebd432c1bdd11b2871436939e3b863e04e828cd0d4d191a66f83b08e86a92d2008ff7b64188e506bddf54ec4a3e9c1ae07f391150bc586e107b284f5b0631b277583635353b9b2f6a0f85dd7ca2fa74bf5832426074d3d5b0ac8ee2ee85a47b3208196b1a8378845472f3a5195eaf178983d2f272f83ad7cd4ec968c520feb1cb106bc834903c31d45b0e0d24bb4872abbca35ce73107cad57968c07d7c8c9756b7edb502ac70daab35016e23a8b08374e345ab95782b7f034945f256099517e95b5d0a31d2b6adae6b186987554eaee458251d94f43f3520e9ffba413c72addaea12eabbda80e30d02841025dc0e3507982ccd58803d7a2d45bbb13c349b0604906d1844376c2d01e4b1da5a1490830ab1ec7425ead72fc0a983b5d5e5b89f70b4e7ca259fac60f5752c24daef0701baa140a43a4277baa9fe5171b0eded4d40be133aaab35743457766523da2f4e2c7bb02ca9af06e805fac34a06fb1711d62a679ce2e2c8eacfe00523f2f184496f7067bace3e85b72f62980ac13fef303a21ceffb06518e15019ce4eda835887e79eb0da26f57160de21ddaf9ee7447c8ea964134d00a7b399d8225574b8330be738ccd8ea557929e0850fd8345033cef8843cf6646b2b563409b2e0a28193295eb497d94ac6229f5bae2e0f3c020d4d60ee3a52fb8adf315c56657da12a3a1575a89c557039ca07aa9d4f89f2b0125aa456df53547f0b87d700e9891b71951bd64ec9379ae97b9b18432e8597a0df86f73b9d2dacd6f039a9049cb2964c940953b066f1983b5d75aec957e19c6ca068c1e1b52b2cd6f52d281e4d0031187f9c07276f8a2a386923b41b9f1221f2a4eedad2d0aa08249a69e3b35e7722dc02260955139b4d8a784eee4431f166c4b7cd41cb001a0596c98c5006a3f69f52937910c9c6628c66372a9150f0238caf27b83307af39901a16e5f0678cebe0df004b402c4adb111f103c24e265c7f0ed8947daa0c883cf067d992a74de780fd532e2bfd01fce3cd80c00b03a2066e5c7485436d18c46abe5b352053dab601a9f5fe1a44474d4e0dfee9b103ae422f1c95362b0d70c7fd31a01c1f06a44d1c041440e67e619fee6a6a4058d63b20252c0bcffb1ce0a02aee0c429227aa7e4ae423173afc00221f1f0ca2e8c456178a391b718b6a31d6c2fbe5dc20f61dee5b8310984cd5cf70d934cf02256d9a1be0f3cc04c24b3ce2a4db0f40a4fc0ee4e3e9af41b429f714fd80f84aad06ca27641654e572b98e1e0d10ba4d011c32f7eb02f85f1ef705f0dfdefc023afbcc20846eaa16cba3f7a7237576312107626a40845d634098eba240c9672f05f06adc8c0de8b925019cd3b71a2f8536fefd15965ee5b30169245d30c5134a922734d08bde31e1fa4eaeff9d03a27d6eae05e8a8773fc2c826b949f19b69512a473e8b5b154c3e8b9b2b83e8dbfcc8808c8fcb802a86c7e8f64940de15f53eb9b286526a4b4eae57c958dda21cf5d9a6c093f82980c7ea4325edea000f521784448c1e9f0c70eae811ce388fbe241f33123cce341a66441d25eadb192133ef68fe744cef2767024a02580098f8464b74549a51b02415c0a9f3750070086222c016d21d4d98da21b3671005dba7a42997b68f48393407a8cf3715ace42b772f027868de10ed9f6437ff00d9c58a9464c8a36d95a3a56f9704ba1a07151a37ed236a71b4fe2c80d63e3f1450964494413ab0d1bdcd404ea7b458aa069a31c448a2f10388e44239662913dff11f01b6e4f7af0c4260f63704d80b5e676acc3266d3f34180617abe20c0c1fa75866996d32fc78f02248b223149912902738ff6c86a35d0b7001154c77465c6e5cfa393998062014b83a87eb22d40c0d40c09ca7a04f75a451fb4f38d92cea684a85eff15c0dd729c1b44674f30151cda55f18f5cc73d16770510a9e34c00ffdcfe8141bc834b758bdc4d980a60d33da04ff30942977e0a20415ca450e425374b72b9de1c100cb72dd0301a3ee997f9ba9af8a873018abe89f0cf5745244564eccf0b1a12747025d013027021c0055b0922950f243523a6a8c895bc62cc682848d2345aba36886e58e42b85e25ec72702f2ad21740549ff87716b10bd5fd1ea8542ee8e0438c4393a5339b4e57a4bcf15251eded55d83e86cd2adcf0102c30ae707c467c9e03f07ac927abf43fbfc087f51618fe535a08d566f4ff515b98e12fd436e9f9c796ea291cd49b762a2bb5b960601846e438f682df64e474d2a5d63ce309dd484769dd2408a4a1b71ec756e5ba082cf7a01d695ef74c3a42377c7f85c80bec5e937b73e381a59ff31887f1c6216dba7b58b695db2d539da61062a192fa3a35e40916d98b4ce81485aaba2ace439a372a5ee5d6999e6cb86a8d643ea529218adbbc3302a3b0a768881566a19c94995b934c4fe58379a00d8751a9dd01ee58cf1d2d702b8283a8669a553d0e40a2f2a4e3077dd9241f4cb98aeac32e5eba3b32bf6fa46dc1c58543ac1fca07fe0d26b4f19628ae41ab6192f55d591cd131d54e1261d0e5814551d0b9af32b01f6f9ef0e0cf037a061aa1e0b96bc4e73d0e316a44d6b6eebec6ed604d8f9befe05b153c3ddc63f208c5ea28d8b5ab7646e3e0bb01fb440496b9d85bbd81520209770fd39e00440716480e79da23b828a1c2245cd9d4bed38176077e3027daa348109b9f58bbaa42edfb706c457f606614aded0737515b643bbf22140e55a660f397546dfa89cbac15dbbac7fb4d241aa8bf65056e9b9ba63f6c8d5846c98b54f6898ba1fc700ea760408317bda35608f5e808464a37cc3004f113372ad2bda4657066405bc3620b3a04aaa40839bce2076d0b815a1506cd388241a855c36c31e167dc386d9f0f160105f21c141a1b8a464ba6f401ab85383d0c93bacb39b4cce94458370c73d62e53479cb8cdc0a90b28c38ad1fc046f7a901914b98b44da190bb5b013e7b807c3424ed4e66cf026cdbe6c700520d768f9d409c44188ede05d42f5383d8cabaf023f2aba3509a0a05fbc2d86f6aca31dd12a04d47cb06a13e1fb1e99aa6e11cfd990077eac8806f1434f1f2c70067dbd40029548b71f47ef8520375cc95f94840c31495d3e06f180e1203e48301d44ca9ed73671032369548cd3a6e40cd05e45ee09136a5819ec6027a29e2d0e2d26bd7688fb64027ffa14d75357cfb8ed0b555ac1bdac56301ac8be31303628a18956dc3022f2b04680f9254176d1b996c92744780b868b226cc0152c8850e3f8060a7258368a02dfda363e7fbfa5040d787ef1b1062f66d1062d9b5063115ecef1990361119738cd59f4b035c7a6ab12973e5f44d403ee0170346a51fa181de5867b71c6f68b903a2e8c61ce43a7c3120fae94440b7526f19c4f0901de45b9849ef59e816e696e3d9856f61dea2b65d46bf5c540208dd965e2ae7d2cab6008dbc4be57c0fef9f1d83f8caa28a2e1b77eb8f4108ee064aba631bbbe7505ad1d5b86cd6f70508435a9c1970359a6aab69add1571af92c728398e70e30ae3ace5b26c76a5365ad5e5c33a0e7f4598d7dce29155dafd0bf3f06d12f671f06a1b608bc28ec183a56370c8a7ed223f81b7a4efe15721d751a1e1d3976936d26cfb9f119a6c2ce9d4134d0a2de818ba25d3b36c00d766410bdbfc17cdb69f27c4d0d305968c29eb467c937a3b2d7c4f7e7cb00b7209aaecf10a9cb9100be5772c9173dfb962d17d017bdf25a6b29da731745f27521c057489052f41c394b2a26bebee6b34be8b19ef54b5fad19e0f4a3817a89c32aadde77b447c39ab0ef59ce6ab747aea301d751d193e8faff127516dbcdeb50187d18cfbd62b687e536c594d399643965e63efd757eedefdce95e892c86836e4b55d76181eb5fd993af206cb1e5f44a22fba6bfa8d777d83f2c1f1f799acb80102159a18c90139cf1a7351037b615aa1e7825859f5b00416792b3a9006bee785f80e6afd3ebff7b72e50662d509c53002ea51a9d0361a4e273a3d421b5f05613533102bb6ceda0f5db40b766f7702f4e9b580f3a457635506a97c250018415c1ed7ea425cccdc07d332f41d9a330ecf80a833d47145551602b21804a4d3ba36404e9d998082ef9506e2fde3b915c0fa18239bcae22812d87904c8c7c28601420e2d04881d76d31b20b8dab701c2c0ad1840fdf465000f885503b8a96d09609eed0b03f111405889cabcc19cb58510d4c51b408e5bf58f005e7ac5ab0182665e1a887dda350670873a3780b35310c0bfe14603954977b2650025c6b6817f85ce3ed4851941447375615ee131f46c80007eead31cc78b474d87bc2399dca701c6f64820cae9661f8901066a5300d1efed9f8178f9ae34a50abab0aa0cc4bfbcde1ac0076f47a02588d79d8023999c1750982f0d54115061ed01ca0aa0cf96d16d6f481706f09f5b17c009ed41c3504aa537331067d0eb8980276ca2166155138d4fd3a18a8ab2d0685a565d7c463ea9d08ad7fceba9817855b8791450284a2db1bae42bb5408bb7606b0065ac013919a98c062d60f96a2096f1aa95ddb2f6df7e0518fd577550cb427ed58aead078bf693a7428413b35df95b1933f34f90766e1e59e015c65e98f4c2eaabf4e003d1036134b107fd1339333e90a78ac56598eb4f871cf009a910b40c186b2fe2c80fcf497fec84ad42dc98300a2f0901a60e45e05d0042030abcc73097ba92aab5095dc7f09a080184a0371eb3b53f36b34346b19a0413540fe8611b017ae4d007881a7ef3301f6e47bf558abb881aa2902f7f485b99ef5546c5b8d0be8e7b6a680054a9df773011432eb8901f440ec63798ebaf6f20650d1b853d66d5ed3c9187255cba855ffc01e639b3744f22540fd0828e3e8d4401c170c30abbc9307550e70f4d8fb9e00c272340155ee51f82702caa9b34727e7817dfdf051801ebb7c33804642cd1f68fee193002a1b5e8d234053b4c5e9313e81e21935610615193613bc1a972016dad0b8429eb1195d58686a37cca0a2643fc596a52a94d62c63832d78032504edae8a5689cfae0da0906106158ec1de6279144858fb4b86a120e4504a9095aa20ef6cba531840bda0b62884db0a5b4ea1c8931b6702a86bf7558f05ca94fdce008e392702c8e811fc57e5044dc0792580d4fa902e2c6516bd7d692076f2e4544021fede0510204e983025af5787a6680448371e3909cb12e3b8c5c400210f9d803cb9684b49ca8730f93180f5314bac94e163c2dda124995cd21f09103d6aa735101bb7a1427db4554888085a2d9f8db1624120f6697fa1cf4a3174cdc42dc918ec3079afaa89e217b2178e5b0c41cdd8722a2953a69cb715a1c2d2c9ad0192caa8504cbcd31d3e5bd5b4769345583564cc993f0848ccc0d88e47767c372cb8f654b811a4536e28952748d3842369dcb4d16a70445741aaa36f0371064d5575d2baa75356d4f868246826cbb49e60c14c888c11f026bc66d2d5d2ae602cb804b11e278c4b9d2372c547a2aa91c2a5538e02c52ff49eab428d30346d570dc44249dc3c5e7a1c6a9f75013658dc7f2aa5e00a97cca01a5bebf47c6e20ae974a7fc1ecd527c140acc71fbb432d2bd75fe6691db0407cba11506cb98900931f296d550fd201ab1e036e480402abfe4fd2c5265d93dfc3fb75031cc09cd9cd243e78fded9a009d4cbaa84a09b61cd9d4aa462962ff1a81b83b844bceb9a68ca74738625c9a3a1ee2c9cf8b8178db9aa850d2a907edb84d83412af63023600bfee3f4685acedbf240402a3db6e0a6a38c7bc6a571e47d9b2f0c44935592b6570d6934c206fb6933a0b1c28a60040800aed57c89a067dcc7da2c6e4a6efa24a0cc2cce00ee61eca7ad82236ddd0b90b50b17d5ca420dfa2f011476178c7e5ba17bdde7546f6bfcb4364a03f12f0f1706e2a423ae53a5e45861710c901afd4c35956fd3096754dbc613d94db93bb41d075ff16c204ecb8e3b5deb09ebadc76a8bf8382d360dc4bf103eba6a7b720a9fe81764820f272b022c53d2ee56ffebc5d861da2025d7838128ff4855c69045a18ad76715910bc7be25c0ef95a746ab344d7becda1d8208f7477f748a26bedd09a0f3ac1b037197c250b8ea18ece4754d4053fbce007dca60772549db896a3e02e4a7db4c988e08dc814cbd234027fec4f9d2351d9a3367207e36dd16a050528056dd380dff154a18b811e020f4ea0dc45ffc70b9ea94298f30c54b105b4b3ad3aa936f827f311097479a18400dc6da37e79e17b5453997825a3bc4982afd951a37906566d81450243d1661a7cc92796780bd90b175f8bd3a42ca54ae407c9c31504ee13d6b367aa7ec2e84b0af9cac18fb2701be825d5fe55a0422047a1a01bf204842e578bdbacc09201ebcd812601836f415170d525da2421d66e23315ea7a8621116099769501b4d5ecda0e4b84e486a5ee7af99d9c18c0c92837100f8b43f6202729fed5a38052c5ed18885f41e45a391d8de4a01a013a2dc22854963e6ba68ac9dfe39b0ef204584ab65a01b2ee60d75779c5d9bcba1360e2be9f1ac0a748400e20db9b02280f8886b304f1b3f8cf55e697b4cbe1e94b24f0c3b3006dd9db368003bbfe52a1e43af83310bf72c086e2a5693e58311057c3fb9b01b491aa69e3d17bd402f2d3da30808a539f9590baf93640a22f7d8598b2c90603e5a54db864dbf20e7fe44435d5a47b6487f19ed8723b6a9cb2cafe9d19c081eccb00da048e462fcf58e25c55a65cfa6293f69a749b9a30f27d7b0f06e22f7ed9b6bc4c24b69f0ce0b8c5e3bd9f48bbf222c0fc9872c9eb3342c97dbd0b50d3af0f03a85bf84aaf389bbfef06303ae2dcef8904de378c5c5f11e071f55840e11b695c8f0f8d2399dc0808a8ecbe0418979a8dbe6fa9fa5a2540d5bf8f0cd063ec41bdd2ab1daaa60e15c59a0a5588bf55558cb175e4d2abfa9ec3f3ad15a0f929abb20f2885a79c953da7ba93484d31ff9237fd45711435f903914ac61a0314f072876d2be01a1a36054afa63656220b6e52b11604aedf3f6085514110434564b4007ad0b481dc7e40f78f98655d66d20795a48e9d3d071e92548d312c47a543c9b82c3db789de6071e8949c5c885101f0149a59a0e98bd7e79017a3d8fb3b09e4cf02a29bf04f0e6280a03782e1d1b8832e9f2c100ae4ca7020423acbe0dc4339b3c9ab5e20686ca0970fb7cee04941f68d340fc85db13c070fade0a9552c7fe82c54cfe03c8905ae74f065083ad089061ea59fd9121607ee80d90e92a1540b4f774258012235707c975277f34802a6d5b40bd1e04b85d3cab62392e33e156801c65c3878138c76ad523e74dc833b25e064d8dc3605f899ab390eb17057a8ffcde40bcc1e67f06f04cd931403ead85409c30e9a36a5ab4280f26028a0b7726803cf9766680f874bb80b28a37d8766a8018881a06a5694250552f0dc6fe81d7b900b23ee2902c016ac175013c205ecf0cc4a9dda9f915fab94e8dc353277df606f0b152c5f0d4099d2a5613bef1ee5380997cf72a80e47bd1188873ec4ed3b251f0bd1301bc7d6af5581b67f2906a8975517732a49ac91d51df1eb53c3abc283e1380a32d88f6ea89a4a3833a6881bdd45dbc6cd6191130671fb436cb309c4ea847962360bebb30103ffba15f28e4e13c154014de7702888fd71f0d90c869d340eca04bfd855826339c7b6acbec945402b171b30f267f56211bb7b6d4f4fafaab008d5b7f31107f41f2e725888b708d659a35ccd3359669d6a2275c2b011d2abdb51ae050701393bace7a5c21df19972cf08b1376dc6cc14c5e57172ee8c213265daefc84871900756d8a815d9d97c472cd4e0490f36fb16de524c9482f0b01a58bfa05d4382aadf7020888bea969deb0f39fb0c4c68d2e76d0cb54006920ce0a4b802ee9108011458a9b7c6dfa97bb5200b79bc70b039815b0a2728f4a2fd915908646f5e81152bfef0b105b0e83907a7c58c4cf6eab50a5beca540fe207a567770228caf698b8e643b3c7a654e44ced924dba2819fdcd46403a9c23016e39d99b8158d31346aea8f0afdcd05f3ade95c9b300ca94d501d0e39942a4e7117065392f04a45d612117a40273f30f0164f458bad5253ecd49bf2b80e47ba71460e4266ce32592bc749db69492e2af5d03789c85ab55401d277f8f7463097066d15714c43c61e4ca06fb8fcd3d01b2db4e7e0578ad11fba72e7b9c59c812310225c960a9970b29b9e8c24a118549993b02ee961754ac92a6f9a011889ddc1fb16b5772a63d670faa88c895560c65459cbc8458ae23c004ef88cda0eae29d2ee9bd005785e31d01de956bf60b29200e0d208157e3c80290ec70dd5056a6e46f1090a52c0355e981b7ade60f31bd6bf2fd20804075aabfe85590323faa8567283301a9c1d60510fdee73dda8896eeada5f016935d8f96b8907af1a03b162812935968a330b0bb996cde609a769ddb1a1fcb18fd58a1e757965205a5326bd01dc6ed8c66baf7074ad01066a66e0df677dcae95163a219ce19ca5aa9e2cef48b40da99b43510658e6963800efa3080abcaa781d8da334ed31a917c5aee09c8e74c6528d2e25921c0cad625af26a87bfa47c51a34ab09a6a24b10cba8d8939b4c8a32c6a5c959a6c90140327aa29bd64da5e4588f020aae46af37350add9625d6b0f6534cbdea8608a95ee77ed3f29553ae0a4da760736f02f88c1cd27ccbecb450c5b4806e54864751b675278069e48e1ad773e79f71bc36211e5a1eb393a5f28dc1be3210a7c39c85dc62f61a0e8e0cc497457f2b106f7d8ed003234044d057028890085f50b7e3e5e1df5ff6ce04e48446afb785521b71cb910b9127ff6ddd56d1b02ddcec0890c7ea44f5c05e3b90e4af6e89eb146e360de0f0f067204edc3933a86d1131f6ec636d97a1b3d067b56e9fe8d356c6f9b8a9d5ade23a9dfd198865bcaa62a816c3425f0972337933109b7fadaa4b7e9a7e1988228241bdbed0b4cc0d20e767d7eeb45eea0b01f97bb07fc8dbc705fd25cf3080b815d07e9a0820fb9cf2c0eb0a82ed6faa8c229ec80ec78bba2bb98ee65b02180a7fd2a71dfb69201ff012205164557608bb92d7550129b91203b10b9f3870ba8620e62b3702d8385ff602fa0b8756d746239bf0b6268024ef95cb66a784857a69fdef76c342ee14c629f506625b1e38e73a1f8fe8b09f0ba0e6a867062894ab4287f94bf8625a7648d0c22ffde1264a18c46dcb9917456600f93a23e748999ba03c1801532ae7b0705a95c476a95d85914d7d2b8076e5ee7f106761cfd476f8120782bb8e00cdea8a3710ef30796520de2ec8f8594b2193d60cb66b19ca7d358e60b78e58bf4b1037b6fed1009138d9e99c9251dedd18c00184db856532f2aa0752ebe46b62805f701d75528276a581d89607d523c4b7698fb9d8088871b79b1988abf24e8592d32f393d159053de9b0104994706f05ad474505ca7df030324eae128708ab7f5c2aaf444264dde4f0cc45f1c701b97fea52fa987271b817ba6a69ec748b2cbdaf7129792ba7709087cb52b20b1fe990184d44c7ed38cacea2b325cda669e7a7cbc93dd4f03b12da75c15bc0ee0d99e0082ff822e94878c23ac55ed092715d0e18c8061c84e0dd063b706b0ece296e389f59b5c7901699bd47cfc5f9299be82e3b8db3a331007fb973bbf720cb9ad6303e84eb84cf41339d49d188862fd6f0aedf34048dd4240ea854f01745ad87dd6a6e6d8e476d14b7ade30839496c8a11919013b4cf76d0067059521ebc1336e06ca4214082fbe04715f777450afb499eb6c5b3d5bb023407ddde334916c9c0bc8bb45f5e8d1cdafbd0870241124a1eed18a8615d64b3f601ff4766420f6face9b8062209e1988d301eb8ee5759d686b1a174ef5044fd0da5c6636382c82aec56f3301e63a7945eb809a346cb26d058246841f76ba5050c60a3b5d90df3cf6a7f5ff21dc687e50e405d201d5a1c68b732533100f4f02e52f41dcf97ff7047055c16b6009e267b70414f54df7f54054f344535b5e3649c57a091266e8f408083392f5750156d43a97ab804e2bc95568884248ff438f0d597c1227055f193ad22256714a3596b7a9fc169003c88b0142853d19888756716f00b79b1b032430383040c4a55440ba9375016ce09f3704c80f84d7f312e0ab615527ab4a7169205ed09ee606e279ebf605b8c211a4ba91874cc85f011942fbfcc5403c808b7701b2aa3caf09900cea41cdcfa8e97d21d0a35df9059063280dead31c03ffe755818e442ceaa05ce991ee04e250ce10412f01fa862b402105c4c4403cd5ef557573441904f02b78080234eeb937808b88469fec3f2157c5ca9281d2502aebcec3b3000e53f78d80d44f1adbaa24729c6a5a11f6ece1410015d6dd8e0164f41f06d0ad6928eb9a2e54afd7c410e152d32cef9f71795c1840eb55031ac27cbdde1b8865dcabb50da1e49e1301c6f6ee4d40fe2f9b06486eb3026871baaa35e95ad2013d1d0b10b1ad5207919b347dd540299bc9adc6b6676c7fd5161d169d7e11e25c4f3fd4fc8053cda51650c0f3e043f363e87054ba1640b09b6c1820209996a9248a09d3d272ea244cdc2c0f4c7ea64386036a6a409e4be4476ecc6764fd4100490dbb7693911e2925aac6122ce257f4971a4dd11dbb54d62272bda4c732b210a558223499c76fedce037a74af18ea8c00393fe6b723400fb4c66ac802ce5fdb6acb8087ccba5a2b2113f11d9a5ca9d108703002b6bea31b03a48ca171794ef33fcf05d07b1c2e004a3ab4f72d804fd1a98024f0989b8e00393f9ed34dde2884dbad0081c05e1886bc4336feb26b0047a53303e8c5a606984187008744e05d6578220cdd15029471cfb4cc7b792ffc1840f8a75f280b11cfa6261fe8b1ef47037118b26d01b41aeb2b06c80f442717133c64b01c1e01cac78613c85c55569941451ddd4b435608d08567d4a3c0262f5d3d1260891d1e0860587fc15c2f1cb2f1a236109f2bf8132e8db1a384a4673a140a297378288074f492e521654a8aca66040c25b1c39a62e0e23c6706151892a7878012e5414a28ec11486761bfe03a9ad0969224b2e984eda2cc15c58aab42a9d8e9c92780cd20b96318ca9ad13f7e16a06227f469898f447aa1421b65cca13f4a45575f61632ba5d25b5b08b03c36f5178f3d4c6f00d1def987019c045475c54e3fe7865291ef2425ce665321db4a8f59735589d3f79f40c5f29850b10a31548ab7cf0878bf5c337255c35012d2bfa9901627d7fa6c8b7ae1e0cb0011dbb8085444194989b0dc280d4f4204cca6ea8956b0e604f0d53867fbac90f3a7e7db06e2570e581e9572616150d648bb924e99da95a4c5d3de40ecc273265d4dfc20d7fe08f0b03acb00059ac47d56765dc60d254c4f0015619b49473802a9d2fe0cc48ab5ccb15a22f9b316d0294208adad097e939e3506e2f3ed92e5514be876ccd8d6bdecf91b03e82c724088adf56927409a15b2862e416cdc84ab53bd206cc0210b6879bd88d381a16cd0f105d4e88d2294b956bf50d8913983ddb435ea85570144e13cdf9aa65380b64280d6ce99858dc7e8798f9a363d5785b30b8181f8da2a54a28ac0cdb119a4f76035340b4f9688890029518faf05a491e0172d667ce1b6354086983703714a69bdb4594ff3f7051678403c1b88837d6a7f21c90ef95e1b7300b964c2b4c49948e7850022d763a676abbb142ace112844f98300ee6185fd85e970c2eda29511a7769856f1a5b658eaadf68fc200359debb3adc238ad0b28cc1723d7769c0dc59d002357aaf94a7f73746b008f90770179847c18e0179f0662a147ac97d6f3e23b7702bcb371fa1e01bb54a1b195a1308ee34ddb73a3ffda1420e910e91997207ee552fd41a28de44d8d0b1e7b6d554c79df4867da28854e3268d2e168900c1706087cc5beae7c38c9cbaf8158c68253bdc3fe34193a0371f27f31a5ba3c47fdc4a4eb2a3a084b951120c9fbe6d6d735f1a1e948dc3c02644af8de374a089390f0b4e970b74de67303f1b05867ebeb3a463f0d020414d281d3398224e09d3f021940a8f9ca34e1df0c90dee4d040dcc7fe581e9df6d3fac800c3c059d9498cfd120cc41418976afec0d37ce54e8032e6eab10531dc77f495459cda6e9e0bf0d29aef0820c9fb9e1b20754d2220d9381bbd530294e7dc00f6b8f487cbe26087e996809c47cf0418b9e74b03514a7bca747058ba250f067053d3055eea96043ba546ba9330d52f1a22b5e2afde489912f4e4712da6b3baa04977d26348deb8ae438eabc6919cc29dd2630eb7dfc4750292f432f9ff5795b0e5b85e3a8bcc00627db60b37280eda8701daf26800e762767ec7f992907aa251ecb0e4fdd700d6fa2c42798424df0ca52f24d63f3610bff2fe6300a12cef175f322e5748483c192e13025d8f80d61e6c18887fd9a6f99e6805c9c1548091db505b9450eaebc0406c4ba38a75c893676a2dae5d4ea22c25a60987aa29e673c9a60a5548bb4665789c4757ef05d0e0e985e371da4c3e5a03b821e92ba6c252e358eaee90c9ef31f64932d5542b1bffcac6b41aef9c2fbdb6e00bee303d21649392a3b157d2a167265d4fcabae4eb4780a1241f70d35771fb74d35f010d3693ae97a74e766920ce0facf69a5eb107bf820144f24c3a4be672c532ed798927bf5702fc0273b1a6973fb284b2bdba70c14ed70f584361723602a4f8a90ad5f2585b3510af5f3b8c6dc0913e3962bb08059ec25b33015e4904216e02e28e80f4bc09ca9576ac32a4e3c3a7a809350e0f673b06504ef36a0c64c84d56a602520d70ff0864504e080fdc04a2bd86f52d01747ce8b3c7127087da676c032ff1649dc7c878c38f2357b3a1844547acac085a49f1d317278088f1c60b489c7e2980189b388aed24c36982a0bbed248f218742f165007dc3ff00e5813740c57a01049924c61b812768956a2a6bfda733016e5b642f6d15fa28bd3e17904bc4b5817887f1b900d29e870150e1acf0accf2a03fbc34200513849cb5ae5a248f1df6f27481487f416d054c8a53a01e52ab900b44ae6d20844f3fdf4e54ea0c3bb45e3d2619c3fa80cc91dee8e00c4bb08ed1ac0470173faa15e1f903ad55b8045bca1a41f1aa80502779e6f6da6ac3b7fa981d8c984c36d33792c1369a03549efd31340d2afa0bfe4d8160f05a040b07bf36220fee599c66525baa4974c00f9d8e32e0031e58cd8724b8046822ecc144bfecc1b607ea80cc587596326673839a7978d00b2604cac46403db6d4960e45082940478044f1654d80c7d916933ff3f86aeca9d73d7f39d567713f4ed7685c9e116f6bfb0d40b0ecf494b1cd0b65cd3815c0bc72fd460093d58cafe425f28fa38500e2c147d67e8ec1617ac474c81b4cef5f760478f1bd0b486ef9a87a90c0313d7d3610fb343b0010c43c2510e90890c17eb33cf21e9f80f7a900e6c87f5e80b769b60e0808654f4bc01007bbbf8a67435b2829d51e552f146feb925e2f70d84e9b0a5011d868456590ba262135eb089016afb2088b16693119ea4640289795574047ecc1dd6701223f6dab5047c55654318f9cbf3d1160b057ff0001f160c6222c383d52524d2e413c7092370132189e97023c8a88d5b91419c47aec550648414e3d4cf4dbf29732539e77fd4292de932b0105386026973932d8935a400196e606e2ee70c8122be5657342c54ab26327fd3e0061463aa571252f8bf484595876080008d3d39688d353ece8dbd23350fbfa4a1fb05fff05040ee0cd7811684db03be558ab08119a56ec9655a5f038b5017c2498fc4a1b9116ec85558b152359cc9620dec7c8523502deea953e4b5c859484b8adace4933fe647255d012eff4b105b7bccb85432f13e17e8b9b1fd2d0cc43b2ef6964b10df0d3ab42a6cbe13f42f4b106f3967faec501073674d40726d5676256becf30d03f1bc25c2f232c47ffcc58c4957933b2e596c08604fd7b339d618a6a4b36300fadb74fa2540f367ccc25ac1e60e54682b092b33a8662f4c3e9985b52366c6eb930016aac4c66e6b1eabfe569fe5e5991eab0c59b81f270025b838679356fa8a7041af2ff593ffc0391dd428722d3155da861c65e9f94280f9b1ced46e74ac917f6e04b13ffcedbb013401cc8f8668e28e204dad653e3f5c01e0cae4d35c00d3a63301a2cfb9d985004189f0b3681b190b62dbd3b60a884aeea711482e456bdb0cd3eae35600535104aaed789e107d9f5b5f8ba75f9871bb684b3ca74fe8d316ef16a715d53648be499cd8b62d5a0d8c6c5acb125170959430345c7333685d46d5991f8a64e3feee0d107ffdff5f6080a99a4a10b1c676d162d995cede0518396200b41d9a804042981148e43a3540d599308a53137ea87a97b3d1b734ae23da49c0acb1ed2afc81b4d375da0bebda407cdf7e330bbb1af9fa211b5bd7c4fba9c710b4eddae84d9aecab2d2e3e139213b5c513076dff5420deb593d73f01ac7e6bfb85646c6a9c0444fedd0066c04c3ac598e9f13c683bc52119b605b073ccd48564dd49168300aff919b3d0618495ec16026cb00bca304bead74f03715c8827dd3a52a2a63993df158a83c64c966975208b59ebf468fe3a154061474cea5682bbc4b3073919b56eeb2b1d5102887434024c01fff459c5fea91f0dc4d17fa5c79ceb10aaa8628ec7fb5f29802ea93b3310cbb85619c4b873d9bd004781bf31407079fda5578c991503b1eadb13804c67ffe60690d133711d86b1010162ab7c05ee9979ea1684062752eb528781a486fdd4cb99e59779ea2553fabb34108f57f2e0b53ec7668218444b102b36cf0c20b952a18a31b3a1cf166c3984d66b25624c76f417a906c88ebd0404bf793580d08db3d2135f2a395837102b969d18c0a29bb3d263479fbcdf1b604ad1631ecfb664736e20fe223b1250026986c1525defac18c0f3e0d3401c284d07efe31b28d99d0a70245dab3f7aee529bfa8536e99d5503b1a6c4bb682d93c0fb8d80e4a7aa07f3c33fa83f1628530e1e0528f4fdd200e241ee52bd329f5fbc1a881377fbc10002c42b03b18c55d66d9f6336bfb929802073fbd100e9095a034c187d56192f7eef0510da4beed0931c2bf9fa34407fd0fc1e7739b7f12cc09eac0dc5a4a32b3340cd52df2c0c10d82835c05754b186a1c41a7b04b8666c3c188823b7c350f62df9c47739707a6c9dc281bea2ac199beb06c801911bc0f49e1db777dc71b7391b2483ed1b0d83fc2bdfd47cb222843575107617e1786e20de5036591ebd8299feed0820d8c56764bc5c70b92258651b70940e5f17028cdc0ff508ca8dfe76682076d05a6220b67605c14c20d075f2530b600e4484f63614185f935f6c04c42ffc62f28792d4027bef022cb13715aa2975accf122531399e1a88f3e3f7464017129e8081f7bec3c87709e25fb67e0508e33451190de3b23a31100b7dbb15e038c919a8d0ca7efd5940f93d5a037106555cae022f0b775b1a603aa8d789059de8dc0f21de0bdd87fe3290f261fd584006ed6c064386baf6cb09e096b54a270f652cc3afd263438d74348fcfea6e32211a0eeafc11d49867df09c818fdd6407c8b919e71041d32e91a904b149e0860297b7b2ca0acc3a70610645e08286ecf3aa08856d0a1c80588db53e82b454de2805ea0a5713b06c8287d224040f6a7730104bbe50fa0244a5159099096b9ca0015c16ff21b405dd0c9d780a62047bb7abd514c956f804352135486c7e4fd6e2a802168a2fe2014762091e4f82820c7f28b6aaaa7c6a0c64984f46bbf4074f31a37c72e9b2072edbf041032a1f1ee328ce2d3c7750308a9991f59c1d39c5d6a04c8c71ea84756e92f7702c8a4d16777598d54f2e9514096a14f02f4188e285d46a2af74ed13d0a25e2081d2081064924a70047c76cf031c22f93535ceb7b1a684a31b016e153f0624c88c475297678adc2290637d8c975e97a3e44ac91bd9e50ab67f48c5f25669887f0410a7af0f0232d0cd043069be3c032876c79ebed2e3f0b03d134018baf727c05fee6f04307e9ad1417940cb73c6605bb4f9d355c00291ebd1890076e3dbdf06e22f08e7d0154af772b226a03cbcbb00e93d38e7ba22c75c3dd35f0a649f7b1b06e222cc2a012284acbc035accb39b8900a2df159669414ceaf4700f808f777ab86f80e0264cba82cb669834007cbd52928575c522ea4edcfc4b00d9d621e3521289223d3c11e021f14d6bcb4c11c9af00d248cc6e04084b737108509aea55bab0ac599527b900e2521ce9bbb2510ae1d2403c5eb55d2cd364c65fec0b10de62aa8a39067bc26097e4024f1cd3b254c07eaec55da938ce778c4bb940ac7fc2daafa42b680f05d01594db00e2e52444171b0102e629f5a894377293b654ca0e157e04b86b9343660488e40f0603b14f2702b5ee9601d0e8b38f06e25fc80cd72da321fffb4b4a27575ab7c76a8bc2369fcf0cc47a6cd26395636a4f8f04b8061291ababbc8211f606b0e95d17a02d075c042a845d09e193ba9a7c05c9e21790c72329796283ad95bc649f89bb0c33f20f543702716cfb23be523735f6630c544d8ee5a4bf1440bfdf3350353996d396355763e31cae0e0d20f8df1690d5ef1c40528870510830d8bfacdb1afd6d7accd66711dac90bb804488b014d468f7d722435392293c5a700e3420690252068043b7f53123dfb2a17207a25f6da5dd3c6751b2ef40bcce6937d3aa8e9083687fd7ad7308392cf15408fc9d9de9500e6407b4c188b9d7ea3cff2bef529074e2bf90717d66ea9f5fb57c639a3af6cbf4e17b496333b9c7801744933faa36d90c23db18db7187384611040728566640408335ef559ad978e8dbe45a3194e560530ae5d67a31fef01b11e7335ce26ff8a81685571c621de127ede5dfc086023f0a7af90b53cbcfd18206b861a27d1af630175f29e44bb3202de62b7bd0003556d0278cf25e9bb806221b11a3aa5237cbc14e0bd8fc9c812f07ad5670b5a9bb2a1742506dca72f026c5b38198d00f1b115aa079e1e011defb9f07564206e280f6b02ca8fec0c20d756193aa3f0bfed14ddc31db26e3b627685f74a4016bbac860e9380f0f92c80208264d85de71b4ccef4158f25d3d68e00f334d5b84848fdcc6ae87411f8bc3710f7b157355f39745f7f0c30b539a23b74c0e1ebc000e695acdb0e3165f8bc33102b36ec18c0c49b8ab949b4c64e907d8e80d5b04d8f39721e84ef05a08a39fd1c864b23e888cc91094828cb13d0d5a8c17a3ad962a7634bdb39ae5fc9fb8180828a30d88efc1ec92f079f9345f7f065207ee5884e1e6f1b5154f1d008b07d123d6a199f1e4dc08f01a4816cd27ec239b73108f0bcff5d1340e48a9d74e725857bff3680808845e8f1f24d5e1e05647ffa62800ea271be4432f17c22c0fe71ca26edf1ac4f305e18e72da2acf2d700b6b4db06906d09b43226bd33809ef048801e23b86b677967575553275df4b9010c1f795978af3813fa85a4f887dc61bc94d3f717022cb11f0d0302b3649735a77cafc929735d22d7b0ce94ea27884cdeaf04145dfdc140ec209d73663bda31b57bccb3935f6e9f7d2e292d33b9d750969b06906d313f7aa28a2617cf02b2e7e716ac7cafee2f11d05572c3403ce7bebe0dc4f99172eef7759ca7fdc94c400730ebb6276948a2d5a038dfee5badf5f10472537d563acf4d6ee3e3511905881bdc1c15a33b594d0d205164cb09ac97e4edd840dc1c7f385e43ae1ca98500e3b23a37100bfde4a66421b9cf18b9a0f08d787077a1e134ddd46711dcb937b68bd02978057d1a70c7f69e633e0ce81b2aa6545844c984ff649e0e449c4e2a96fa40eacd44d79e81d49b09f9d5bb81d0582efc1a88bf203a723794bcd56f6217bac944d9188f0cc4adaf9a01b20abbcf1480594168f51762b90632063ba59a0cf58340136fd25c9ddc3279cd3f80ccd12d634fc6cf7e1ac064f518d094447a5e1720ae351972ddf219f0af2d4923209b4d014722c9859aef081fddac023c393188d6388228a9094d69209e51839a2fc3b61bb536e0ead62d0003469c2f6aed203bd84dc00273d327b565418cee241e7c2ecb947eef5e807be1c32920c7cc930c532390f4eb0c40e4eb749e08e099f2eb011551241ed70035b681bfb78086e6e3f0e032893bb8f48e0003ccdf2f40176750fa9e013c35fd51e37a0a3d8afbbacbb15548d7e8b13ca39309f1e77209664e2923d723719bc6e58a33b1772280686f6f00d408434fde0d60b4f821a0f48cc7023c892f56008d92516e0b600cb6cee85b44e1cb0d408730f45d7fe910aa3c32c7729c25534e64378e24d6a55700c577d856c502c28c3f27404d894db904b1b5dfcca07ca083ce9830e3de180159555c51f2596e6cae68983067ccf5a2c50e76fb4c80bf1c32b50bdc3b52f2378caf036596dc16406670b80b20a1438a03882b02f2d3e6520059f0e15480c7fbe18e81f8953fd554e92a77696db1a0d74fe2e1e94a890791d18f8009b34a19a564b087c70288b1579874658e80796722c03c5d6d05f002c7746504bc4e362f0085ac182f0530803899184000c07428315c4a4f5446897890b411ae9425f54926c0fd549b52d948e8b60768e330f4c7eaa08e61d8613f2d31d5484991e24a3d451f596295e505a42d55c68ac233c5553902e68d0250337298ac8e800edae0b3e36912476e43bf90cfd9a13eebd861c8c8e624b94acf694b4504ee64477f31e18e7ea1742fae3710bff2c4ee50e70876d157baba4482b6cf40d5e809d376cb0082cc7d01e4633386b25646d8565f91b8f46bcf408c8f9bb06bcbd73cc509ded5384c39d2222e012175bf0dc4af9c70aad718e9a5d86e38d92886890a5574e45665e81979393710a70301eb9ce52724d5f5f87a2be98f2f013e3beb0ce0e2ce96d328f5e69495dd60cd907275724daeac5dec414d81cf7b7a2280b70fb6d6ae69882b89b26d04b4055351d730f9d392815afa75fe2be39a9dbfd10d1617b32588975e327dbb8647a24f98eb8d1ca6ded4b885a2f0b239b6c4ca4a1e2602718e85a377016406974cdc56f2d3fb7b013d9a7300ce1bc93daba125576bf2c350b6385e0402e88c8015356735b43591c1da8500e6957feca72d0291b47830807d10fb69db9243e6a910c00fa7b816d06d9c59d8626d1b8e1897366072a63e5528dbe4503d36440f8870ee0530ad3ee40ed36544c2badc14e0e945de1567c22ecf02ea78268477e6baa44e29ee504e32a564c2b4ec58ea6eff15d028a3123b7fe7e2211eb405774491483472e3031781c8a10006febcc5dcf8d48acfa60b2eac9d8ef9fa44808a11b6d975447c74176f020ca5ae1be354c75eaa10c0acb165018d57d838e93a5a3b5efbe26d7cf621a0d5c0aa7439b771342323a00cf2f03a477079777825a0544f02555cd97e60c795fb71f24a5b9c829b74a706623d080cefe44b9cfc32a51cf70fef19282711c1ef8a801c83bf0dc4736ee0b9e264af9db319384241f597cc203fc120f56b4340764ac706306ba40ccf032f1cf1b0f2a8e392dd5c80fd635e1b887dfa716900bb4f155a28eaecae01262e3b8c2f1ba40a3b02c883f60414c4fc8b7d5d767dfd25b3d0cbc4ea6221a080b9cf0648e1b76a00dbaf570371cba9d5fc163de1e7a30027f26cd740dcd8343fbc022a9f322d3d119792661050ce367607efe291d49f3d19a0d7d51602e527a77f06304964997a921e2607ecc95e06edefec74260fda65e73723bdddc140dc0cc85fe9cc6aef8381ea731e12ddaf000a992baea37d41d07f9c485c5f2a43ee5c80958d84c499c5dddbc440fc6cc50db6afb1b6d553a397dde797aa2ef7e31df6a09e7030c17114f40e0bb31d9669efa55dd12f74ff2044973379d0195b4e98c49dae2752fc12c4b6e80918260aaacab80414bac9f1910093ee96051414809ce41423e01af8c5b615d078876fce9750a27e2200e812c43976b6258080882c004b10af1bd89ebb5045858c6b8f0d4429cb9e2a46e4eb64c20c0a2841934ffda2568c6e5643e0e6984c38a364729674ea3142b885f5a981384fb7d4633da23d9220b8403c69f7c7d88641990355b145343b49304677037718ff477f0cbca3fcdf9181685046ae673790733aac73ce0d352fbed7b87dfa494ec447ac3abd458d248ab79f1045621c0e80c36eab7b06f81ab994fee231e47a888df3d9048b19f4b723c040e6d501b408b98d8f00d384bc072859d8da3ea0696219386f8c0021c2e52ea0454bfc5e0860c7763905789914c53dc8e713cc92b21690e16ebbf70ac8f90b01747c6e79ac686dcea44bf7f6007aef6fbf1b886d39aa05906e700bf679db6196f423804ddea56adae191ba1e04b8d24e52005179d26c6a20dec6e7f4691ee20c4a6e558f0512a32fda5254c87256694b41bc8bf4e405d062a4f73d08607c4dde045fc88664ed5680cd00fb425fa0ae4d0f0df0d05c8d9b812f49339b4ea602ec0e8f5b027abc9f09e87146a125b1f5537449becc9540a933107fb172042890f41e2602643024b1e60864a8d308203358d35f2452bbd05788d29c1293da9792b111176e0418a44e18dbb25696aa05a0c17436f93010a765a9fee895d68c7129037229acd37d954b44f006282443a1ea95d2ab1db40288a136983015012ffb63a64325e3380ead11b0e55477020cd4f1ff806084f702ba8eee0034d7d91c7da5008f13037a787f1a887f41b3ea2b19a64c6706e2e64854405f61159e240610a991a9c6d7256590d0c1d79cd929826e6f8288fd2b80bcc0a7df023cbc0981e06b9948ecb0c4ea2e2a74937027c03372c1daaf1de6b7170c43ad739f887e4b805f232337de36101154025896930ec8379392686b2b00dda550f9fa266765efb0c13605b1192e685c4398c0e4fa4a0039dd9475db542cc2e30303d82ab0af3735960813e6694376b984f426be41c5999233d6370a59c6b57804bc1a89cce1cdbff2824e6e18ec9464c723405b3d3b37102b36e5486a2772ed626ab7197617d79d0003b547afb7455cd9ee98f3b6adb0ca22e083976f643abf1060ff281e0da027dc06344847c9e6ea5b5dbe4f8e01ae896d39cd015e9619df02d2023e01d0de071d8d2d9138c3ed1c80e42a2ce8b156812679ce7a99bfa4bc5e7d67c97dd9943a52f786956b01e496c520a0c8607c656950f70f6cd0a71df194c2163b6ed7201d2535ab578618b7af7ab4d8b0e2e937026e8ee7cc42054673eab1a59ef4df6ac0f6dc77ca9497790116e1a73ecbfbd693e172e96215adb2309b1f1f49f13475f39980dac20c72d278a369f68e589d813070de9116c06191e95da1d4ce7490e35aec1c73cc297dd6edaf00cf157c9bc65b10666bb8fc7b879d81fbd62f1c160038b17a477cdce47d15a0406098bd7a17141ce9488087e6151de406875d1f2bca2d941482a3c04f78697de5028a1ec58af29cea619dfdc313e93959d75f7077494813e92df1fb176783f9e06ddc00789c2584d3f67a9a8faf3440e3681c37144f34bee4974ef6c452733d83edfb18e32ed9dd11c0a9e6fd5c807a6cea17a49c7217ea8f8178c1b34640fa7d0e0bcfaa4c3e0e0c90b28e81d2a3d9cd697e8f36c1131dc89b331c2154bc254b2f99633d666be1e7da40943a6dbc0810dc75f312c0eda23f9f1b88a34fd8666f96193bf4c7f8ac8e1223646cdeded985caa898967f9d00764a031b5b5f2b20aaea216157aecf36088771451801efdbe659401644898128a921f89eb794ecf74c7e735373fa05996a92c3ff01fb3abb43afe0aeee5b8061f84e0dc4bf9015c1f78472092b07027883a17b1d6754bc3a39b723c096f3f965809c8f51dfe0f5de4f4265202ec21f6672c8d82e48b0b504715fff7831c0e39da51ef08d7461d500733d1350829c89015aabcfa2680fda6102a10712c2037bb9ba253f9501e2e4fd0ac8da851e93339cd3e53b94ca74c50c0a150fabcd6b01defbc44ef781eb79926706306eb915e066f0d908b04c3f5b037128b79974a1e951b75c0830d7f52a08caba4348ee1110bce2b332108fa481432bf81e59ce9b009a80390770e8791392746804f8131eb1c18680d5cdd681013cec34508b68cde07ff8ca8042c6ffdc1b884a9d1f3a68401091d4f4fa502a234abcd1f79309862937b5000200f2f22c01c1b30a03f1dab3381420f900412346c03b7bd815e02d76730d28c82143c4837e5236f1a644bea47eac1741de32405322547916c0f7ad7b1390e54e0b68cb08b052eb270899d2a09afa9674c83702cac2ac327a922fd60e10622a8e503d1b20318dba90a14c49673a0204330fead305efb93bba309b6043f2ea0152e793d8aacff0270ccd37a028b176e900a5fca30e00158fc45381069dd65a0e209c65fafe3f881563a98f47141611277163eb7399f27cd2969c1c87e96900942886de078052a47c9f035a5cccc8c3dbe71d153b6c0dc4e6637ddce70e9901bac611601270792a80bd03b9167b4be84036b53e277c52a2a93d5efaf0e452a1036649199f2d3286927839bd65a5bebc001492a16c034a0ca8087b3602c4faa404e90b65fa6e6a01998c6c01f4f6b84b00245248923b033cf0f4d9a07cd1b4d66c48085db234d98c4b9ddc4fcb8b41fccb46dc61fa9224f6e9ca9a016439a706a2bde5f10740f3b4b9104030b3c2e42f73445964871a01a62b24a41b41ac7acf7dac371b12ada8b264d269219725568c8913c03f6a2b11902d0bfd61c29d3b55ac9507c40ba0634a354702148a2ff108e8e429eba5c453275ca9f9811954a92d433c2c7a62882c419ca7e51cb0609e6eaaa65c26d273a665a527e0268bb0e2fd925e3c014aa52760a02a6c69c3fc0a2073b18db9804c57d83f2a4ec294f46a2350069047800c0f7835f695acc3b0d81d012f4f9ccffbca9253b08d57e48e4b5236838ab870291781112041d374a816ec30e74f067031d367b1824e37f96ccd7b2ef9fc019498ac2ee8c21a8d846b37041021ed5f025aa553673ad40ed9d6c53e80408201d5e208789bdefe18c01a8a1eab2d9380fea2d7c9238bb05686dc0b554c816a75783613f6426cadfb86a81ae1fc1680114538a6c71af25825e4c3190197ef87d64094e5cc697ed322664093d837ba5aef31831acfe36cca221cef5658ffdc0be8e9750218889f7cdf0bd05a82ef8d804e3eca0470649bb3f69b85667222c0ce5fb329b513b69cd9a1006bbfbf1260f297fa05cae940dcaf2588659cb12a5b029087537d8535e7f626061099d0ebf2064b6a8e93b6a9b0cb7911900bd18d013ecbf26895cfe29c49d7766c3944791f01fbfa8c7b90652378a74f5bcf159fb0abbd12378793de4054835daba63dfbd8ec53004b954265c8f0e0fada0086299c624acb9c901a7e09c810736f204e3a723ef64a0b90a41f02fce2731550e44449a4f99df495d8f3f71df19303d95cfbae516e8e67035128fbf00a50fce4857e41cc5077ab5fb878510ccfdb023890fdb24977baf33f570272785801048cf351728d809705fa9725c0a88485dc0d5c8b57cf05d8d8ced861dca48c638b93f308e8b115ca5028fd30635f5f9aa8feebc27c22c0c37bc21ee42ad493fdab403c4dc33a9b81c38d31d175c31215e394d7bb26663e0f3c9a4750f3682e051076e98c7272cc7955199d02a3fd19606a33b6164a1f0b80dea17deb4b351ff9987be6d6e706e4daef8c8b49bf5aeec93e43f7baf52920b1dcb3802c8898741ec14c3f63cd79058c79ff10e02ba4c0e8251f73770b4043b8f57410a03fc8a5d79b2bd39405e45bd288fe050199bfac1ba0a674b2ef5884a76c17de912027f915e035bfcb52f772f9dfaa0cc4d13f604a79943a81886d23c00e450f4d4beedb518f5ec96db628a327546972ba2da0785bb4562623895e1626db7ae75a6c519b56f50b9912af3e19c04f6bcb0046583cbdfa5a82cc3703886df595261e383dc2ae1120dd202f71df636aeeb1c81c0136575a2f23207ff69780e607f73109bb5ccbaaecc985953cdf19881bcae7a780a2bea993a5c3f9de116053720c54cf461ff65486bc38312be8034ae1a08766980cb4766e009bbc470179833194326ef103f334e418517cf22a501ede71eb31100b256c511f88e798acb017860a638eb55240e662ac284bcc9b5f1988854ed81d026b2e219e412f7950d05532700d4c3ef5950e89d16f2ec08efb442707873ce8a63410f720ddfa028f55f7c7ca0e78ea242b2a83ec8389cedb80ccc07d1406f0c1633a0c449d0d08ccc26412759ea1b802d4c481bf5b17c0209528676199502c8247408b80e8a501606413ea578082875fc6ed3364357a64f25885ace3c6865963c87a8c4a88d915b205f94d7f0a01ae706f71bd843c27fafe2e85e685cc5f2e04f04dd87b069484c739d25f70974bd7ee012d8618e4d41901cfd98b3f016a7a9400c8a09c1e3903b1a6970b00a39f9e6e18e02f838158b1ed35019ea2ebd702bc814e3d0031543abf010c04e139520729d2d19c320a3d13be19fd22c79589f83023a00b71500e45411600c20684a2e41af8a532aa382e49af5f601f94f4eb06623dceee0d90d092d12f5adab27d2ac0cb73b203e8b9294d54530ef174750620995cbacbc895791f45159b145a16bc4d77bf0490081c322e25afa474270754180c911b2c948da40ab70662a13b54acc4eeb33f4d0438a31e7f001d5db8530388089aae0500362409c6b5a1c21d3b5c51d34af1a5506185aaa40cce8650495dbb31119051c99581b89037d81d2cd7e2066da9b0b84bc287013c4218b90af7f4146179a8b02d0e177ca59e600ff3b50f28b9195c300c7585670a52fc11f09a2f3b01b44d490ae0b2192e582fb59e4d580f861ae3da703931100b25e86ea889379e625bbc04f168dc6755d69e81fa533d3cc28cafa900eafc3963abc7bb274c6050b0ec70f1091848b392e8b3964872cf40fc0b790242434043f7c2026af209aa81540083b2b34e80a022c7f447a3bc4d770c438379944fae05b87e3db26b370a46186e05b8d44ce8d38684a7ae9d0af06a442ab904b12dc7ec528d8c06c88a109a2e9e0d012fbd1160081a98968d232bf5c98f4020500b1bbd4915088c161a75f225b3b0612f0c781e8c80b95ec50b49b04c8a87acca368ba769b8a462ad62885c0b70d90cc4a30fad7aec8e9ab612a9ed7f035a79fafd0a2072c57538b444350fb35703f12b0800825ef3811800617ccdc76979a642150b1abb9c602ff1815e6f65077ba6d64a64529c08601141aac9d065ecebb75b02a8f4f63201c521611676b211f057026823d7d91cbb82581581c3b393c33671e04387b03c9cdd092098b9180cc4fec075277458ebbb6f1661e7388176f45982452597b90114982cd3ce7bdeb7aa3ab692619581eac8021088881164659268c7751362eb7f17020a004ac55c46f04eed0ee3d31cfd1cfda160d949cd30b812bbe019ebd6d51c16dffa2c01b842ff62808020a5012cffd8612c7af63b6d71ca19fb5019404bcc8471bc09dd4361808042faacd4e8893edb47235f9f5e08a008d9d25f1096bb875c80817ab15f6097f3ca2c1c072e366e8b8dcd4fa28424390b02bc0abea9ba2f892083986109304c610679ecd71de684c19ee6fbac7d5f33502f4f0662c5eea8a9ef14929b2e946b465f3150f2c4701b5c9dbc920f7cbe1b88cf8429836d8fe655f653af348064640b7e11e747826e6d0418737c30d83daec3c9c19e00ef97152edfbda278bf5f18a08368fef8128fbbd40eaba1d7e3ece3448055b9c942ee6b855c56194addfbee0dc4af103d6abc0521b5c61532f48e7b10a62b2388fba91f9e0514c8f8ca40ece415ce7d25930b078900532a4b0db0c1eab39879262b0ce5f824fe373ffa8ea3b10f8a8f7b0490dde7154763bfc0fc65fb4e80ede22c4aaec2f86e8abfd860ed2b6e71df0503840ca18342ce6711888c804209951ec68b72ec759d40238853fbf9cf00b13bb8af8fd7cfb8c37c1e1a884b1db5e008e831d25685f1da87d95a69208e2d397542e0e2ec3ee8c2e0659ac05c5f92b87f6c0a20ccb83f031089c27f5e02164419d9575b08abe9ff2863c8a39d41686219c3047786d0bc00941aad79037431846c685e0dc4d3c3ed023ce170f302d037c41059001631a8489ac7911b2caf573e18c059d2013ac2e1aeed001ca9e22e5b80e741f33007f4e4e4420a376481427f3ac04010e2df38f9877c42196b342ecfb1eed84b0488f749aec521c798347d4a0118eaa4a7b425afb1d6ff3c11e02db6770f502e9bcf330189084a40cb11bda55f74e4062372fe08b8e312e56c044408c133761c6bc40c8ffa057136d3bd1f03d808f48081d7fcdeaf00ef3984a1c3f88a8ef578ac0d90d7ebde0001305e04942e9bd12f2651881032ca2808bc1932fe5228c3c3ee062010f32f7b020c144ade95413122128c4a867222e5f4b101ecb599636586a3c1d63540c60bd84a0e65810b00a9059600ed3d33a82cb1dc2178d608b088d0122b2baea31bac97b2c14ffc3518884339a53f4aa2ce2618d90c6587f175f52bc0fc68e8a07156c691db57190b92db6cf08b2a53c403d64b95238177d4a3924def07ebb6c2ac205cac02e431744caf57ad34cd27024a4ac566502932d8930768066d32d835d2d170c5baad89e59af4b7025c14931c80138923d7e208787813d46ca84b2e24a4531fea8a6713d16f9720ceb12a15e099306533a89ddec80c65ad90a9abaae9c2719c5c0b20fa2535fc12c45f387aacc978cf21d81d9a423e12ad00afa4e3c1008979770c5053a694b93338aaded4ca267f016006b953aade289b5ac74e276db5f7fb005dae7e3e010b4284560c432b13cd5756439b9144f6c409f0b0ba64db6a09191208ef39b415dea4a7fa0b191d03b16d4780903a6c0bf0d9c523803cef49ba2780f3c6edb500efca796e80fbe916204ce2b83ce8178a3e376402dca516ef0069de8b55033c34699c3d01714f1fba7c123be86310c8e3d426ace608b8270f73019948b0f575055ad1b54b401937037f3b015494b1cf9aeb14d879b622c033729df9d1c9d818df84a16ba34ba6fbde15c049717f21c0131009dad011a63879660fea3c56bfe74706e20d7687e5d18d97a938e92a019e4d183f0de3b3019f557521393102fe6223e05abcd50af04cc06379e816d84a1285665806548a7ff90314f4d8cb8f00af932bbad0555cae9e6a01cc6f6f560c444ba6b30f404d2c354cbd4610276ee81f000d2f9cd54b037135ac33935d4b3c940b9581df5ae0f13e3825d9b1c6f1140d5b5f809e5f1cfc0fc840c6aeed06edfc4c3a9fa128db646c7d11ef746eff4600a93581e2462027810d01868120e6839761fd2a5b9f472d987c2606e25cc78766f044e37304be1a0167c34c7f71c466f8380748e3bdcebaf53d8607bb0ca50589dca4c73c916cdc2af3747c02c6fee8260244e5d18ab220915f6b06e284396745e991e81fd8a5fa9c09b37a2d403d6e360dc4ede283db568f0e27596905b07639665cfa8a87d5aabe52294e2f43a99c3a0e81ead023a30f5395a1b5fffb6820b6a56133e8c99497602b39023e7baae6b70854372b03b12db81f0f7d8765b98eb5bec39843db67af98d4fbec0e3d293002964c23c03aec5a7f5198d1b5c640fcecda1dc04b7fab8a297a54d05fb44b4d35d8caa3d9a9d7b9e32624b31dc20473b1ae1188f7c2be7b1020c0c1c991802284b08d07d94c7c73b7b470966478180276288ef07c8374c06183cd2010443490426709904b71cb0904114db0651901e6fb3fb981383fd654751eab7da38a494b8cf271040876675cd04283571a29d9478038ddb3c3044c78c3962a86a9a8fbe4dc0f84190d5beab1807de1d6c40016111cafe3d3f3df09e4513d2f418cd579fd2cc0d1f8c9ee30be23510adf0bb0c43a2e5743115f9e7e95b11d2a0444351bca78778a37b69b38a5169309f6da8b998178b9ba7180226a230351ef17938ad09c550368c9a9537a815846289f0143cba339ee1f8bac886e0481c0358baca9d0454f000af177cb57326956f17d5be419b7cff53b01d4b56b2f803286d54c199711b42885697e2e8dd5da0aa026a1f6612e401c8197530199deef029496797b5d00093c42b7c5f8bee55db909901e99c82d8bbce7463f8fd372514c18a8ef4b4086fef6f41580c428bd3c0720204a4f684b812575ba4b071515f5f87e0328e0039a9111a0d5d8dd07c87c7f370590d9295ddd020c7c767d4300dbe25d5a5bc8aa737757202ef59e8bf308908f5da81ef26b9cd04125814813720c2d940d3a491e0dc4aab3a246c0836652004a6abaab32089092dc3171cb9a231a8b8845d94651564f02d845d93383aa17012c98cf189732606a3ed56715ce018bdd45a91429abf17c59e8399bee7c004acad860f42bc225a7cd2f80c0f0e9265d5829c84a5a1988a37fce4caea49c468ebb18f7d7d863edbe81387191052faa01655bc6daaf4b1661cbd8d66812532c101735394292db03014c67f75984751707db63e03f02cefd398daba5173b673ad4c40e0b172d8074a6e9f4cd40fccb113dd620c80cc71d400a4c527f2f9458c221c55f28eb7038a41e4d8ffcf422139096f8c90019d9f4d9f1a5fd0f1cea2f98bf24e1408009338b57da452b9941b22380901aef85b18468db933c50685b71b7d466d02aaaf913e3d2763818ce54862c879f18869670a7ae50a1a1c01b7d0f80e4db55acec7681d4695d7f21f0663a5f1120741ae9b2171da758c22d786156bf58312e3abc39928281eaaa22569d0c20238822d7e4e44100e1309958170a8b972c980e1d51bdc21373bd93adf5167b50a7107fbc3c47c05f36d7000e89c0ce8e010cc92b01daf2409f76a817dc1f83ddf53d99ad9974e323314e0732a22cbaa18cc21d82ba2f2c09c2c99181f81532d32e1c26efe188c639b9976eae0830d8e71caf2ee7a9d1317197615663176e082000204ad1c2e9b6b545c51cfe9569772280306383fdd4912fc93d1f09605dfa7c68206a796e5506ba35172e0478d03cd3850e1bd6303d324046831ae031135fd557a48e7be652e310aa84a9faa3d757d8fa9c92c7bfeb2b0a22fa4e19664afcceba95a17042a4c58527e8aecb1e0518ecd98f0162dc05006f20579c011044b8bf3d015e5a337dc5a9b5fa85de0d29d3c1fbb86df5e50020414e72ced4f601e1dfa11a87df7cf2a17a28df2b86188b7ea20439dc834c9338e5ca323ef0e23225d5c2429904c22eeb569958dd5f6f0001003d66f6b873d69c52a2f63947e3f8388b0a3b5c9897005b7cdad273db4a3e8e05e4aac202d24b2b396055f6c4fe093b2f0268ab7512f61c8d615565f4b13fdc8e3a88c4cde1eb4c003be98e8dad1f645c7b6c202eb163555dc1097eef0c30c7d8727af462615b3d860020acbc1a209300c3606955f73b01069b30b48b90c5fbbafb3e16c05c9dd0694b10bff2f36780a7971760559e5d0b508f4a65e01ce88806bc080567c3e19a8072b5aa622511417fd416c5cb2130fc428957030a88851e89ee89791a70510d64ee1901a7fa3adb45406c9b6ca91e0d3e236fec0ee313301a516cbf092075bae2a2183a326d3e6d0b60ab30b933108f1322612d8223b1d5a37accc55b5fb857d53d82bb56bd1ee253c3dd1602e4acff61f4c73761741cd7093414004ddc0133cff4e65fd5b3c9248b7ad374716220cef5e623826c5291dfb40674bc8162189611787449790208f8891fad0216e8f8a2697536c9277aadad016a9cada35e7d04840c497f2f0578d09c2e001de6b78f9d0097de2dfdc5a37c7c6c05789c1d5500dd82bf2f000b9ec4d1f56f09307c8cc14c970005d5642b82f1b58622f54e809bd2235f2978aea4195d5860259fc650502390f62d5aff8ca08a5d98f42b800695eff689405c2fe18ae6172d0fbcf555011e4571531a818b03d55ffd0a50687c698d007fe490bd02484b942c0e00f247fe2c00f2f36cae2228c9701926b500b78b0953aaccf5aebc1540d7b8f20028e88fe8b9b40444a0da55194a12da1c0310ccf4f1a535028ff63eee524ba0b8f8aa980c41632ac111f48cdc3ecb43c1e5d315e64735c14139262b1d41cefef1b810e005bcc984a908a0935ebc00947c31261e1901fe40e1ea0fd0336136985215e1a45cbb0e587058f443047586182a46cf5e0274279beb02f8135e3c182098fa2920d703ef4d00c7607db626526b3add04c8d8e7822556bb9cd7eba300bad74a7f715c15b6591e754f0690fdb900a7e9395d58e361974e59738af21ee62ca046769f578c4b93f1bc4ff600ca7930636c1ba568ab28b491efdbfa0d400efd3b4f02f2d1a4831a9c049237c6b621a9aedb630f92516bb8a02de313399e2f1993bf5994d87c07014ef5a38981f89593eb085ac971576e0538812ebd00bbc3fc5d80b77a4c6cf50f107d8e85dc960acfc7946a2b44156754bd9567fdb6fec2cb331cb04c5bbc28c2100430d02dcf0c90f1427f21df7cd2d35ab372fd6028154c3d2d8e05b87e1d32d75b04ddae656577137405a78c8b69235fbe0004cc0ddf6c5b1d4e026185856cc1d4174c87ae89f6dae19799dc711108dab53ba41bc92e93bf531c81fb27011454bb74722725d72bdb78279391cf5e80b3f24c9f5de0e29e322e6edc0dfffde590e9303e01e3fc786179b882ebe8bbfe829fb89b9f1b8837e998f3205be66bc068f15e00c590a7c71c0aeeb4db32103ffbad7a90e22039a53f1cb1e5929f4480bbf6171bac6345851d9aef745fd78a728472099b83000fbc1d2fa080531c5a2ea0c0dc609772b8dbfa6b8e13b7e8e820f6647bf1dd73defa8c501d7b470688f3fd2ac036be27a0c0cef34a0011c1f7060033be10d3432f818c7c99fcbee2c23a6345f986006d1f8d00353d647978a279ba496b00fddc0f40818dd6de041886b589007fd962997a5e3889d367e57f3bbd3110fff2cb4cf618a3bbed5b013dbdf623e8796a2407870662271fec0ab08d1fd0ebd246ba074e314b48a79ba3a289bb7d0790b342c15cef5bcad83d15505cfcb98158d31dfd02855df8fc3010abbeb76f208ad4269d01042229c0c7404f2e1c08f4bcc42f0510441c08f45c37367f041488945daa0f74e1f44c80c7aafb3310e7e901ebb627828cb77ac8d8e798cf8eafc6f87eb9649e868cf80e5baf02ecda957e91c7eb867ba5c74211afc5896ed281f459e1db1988bfe8581ef6e2db607790e367f8663308c8e8c3e78f819830a82a0dc4bf6cb0198446f24255bd8dca36b79809e871f66b002778b63ef3e22c5468cf3e96ad09445d81ff615a86201578218010728d71098302906f031644485da76203c9d3c2ce5c80326214bc6c79538ce75c4c1f3e82212652084dfc4a9615e8b4720fe8b86dfdf6025864c630925996a3034e5ff84a2eebc1dd63408d82eae55c800843bb1d4021a97ee702d8287e9e02f43ad9d3577823a7df6700872d6df4e559026cbf8e6e057802ce5203bc4df5158f7be911cdb71c65d16079ec9f8ce6cf1700e2c0a7936f404b50d5c75700018592db12e07837342b801e1dce672e8041aac6a508b465774f8040718fd4b450d0aabf3b016ed22bbf0044f249124fc24c81bf93c70f802270c718774b40197f2f00a27a25098d2b49bd99bce82f0deac98d1301ccf727b4a5ec146188e950ca296f630af0c81d76e9f592689ee9c6360037e8e491c65519c671d707005dae9c0310ed244918864af64189ca58f0a0d961798c8fa2d8fcf655405aaf1f402e17333e5b97e88067a7023dd170128076a94bfab426c26138d55f480b9056b7023c12a321e8081472f9ea133028bf3a53aa464d9a56f46943fc8fb4dc0528cdca1d559773603aab051041dfdf00647177dc02da6836ef13fd4257fc13a68379e9396ada901e295cd0856d46d5dd038034b3e1ec1980e837ecb0e6da9aa7395b5fd6626196feed03d0ab3bae9259ebd93f66eb025866ccce0dc4abd331e3d2f2bc775ef508d1acd179d5743ce8e267e9e45652da3f356e8111f879bc29651d6e9d21b0f575986727b70b013c748b15037135fced00484be41fde00c4ea0c07c7023c893fd9e93ad2ef85fb0703f141f37e09a878dedfd0a7ddf8268e9fdd16c060a8513ddaa8050cb75702c871a30be2f2f020df49c6e9d1b9281f0bcf5b02dca5a247d9083c35fd65a03a25b23e565b16dc61dea98723855f3863d23945c2faa2ea8e2c44e99c817218e9855595414ebfe4d600cbe3766a20de0b9f38815c1b0f8bb0b525c08692330b5d5770516c051450990e724ad4f3756e20deb553864189bdfb4a65109736f9ba144040946f00067d8519a4d4df6e4ad5977945fe81bd99805cccf88b57a29edf5500bec4ce650678ce729c78d9d11f32c7c6c7086e7bf4a905769e6d0b28311ec7daff2a2c7add2be1d88ca3c0136edd3d7155f003baf9ef8500c7daf4548087e6856a8abf7af2130084a4721fec52bdfc5ea77301446afb89805e276c9f3d3a8bb05708302df72602cce4157abd97312922e8ac277867d8e322d0e393e81fd883fa3a4e187f7b6e206ed2ab0f06e2e87fb05efa4e23479ff612a9add406e25cdf700662c5f63203b1b5df8c5caf89bb921a88bf586306f5882ac2eeb3011cea3a014eb10ff52966d12e70cef583f29c7901d917aad005b78b75fd65419fee9c19a0626aad94e41a5b8bc18ccc717c66b2c4ce18a8202792e77b01a6a52e8a81b8706ee3c800f9e7f8ecf85c21aa17bb54a8e23321fca850823326ba190472f93ac78612143dbb65358caf9358c64d21c0c445283b5e8b08d47227c0b5d87d2602e8913f9e007d0c19e2750d5cfa4246a01e0b689b6a81210a32fdc697001eba4f5c03c3c2a12764ae0f93f848f4b7bb02017d14bd3e64b1ea49cdf93290ccc55fd341839418af71f4f365228d7fadad63afe7e3ed9bc4120b40438ea1bd7824e516caf6e55280ebf94f0b28887dfc7b0ea8b1a88ae1b497209eb7fdd10a00bf82746d5500bf82bd1701eeb82f67808e47d1a92ad6e30e757a2d80317a4cac39828042e6f406a047c05110e0da73a44265521463228c8fb5098fa2d35b0328643e01394e57f33b006ff5743e0870e7479e9c173512f818086c045eb98ea602bac2ad0394157297a12cb14e4f77d70dc4c1fea14fcb0ca5dfca1f00a942923c01942e6a7503502b3cce33a045a8f29a006480597e09a0055c65f415ed35e9f700386ca7d30a101497b603483134890f895cf98192c084a9c8d9966e7e03b04f4e278f00c21625870c76d5a06fb8781640587efc00d07dec8981aaf4f22c2a03517473bd05f08ac3aabfc862e6427f09d258d1eb35c69369590920c53ff81fa0f47b07900c2ab93d0614ccd37dfab45662ef831250a983e8b11a7fd370c1b4ace56fbab926c05532660f5bca211041cf58b735d11ad3196bbf960dfc0ddb4523c57245c5c6174e6cfe6c06e8b8d24e8f051031fe30d88d634f4e5605641d46c51a2e35c98a7e11b829dd7b01acc2dd8b803445f780415a8d5d01846e05ad6dc767623c5f0e004515276e970aa850f68f168159f24407b54ddc2d93f34d408b5ff47c5700afc5050ba8ed88e61953c52d0121328e9f0dd01f67025c26a237fa083cb2ad33d503c96638a4c75aa2ab87b30b010ccace4f0da01961a03a79a6bcb23b747a15bc538f4e49864f686d57c7a8f7613b1360cb796063b330a3fb8581382e8f2ac34931f42a80c3c3afea81f8d80f6f008f19cee70ea08fe29f3055a13dbbc3f98d0061adfe58d94aa113629cab2c77930a43f25d0114657b1c7c4e9e3afbac06577222bfbe0a70b97adf1690ea88adcf49dc815421b798a197eca7aea9716651a13258eef60524f8778036e0e7c9d8ba8e75dbaa50cda00f7dd611dcc4a9f94a789ad1c9e3ad38f6e9f1a700f7751e23b912e2fa64dd40ac7af2031877f67f607a2720c51003b5ccd0f7afd003035cf23668edf88e22efac0a9547d9bc34408e21d6beaf14bc537fb158265f06b073641ff3753cf8fc83caa8f1c3e91b408b02e2a9164054b1d10b60daf4a5b6c81d6ace74f08a20833023977229f024ce3d6239f7f76c20567d3e3710cbf8666cbdec1d6a555dae4c9f1c7ce3032fceb13f3683ff7549ecda7d8159f4c6bd0039a7a73f027cb667a9f7254e8a87a702b1eafd091b4a4ff292e48745d86bedefe82b521d3986c162753aa654ef098db5a95f78055951d52552cb592fbd82a947c3c711c816ff83f51250e7873dc6d64cf07ea87a202840725008f0483c66ff08459c30aee078553297a4a0a6818496c9e59f407cd004f72b20c3c72b001745fffe2220a3d66d01b44d2bff0362aa3c18e0795f09d0da6b15da4405a6bb656c15bcd37d72bc8ec76db471fed15f7cbc4cb835fdc5c7cb7732619e8e773cd2ddaa1e83d2011d087011d0152e2ce2c1e75799daf606c23c2a57ded9a460a31f88981262ecd2ac58e6b9fb079a58b1227371db9af17c2b328f46622d165ae4328fda4b010dbfb8dc067452957400c77d0c296d51c883eae719a05cad87af006244243121cc08e8f574f717805238fd99081000e3ef1680d773bafb0750988dddb87f1416ef627715800e385c9d01721e343f5702c4e9bdbc146045bde480821c7631a4ff084a7df64780aac734c423a851d9ac6e0ac8ffe5590099e3c63100557cbab10768e9f52d2780bae5f00ba06c265b3700aee749af7a687778fc062864fbf73a20a04adbd80128a8ea0af5a826511b99aef2d94a9bc1e13580859cc6d8d84b8005c0a3fd42b1185f00b5acd4d60024504a8f1f0570ccd9f400c5d8ede9b14ab3703308f08eaae26bada89588b6a1ea752e8b3ba6435d52d3bb1980c0f0e9e6b300b64e9b4ca9ba63cbe9f5958e9dee81e521afa3b4a50b151332dd6011d63d929a5b3edb4c68cb19d3b22990c073ce158d24798f2ca04691d11fe98f8630a3293294a29199f8793c918b16557c983f0ad0fceb52003fe03913b745d8152ece05e4eaf666206e9f1f2cd3767cd1c55fb0f65bf40d291655852541d8617eb464210ac80c46c0d57a539f6d90293d9e0ae8faf53f882fad39e36281157754281174dde903c04b81b90bc0ddd6c514b123408d9e22eb2b3a85b13e690119f6522fb5002f9cc98e0027f22d73bdc39427c488c24bc0b578fe0928e2b329f1db02bc2b0b5adb71bcba840eeaaa8ad8725e80bbd4db074047e3c3810027e1891a4740d46487c9df3922709f15028a70c8e877bc3c5da0d7bba125b0c085008fc418de620950727da8718b497c7b6821bb89a2bc7f1b204626d3d265ccd3edc600e13e582f8e132899b049bb8254603b6f02b1716e7e2480b5cb8aea41d099707c0290047e951e531cc5e4cf1988bdbeaa42a5a268e80f1748d770a0bf109934cc58a64e26341862147e822fe0592f10af0aeeed570065cadb9f81f80878e368f42c64f7fd6d0003bb4b011610567b4b40a174a197bd14666b85de2fee8dcdd173710e3306cab3d4dd1b93df57bc4d37f4593c52dd9b2a566393777420401722cc28941334b951a12dbbe5069dacb0898963d279e4526e7a2b203b367d960b5a72510b70d92c360c20bbd06717715cdcb12a8636a147a15bf4323cc80e045862077706d047b107f58a903ad52fd81d5cca6ed9173c01d156173d51effbf32b03b1a635abb227a6bd0f8702d4f4f247803de8790168e21da69f4c05e2b47417aa58ab402d9c1e3d960861734b80a59e5e1a4067c165b377f119190eb9198c0f9a3871915d14a64bba62bb58661ff8f70b2ced0b73a9424430023456074c873e60587f7c2c80f8e783910b930efddc9700de933b1706c8f9c8a92edfa6909e08b06da1e31b01eada376661e0b2193ebc0042c8ad13034459a5a6a164a9679c0da1fa8fa8b3588e5d59a2e8c768aee8166b683a6666cf0a2433b3bffe55df5c5b6fe488156da954989518c951f53c015b0df8a194e9da644d5ff99a8035fd82cd20926e3d6e7e0830c750889491e27a59a75f383cdd706c2bd30dc7a6c37733017b4bc5f11aa3ddf83c7e1709f0d0ea7602768fba16505de21992d280337a3663450d05ba3e1c30abd98c6f417d5ccde735f91dde0091028e2f57007c04f2756b7a559456f2323fd915d0956709502305ffce012d1a671c52ab744bb2336abf0638fee5fb043090dfe1e05e80ec8407d6c955a95c8c2887ab747fe352c4b794a4f58e33fd4b8f3a6c3d001cae6f3f3f001570fc9a4dc0d6dc2c03e8128099b49aee62565f6ce1e98558bc65326e5561afcc7f2e0135db67ce5baa4677c20b406bed085616710170ad46035f551dbb25bb4355e1ee916fd31f15f1b7b92526f90f5817cee8a07a8601e27b1d20eb6cfc0448e6c7c3bdaac9cd90ff0b022ce4fd1140de9e7c4d6f91ada01e00a47ecead4ef3bcd2dd23cbf9daa64145e06e002dbabe4b6661d3293fff0320284f9e6d3955db9242e5684d004388a53b4d003d7ff6c8bf7473fca5ce697a5720c31c5700a9f58f98fc5d8de9e8f4470017ab7dded2714bca1c9ddc61587696e52c01151cfb533b022111989fd26d960befe926405d78ca337a92dde6eddd0408aaa1d7fb8210b3d37b01655e60e4fa12572f8c079532c7e57f2b02d8a35aa6434f8c55b4928609500e283eff03b05b662bf904c845c0b8f4aa0b68b53912500a7bdf08707fd9d033943363f54a807be55101183b320aebf3a5827ee92660d2d6dc849acacd2ac4e220c0c8dd6e08606d4294ac540acc0faf13b0f376878d4d79e1f29e3dc855d6a71e3b50e56ac2c2dfd7059093bf19cac95fea9b39e63a26ee722f804afe466f8956a9372304310109136a981c42fed11f9e92426e675f40d14f74a14f37189b966c5b1e5f38f7b60aa8b16a7c1d02d4f4f52d404bd4f312135779bedd6e2ea0b00a763a4f4e6ab7fb340154d0ccc224c1da451367b02a49b0e4627c14905fce3540a14c1ffc4bc07a9f0d4f0204d2bba509d86bd778ed948f8d788f6a51d1d2a6d48b00b1917521407fcc394e92a068d267c94c0eceb6601fd96182276ac0eba14ab81de9f510a4c7bd9d00161a3694a03cf03fa300df625577166ec1a6ecf2d7fa7cb69c6c6f26c040fde85b463bf7bdd7bf8c58f0309554ca7296e17b5e455dbd5e19db8896d63db3a292d467e372cba115b925653a6f63a9689f3701d6fe6a33017b6dc51c8b32b69dae0aa01fbb780670d3cab06826805e7bad1490c31047526c4cdde19e57266082f3a17e41e51e9fe92de82dddda5c40f5e6d92d63479eeff9870042efbfd70998e7ce0f537b516bc1c0f304ec5670fb39019b0eb71a17e4a0ec627902f6da370e9c482e68377f176093debc10202a0d4ffb74dbf7eca71a178ff0fda36fc1f9299bebb5d85eb3dd2501e63a0eba55127aedf46898fc49e8358faa3576ed38624bea9841c31c7fa9373f01d2b0b0070da461c9560f04d07fd44713202f3e47c140446ab49421f37a465584dc7220ceebf9a0f00e6b7a5d4c15c77f00050e542f97028892bfdf808aaa5d273b004266f2790fe84951be7d088828dc77ce04d08e6edbc7d5492c46fa7c012845f9ce0d8062b639035597489f39b1b3f59490ec730e08180f66b4b4543ee90b071890b6d63d6044159ed92e555715b96e2c2d4d024a36d79e09f02d3fff00383f65f8d4d4f58c54724bdb00dc4d73dc2beb1a7f98ecfb1580c926c3869380ca45e95f1036b3a70008442f60e2ac1b5572fe5a17206417d1a96ed8c6739ce2ebc62b37d43e80eae979f72280e6fb8b09d3106296ffd36b49d09677268ed6ed0c41f16a6f020879ef00a2b0f23f265dab72b7e73301dc3c2fcf01c424c6936540b4a3d1dd46c050d871b2fe20805bc1ee8d00b7f93da654c7b8c403dad1952a227b01206ba4ab5700326210d758773d69ce7d0750b58a23fdc2b714f8dc12b0e5e1aef58b0197911346bfa3ea5f7eba274010c905ffd24b7faae9d01778309f940079225872a4042ac2a0f7ef05f896db3b8084bc5b6672af721efd1ba045f7897769028cade5c94b8082630e1367dd533e3c6e6e0bb06befbd4d80b49abb005c56f3d37501bef6d04dc0a49c377aac2700243eec0b28f2606d027c0bb3b08f38a6ec9c08e888d62f5020c6d328807cfac93ed6ab02c82a0bd9cdb8699d30508e788fecf01940b64677c3b6e54a2a7fed5e0130b4c743ba509107ee9c59e8e4d3dbd5028870dc91d3e6c9a4dbd7430742aafe0a0154f20d5de84682cfffca09f05056839707d12e67839725d16d0b20d3a1b5ae15d39c7d3a018e683c876b5f99da25ae320bbdbc08b63604147f4baf7b245877ceaeada867b7cbb6e53bd4c7f88ed6be27c27fe74a80c4bd3513d7e3aa915d9613b0c1be6453f25ed10b8c4b12e04d86f9a6d73d55dcfdede904488ef43401dcc4ffff0b12c599a8500702c7f3c609d063d70c54203743b6c33e16f083757f5f02b88c2cd341535d9e65265de8e47bcec849f5ebb33f01f9e2ab61d437cdf6687af048d21a28dd0ab23dce9710ed177eec051462763c01b4f86ac760e257b8d2d79205cf4516b2b25865a7bc251688923884d453f8f12e532a962aa1a36754f8059ff22d91f4afd9e70488be3ed4331adc3c1b84ab48b9976ce944c02ecdee611440b63c3d16a03f24b2447c25fd27d3725161cb56b6fec59128ff6215e0914f2f5626605e26cb4cdcc8528f9b4c87386ab0f9fc61466c75c7321de68870bf76883773dc09f35f7b685370e0e41b3700a929490ad0149ee236284416b67a9383d08d2f12c8d85b66768837490cb4b7ecdc010a9c7cf707808c18a73b8088162eac0046da716e87455351fa2aff59021478449cff13e0e07be1e32a79ccfc9c033afc8209fc6c92484f29d237007524e2958d7e532be9eef207c0c975e50ba0d2359b0251aee63ca35142a1d711a0ba4d733aa821737e5e6d4e80c8c739c061c321a54c93843c9bdaafdb13c0efe20140c0547ec8e7b7147fce2c27e47f80f226ef808aecd98f07007406d95b00280e1887e50450641e333f5addd610be1b393dbb4fdb719b6e56daba1d7201d58dcc0478e8e11360aef9712920bf8bed091070c9d776855c35f8da4e92d2f19700ca8c73c6a5ab4db3e9f077683aecc8f96a0b68e57aaf5f905c3e1e3171a5617567fb006591f8d6bf04ca559e1f01f0f97639aba11be78497aae92372d0ba6d174d3f67b77c9d09e0bc309e4cc0ce3962129b9e6085485c41d3133a1cdf1f01b5892cf9e986003eac3f2cc2be212ee9785780d5707c3b011bec8609d3e3061cd11726801a2aff05a4c1fdef172bd702c841bbaccabe5751ee09605e58d5e7cba2797437019b8528769b5e15d897d83f92a46003d53c0346845e14550b60aa0ad28d350eeb4a46f453233f69ff24d0900df8ecff80e0403ece3183e2fa3f0196d899077496ce213bab01bd1941fdd316c0594c80db615f57369c4c93ce05bc2af6560510e1acdc6d0253e649bad011f5ecef3705c86750d3855e65ef0e760550871164d4f8b9c321f54580e9e0f40c190f8a1501da3167f2fb42b94c9841bea4833699a7be563a18fd4282d137bbe5e489b04daf7b998e4e7e05300dec30713dfb5876c430782a187a9224244041a9429fefe4e07f0f50f5c17bd68b475d9aad4501fc83ded883bc62465ab63e7933c4b74d015c7936d4c91a3974e34da0b480cbf996402581a86d2b9039dffbb900dbe7c6f504ac83242a04cc710e13453379335c7600b26965643b6902e6a7b87d23c0501205de848e1c33c4bc27c08ada2d0450eceeb18f05859968b0e5bc100a1672c00dd811bf9f8036b67e0288b46aa9b7251611e013b039166a063ba0750aedf604a898b32bc0e77fec0b30a570d36a24056744b52680096b85bd30b0076524bd4b004f8437bd96da71f18de511b8cfc5a5b709d855e389b18de80be3f69300af7da3e911fb4bdcd42fe64ccb07669064edec8c3e8d252144a72b13b01de6f54f805579a2679076c4bfeb19e4e78f9f2c4255008904063791f3c5bfbf0a203afdec0bb01a6ee9c2d8ea2ddf02f429c96f9ac835d2ffe86b3b74f46feca7b1375132ae7c0aa0a73b3d9980b563e35200a16654c3c8b399757a061edd2e940226e2bb5bf6b1182cf98d7bd5b70c2d4afb460097a24e1f37b25d908834012e231d9dbca846f9dfd72e7702b8bce3ae9e807d8bbf653a0c05ae1a4b7a4669078edb60971a2a13f1dd2b1f37a88cc6af6d6c8b4425267e59a5ab795bc83d7b6507a0da1cbfbf8086bc3deb05a04705bd5f01c8b8941fd8d7b6255522f2d93f40e148efa95f7428322dc5700228eef219af2d636f82d1689fdf56e4a8ca7fce00940489b34a40feda9f0095a95edb0778ae093f6b802055f83a20da1ccb5e6c65b735ce82d9235da868d28c8c296d5d21f45eef0b20c0e70da065d7bede04a085cb4926d6d6b89ae7b5036897bab2eb5bdbb019e4ff7e276017898ab734c4cde75f7b00bc5c734288daa691bfb61eaa98f7f11b80ed35fff704d0b8fc7b04443cbbcef550ec8469b712c06564fb12306208f97727407fe097d3b678eec42b86b2a5306ff6740da0ea9f7b5c0154b8bd9eeb171515842e5f056cc70d2c8fb64570ceb0e0b5e9ebece3380ada16337afe7725a022198c5ceb647eba078c94e139623ac84ddcfff12ddd1c0533de5009b0080f0f00a890e2d92940d2f831d3b223943a9277a3ed7a74d2a77c6d87ca35df654a753ad65e770510bec9aad1f68af7d8fd9c006159fc4b3faf6c87b93b0794333bc5f6991f3d8916b2732740c31eb605301e3caf4dc0be96d0aeb6576eca8bd904ace90d73acefcc072d127bdfea2291b70c438fe3637eaab72845c6d1b20057c043fab4c725c0dfb017f6c38c6ae1268fb56e3643d5f925a0d4adbc45e5e5dd8efe45de1d9b39a056d626d69c5328c29a1eaac49bb31ad0935e7c47ff2207880d3d94d4cf6e8d25e628bb1b8f9f044822fa464bbd96d8d1978094a1eca7be5219c07740236752dae1659cde6533986212fffe003d175e2d20df2bc93df3c33bcb66114ef50c69cf714a6b93786e4ac843818017d2dfa7003df6fe24c06eb9c7607b258bbae4d04a372ffcb599c9f2dd083527904ae7c57fccc2509a2f7ecc8f0430d6ef4f00bf8bdd6701c556d3b080037738d35be4dbb3a3b7d4dc5fc8a2b900d4176b0550762d333f42a3b2336a072ede6eb99a80b5e38ab91e9447f1fe4c404933393d82bc6efe380a82e2e63f760518a88e3d28c9dab65efef20998c4f6793c016bc7a500b918dd33bb545aa5642675025c469ed9d7c34872d723bd565968bed90ca2322c63185a0034ceec1f49e8b5b3e1f8448055f942d3231595dc25bd1e5132f977c636c9b89816cf0518a8ade9174c4b6cf3ed54d100178956326e46fc5c1bc9c2eb51bab5934e1acfbf562965e20da31fc918eb56be055096ef56020ce51b7d1a03066e02c812c05365e55e8088a18edd2146138c326e380920c07f3602f4c71287d6544dfec14d80e9c0224c322e82339d3c148e7b7600d4088abf7637ed0a44da7cbd05b49438e04adc157226dd2f01cae768f53d1639ef9060f153ea4a264cbe7e0998f3daef0f40c42382f4d15da9e2033fb61aba6a8eb2dc6a502550ab2c000fada8e29ebd06408bc3f2d23d20701979b113b9ab29d3947734bd460ecaade0690205d7d9eb030096e6bc7e14c0b5fa7b134072939c0da593736d4445d0291763764bd31bfc3ee3d5a1007e9f6b8c8b7288642f2b00b69c70404b172a67fb9635806c7c843374e92a6ee217e1b60b60ffb26b9274d716128bb7013a5effe600d9d6e21640d5c32e4e01127b024d6f07249423faa3430e8ae4d8ed3a72fe6567ef80ba25592583dd51ea3a6ede020843ca2fe9b17e06c03fa853764277493b7a790ea31dedfa8a854c986bd7d7258a08fd4b6d7ba1233d4ed7371509fb9f0470484531d3f5b8676791c9df2339e67fab02e81d7698743d3552335f4c8072515713c07f8c71e9c3cc26cc3db3b0579e3c2cde9d1209666715a0b0741f0e8f88ce113590719c24c0ed8448f2cee14a9c111cd839328484b306d0d694877e1740ff71f02720f5cf0098748e23c0594a2a3f30b6ce137871c11c4bd74aebc29e1e7392b5eff58b015be3f5276074249bbb11c0925830727ede5352e85a8020348dcba483dde26bbd321df90b01a94b798b27f364b6d54e8094dc7cbe6f395ead425d0204c2661b2c64af34927b4c4b4f1a6b77a2d746553fae27607d8ac77fa7fac819a16e5d9831d7d7e7020cc30fbb6520437bf61c013557affb5301ceb9ad7d013aa83d0634ac17bc7fba240761a1d9139037036b3f902a2c6ebe4ec0ae91fdbd00e9d67fd4f4c8437f1b0124032df5c0d1e89e5840e92e62f2c7c0028a332253def6048839cb4f0550317ed0415326bd23fd4259ef5fef0084ebbbbf230154bfafcb13b05dbb1a05a4b53e0390a638bb791460c73de7bc4da293f507e1a509607d5bdd9880fd62d4c7352cf58a0e8aca5ed9dd0ae006bcc67611896e715b6c2891a243de0ac1fd076c899131b64ba29399b01cd3410582dd1687780ccac4e926c025806d3c2af2d1a90bc98e1cefde27c05bf89761869a1259bb53260a17d705b0696dd18543c12fb44c87d2913185cf1f2a47a43067e54011d9686599e7fd6cde9b34deda30f4f3c15cacf215eb8f7e92a58a1cd099fb7ece22ec0ba7ea50a70042fff299e92efad2a9202eff527ac2b29060fb291c8ad48be99843c7462c715f617eca09a4efab82241a3fbcb6aa487a67e5a1136850315e64804e55653b404f02bff65200bbd8ec60024494b500d214e7df7a06f7975c5df8ffdcd8bb00caee86639e5197d6ebf9d219806250d9fe1d40520efec90bf5872d8f27db1cfba640b65c7b05283aaee45b1ac503916e2c012cde9b7b00a4e0ec650d10386f9f7626806bc23580622e716e6bbf6f67d81bf69e005431cbd79e05d0b2fcd18e96589e78c0b7747384de03c6b62bf0817f3c1640fff1ba0e2066243fe4f3bb1a9de3ae07906b2f5f63e27691d403a5adb9be47f7e9ce8e26c0497802e00ae80ef50bbc4b23defa09d806eb5f7e0149c8b776d0633d257422e9f97a99af332bda3e5fb85b5a8f9152a6ef6505e4a2d92b11583ce4e39c8c7ea409eca7882114aabdc3bb3462034e003554434b1d853622b9c37ad75476ac7129ea5d2b2582de42b89cbb646a3bfc93dda37e11f033c0496f21f4593bd6370414981300a3b481b7028ccb0a33c873cc3baa66f47ede612ab916e8ed343dd810409dde39405191e0918ff30480e4fdea04ec6ba9fcd57ba9e4d7df01384064c3bd00ba9c93430166d036bb836f5143e1bcd04f8e8f0ffa3839e7176a87ccd7fb2c53ef543dec404081e3cc0fefc912b0a50e2203663667fbf45471cf4a462ec9de26055f7c02944463eb404021ff344c7aa96c89c1961a2a9c9d09c85781b91e5a8fce714b8088f6953801d37fe0e6d907ce6c9feba14af6b2379f800df63f76fee04c2310aa270112a391026101ace97b6c28c123e49deb5bbc9244b21706f6c2f8c37a0964d5702bccd3a0fa0d6fab133069eb87d7461cdb32d247f7cafb150878e815e21e3f58840a4ff7ef6c8e914af09ed2460b6032eefa8f0013f7896f89355a968e499744275b8454b9eb93a46437addf7d806aea90a07e01c86bcd2c4c92928ddcf5eb04ac83705de92723e883fe056f28f78a2010638fd7ef9a00753475124e01eccb5713b09d0e71b457007b76723f011b176a6026c040ddaad707427730b4f70301ec195e9dfd404547e7e88fa144eb84d0db0f3575467eedcae38a996d39f9ef0640e5e6d667005a9aefc409d833704c71658fe8f47d0ca0ae68bebd2f40f8cfb6f5a9abe648c144d6bbaa90476623c0e5dd0a8d2e0016eff00b2064265cfd001a74b02f7340675f1bf08474490e22ec264ec086e1a50290823a5f3e1640fef856c306699d1e00f83be433db605d2d0fa2a52d4089c19f222aae56a5cdfa03a09b388e072e494af6f94f364f5d5392fb78f31ba05271177c6dd3e2ffc109e41ac625bbfe2740d2dd590120db497eca60b72475cf6e022098c01a4fdf00a8a0b31b5bc8aeabc9bcb0ea04700940da720b05d97f80483fd729eae88e6f9912b3662b002555fd63c2742a785a027ae9f9df32803ced4f27809cfc7e3601dbd80e0600da9e78c3c82994dacd991fbddc1a0ff95a053967f7bb800253fce920c0c50ad715e76ab2261c6c0b300cdb510057f3c0aa74cdcc3ece570204a2acac033acb089acd360488b3f09700f97f9cab1dcae57af22380aa629bd17784a965ff0e04e88f1d7add29e1259733e789b1cad63e26606fc1c5ca4986718454258052656035780e8b0c05b3f3ca7a1ff916a52a75649f4b7735327275fa45a3c2de2f13b0a5fe713501db82117b9c6f990ef88fa52b339a89ed56c04e534f98bcf3115505c55b9d1fd08f7dec00e4ebb4cdfe110a645c7cbe5d40abe09e2f00153b1d1e882e603775393b4c68ccdb25eb4f04b8459329cd858e9088fd4b0174396e5980e970c73c0dd44c0995de428dd4d0df09a0dbdaa20b0379addd8fbe85732e3ba3c702016491fc960928832ee39284094ac33f4ec09c0606f68fc8f6e9b44c6389f66b976f8978a767381bbb49edd231b6b126a50c75f016c0265dc32c8cada93ab36e14e8b1e14401c2a128be98001b1b15c8dc64d33ae69c8b9d470fb33d01ae1a8d0059021ef4710aaba8f496d052f3e053c054158e20f804a4423a0444b27b3cb2e6e2c0ce4f4a4ca714a12ed2b06146ccc80607ce800ed6a1224880b9be3608b04c6b4ed3a1b072d919f9b612605a3af68fa1746414fe144001b0ae76289865757f02a632a1428c2f1a1422333b1b7c4908734ee5af74e34176b8bc17402021ba250182692f1f0084eb67b7a6b6f5d58c20a3c0432b4a19e73f3b808a87ee7b808a61ef3b0006ccbc7e05e8aebeb607503bea77018eb59f0dc05481cc3ad9d7730c439b7340c1061bf50b392f3cde02d8b6f29a96d6780ee775046018ca463b4e7c83e814c9b1eb9b9e48e1a71140029decfa023070a1d9d52f38a2b3c74c4069695e04381a5f6dedfb16a34e64edfb5666e3a70970f1c69bc1b7a8a0f3ee19105100503a2f6deb4483e14392eeaab6b2b3ad20404c00759bfc54a8f8b898801dd16415f51dc96ee3d985005afc3b86a16bc8e28dc0ea3bc290e2e19f80edb88e30d774bc94a42e690408a4bfd4bf0cea753eae5395192cdebe270d4b7ec9502afed6dfdf012a7cbfc60701c2900e046408c9b705981f14f75d00ebc286299564290c65ad0056af930ee0b8cf91e3ce2b1036272eda2b4f4da4f2e8c28386749676b1f2aea80872a64f554238ef99524aac188a6f408d1305d5f6bc437791e164930007f0ba7ed191fbf84f6f21ee3592d729013eff5dcf20858a2319a1f733653864064d19da09bbf1be6cec5bc882e715919a11d0efd37e811fec21a0c63abbfe01a0e861860d3801e25ff658d952aa788a627aeff52d9b00a9f5b9ab7b8f7dce9163661123601bcac0fc084a694739751fe69d1d2714a7f0ca4e18080ef4a1e0786d7e0025074e7e3f01932dc75301ac1ae44f4e00cd1569021360cb211cdb27c1c8c6f66a47005f966f76dcc021eec8929800069913be3610389ebdcf003d29530910f25395aa1f3dd493ed95e4593e04c2b1f1d74e80cbc81b732c10d2edb337c0882fcb1bab21522ddc214afa38a734ebfbbb00cf78ff9800396698fc116b42d6314f63692a46f7c8b744927944b2252580048bf5de2b44d5e1399c007764aa86fa589bd22dde1402487d88a33e36484aeb6a478b45b3e49c8bbd2351cb2780242b7e8d09133dee62ddf504ec6cf83c1360b0910b7d128c6c43a1fead8f11d1ba60c20c33c22a9618eca19070b52140c5e0cb6b01060aa3701a7b5ccd892af1438de8f4c6221c1a9e414d723fb42459690a013e6e9dc11e02e5e63e68fa382334f4d7565428941a9cc2efe1ffe5a2d6012df2c7ba893da124ec269fad0226d1690d50707967bb08932c457aad50cd3084a0e80e9574173f7780da745be1ea1ba044d7f91c40ca904014674833ca9abe443b6ad2ade7df3580b277197d1a9a39c1a3249c0a0d9241bebb0b50c85d750170d81bae7e011e81a4a361cd4042904d3d8388b28cc333b4aac8767b00d0267dcfd7b64d4f00c81640a5c0aa096009c04491047cac2bc5b9001975f6e9f529de1457d104887f212962e8e6e6fe122f5e05c832c27d3f74e42fcc7bbab0e3dccffff4162c23f9175fdb29187f63000c73026127205fda6202b605e32a9a0076b1b30c8082395fed0550cc9c98d813fa19de618453861efb7e8ef364e8c98495efbe4ec016e1be9e419eef88f131f4088a1929b983eae16448f4e95a85dbfce98d00764224c7e094b4fb8369e90a253464e2caa7264383165cd7b2f57d0a9848eb9f4e002a9d779a0b30c7c8491d16173a7bcba180fcc6594093f9c9f15a4fe474dce017e9de442dbd3f40d5e3152ea0da2d649d0d32d96405932e897db690711a4800afbd0d86c13b190e4f0164460f6713b0459824a409a054e16b3dbb43b6c13cfdbf4f4d33013be7b869053fda5ee851db864932581b2760025aa01da122bdf8fd89002aa49c09136adbe9323ced13c00fe58961485b0c3ece4702e42f44520a0179cc93bc6201a85e4a9f0676a9ec52ff1270d3c2a975e1494c897a165050fa6802e943c4573223c152905225bef2d0384710c0073e446213b2331a164970e0a8301522a504b3a614e8f174eb049401821328120ee5978b0998060deb4a0276786697f458a468997bb806783cba1ff4716917b2d33413e068bcd5c745d33b44f2d226a040b64a005bc116876724219947ec0971b4733ffb76025cac28341a8699a59570b85706e5aac86a5e9b6407d3183dd1c983b2efafeb5fca1ec3613701bc5d98da93730b45fe82d2afb9b809a871e1fdb52d3816251a01ea7ac58278c27c651bd0eb5ffe00de1e1ae73650b1a4a241361e02f0ccc8bf6dff881549ee3312b4c5aa92fb4b06a89590ec16d07068cdf50cee95f90f0dab3a8fc9e613a030356c8db1228748fedd03c8a3982fd9a48b351eaa39c9f6638dfe345fda04501422e71210273760fcb563dde9175b008c07f9320dabc91c97911d283678fc67b87bc446fe41f53280e0af1c637d6c290b907ffd02a848ef5e1e00beb03eed3c802b714e82a5d8463cee32933fe2c2fdd8a48b3380bc3a2fe8e44edb2721880b602baaa04fd3116dfbe96903201f7dc42322a603d896d8c86b7beacefad71b406ff1fbf92123d72bffd82ee3d27bc5add1637d98dbeef0f629c0dd14dff3d847e2c586cf09506cb0050c151e33cb0284336c998c1b9d5437e11e8060949d6d000a8bf3749ee5e1aa02f1bc15e00e8430111d56d16c8519e47af4b8190bc8a5d3c236941b01ee95ee0a4089fa6c4bbfc0b8e448739e002eab1a393fa30ae2f1b30077d37e07509082e94dff5262cf3ed91350fd0606ca5768f149f711bd7275128e1dbdb43dcb4c5caffa627bcc5365b1cadee700520f649f2f0015f87c63d2e998f72fe702a8f6d03b2480198c3c79d1abc7fe5d08207ead760019a89e18b9c049e88e5e04386f9f697a28cc9a10ea0b012c34443dc7243b60f7606c4385a4443c614c638da79b1e4a8e6eb7cdc7056a2eb99cc10ef8177a4eb1b47b28e9ff7c02d6d263c6360cb8463e5502284496320199e3d8fa02f7174741dc18671d0a91030112a23e7114c4399aabdd5b0184de8e96a6e30355d69500c53a5ef52fa86eb2abe709d85092ec252a0c29db65978a1527e107f3234a17bcaf67287cf095853c952778eb0468e9cfb5806a73301da64c58cf0cc36233b486b15e62cf66f07126c0e59da4440be70e3a686902267d7eb613b06bd3f20ce0f1835d528f51f72d3bba14e0a259ab83146abfbb22a0d7b2b1c581f8ec5acf185bfb97eb37012ccd4b264ac624c31015bf2a8079e1bc12600fc211340e4a9082a76c1c0a346814c38e436dcff04482c6a1b134d6fe2108e044f16b3d961e8168fd68ab722847b40aa87f860a5fc9fcfb0880d53cfff99e00b9b26e00d48ccd09cb5a00c48d3d01a4cf97190087909c640d0998381a2e2e01a451c8d90b874a5521b9de0f158e3af9cf2660b4951d88b318eaa2e52dab02b8bfe07236d4358ec2541f1c6a6ab4e7df6b00876188c234a9d3395e39d6869a441cf99a1e3aaa229b4deda151a0413806a04f768723a099db45137bc3d050192e9ef780c8e7b70c8362deb36052ced0ca00515e0070e18d673b00aca21969f186964460d9ce292038d41dbca5c513211ed86564e84a858705804a0b90c867e8d039e65f7450a7da3e276f809ebbd80e63dbab7e65ec00285423f53d869e9d2e2f0f04549a954eee4b76fe813eedbbb92dd3db5501a52aad009e0ebabf0548ef4025a3210935a4f5e66b273f94db33019abe67b2f6e066cc8f92b7b8a226e1f6ba006776cec4751c6b91d2f0836b482e4f68c6e07a335039bcb20639954452a80c8e8a398ef09fc1cf6706de78ad2f30e9a1961b7c53e311c19a53d88dc7196c500158b7d30b28722902a43259fe9b007e8e2c20efc95afda2d77a1337bc36038f6ba45ba10b3d2ebc1effb104ec44f694681be4dd915142780833d32ab8301330856ac486930021221fccd340eec18c5c26e9e2654741204277081c8dfe21037034faa715408bed64430f6d09ef78503b88f6f1dc5e0739a4463c770605f76494864fc0e6a9bfd5bf2805e4d62340c990b9040c6144bfbeab868dac06f20725c096f3404b93fcc12d3a172052e789a51ed1f46604e60cb130cd44981d0b7012ae33d82a229b91fa689040e23e18ca74d334119f3ade0958d3e307532ad61cd187cc4245eab82d3d03b7f9ec47eda01a927b6045a55b11424d2180efe8831a36c85554edc083c85d7f0146d42ecf8c7e3ac4ad0be38e00dfd2b3070d73748eab1c7c03a119f18f8f4b071d497896054c2192157a4b831cf4c4013cb4120498c903e9d6b319033570798f854da9714ed6b7fce51630da430f3f6c5a8ec58cc8d8df558043727c35497aac54a669fe0828f1a6a4d7c7a9bee9cfc9042cd3c0d51f806c4939658813e000fe39980087c5a10007f08f0065abf26f1bb9b126bf439c9f0228dd9bd741806b13b9f6c62976a55e03287df41d4d6f509667af361dc69618bc7cf30510f043e1681cdb8842e4eb6f0226381fd8d88e9dcc3e54ba1ad3ee69c7c935c3d09397252ff70153cc884049bd82b70650cf4cc5484accb16f6c99fadd7b809bd96670c96b7bac1a99fb07d015f086873ab926a0ed195d8bd2bed903f4354587de0438a330b58e2ed8d7c6ad2501a6e5d12f202a0b6f0118718040dd31fa7967ed40621b3d3b6ede1f081057f04ac33c29755d792c609b63387d10e03a7bcfd4f69d7933e4859e416a4e37d2639e69997d6e08608ac72b6b544198b8d3011cc7ebca9500a6d61ba6433ae7d82d2f0098171cde7209900fa564bd28815fc489625410abeb1e264005438621942811d6bf051470790da8f1fc235be30260f7180124f3f0ec41e93cb6cdc0ad317183c39fdfd374a57e761933284412f8e11f9400321d115409602b20a27d4c87169b235b4e3a926cb09759c8718ef180aa4c09d806eb0e2680fbfeeb8e003e8a33c625aa6a28e68504d008f8d3099067932e9c6cf384c927802aeb93a18cd4f5ca76f704c8b4f8703c013b5fee9930b133edb97bd65b3a8e934ff6a07468610851d31dd9d6ae7f0438f73f2f01dedae13ec304a854c3128b83a9c2b3d9ab80f24ab26ee348c3e6fc624075e3aedf0173392dd28ea130cbbbe74e380e2433cdea63013bc5dcb39e416e06bf4c170ef447d6b3e6c6e98cfa6fe216b3e9f66a9aab62565524cf323f830560d2bd3a00eea671f605c0e928cef52ff2a77bd9315093c42bffde07b45cbdbeb701aa6167598a8a59836a2fef66001cda732ba09480ca99de1d196871cf8ee73780395e8c368312503dcfeb1a403dadbcb80004b2f10d196060bd1c6f1ae8e6a5f5c75904386ef3bbbf808138cf4ddad117c8a7273ca327afb53be32d7d6556f3789903089674a702ecc9d9ed3f80fa63f74b00fdfa299ddc2b47a655415cc827044b8e7303ae9c9bf855ae0b1074d5d11f8e8420ce6c7c0934b627bbf10fd0d5180fd600186442f10388cad5391350cae50f037e56934c7d490099ce1c851780d2aca702f306f9a317505dc05b408947e6ca09409ef67f7a8b8a84ee9e011a827b7abad0e388e122c3e03b24c74a4d27bac5ad33c7d2ddccf6e48f3700bd1e57591e2a3896152cc23037bb47b6ff0d9081ea3913c0d0ee99eb813c46d92aed90b936bbdf9800b2364b2c100290edbe0ba0c7bdd62f7abb57badd28409fae79800ee09d1700d56eb275be36e03d9817db1320ee95791ab815c48f67015c01775b019419fff4168a3fbb0366722ce43ff62b80d67af75380fe28990eb134bfbeec201340396c0e21ff01bb0494ccf558b3af1f6c0b20d11f303f226599b3937301b323fb659658c477c359c2cbff806de395dea2b4bc879713b0d12f19ec7468d130c6251d5a84212d09a00d2c188648107cb6abd706ca679db00893a06407f05907a0d6b37b60d74e2349bab14d017aec9a4e9eae6f0ff702848898134502ca6d7bcd3c4dd737a2c1660254ee59e15b54b5cb677a46255b121d34d476f5caaef8da7434dab75ce95f547df059afed38f8824d87f942cd6427e168a0e855bcf5c940baadd955e37c0350a2a5dd8f804a45a9560dd40d4ef1665c5a0042dc97784badd11f970114828bf32bc094be6067023671a3fe050d5a6ea9068bb4139206eefa1c40a296a06f69a88694455ada92b628586c42025c57e2e51c40faf978b9098844fabd5e08b0e6ae2f01342cdb2f0c74b30e37f16f00f17371e75900bfad2fc6a55320dbe51e402e34db7450a7b8a48d6602b61a8e2ac0d8daa1e5e9b1be2e0830bc0334dc5ecd7723016ac6c61506aaefc9236031bc09281fdb055fdb47dc4e9a2dc0d0502e9bf9e194f9e9e50dc0d7c69d01d0a10fb22c34c57fa17eb6b21f018162a5c7a780881e66695f8071f9d1332827e63c5feb464b38e5f22b810a3f14a6b62fd07c7f4701a5f8fb0094e4313a5c15302b71b06a048b2a78dcc437788b572a8665bda52123e8219fef1ddea5ae0578720faef50059012d35450214fbc93eef2660e78bc636cc48f7d17f0254bc95a331498528bb7619977456dae81ff2dad0aa84ce0a403167fff45055eed97a009058d13dd5806883ed1ff8da3833eb9bbf65e42291c2f1f57102b67dbe5d0b606bfc6065c7c2c4f3ac7811400a3e671646c290e2356b3fddb46c33289605c894b6c37a8935e11d3f6c28e9da646bce2cef0bc00974a187324ffddf3180087f7f4d9f46cffdd652632d00c6fa078621c69efaeaa702f65affc41c4be78b2db1966118e62db9c3ae04a8e878f5320174f4f4ba6c7cd909eb76a8b8f1dd33d8c34856c05f3b3d8ac2c9c7e809e07529b20e2a2a8ef9cc34f0c522070fa6b45f010ef1970d808e6873575f0092345949e504b8efe7df87066a4a0ae5df158040e9cc92ab2550e3f46c26f00560b734357651b4ec41b955db4b80e4d0ee85d7b6a1b0c97fb40a5065c9ea1c20ffb10b9bda45a786adf2da0e1fe76cb300a0008816ba934065f79778702280c2fde018a08a0656d82a01f917221815e9368bd3d103009fdecc4a9324405c52f64f6f51b2ca63beb6c310124f6cbd14fd1c6bf5eb9500d7d91346aed7a5285b17e03e77409ff6e4d6cf6ac6b66fe9d3935d007d1a07fd02b1d85b59a234e7d2f8db8efb23605e48cee2921640cabf6f014c36e6289c80ea9b5ad5e1044805956db602c4363574b223bd56dce8002ad16659f01220cd683cbd1560c77d62bdb861467cd41d4013c6d225a7f5a32a7716b29b004aa6ec47bf28c828bcf709d0f5ed93b77855ebd494f27d63a747560be05fb8463bbcc3beef2280b456fef64880e4bfe72f0238a559bad3040201caebf498e77aefd4d2e9c0699863e9c0c140b503c0a33b1cd2d250dac879af7fa96d73f423431908edf2b72cb1d0c964b32e8088ffe305e421c21e147a42ffb64e014a4bd3d0a7c13b64187d4b701c167f8001c5dd315d18460272df2a01a5e565452974c75bdc7c0215baaddb77018e93d54d012e566b57029a30cc64453dbbef99008117c51aa0c18bb1a7d7239700ffc9d44ec79a1dc0e6f1bf0076f5f26bf458eccd4137b36aae09e0fe129fe9c27468d92f4ee6024cbadb5e0057d15c2d8db2e0b1d34d0eba8717022832df580dc38c0cbadffd04088762010d5a40564ded3f406adf4d01e4e413fa74a8b97a9db3292dbc17fe7bcbf38b00bfe8e8b1746de2b2ca7a197afc937fe9a00197e6ccbc298bb29a9b60148e3e014147e39f80bc5dec6bcb9afad9716ec75ad9506a325a21a7a26c0b7c7bac606102019780eb0680a0184e970023179ab3528048e12f7ed111d7987fdd00649d7d7d0620c2c513dad18d5211d83957f645634ddffb01a826d7de2b80cc71f9e58900e7dce517c0e15afdcdc7a52b90cd8f9f67012483c32d01ecfbe77c8b2346c271172b5d12a7acc72e0468d83a6f71b8f03a770d683b2aa09e0960f7d8a4931d957ae3fa2f0005515e6c0048b49071aa97cef7b87b8c009c8e9ce7197e56707a3c01486b152d9d4302859da6ee725f8073df1ca713a0fc8d73df80bae1eaf52ac0d677c6e7fbc9bc404b7d47e89ffb000c72c1b3e3a45402aeace5b5a1e81058f70548f0b83208b0491ff1f9a15230cb04382cac6c55023870870bd64be8e5e4bb0a90d2fe3b0810c4baca3c0d840f66abcb027280608985c050fe790095599c15605b00b6ad9d4b011ceb77d50e1571fb3b14606caf236024fcf8f5570043d929e312e5b5d7307291f259d92a733d2a69e6f93f01baf08d2d2752ee367b1e04f0717ea6a5b121bef28a4d292a6ab1ce04d06b7f74808e0c546f8c4b0cb2be31d717be80fffdcbd34c40f592e8b138d2f4ebef099840f2c8121be63535865604b0f21cf0d0a1b42c56ee99ed42611559c9e80f7c5c5c9a033a0a159fef0810abf1c07631ce0952fcb62db84a97119c06e6009542ff89801163ca8fcd8faa6e1512710650caf6a50140fe8ffcdb46ae6a0a82f250eb570de91c32cb6d5b54ed8ca254e8f92b957bc9377700352bcadd024654591bfc4b57e001b05100b803c5cb5540a742927c7ea7ccd716409640a0666c66835df50a433ad999808dcbe31240056156e98f9e94bab979742780fa273419a02d6ca73bfc116001599073026ae91bbdaee28b1966b0aa8fcc64c76b9d2a179b1d3981d62a7e3a8b365e000c65278f00f2f565d50b804d3a5815c40486c6dab1cbb778fa23fb9e009a9a35fec5cf89492c6998d7e67840affb1ac7e94affd25245a4e76b3dc528f3fe10408518f77809701666122a6690a79e457c6800c13edf3fe9b5c8b8d90e9dece56572b20f5019c0275bb755985564f6b91740d6fe770e503a4babaaf21fb0e5b17d2b4027efbc0314bd701d0081dce9e67d5c2c12d7da947a7d020cd6f4b8f43e019bda2b02a34ac3df099042e5464d57fdec37d64b94b0b9cfb7c43967e5b107100d96cd730122dadfff26607be1d60c50110ff43602946168974e8ec49db857be362aa75bc384898e7a9e879d00d90933266ef4d49bff9709f4d48e5b06841ef7fd8f09d87ad964064519a876d9a5e2c0167cae96622b70a35a3aca301404900c4eec52940ef9965f14027800a0d94c00378b8c811a70c488bf0700f206ba2d3e7f28312dde305043dde0aebe2ad0dac4fd645c860655f8f39b00e616c7844997001bec2d3d83a4dd7e596fe988d4d1d930f4ad4ddce74f0193a5fc0a9d3c0c35f6177ddcc0d47ea061e3cc0ecffcd10481bac0dd346fedbcad2beae1e45f25c0cb3bac05a8b084c548241075b31804d08dbf983051d71d0fb54a0245dd8c044a5ba6c5a26e550cea6b0da0146e16809a000eedd9ebb500169a7109806535fffa04e0eb140ff7001e0f222b71900076d37861db45ddcd94f2f018409da2fc2b021cd715cbb29ac08071e99e76f43304f8fbbf09d8309cf400d50879f302a8e5acb4620238d667ab7ac688c6e8f8458008ee7027309271dab6cfdacd39f70fb701257bd0df0a80080817474053706f7804a84ed1fd152089d2ff356cb8011052158f3e00831c0ff45ac2081c77e4da17c8c92b9702f8c2ed30617c4382b61de6a92722d5ad1f0014fdf4c4d87a45c86cfe0804824818dba9d29545c62e807cd0ee26801a2a00222133ffe6028c1c97a245ad41bbae6c3e0870acedd815b04e871635db6680b2b6a371ec04b8463a07a84914b7b32c801afb90864d796a5a666168d1299d3171435f13af7e2ec071f2acb7f4a8d3e7accae0301c3e1f09e08396a9e9ecebee725b408926cf0032941d3d0810b5c8465f4fa7e933ab21a2d70e57ec1f718eb6a7e26b23d278366735c8ba92355f0052866496c43c015545d86d04108cb40863472e82e3b9009f3f304fd3d168bfa8f42f3d7e8e23bb653a1a295f9109704dd85f16201a3d63ff58443afef78b6e15105a9ace2c8c115febe7b309a0b962182231cd59c1fe31b978df4dc011f7ba25407f9c30f987596397a23b2760bd1ed76e0438b46ee9a0612e55d6b6005ab8ec1e5050c7fbe44200c3d0033d964e531bdbab77013eeeaa11b02ef49f4ceda12690cdbd015aded2ab1dadd9b4a225bd4ba0b76451f13107f8dab68b1fa6f63034588aec2d4da5820edf05406e49e79b0298f4cc673301ac91f9570720a43bffaa0091f47c5688a568ea9abc2cf319a0e356303f076002cf977f001409cd51ec360db3308b2b0228edb7ec6b9b969c90d9510d087691c8eb7d806a2c9ff2d08e18cd6885691290fbadf99f26d0e2e53ae3194aa112c73b80bc196ebf0114097556c32e01c72f8e4a8027f1c4db3b20c87b9076a4630dc3902da0c65199c55931ca044adcc59a17404b220e7cae1a2548c99b6b00778f6c4fbf40b597b57cadc7e130d743d3196587c5079fefabc6fae3f34d802ba025324ea0b6fb4b764307c96d2d1c5613b03587e74ee319286fc11b0b8076e37e0d1051fef513c0dba5b1eb4aa3e46a3e3f01144a1d7f04c08bc06d3093959824b338bea291db9afb99091076136958203225142b029cea3301877fd0a9de2263ecbf7d016e8d4b6aa9c7147fb40d089c519fcf0218cace7a40244415578d45c571db612c094fb1a8d5c1bdd24ea0ff570b5fba005068c3afd185915a7ad9ee8100e13f07745024fe255af6a8046aec1e96d26e01b803ed6e011a94b24b74612420263eb33c62a7e8da3f404ffd8667768774e0d8c6b6742a807bf65d9c8025ce9b4dff42d1e5f575806e6bd8c59a484aeeb49d09e09852eb2dd12e67f1f944c07406ee1f5b4ebaad5907fd088c9c8487f309d8f1bac2ba4d87855d56ef32017c04b2074049cebf83b9801d8d5e433954e88297986343539306ee10d036141f605c06ac4deef97902f88dab61ceae4df16f106028ebab09e055c1d70e947874cf4c8774f5b2557967aba15d448bda466fdfd25693135603a0ce59fed50b7019999b9cdc3664360e954dcbb645fb9559e06702cd8846f10da0eab617b4a31d4abb69594dae04b0cde75ff6f96d4788aae3446ebba6b0cdf16313e048f2c679dba6fb9d6d4a5f036050d53f5b2f6d3f239be7e1178034b49915a52a16d58f6d7e9cea5f887fc9370538d6e269008cdce736ec38691de56fb2837b80fc2ecebf27604b7d9f6f718e84209f1f0232a6dc01bcce862d402cedb5dce617d57ec9f67a36015cbdb6012df66ccb9397c06011766e4fcf18f85a1c865a396105d4836da0a274b01a320bc05bb632007914fdcb8900090d0fa65fe0a576fe2080787ec61c0bd24c70476e03ce93f17545c0d4c7e16209801a3b2b3e01982842bb2b60f7ec60859b13c0f69a9d9af4d946099b1f17803986a1251aa6a411718b05246b755633fa110f55f7ca602789de0ead8c09137b922365ccd3b417123c7a0e60dd66155d18475d46ae05884cb9b6f3a54d82b3ed529751806bf5c61f608e1ee62e1740f9f7cae44f62b1352c1402dc5eb9abb743dd9a195d2b7b6848d670fb24c0a1d5b17fa42966f3f489811a3a36c7e53301ca33ae307243a0e6e3ddfd04c8d9752040669f7ba6f610b968beb2b2c719d1c64bf4fa58207d7219e9e68194dc3fb6b2bb0aed46fe6527d0a2782bbff000a9295f76015ea27506c078905ddbc775ad74e338a575ad0cdca75f0092cd6556d92981c084293ac08865e4d276baae9333d8d339a021034429a0dcd85f7c5ca7967e3d0a603bd9ef01b125b689af4d970202c86c3574ffd7187d020a4a083ff02dbda21637ff015445b5b11da6737312f9b0f575aec02de9f54500fd47d80334b53da3f815a03f2ccdd702b008db6dc0505262490f1d6b4c471702a4e9d9e0f33d85dfb3433a480a2267150c178053ec81cff7554136e006507391b0fa9509c83dfb8caff538a3c77566a122fcb3fd1680ba23eff50b05f45b7efe04a8c7e733db61168535cd8e9c3d016a322fbc3094c193396e772e80fde552ff12b8cd5f0600b57db2f604803b90fb5815e0e0c3efb38b33553262ae4ba4cd8e3201656dba0214d8d656f9b85829b45cff52b34b1142b400d68e8ca18c2d52df2b3d16d1f4baa753408fedf5816f898e4c0319cb230674280f1713b08ded8115b548a9f31f88df02caf44c7f4cc68355bbbe75694fa69e4510c0c07d58000a24d82b81d292ac64b867274002d05726dd50b5d41ad02f2a1af6c09a4b9b3492e38d00719ee58300b2f6032b6ae8adee4afcbe13c089627d53406f59060c66478e3fef1330997fd7bea5afbbb94da9bc053825acbb03a870c097ad97be9923e51cd8b4ec5b022f1c224bdfaa18e5979d847d873358dce3a11d6adbfc2b0830e90e0f012dced7ff7e010a532b6d6cfbbe46baa86ca34f27364a84fb19201d17ff019658effac2b40ab89bf62e20f5fd598ff5be449dbe433b3c82515e2c0108dccaeb0e80d75eb01acb0978e607a6927e9173d976dc5aa0c329ed4d80dc0c5613b4e84349d1b2db1b40a3f4c04780165ffca72f406f5f1bd9a4fbe0ec340db30b000b285b2d0103a1d4f93f00ae6f01ed4602440d58dc7cd147d20367273713b0e9b0bb360152d9ae0a106860c90912a0c2a51b7726600b481f27d7fbec99f93125026b8e011572d0530fd0be7ecad74652416596d97801f098b1acc409b458bc3f4e003dc6fa7e1090bbfae3042880a25f70e373cf0c760cec30b3370164edf7a709e0f9c79a8b1111ffe15480c08b8733c02085aa0957bd6ec01edb5a9fb61c53ddace413409f7c2b20a1b717e0a1bb0c834ab4c567e6e940165ef7fc0ae03ee79eef01d1644bbf46170ea38981f9b7cd3157a14fce6b5b40aec1eee19082d3458b788f2593605da75caed84e5c87eb8a7b5c060c739b7417bca52768222f2e05709f1bbf010d3ab69d334087eff927ede87b8a51de0600c9b2e3fe1620a0d6b722e5857373322eb9130099afb3cf204096a2e10d80eed3bdd2d2b44aed17443d3bd7cda8c7570814949e781220b6a9b771717e8e07d1d13f01aed5b117c001e2f31da0521cdbf487577982956b40872a2bea2da1c53bec0b40f24e376e0b609cbe6728836e38f88f25a0ac6fe780b922b9684728940be908c0baf5afb443b919fccbb10085133ffe0408857c3d9c80cdb1230790446f09b81208249aec19b930e08cfe74004051e509825f00ca13d0f47437b57decee458053ec663e019bb8970702b8561372b7284a65c2f70e3d169544f4620350209ffe30d851b97e6fff0f30837d02c8a09bb5f469a4f2685630f9634300d9fdf9040898da03b426b264274180e3e4309f0051143b02a6ec0aa85c5d243e3b5cdd4e0099ee4a8055d9ad019c5d67ddb33e3f60387cd6d7a273ccba01309279f28f870e73f6f5836a022619fc9602e4d7ee98c9698345117101283bebd36e1350618e3bd13350ecba8b5f4083e9e840bf6808a97aa4d787d65c685ccee82799cebef6f67002766f583e15c087e47702f87cffd1a7836f5052eb17c12edef1474d0f26903842dd5cda814d62bb3189decff10bf6fb264bf9b46b9136f1111018a8177b86af51c9c7b9f5986fe4c05dff013a2cde4cfeb4e3e059bec743d32d9ad4beb6807ca7c0f1cd1e50ca62750718b9e05995aa22359cfde39e87ca96e4ee7600c31c4f8457014244366f01380c45ab919aaed0723bd914c05d2c7069f6aea483765f0454a59b76b8ca6e6bee6809506369fe5c07b0e3464bffba00a462b81d01be466035e12ac99ae4ee283601e41eccda0d00532a6b1928ef50cc6c5602e641e4b01524404eb7e60d1008837ea693d3d5146dcf35401e88bdedc93e280ffcfcdf045000e4022aedcce707f4c9d9d92780423d595d039a0e59ea6402a6977a391420c2ff5eafed03178927804367a0914b1399bad5e7006e498e94218b6a3738b73840d110e1ff0528d93f0a3a39d6b858651e801bb07ba5614a101b3ff996b4d3d9993d5f03780ee08c4e564866560401e4b187cb0958d3ef59c871b096faa77501124eadab1d2444cd3a9647ba1223395e4ec03af98b1e1b0af9b19d01ea06717414b05f782e56697ae0f4dc6d09b0053ff0b543cb6e795208a8400e6b6ee8f096230420010c43396b6e2035b8c3636601ec5b3c5f3b78c6e56145c07a3d3ea9a583c5adc5b93d235423e5c4f6ec6a1e5a15506277081d25a68365c04c80ab68b62fc0ce9f7f3d0194a37bb0f9117a04811cffa0a08af4597b0928cd97361edf09906386542ee9c2c702bad807b454747cd233d06b67561235016aa565f30d005587fdbb890ac197952d427708a8d8b6f6f209d8d168d9b313684836e7d600382f0422b817b9b3ec10ffa183c21c65f9e6b3002eeff86e24808e6df51d50282ffe0180a455fe4580f4e28120a3103a4c7abb3f02f8c17eec01fac6c6e5df17c061ce3fa283823c11fa1b0035b843f10f80e35256aa1d54858cff18862009e5d1ceca1067a44c5d7b16a066cad3d304d8b63e04c83f763d000ad32a844acf28c8cb72be0a60c2643f6780c6a41c7ffd2e608a99b8c6d48e1d76d3f72500151eb2ddcd09e04cba2540bab13535ccb1a138b5c3e15bbcb20290a579893926bf6097e9f36383f1e048800ab996a539016d6c476b1320c0904997e4421e7a330153557c038699ed52feef64025c9a6b017c15ac5e63021896dd2b732c6d7dd8c4f58b06b30f97b3044c8f1b9f99fc69eb23e86a1dd0d5988de931ed6359cd84994ccfdfb780603ac778c3d82699cef653324084013d7fbc63ff18469bebf1cb0e8b30362571f336b6e990a7aed7977d4bacc9e01f4f4c5488ed60d3c15b35c66291e3cd5654f30be8abff1e1ab63e00f2ed79b43597b602c07626805ff0d92d80ba1a7e6b0710b9783f5d09901ee7c644eb98aed5d6ebab01a03b61b6067014d644f3bd28828033874d98e895c6faec0c30afd16de917d27d3e6e00ea02f7175eebdb02c747fad47735fb3a9fefbdb9796696f1710110add7e9318f9a32dba74fc31cb7d7df5a000befe723a036d54d7c605c428bfe43e31270248f7f4e802e742b800ee902e7c9856fbe0d251eff31c952f62d3d039556b27dcb8ca60716a10bfa9711b970df3694ff9705b82c01738247c9fc14a30a5a5ead02587371d810705477190135c749fe066810ae9a23408796b6f200ed52cfcc8fe8657b65f2a78790d56b5b003dddf3e604ccf23e3b0170a1c90eaf05f07126923c0e3332c85c327283928abcd1f4246db1f6cf04d07dbebd024adbb6dced4c800808fcc71220f5c06133014c250f80daf60fffa587d684779c1f4ec0de72f70e68384d490911e542e3302ec5c135e80b9f009efdd4bd4e808ce45b80d104b4f8c8aa1ce7c8dacd8580eda7f997ad97a1ee5555d61a36b4155a96835700896b322b1b91005532f3cd3780ea36adea17a42acdffec7c199422c359d59d041a32b57ebd0008dccabf9e014ee9d60780e72a7a6d737d48321d9e7fbcc555819be70d80da71ce8ac72710e7b6e558dee2048619ba713b3d063f37e12ab7fcc90b80f7e06e0650becf952f01ad6c1ae66bf9c32c4fc0fa9438e024d2b09feed1851e77d378af762479f8bf5f10de31a451a094e0950002eb3c00466a4f36b690d3f943d22a2bf4954081f479c960072a7d47e2f78750296fe029a046fc225267503a07b7fa2880710957d12134f83ba0dd58383320d3f171817864376e021c1e22fb7a0b49aac3d5354052ced91c1049d0e6060113cfe3a13e3fa2a63cbd040ca818376da90f71ee4962ce6b63414ec88cb18d2577a0cc012ac26de74cba45112afb960d0072a15b8b0079885cf32db1e75e89da7648db2719fd687a3ae8ecb57f730124c733a665da2f6c93c6d12f01250f1f2780c07a3e019cc0f5710a6146945c6424b763eded50803c79274e00b3f11beb76a82c60ca13a537a4b79aa4440a95415ab8ecb812c0fba7fe9c808dcb12f3346d7d76467dfc003c9b63ce944a13d556c3f38300de3faf4cdc01e7fc509b08378c334b1be07f8e05cc393fdeef00e6a6ed095674b918db4199e3ae0514b865a7e9d8cd48867c7403286a22b956040874bcd80174a6a4f65ffa97382374c78e82b19f636addc9010491c4955b00b1e6f1cf3a79748881d9120f75accab87b0550d59d9d23807428bb36b6a32fc907bbb30b50c92952734ea9b09d958b2ac640660e87e7f0180a261d694613209d25a14c8b8cd384ebdf017027749f4f80bac3f97a53003b90fb0350a9d7bfec015a1c0f36d5b0564e8b36c7c658a0fe992d4dc0e67a3801d428447e9b09e0fe52092039924e6a4c8211326e2640d0c4d99700c6d882d18f2d77b1fb560021cfca5516a3aca2f1f902e03140d40c760cec1fefa7022899d6e8a0245e98dae5ef5a8085dce7026c5bf923803cced94c5f3b321dde18db81f2e1d9f939a0b018cdec625d80a3718909335478523fbd03ea06dda77ed1a0613d9f808597c6a73740870cd3960057da9adb5a12e02d3ffa1724a5f8c08a5aecd2b65d30d787a1a1d097c941e3585adec0f0f7df45b34c77575b51e12b37a0d8fbb87a2a4028f5f195819e82419965c24aa0c651e7710dd0b24c8f27c084711b00e543b13c46e5cceb78b55d2a010c986e8b7678d237ba4ffe25a07374163491c01c83cc051f174adc1a97f70015ced7ddb100c683031a960e71e6981eeaf14fbe38010c363ffcda8b0007cefda6804ab4390056c078fd28800ec594b2e52c627e7296c669011058fb15000e432e2f27603bccc308a81997dd434063533b587586043af41ff30f0192121d370015d55d3a10c0d9d8ca5427106a8a74a9e9a1c3da7422a0d86afd0291c5590ac804c69e60b83801fbfc371a36e5a5fd2d0474d3a2a56999a24f1e00b59db7fef36402b66bff5602f6166fe9a313681a82e15a012ebcaf6a478b52c52a5b2f00e2d7dd2da02367e8d3cb04f0db0a020846377a069dec974f266067c3234339e097e3ee3e2680f1e04000df8de10f20d961d4b78406b7934701c49ebb07c0d0e077f1df465fce5b3772ee7b03dd8c5a7a7bf7809288104b179440c7526fec6be73d4999e3c93ac071b1bab90104fb85b710f704d883fc9f8ded5c86b2ccca5625403920775d011cc991ce78ad8b9ed47ab6e6e64a28e4d78e0095dd2ca2e5c64e602ac6c02fa6a4ddcd32405577f61a0174c196192c8186c0adf610d049c1bc0be8c9c4f9ef5d802acc965bbf5c94d8b689fbd803b4e5547aadeea697b7003424c17c691700778ff27d0276465dd163718edde3681340c658f7710928c9a7d45f4fc0a6d4bd9e810791fbb802e08118775600f2e79fd1a76987b1b7ace9a13850b9ea14e0d8c7d6cf011ec5ff3f8672a176faef2d2b6b13b085fcfe28c02ed56580b125fddabe0011212bccf561c66af83d14c0f27ecdb8c825203e3d03b069b917a6f6509a0fbcbbeb05b8aebc310c43854b40abd756b63946abd8970066b0ec50cfe02aea6e2f000d7b61fe0468655ba3c7243bc4effb09d83dfbe35b005ddfcde90488ae6d04ec6c708f0c54bad0b0077d4ec096d88f3ebfc7c3fd82853c6036760f6f005f93c986859c2e34b67d7eeae3a84c1bdff42dec527e83b99e6e9a361dae4ac0c05d6c830d6518ad617e89953da22c8fb50d65513636f963b90cc092e82cc2bf2c6a34ceb9dd2cca459caba96e966e05a8ee62518b65d16a973a7801746636f61b264b151d1e11d1cadf2420cfaeb33d40872faddd4e12e8a9b766d53acb22b5cb36837809201792b7bad509680b3ecf0083bc2a6ac0c8f56d6e33a8f0b38a7086370165b2e9008abfdd2a013d717c5b0780c00eb33913e0eaf55e00240799435959840283aec547255075248cd12f1a9490a7bf008c6df18e3e0d1e71e35ebf185962fdb300bea38e818ad27d6674d0e4eb743507d40db702e6476c7a2c67234085588a41c016b21fa65fd86be33303954427dbd79f36009cd97efd540075e9ebcf044c397c1505902d7fa67f413371c3c8c541ae3c0f02883da6875900daa1911b0a2bf8e15f73013c334a3e6e285174df3271b56db9872880b9c5c2b113a86506eb043aae6f670228dcefde0450ebbffc03b4b65d64e77a280b393bae05b46de92dad6d5bd1221f13e8c9456079f21600f7fd6109e04c308aef710228baef04b89cbdab3f82ed1fa17d058c18974abd05b7c650b3b2c71a0f220bbc28170d21ada61d5a6952ced138db3316e92cc91bb80dc047205a7eed041a762973b348a025d4de0a482740d2ccb40b1ae8b17906cbd9f51fb009136dd295ae6753f2342c096c6625b6f886b2f4649eccca4b80e754dffb02c48847951dd165987327dc780290fc26ab6680a642fca2e9a14396b2b4ef09f42a7e740720a8263b5817c092b8b62d4025f8b5578057e8f00320103273440785014b8025cb2e4b59defd63278037e51a4d9fac4dc508a85a020c7f01358acc5ebfa8f1733c8a00dd3daa33016a3ff90998f4e92c5f5f023ddbe77d0d701db7b53d01ecea5645240126ae7b7b124098f8d433d01964ed9a00b2d40f13571942dc8b7e31a2aae8f42d236bff96a627d189488c6301ccb596dc35819285bcc52c1c4801e92de82a815aca8c2b016ec0b79702486cd9f40b876b24439944273b3d3e594049bab0d79a1123814868e8cf0e60acf14163f28f7569bdfe68225cd54965c2caae3af4a72e33d1ba92abb9b720a3045088b8fd1b804301b0e300c4d07873032eabb40599f0bd5f03286fe2eef6006e6e82b3c5022610083f6e2f00b1a6a5b6f3577e5612c9750fa86a92dff0719e10c4ec5f0fc06295b9f309d812e38e5c79d5b2d9b7e3b50a2a37f7f909c0ed24eb5f00de5154771b10f1507dd73364f7f0b780a122b38f6d06552c38f7778f00a56d06fef50dd06079cf2b40cbd1f8447fa4531d63ec29808a9fae626ca3371367fcbe060426dd291d941610c57ef48b28778f5f0133fbf857063ba66b811d8df469ba7b50ef641f30473e5dde1140b1cbb5290147600e839d6e27b63c6e5e019542bbe8e4b480f02d66160e0df9d78b1701a28eeebe002dfb87e5d9fc0fd8a9be7c0cd055e3fb01d0e3a972af7ff1f8f559969104027acb6f5bfbd55850c9f9d82e45a99de622e1e3270071342cf38bae98d9ca360d6b02d84dd34164a05721859b0f00e970e3520718acaa8affb32596e4131411e6bf9e00e76d666e49097013cf8b2fc0c0b1d6d894aa03e696ecf34680b4675698268142d1930e50a11d9dad03382c32ab5a9e804c8b9ddee26dbde45665b75c24cfb2b7844b4054d92a810139285c09e834dd04e089e0321bb93a92c7282e770218b803ed8878cb6567570228112c5976b9485a8523f9da04f0f8a761112fa4f8f32a4008a28533948b9454d81ae9c2249f620663b007c57abdbe4f8052d74b801a9f9aee9f00b7f94cffd2e0b0fc5b0b9064e59de9206da0b3f46b0974c4aba3dbaab51a5c7c14c0e70ae5709d46c1767ef397fa0fa09366f4d3f2b0ddb2be06443b81e2df1d80fdc3bd9e01465eebe9e471c685f76307c0128b5f4cbab1b3a444c1c25ccba6d629f66523d774badffe7c0850c2cfaa8626d04b1cfd02383c008e6e01be24bba935bde9154b6c6936121848a073720818b959e85f927c6a1d648ef565e3e7f62f9e33bbf1320bae7b80ca329b777a02ca397c633b5d1394a3ea9096cae09f557c5c921450db6e01543f7b6753c023b15d089094e86400789289ed2c0960d134dff30406ac3ceb97809182b89c2f4d2c6da97be66913295a961d34809a44a41fc7800e8bf7f69f0001fddb1f0254c944b86ad2718b8933021ce5098e687ada4fac3f3e3e0111ef9f2b7e91ee95d64119bd3e945611c55def0ab03916fa97aab283ef96a60fb5ddf7fd4f9c80ad4af729805be3e71a00db9aff3c12c05e79550bd8061bfee92d3dabe1890e1aa2ed0e6ef815e0acf40ce530f22dcfb6d49bb1b693305fb265da3654edcabfac93dbce9ba4142d40a86cd3d5d40481779b52adabb8022ead0108e88f3b36935b3f9303f73740211156022381aea436e9018054a5b9550049c013b5f8360344b3bcbb6d1a961a4a0ef71dc048869047139dda40e9096f951516802be0ed2a2052ebb97c050ca644f0561c6b51f18173ae7c1340d5e9ec7c696325eff43b0066d2ec720980fc9115cf0214e95ae75bd2e4b70e2a670278cba1ed69d34cb6adcf52ec24c0a5c8bf3f0022b14de6e35cb65386c3db53c09c0cba4ff498d215baeb3d003e3571ed4e4086f61301944cb70215ea8e7e550025f55209e014f31bd702e8c75e9952e914c3287c05681b14bbb713b0d3e3ee7b02a47239027444403caa613ac5ac1c6102bd5902a255aa49405147ee45000d7cf13a013bd58ff571d1dc5ee3c34cc0447c3fd802eafab9ed5201cd66d74f47d2a6007502de73405b9157c1ceb92ead28f249dbe877bec09d70e70f10946782877adc0a3c63db8552f53cf7013569364e9f00a921063a01cc1caffa170a6db88f3b00aa3dffaa6704bce4bf2f0458eaaf070238fae5ab80887be5199f9f7e6012acf9d3a5192767744bf4b4004a774a27c7392574109dbaa820b4bc075045357e7c4cc0b6e0957f800eb7a4bc11c0d27c7021c0bdf29871497722d6dc3d206236be325bd2228986818b4701ee6228651749346cd23dd0f4a1c6a3bbdb0534e81c97372740ace8e504b0e1fc003aec0d37b7132009209d3cb88e6f0902689c1f19db2198ee22d48cfe34d72d91f102980817bf6d0175e38c23e981793a967634c6c60e9cbe1ced48f216d758f615ba3eb7677272bf483e6847812de4beab03e1e93650bd4330ca2e724053d80c1a3e016d897525027afc4f9fe602048e6f9613b0cd60db46bff7052ecdab23801a10d911ffe21d996b9b6d00f1a6d9c50520dada772ffac5382782db56431f665c78fd21608eeae6ec1450487d7c0ea054adcf3e0550bbbcd2a7a1a293d17df6a1b63c022e6c092090c41700b679b7c330848080d66700959cbab4c14e1d68d296b7288aff803db4fd065498052ff89658937e3eef000dd637cbcb9200d57fb286fe48ab12f1cb4f00b7a45b404f703156d17e1102f1df50de9c003c9acdcd46809cf6ae9f00a94a19eca81c00676a58d05dec182015e3d94c00bf8b3be67a1cd03bac4c80ac4dc30f80d5909d311da47374b7bb80a2c2a0bb2f80f479cc6b0715a6c9f70095ed1ff1957199ee84cf4cfea125c5cec78d003a140cedfd14a478762480ced1b2f12d8a4355045eb01a064fe5c0f33340206fcff9c904107a2f01111f457f3d019bc9b70cf63096ec308f02d85e1f98dae38c67e078d08f732e23c7346c54bd02bcc3fab1b6732eb6265abb12fd7a929f0181d570661bbdebca928a7d1560c05970cf5e9bee77a685f30fdf80b9c996deea9a2f002b6ac8009458cacef58cbe249bc50c309a45222fecd0728e7485d9e717a0c36ffc8dd73aa27cdddd2120ceecac7c2a00540f7399ad17e7033bffad890a2ed00e6f0efe0978a2059f6a014a3b1f7900ea8eccb2be2d003e68f819b830102a6ba5481318910b07fd020d897fb435e75412243bbb00cc95e89ad7c60223e8ec12507ac49e4d40c7bfe03fe626efb0835e0009364c001592df03389419fd32c0b307dd3702e483fda28362c0185b3c4cc0a6542c0470020fc78088f09daf09e0ca33537f4472ed59d1e504062403ac802ead7dfb16bf2a802c6509b713a849a8fc7928c009f44cc3d2ae6587b8956b48a0ad119dbe04ecf3c3062d1d7a5b84f19d05942469fc2e7e01c19ee19e7605b8895b9588048612d759db945c5ad9f68cfb274051e2cac333c6aa447dccb78c6c6c7edb1eeae7382ff8d1f6b1344ca68709570f8020bbc716202a33c72560c0a37bcf269def1b7c148f5a008756fcdb04c8196cc37addbb6686f3827590f7b2deafd2d2b43722d2ee0214b8f5ef4d8004290767002fd7ea7f0056941b6d117a5512c8acdc6d02857233ec0028e3e5f239403ebde14c0013c56c15d0da1530e0a5960032ffcb27a0e3eeb1aed7f66836ff0a80c3a05bbd0b703ba93280e75f2cb36002f84b65d59300be5f6c285e7116dea27d1220f0d3737b5d009c276d6afba1629e5e1f08c861683e01a2c18a099043f573025cab9f054c408b4f1f00c2d3ddcd35004f2637d074d5b2095d0370055e483f021559026e05d0059f6602d85e6f199745c8909d2fa700dc2c029b921f467b8b1fedc0497f6de7777830fbb4e6ccfdb665168e5d41c1311e3af6484a737b6da8038547a27d4be8668e0032bb452f32b8d9a9be631b6c50861077130003d9e6d971c354c6ebf411d0616e59e35f3caa3dc7d1183c3e02ced2f49421cc31d6978d00e12e730f50c0c33d2d0dd59cb3f25c008fddd701503383ae7201fcd876f5505459d9d907c051b26efc1f53e7b1dd3caf43d187f1dccb56d730bdf72f75c622a5274e2f4f7fa99c0dfd7765b697a342b18020705002bc096e1f0202a12b7c97b467ce584d35e386b4a8ab09375f0116d7d75f18c063f4f10028b402795c7bc1ece449760330d1083f31c09985e7e5ec14d04d8e012634993f1bc08f7bf10de8d5b5633835c07759d64c172c4edadba37773197961731d6033ffe4c400a13c8edb763943fd6d790494efe45dba1257f81bdf651c84b83b06f5027d97d73303662a940608e0bea7e3a621a641786e8fceb1e0e49fdd36b06daa4e47a06ffb6e8f1e91d978b4e7e873163efa7a326975db9b620424c3f129d33045c5ea039073e0ff404fee498809790d68b5698e958c8958e424d55ce91731d99ae4476964c71a7d87e9a7e6e4d8521d3bb202a52d9115b8b804b41a40fecb00ebad9768e61fd021c69dba541c43790808898e026c91608ee8c20ccfa6d6fd18320ce74b9e2378b97e278780b412627dae02323634ed0f00152b37dd32c0be61a902d42576e127a02928437c0e08ec6f630140f2d0bfdd1960c31b73809524bbbb02f474bacbdf11e8d1d7d42d6337c38453a9853fa041a892200320c04eaa2b0950bdc33d73dbb48dc4ec7901508429be6c024a1c11e53b804da25fa6d5bb866886d30ee0320db13b3a4cd765ecf7ed2e166473239b3fa69e4c90ef1e205731ca9037004f3f2d34d375055eeb20a5f83c59b4325982eacd27d01333c197eb6a8b61bdd4a3774d4698c5f616804ee7553820efcc4b1b3fef00a675733a024d284189b009e0c8f4512dd6b9993296bd52cc12b028d757032d41f1eb6aa0cecf2d40660f9069e6779dfdc29eb43f05f8b9fa7a770d883d434c9652b25f915eacbe0d201e7ec9454d68c1fb3b038177d91a81a6ad8b658019463f73030495f81340a9e1e15564f80f68729cdb5dca9a93f75d00620d134e9b062067c60e2d164cbee0957f497b427d281570cc87fc31f2c5360088674d2e8e0d583df11c50b339bb5d18207ba15a32c0a9e8052f9796464d7d1fab008b527be16d5357d65eeccd2edab32449287f009aa5e29bc64b6792cb5e2aef09142573503102e2f93f0cb0bc4a1ee70f6027db45c730603a7fdaade1207a063812b6f17f74695923fdf8cb00491337b45817330441ce01ec3d42ae5d74d7cf18fbdd1490e54497f2e5fa42437d72a8e7487303fac95e664f6fa7f75155baf3be6500f9375da377250ea2877b00bf708b3b404b69d6430fe838f23dd550ef3d297771a7057832643eb8ad372dc68fef1168017e55e7ef434e2cedc5c40047adf701e015a83329a600bebe7bd2ceb34f4b921a79ba09284867985e0288b7f41b066a52221611d0e25479e249a3a3c4c11b6f1b51699e343c58ea852c6bb272fa6e6ec7c6d508f04cd82f322b195300f28a4c505a2c6d8ae4b47f3d3640dcf8c721c0ece4971d40451591f76d03f80c6eef0cd0ea8147ef6a8a315cd3ea1d3b4fa724d604da1c8fa2fdc2e15578a4c398dfd2f75780c05ad93940cc39f27d32c0a6f99e8edb1184e59ef8b6691fc5b918b7ede72caff7cb802ad3e2497ae900345bbabf69bc98cd391909129e28667560cd6ef9c598f32e5d8562d658f1e7ef56c03421273be702a6bbe15e6b40c3203c980248610eaac05eccd2fa4b68e42700b5e889841513704453fe72511f678a2250019401a0dbf3c245c37c467c7205309d896dde65b08bffc0ee8640b4f26a4b5c34e694ffbda78162c5109bd92f2a9c4cf26d25409c520cc7067065491c6900b8d4b6698f887c927bb2bb3090dd5b67a0a427af1bb0431dded67c7de1626d0468ddd83522b3652c0de0739cfd02d04e7737f62e7dc601f78e01c21a55b0b09825bb50d7c8ee007336ab8107b36d93f37c4af36e78d9da03402fe7f70740113717bc018b76f906e04074f73c5857d362cfa501fc749fd311b029da33c09a7d6477a170b353919d041afc0e27746dcb9108aab796806357707562008364656240ed119577320072013f184083848c5a7d73046471d283d2748101cf87ea624115b31c80d7c9ddd03f92d18bcb44af3f4f06abec0f15e92ae6a61d16cef98595750fc537c04245154055cc9de354549ad4c5dc5b4943ed1b8a7940276fb2110df44466d4805c224dee9de70815168af4fa12300904d5e44a802aaaaeff007842467678d2d039c4c4d60c74586caf801ea7dbd7d4002a01f2e316f398e152bbdf0414ec4e2e3d803c1caffac809346c01b31d80371b660188c8033fee01ba92ddda8d015c7b92704ba067fe783d1548434cd760cccd4d44343e948039b909cdd48025195d0332cea36e78d2b417d3dbae5f000aabd2cda3db989b9cf25d3a64dfddddcc008f7e6d4f5aeb08dcff8e802569c99eb4d69aed97ba11e0b9b247af798e400feaaca8eed301c059c8bbfdc254df726b2032ebe3fd2a20e6787adf0d90a379c37749db48fcebf7067232417747407d753a5d1a738800d23ffa8254a6af2f03588e365efa92513953d7ceaab9020ebdea4814996d1227c71a73598b084f6082cdd2ae51539f8a5225d0d822ae6e99b99a6485780ee8949714c3b2806f32ad84dacf157f62d07fe0e30bd09385b53a170833acf1fd17c01c79adbb1ec019b097c992403767bba20f95c5dc7c6ccb0688a3af3f013511999b0b40c3bea17a3080657096015a56f5c93f00c9816ef10ee05038acce0091fdfefbb501cb6cab0c60b046de2599b4fa2ee56204c8e17a00517b7e8f7fe96605466f6d80a3f87f5303f872743c994046c2f6de1380d9d22b523681429fc17ff21c1df2387e7b1f50558415ec016a7c7dd12e5a637cdfda6d5b2517bb273e839d9a4fae7e0d54c4089c007a46d4d364049a93bfb96d3fc7fa3ced0d98838816ebb31285104d4ab9334d37658216b99fe10fd2e95b02c10a28dd0a587cb297a3bb18f2e7f0b23c01da39fd630580d4a07fd3d4978f5543cb0ad0a2d6e87e005e716ce1f41b1070ec6e7b80e92a2808bc185c57fa85023013309fb46f04cca5e6e20dc0e282c3c400d214d37300422de1e81050e488791c004aac1c9f8f80fd8b33c08cdbfe1a204ffc857749b3b62625a5442480c48e5fb406d89d3c75006f7dcc7ee1a5c8151f0a0338feef1780714e7e364024e4530fa06ce6e46c09d093f4bdaea19e9b6b2fd46f00bcb4a1e62e3d0d34a9e7804030c7edbe01f69597ea1f4583d251504990a2686d97f4abf1528cf25a1b13404e64d7f21380693ceeda2ff0c2c51b2eeabc29d6cba8297c245952aaf745312ae931908b60adeeb41414a905491c2f0cb0375d7c012a9682ab19c061a1fcd406884f964a51028110cd0b67005b5b41580360dd7fe35d4ccd33ac6bdd2fba19194352b31800ddf2656e0043e08d56ef3880f0dfdcb62b7494e61e770db0377d3a0350bd345cda452d266fc9aed150b729bb07b4ea747ef91080f1edef3f01f8a55c776100b3c7df18c084fbb66ba017ec9eec6dbb8c302ddab42f94a715b247406b0e80c9083429e51ab7a5f9a5dccf1dc076e2925b2f4ab3d7bda4d213302d0269eb2750d9e69d8b26530171d72700336e38511396d6b5a3aa9726e0d956bf5d01fa195565ed5f88208a41d656e97342011fd561cad06306aef32f91bcf9703c051036ef6e3a0022b31edba18ca499f8b51380093b2fbe01a6bb716dff4204805b7c023c221a9fb5014e343fecb61ca6848b2d030dc74ff68b9e74dbce7ed1331abca6be32756d8c897a04983dbf06b01d02afdfcdc96dca6e0139d2ad2f1b062aa2d478970ecfa65f5b32c078519db301b08ff20150d2400bfb454502bb2287ff801e3df0b65da325daddf0b66900e96defecb68e73c29b0340e01cf9fec300b92b2fe700ab5efa443f4d13bddaf4fe0bd09be76add80ee12665a3cab8a08d5702e2bb86a481d8e9343806963f71a2f9525177b1d7116952b39d538cd004420c64ffec551f83d46ad2f95e79467a2e2ad09501d2ab0f5aabc95ce936a53029104a15d8db92aa0c0edc20e80bac47ee3c48089efe96357169d1eb76a0368ba15fc4be463c71f03564852a79109981ace8b5d94a2dc695f0288e4263cbc033a02421e657c57691ba9754e325f0994ea74fe637f0418357c28f3b0c60703353b7125f40f0061a3b80c68cc216217352fcbe9af012cd81b3e76ea74e828be18a05b7e5406083a1a2f1a097f61e61f009a5d7ca8d42d353ccef6478022e8b101f961c2091da6b763b0e76b0087a093abe511a86be73c585f53bc3597b1591725168a52cb8bbab299ff5c9652dd52dd252a7436818e1aa9d2702f6a37e770e96a1fd098b3fc0d40ed6bb7af3157fb79c0cbf20dc0bf3eb9f904d472974ea41f9480092a4f7700267a77c2a30702a7272d77b14cbf30db020424cb9cfa581d990b5dbc06e472a9b9fb0c40ccb79bae004af40bbf26002a6e4dda77038ef8c25b40cdbf743c58c4d7e797ec1a5624f463dd008eaad70b03ac0dcf15808032ff7d00a092737c7406080938fb3702aaa9d9ebe3319a9cd406882e3dfe35c0b1e0f725a09385e2555cef0fa85b1e0703bc2df3699df6a664d8d1c869abae5ffc07387ff9e801d693cbb711900a7903c8d9cf6dde0108079a5c3c18c0faec4a40852353556612c085947a9601927aa59832006dabbd04d913b030ad9bed1168e1c3b953dbfce116ff46a0bece1a55ffb768bd1b207578bb35803ff9763a022d49ab7c86340679f4f31160175a03e16472f70cb17e96211bc0838dfb17454226602e245c8c4d81c89bdf53e76f4a33e12ef51c8d89674585ab27d0cb0f13a366cb66d40d5c5a05384c3815832a867ad15a4e8ed5c84d9a1d28cf780cc8357f78ccc0c6d73a9009c5bb01758780299900a25587fad86326d7e450dbfb26ce286ca52a3345630a546e720a20c7caf94d00cbc9647e0fe0b8253ed140d16a504d96003d855894263fe89220f35564803967168fdb23a018546e80b17f1701444345e5360d4012b2ee8ee748a3141fdbb50166184ca7a6abec10a33280b37c6fc3004bf4e205c0eae1ba4b03acd94f3b063003a7f6728da98c2c8d00bd3e1a391979ec1a8f0d6876084d09703973321fbbf3b80739284bc002cade0c1085a4d0fb62c8f522c2cc1bb0234e6b531660270db3b4339fa90983a2298bb60aea52d3429be6b6f668439dead15b93827212ab2c5adb36c59bc711e0b57e005868f5947f7180f8c35dfc4c99c2f198e7f0948b8a2b9b0032419d7415124083286ea83dda34e3b002dd01c604906b033a8df43735c0511165110ce85fc2e5f88b880df30af0a4fdaa5c430281a43c89671543a16236de3215da38e7f83a3c03088d8c9b9f065a04740a40592208120175865ad29e819200199ec344dedc730ff078bfee2e01f8d8c27107a0b4a2bb3f0074ec09172b06b00cdeb868da69e1c97b02108feb15bf9e40ce78f9b837c011e7c12ea0d4eb7b6921255011f8d8d1ea6910eab69b7cecaed14583ea7827e070546dae02026be532efd2713a3bb9a04b759dda235cd8bf742490ddd34f4d5c2d2869b370359b77a788ffc299ea6c68d52d9db9b2a2d3c4e65c4b2ae4696d80ead8fb06ac44dba32ca541da85a0e74f00675a6e5d16bd0b395aae38335c20c0dfa92ae4001054be5c052089e9d70e01f850dceeae010c454942142e9a87e4a200980c5c383240e8ca0e8f1ec96a8d4aef28864c1dfdcbdb33c01310f27203b06cb09d1f03a4523f6aa7e5521f43ad9197b33847ff12000517f5d908880bae0db0bd57fd9704eca4e8ec005011da24e9c53f2093e560075053048113ab21088973f56f40cba6e8fe0d4034a5ffd71b905fcac7354020eff5c9de2598b54523772692d0df1b4031e5e26904cc52f6fa9c154c6a7925c7b49b2841e504729e74556f9b6c09cba1d1dbfac6136cbca96feb4d94289e3d03722ae5151f8052b192717d1510286ff26bd7a0a0c3e44aadee7d85ef42455313e851e4ba5f36e03990d1a8f4219b21d37302e0d1c3c53ba026f6eb780fe04accd12d409771eab56900d3a9d4049bc6a09dbff0b6b140e56c690aa8e8b8778f066a944a9e00e458b9c0db9a78a7dfe35d622bc3c83dd7004797dab802047ee1570c5438ba1b40c44f77783d02828d3b40af8eeb55abb5f0e641f32a1f9ec09c28e8fb4b40cebf30d127c0887add1b01b5f4c208904e5b008a823836fb9792360d6f0630e1ba2b03e670bf1b01678d19a0c60e0af66035796b2aa89d80b97e176723a0fc8d5dd4127316272390df72ddfe055dc949661725f7cd1f95806859ad7cecb4f750a77bd22ce5932d255f70531b2046e0e5cd00e10dc7f4a09e920f3e680a4e168b5560d72f42d9b0295ad7fa12ccc7e67a4d9f21cc4da9e4cb804e9addea0380a2dcee4b934188a6ffb11d0128fbc4ef05a0528a885f790138bac34d09c09515dfb7003d7372781f01ba70b20c426711dddf23e043f94303ac1e527d4b604e5eb44a920d40cb7c943874021987c2e11550b057bf7806a0cd10a7eb23c0dc981960cc2de6008a0dc6c5f508f08de700ec31ff3d31c0de9480900110125018b027bd07b473ad0d7b8f0668646f2f67857abe7e01c4b185a32340c47d7cb306a080b4ab35c4a2694187bddc00edf14fa321b6681104c2d6d224457ac7837649d11573b92937278088addd6854464fd908f7f609f09a71e3f23a20a8e67438d5ebc730ebd065d90570f4ec768e0056e81ce74e0cac40be37e0328a2edbbf985ad22baf1f2d0f07db2146429afdf61e20a70479f70440bfd03d778012a77db70cf015090f25c0e24f4f360c20cea8e4c0047ac5288652fd6348ef5040c8596340668fff770d28983e7bdec526c770c9a71cc36f17b7801ab7cbc79e01a20816bd0126e937bb4b63fdd49ea3a5c5fa8711a88f853b0002a0ee2d1850b78c1ff6a45e8e9909e784d14a3eb87bfa583f9fe3ede15ffa024be946a372c8c4c0945c02d851da81becb503b8ef2f27340a92c8a09fea02ecdd2b8d4b49c0ce5e6d5c82b0f8086a05622bb86dc2fbdfe9d3a6e174bcb58fe30c01ec87f015a4e8a6eee0c6027df71d1684532a40c360032864e3f47c0d1c033202a06de656f06289fb5bd0ce8b49afa05c0e261e2fb1a608e81865b3f0186c7d3970126e98e264cd3a7466569ff525a8d543ec3182afaba0fc0a3e816e70024fefcd90fa06572bce0f53b3b4bc24590804edfa2aa8814433a83a6f1d368c0acf163406425bcb3d7a7849fffa7afdf5796ba23fdf562485650c73d520fea1df658dcda057414b63ad65d7a3fa70ad1d11d801acb7e835f848644835b2dd17dcc5059e520754812200ee50390930dd69f014a4478c297018216bb374065bd701960e52b561680be20a51bd0cd307bc28b013cbdfd1c90d964c0cb75f99cee9003383bf1077b000b5a5ccc00b6cebdd0a65d4b703e9b803e7d5b7587955780e744e29ad74fb6947ad013cf9176d5aab558ff59d2e5ac992b0a29c86d5bcecce5eab5242560250e164f8026234aed1010a850f7c6357ccd66e46d06f0246ebdbd09c442065a681f0115915d7739a0e1bca15a31808ca4b28eca21f65ce3453adf03a038c5cb05205844b7dd36e2cc58790698a6cafb864037a74d5505f10fe044c800d44677fd2da0205c7d51001a2cd8706d00cb40791609b4736237ce003e23dc631f80b911bf0df4739df17dfc8da8729e594daef029503b646825515ececdbfeeb72e016cf0bc6a0c2540f44fb8d2ebcf2d2335ee708d346ee585fb5a15f015a2bbbb3f001474e32677f154aaf12b7adb79a8e6c45dac006a5efffa0ad0e21fdbd833c091efd521c0b349945c5002963d793f17886c0262c783c5dc2a2a3d0038a270cb9b06903eca4e01a5c24e9c6687042aa6cfcfc2003a79d7ef0057227d746e805849770b4069203525a0c72c7e7b354032dcafbae5bccb34c34c9a23408eb0e2eb0100b98ff8d18c802a00347257724a7c3933808f5e91a1095404e82e2e0cd88eef6a04322694a7350034cc5ee885c930d28c1b57474019f32f0318df5d0b6888313ab2776990f8cbf60168cc44c56d251088bbb8e5cb0db97f7f604677e8316a9c24541298cf28545c02327da8506bcac99a20f91327e74e99d9d417e5a84a80f2e1f1a505b0f0c5fd1f408bbca7a28f137091401d356166874b93f98d01b691af0d802882f8a2892d0be8b2f88d5d0324b25d07408720c8d708a8ecf4f806b03e76b26980b2ccf58780c9ad4726832c995f849af31c69b3ca0e7805d05a2ecf2b80dd6b583f02580c9a32b9fe8006a1b238cb6c8c317a7c02e47498d7430318248b370304d7aaae4602b67a6c6e00c8ae758b4b003d391c1d03d824c65fbe7ec72ae6ea6f03966f3a05b42c05ccb803d05d2e2a81debc0aed9f8552e6639adad996406ef3e926608c96db29012d93e34a27d0ceb56b8c924c4da0d6bc1ed796054603de9f03cc80eff701959578dc05b43a6d8abba7008afd848b3d402fcb60725a18a07f9c3a0332e19c24fd93f54e36475461ef72900752c7551452028e95f043c3230f5676a669010da7b337b447b0e42f698696792c8832a97f002d478bfe1f80b40aaf80d432374f9e5792733964f4b3e05c18b0b255fa94b959f4938b2340a6486aaf98de0472cc8d756f8003996edb0061f3f30703a848785e3f6d0234084b5aacabe68401f3b69d95aa5dd01e1d51e1e18c4fd93922ed8fecd13dc71c8cdb3ced5710c0b807f4d28888ca021f80ee122a8d97a2b690336593968545a9f9c911c0761652b02b8bb6a132dcbe5abd7014720a953a4ce1f1f4c617fec53778f2b22b40c714bcbb2e10667666f10b308f91c25f12a0e4838f3f0027c3c8f53da0a3c576f99738a3c3c408c80c7423509b4a9c31018ed2dce381018427eeef0115a1b3ddf308d0b5be318084db3f036d4188d53f039c47bd66008f61a404e504080673a5dda59f218ed41820fe435b8d0120fcfd48237716bbf17663a026c8978ba6069365204f4d0205ee8e371ac836ab51e9d87f402ff7390160d3458c9a22cd9654eadd33c09ef0de1e0c77477cda07b0358fbff61c1698a2fca872d88aab5b2ae3b01c838d43a3262cdb6c8695f300a835c4bcab0076b4283d94b27414b40cfbcf008449bc32fccbd2e778255d0928e7483071178fb33c9c7700472ecfa65aac0cec3d822a39976524f63c76063224a86f1c00a9d288299900c70b1f2b00a28fddf4174000447cfd67406b76d8b47f716853b6df00ca334666dc3206c21bdc3d80820e5e61af0970e4eb3d4f9a7a9066cbc59201723524499540c652303d3640dade556e005177f9fa12a08f4dae8e0c541cd8d1eac91c257efd1350cf517e9a021a46d4e278049c7bd8351aec8feb73006eb9b8f108b0a94f897d0398b336d0845d87f12d19a7048864724fdcc5ecd3784b8bf596c42a41c3b2aa73498505c58e9695739ac6836af90e405f3f1cf02f8e0a20514957e510e42bdb619b6bf85aa27751498a65dabcb1de6eec031a053efab72d4020f6ebe5ca8089877f007ad3f87706901de9b86824c43be81ce80fe8d177bf47c0fe96bbc4da140f7a033877ae79db18e608084f001c1db9fe114098857b5587a9d2f2c2d79f02e6b63bf93480a8c83517edb282a96f1d90237b161e0d6853141d8fdeb1aff46f3472679ecd7003e098236edc036c79fd3d33a06ee9bf7f0ce8b43ad4cf06308bc32d00d12ae7df01ae44d1cf5ececfc98dbc00f41cc59fd13ffa99c9482e03e89653e9afa72d41896bef47f6473d9e7b94327b6a5f1242732c77471d28a7eede2e01f98c36dd338087f5313780d2c042af5f9ba0b2bb3b04e40ce4e9278082a761f90a40985698ad1bc053f3280ba5ee78db707a6d807dc3730bc8d8ce2a597200057a063c47979399f2180d687d89dd6204d419b18be63269a37425074010855b1b015dbb02b433aa31ee001cc74f7d00580ae2a3fd8b9f236eb20a08cc74927e4e206206defa1168a257785459a7598aa0813740453ad48cefd23bc5a04d7a7587a646d33e1c6add6f1a0e85839236cb668c63938735012aa179a7db361e0751c82e0191cdbbce5fca26cc0903de3802143887c32600dd51e7f70091681789760f80d85139bacb26bdbd6c29552d4f209780b0fbc801c89ef9c52fa025af5122d509788e6bbfcf00a4638786978b365bdef18bf174f6f5d8804e7827a78b11684576b4479791a62671a472d0c5d7f2aa93a23fc09afd68009d9a77bb4bc962f164a02246f1c50081b1131d7126d0e2ed91a47f028e20ac351a39f5420de4157b304f904d666f1b679c8cf060a98f1143b202c8cce32ce3aa35cf66fcd292f45f58e3d112a0e3539ee8c15a9fb1f04d1e0078f2fccb07a04532a47c0458b5bd35f5e43664e8d12b0333814225c9fcc601a0226cfe9ebb049c5d930bbb86d731d8a46e01815e383d0350bed37b75cb36ce589214f8988085ce4ebf0d54c4e52c00e62e5de3c122d5d383ca230d8000ccf36d8095dc5ed5bcde76739d4884e58b11e8d1cb5b031afb41097509649a94e23b9fc17a90974a7302f50cb5d723031c706f3c014cb4ea8b064afb5b8db93a07780ac17d3d031045f46f7617b350d88bb55de41a2a869d806d1396770de8db466bb1b4255603e96c3e6d0a0afdc2475eae2f593d30365d65169bb2f44a576317fa6fedc5dce8709fef03ccfd33936de95ce851f37c07f4330274f5e55c32e164297d3f032ca9667a60808df7a9d6396715eabc8aa8249069c7170e8301cabde8a0bd7496c9e51e7997f17c5ff9b70360375ff02ed12e7a59009c4c38ff78062021d7491024011295dcc2017a2b92a1f5c5a577233e68c500998f7429d765040c5dfc03e4d8da6b1e6001656f23602efca801566a4169e109981f57752307c0e9ca33ed9116602e3a31c014acaa7f09d836f291fe618ba7cb34c47c653978b7da9bfaa14ed3dfbf5cca2ef46d1bb193cf01083c3ae99094837a368b9646a537177468f460def2f8c2b6dad487392e8243fe2510993151c9a9045a123ffd12c09141859b210122ee6eb402f9d8728039fd32401cecd932c0c4c45e66004400e32d77892861f9b80ee82ce1f2d5007a28bf0b00a2cc4e32b4a53767c6e42200e63af4f3db2f00f2d6dceb0920e77476ca6d3b36ef118748022c5ab75b06d8dfae5c036a6be45f0368c9fff2b663975a7523d05d562723c054381c016a496b809693808d078095f0cb2e0c309fae6954faf198e36e158066e8b4d4aa9e96280a382a002281467a9f41152e1308b6159529199a9c35ea731d602b32c66630a15ab7bf61009962a58795c12a6dfae53580290d48cf20012bbbabc49c32a41ec329200f16729428eefe012ad686bb130076725cfe01f47382f3b5f08564f3126374330222aa3e0c9071a830f13fa035fbe20b60b29afbb780a2c3a5f60e28ad5ca53e7648ab297ba04d03b80757d60c10d7f74613daa15fe4907c009a3e5f2f0d10d4fabd02b005e7eccb005b62dc3f039003a07b05d4d42af99801e896aeb747672e748b1a40bd46d73b80d3d70fcbf660848b8597238067fafcd836c024bdbc0388f420fca7c102415da6b930ad9428c6aabe69da8746ad0d1ec76e1cbdd678bfe2b8d5e8370061a6858f638ed8f65a5efd86a68b38f6d30b75bae83159fca73e760c3322ee54d36f001debcb32a0222ce9e10e50dbb2b60d20d7cb2ff500cb2a79fc0104cc0de96b9731e61d8b27ff1209af0c158fde99d2d16f6ec0e21c4f01734466a56b3d002aa07e2d00667caf39403163113f374074c7516d00e5b8ed5703e457b2af8c69bda59fd2401de336e01118aa1368bc2c1a80f9d8a410f207d4eadff6e80e13ee8e16b31db0fffd18013be0a90105fa453733c0f1e4cd2a20b0143c3e026cab716d77b165fe5d73614c130c820f1a84c34a4020a8e6b1ae214c3cac6add1fe274b488cf1e00355ae133aee1519f0baa64944025176394cc680281358ae396f4e48412d3a683e63066e029a0e598b43c0774aa9a1125eb5da65d145b8db702d07012f0f83e02e6c21a809b21ac72d1184cb57adf807a72bcfe0090c01edd85019ba5ecb61d0db4a2cf90d6bd9e6a4867000b585eda35c0bbb057ef524f16f80c06f0062a2d7c009892e32f388c0dff0770742f0c10b3e9f92ea6f8e85f5b0052a5f1650f40d78e12dd4d80f9347e7d182052f6ab01b436179e1a40295ed5b11360bd0d8ff6a46c79a2d29012e0fc363c7397719f7da4692bed67f4b647aa2a5bf683e2c3df5d0ee600f6ea61577372efd0ee08db1f808ae7d8d787ea7d81de383be03e755c3dba8404cb3ee030f39f3d001ffde4f8c78064ad42bd6ca06363b501684c4cecc300d269375340c07771c2cb056424c3a5568f3ecef09f76eb800cad8aeb5b00f52c5cff0e283907e250b88f2d71289ce1f4d167c87ce580be57e75f5f1f812647fceb43f4a086e9e305604e977abc04580183f004a81995cf0d804c72bf12006c9a27d98f0126e95f5edf4cc978af9edc8f11338b5700225e9e4884beb78cd4a33fd3a99ad526e4a36ad0d528baeb5526a19a8d797c0a5ea8666dce61ec6c2ee073fad86127103272efafae0064fbf8952f00e12feeb50210a0eb1ebf0d508d40b1700368a879b06a00c9f69b6740cf1ab5b1231033b4a1a41a99005a48ee3a33c071ad927b06401dbcb004682ddb78131058a26feca28833fa351ecc9237fcc6cc0005c7a44f3700fac76f03c83286d8b901fc742a743e0054ef57f872b6478edfc78092e42f29b52650cfd8df7ac0b8473e31c0c896c1fa0734f57dbd025aaef1b105b035fb7d7504fafa72a72760d2adaad43b00665cb9d3ab415396cc143eb62dd1e1f91d605dfbda7e617534cfd6057ae675d7f372d6b5fd3fbdfebcb28bde9f0958908d93eafd1f20af51dd61ee3380842607854c8a2f4ae72a8131cf537d7d1e289be9debe0035b5b02e6e0c200aa0ba090938ccf3d601025ad00bfb9748f8cb058f1ee70c0fb96d13c82debe81660858beeb60ce88ccf7b9e343aadb7e1e804d05109ed8ebba446d78eaf5a00324ba4f780bc20ad730e30db52676b03a08aea352dd699db5686c00032ecd3358049853dda6d09a1718ba311702ef60d3085e5df73406307211380599fd7bf2360986e00ac54cb9a3dbae5deff5e8c80d3487b17d207e3bdbdbef5d3bbaf11e8d11f79dbdef4a4ef79dbd44f753252ebcba5b9926e79a2692bab338dca50ae01ac27eb68b1ca1a0c23b7bf05a8909055805d95b538fea30296abcc51802dfe5b07207e13f6d5a5b2b49dd30aa44c9d04323988e212ffe2c9598d8e27f571ce597400748c0655744c865449c2e53fded6f24d7d7f00e838afbc6b0c308d2bb4a9cacc4d196505275010b72571e80190dda2a2cb0954e4beed2f019205af39681f6047ada734d05845f5cbfe25729ebd63bfe830046e7f00e6717e3b34c045553cfe0fc84edeb2dbf668526ffa11109aa0552cebecc06e7b6180ccb6b72700feb118bf00b6e3db7e3380da9a34cb07d0a1d83601149c79d6b4fab87ae8e43d019b4f3fe885692950fff86d0dc886898ff660a3f79c261ccf927ee90e9d6dde37f994e3ccff487ba401a4a9ef572b725af61884673cc768c3dc301a7a3b5ea834b1e565f03832357fe466e544e9b02660deaff702604b63b60b68c9f42b27009b50e23f01cba2f01707809a19667915d0717662bff0b92cc7d0e40201cf77943e5d35d468237e5daf9fc71a393a05e70f8079fdf118d0106eaa4d73021695b57b06f06cbdca570099f5a1d83540fedcc61620da813f8f1e3bcbf7a04d93d14bad815f808503f985011cff8b6780252b7cd340a98fe91af7b447377a259f47809ae7b201a69c6bfb97862e2571a401e0d7beae0c10f1bfea01e351fc2600ef5794cc5702e688f8b6970bf82e3e3439e6fd9c35eae96904ba8b2a190d80163be36dc753d1950828f4e8934b5eaeb7227fcbfa94456d993a19a041ebc6bfab5b166321271d73246042e87753809d585dca1e2b7ca62927e828ad2a9225cfec700ee0ac20a8007df5973bfc07b6f52e459c21882ac1ba04e68401cfbf0124b087dd4f03c4b1b90c60a15e4a981a0079af27cb8046fe312f19c96a48c0a5179606f04cc89f5c0dd19428e86ad12a3a24762236ff00345ebe68a02ed7eae1d70c14335c59d100bbb5daae51d11dee8b116864d7b501bc3d935b000ec438b931204b3ab4b469eac914b8d804582dacaf7a041496f000cf73e8c03f81c08977f7083081b6153e54d7cba60bb926e932f5202d27173204cad43fd4a6d30ad062d33da84dcb40a6f0e4f4035071265e1c035ad9a7aefe0538ab2361bfe871101d6a992f63329efe9ed435800c07f3c6b6018bb7bc34409ee7c9150009c8a872ea09984ede326f1b9d05f84f0d2851dabded03ec88f35f007416c2bb63c0dcfafab6658736945f6d0173eaf02e9f1ba01429f369694520ddf723803209fe330218fba1ae0c989e41370236ab3f23e02e870608d27bb47f297598129edf00760c2699c00446dd9eb511b0ac6d8d40434c22e603205ecacd0d98abc2ee623df9637d04eaeb1f1b2340e8e90460d150af3920a817fa4f7bd20ecb4085ceabd224edfcd19f5faaaa6cdd0fd527c0d4e7a4c69740a432dc931ab9b2e8e3a9927aabaa6d150d152fb59a562e327dca8554553e20dfb8a9015405f4b6fcde0bc0574863cd009c69f9837d031572b85c23e6640dbccd01889986ed9f11f08b5d80a98a2a26ef0fd0717340cf8e0f437150f7240d7ac5005dea7d7904ea5298d655eada3248aa67033844de8e01194e848f7d0328fa294d3e81822958d98209540c313f02ce4d6f7f019cde07a554256003f9f1c58049fb2e009e5cf3170df5b4baa8d5e30b5fae2f8811f85223d799edc55ab5583dfcfd75078c89ba6a49c9ccf4b675dd93ef21f760559bea9b9f6bbaa85bd6fdb0aaef527b0efda2328612a0247bfcd2cc5f8782add7ed01c0de567263095839f5cfc680647aa2db0274a826fc72d138e730e5a831603b8b77005ea770c035625e121df60b3083e4b0304080dd290d14a9a9134e0380d4613f9b8c40ab3a336e6dc14f5169d00340175fba81093846b6ea7a55b5c519f835da6374ba6dbf1ba092c087fdc252aa26d7063815f51706a8bbf2fe6440a1d5f1e11190d3715f0e0c60062a92e90fa8277f3f182027e09a97b379dd1d05031c2eb5f6a4a52de27498aec2a2bf3b05d4ecc5be68759b600396c1103b8a7f2c027a9dbdba577b5bf6a66155fdb429e8fc53dc724de5950a39552dac41e73ae281577768c628820d7ef19fb1796c20b035b75fd871dc955eae71155b62c52925e07b2a6f68cd6e3c0953f145afdf84122d6889880e40b64350646802b1634992d7bab19000cf0ea789a836f9fe1060f92faaed93408df8de6c6a0085a16cc300b91ae73461eac978aeae014454b9ebb9010ce76bde365a59663a6e932c58cc400d8fb422a169fffd6480d41d45850f407efea02abb095000c5ddfc07d41dfef1193a9c3b7e8df6b0833277b769404b92bb3b0058c18faf12608ebbc99d019cc3b7f660c4c0bb47fb1736ab3ed283ac0842dcd48adc58066654b1b0044a2221e996eddc96e885dea5ad5a9d044ca57f9a809762ecb45b05e0ec8af93aa00b2cf35a4edada69faf452af4cc042681a8decb6b100999dda007bb1b91aa8fdafe6c10460b59e25e354b51eef6858963131848a6a105edd030a1262ce7600e8b0867603c0d88ff10360e11e37931168989e470334b212d906c05d0abb0bd27af1459daeed38e589985f0920b8ed2f017487787704b00fc5e4d8daf6de9dad006cba90b85a35c48e6a783cce002db6e5b6fd0b820f5ef5d62a57307d4e548aa372c3a7d36838069805cbb87563a509a5ec56ce99b0f3d52ba0c1a6dbd710739e7cb1a0e096043a4e680e343c5ce8acd204b78d7384260f7303ca9d0d47fb808c3ccf0dae114d9cf1fed000714ad93f4069997e1e409aab5f6d003d8dfcaa21e6ba193ea5d50098b3cebd9d0032162dff64a02299e50e60835059be7f40afff9b194041f7e6cb00699d12d1a886204e2df35f05c0a22abe6975db483815b818000df44603752d813a952eea2b5413429c036c39d9d035bcb9f69cb44b2bdf98cef7448bb8b7dcea20f1ce046cd192bc450251f347906e609a4ed03209873da0a53ca3b29eab21de921422fb9720d3697af963a0d7bcbe7d0c8856da593dd9c7193956e511a042fde528026a7c287b97067a84272e001692b8fc680003fe83e7882d9bd5fe04c0c150749b007256fd740a08141a5544663594e0d6934a05ef0f68727ccb0c9062a6a0e76ac80b26a2ea018058a53bdb30601ec5ef11e8b61f5cd4cc2ff77d6f004bfac5fe2557e122cf68f0969fedbfd700162acabec1a76ea98fcdbed2db69937f3c3580e2e3ef2bc036cdecd5bded91dd1d9fa1f30ace0f73f92ec278d0ceba1f6c2b1af66f00a69daefa950958d73ed77304d7f51a0d737ee167984e527d4b00d5b7c8c63b0476e24e69260920fe1bbf790e3b680fbbfa2e215a4ad5058f1ee748841ed606142b19a4449140a6b860af04e504d8acfa471e2c19f048fa1f1b604992746b029ef95485471208a4643e1e8d808c10fb172bf277b763005bea9a6ba4554cc6b7c22c06c011d6e619802481b8e0a2e953529be30ec0716dec9f00817dd4ab5dd4ea36edd11e563e3c7ea98f851e9f74c8351a626d4bd2f50260a791b33703aca62713807507c56b57d1a47edc9206506c09d174adfa4774a85647298226d0a33db82f3b28fac019ceab867a0c160ef47606a8694229b625605b0d69aa24108832f1dc25f4c4a09dac1ac0dcc878db48e95ecf31588c1993d2e2cb00795a1bbc5ca4e2b89fd9bfe458e3050d340a81a92679359406930bfaf96b04cc5215c0ea047cda354ccf80811cd3a3e296bb07f41cb47fdbbbf4b2f9e3a316f198cc53768db7809c1009c98bff01f6734b003b463fdf07d884d2fd33c09a7db302b038e9f809e010c34943a41a6225b536ecca50ecaa88abe2406b5467cac653c5e20ff9a7c4d22ebd00cc623b07b89e203d154dad3a8fdc4794b67e022d69ae12314fa0c34b6bcf111a261449640ca061da7a05788cded90620924e29b1ec044ccbe45edd6138486442b90150cfc2637d268057e168043da5157f00258e08c98d255051adf3fa12d0a28dcd417b67fee4f85d026c98feae01cca7a42cceaaebd0738c2bb4ba7926dc3f670007800440875a3fcc0eaa8e3d004a1b5d2f0118b7eef0c600a75edbb4a9f90ce2c3d308b4007f0700a2aafe2b075828cfdaae0166dc1dbe7e4f40bbdfd388ea4d9637e23fedab34d5fdb5d83f4de3fd78d4bae017b5a511e0c8ec6d62f312204fc00e965f64c0f766e2473c13bdaf145f18b0e87bdf28733aa81e70021690aaca3d559f964652876f001dd2cf0ce43ece4cb1ad06cc317b0eef0cd8f9ed252063d63e6b01c8ad078934255093a973438b45ca350469aa24807e907bfa3640e22707a97d5a3c65b2ecff1a603e5ddb0604bdaddfb67f8998921f76971ebbf05b4b413ffa0cdef885e545c7a73503b8c29dfd4b8d8ce46707b0b0d7cd65004725fe439dbfefcdeabbb900d44c8e7b7f9fb29e9961e48a358039ccb67e051a4b83560dcc043aa6cfd5158136c38dfdfc0d204c3c945b02ae4198e4692ae00b16f123271032147514459000a5bf43fd2410333be2fc3540dadec63a20c7a17a180126887acc45a3b9194e79f4b4f2b135df36c03edb97809e4a9b57bcfea8f4bc7c0718d5a39e47a04ff9c873a44fa9c960a5051484bdde7397aeb484079a70908cfdbbed3dd7e86784ceca2b59cfc62abbb32f40643555e58d7a5e996ffc528f3e37a3c695f7020d675a6ea70144ccc07fbae87fb5e225fe5bcfc77c0fc959a6fe14e8da671f02a1c110b87801b88ab20025c0caba1fbf0158e77c590b44cbe579b801e4e6528b06701f77878092d3958d850174f21e7b000a43719b271dd37eefe600cf2af67937024d17e701809fdfcf1c80ad575ca3c54635f1db6f03848b490b29015287ddf78b01c6cbdb392037a98ec31170971f00a7e6e19b26b49344a7727303a01cf2476380338b680f660b8e7dca345d6892f61ab7596541149f4b005b6f556a61002c388a32a9b37163a583d401506e6ef70d602b50bd61400975d13f00cc5e6ff55dc662e9e17819604e84374d065928671480bd1088b38ce0965d0087c2416b760299edb43240ae7ac0aef58092a3b4780430034daa1a09986c912ab20d00e7ce2d0d14ad3ee1e9cd08d40b7d6140f358bce66dd34e1c21d2c600d54cee9e0d90087b7f34024d7dcfaf8082d3374f8ba51946173df2063808799c00ec0cf82a1820a5dbb50658b4ae2220e00ccdf41c7961bd704b3d39afcd1e5bd2c8ce5bcb355fd2ebe7be64dd5ffe02546462541f00fc965ed56d1320bd235ca93df240da6f38fa0788ac0d9b0ec019705071ce3ab78d775c8d00c26ffdc61a8034e870c7bb8c6567d678db484e739cf22e69d3ac2755fe6d0296807abc6f00d7ef97dda5b7e027f5a0dc4a2a3b39ee12989378f1760ab0054741f103507770df778092d9f291074b062b6aaf1da0c6f5fb6bb7ade9304f34a105a347b76180456bf917808c5358d6b84d6bba2daf6af5648df17212ff4dc09a704373726129ff5379e1eaa2cdc93b693e0098a381d72fc6fa2f3fd7800c43f140534ee14b2442ab5f0042e851878f694ab2dd7c1b004eb7f517e700db672febf50bab42e4bf2e0ce066f83d01987763c77e51995db803a8892c2fec17c48d3bb93b0620f5ec20e9e7044cb88675aeb02ee559c50a4b51758b5d8035f282ef62f15271f108e0eb7b6560d66378549446775d8ccb8976e209b452e38baaff52176348c0dcaee159d6ce0f00447407d6b9a267150bc79ae9caca56a05a5fbf4c1f539363dd016a4e349b08685411c55f68521a0451fe2e3add3d361070dca92797ae9275e15a2eea1c8370a5069861a482857519984fe3c90320eae43d7a75a9326d57341a22b7b5d9c16fac1a204224cf00558931e100c44a86931260434c05e8eb215756139bf695034026d0abaf0f35a70908390398ef5305e9ea72f4f45ef32e5d1e10032a00d6613679976eaca5b76a40b6655c3907341654c2a39bce6694873581b4fbf87b743921eb2ab38fdd68cc5575e3b52ba823a00dfcc2039cd75dea30026d35ea2d80b76bf811e843d59b23204cab02d889a6d7145c35b829dd867627555ad475db0d6edbdab79d1f021cabe90e174d53a1fa3a9dae7219523fb104942aaf36797d06d41e81581e3d143d45759f004d4798b83e433556429bff1a60dcaaf257020513cacb9d01b4a037ed1aa67791cd0da01ea5c0e97a909243ba04909624b5e9038fdea19a10da1150a14ec2ce09988a04266dd591b7e672dac30e30dd128d6c07985ee9d80340dee2a335a0d9219cf2e5c69ab16bbcfe1836bfbc390234cc78db3111e52b03d8d8efb59c547d46a9eb6f3d476de51aa23443eb3a755cd9ebaf9a71ebd171a7f3fdba1eab003cac0202fea0253d58ed0bea89ab367a0216162d6746021eeb531ee73413e61dd57eaf0125dbeae93600cdbfb8c29386868bfeda2fcc627bab01918230f27ed5698f8820c8d70c606be5fe9a01ac8b0f5e2e5a5881b22812e06d433b024e1354a42b013b4d5079823f4046ea0fc012c79fa301fc741f6723c039ac9d45dd51d0329c7b4086f1fdfd658033cf29b71da33abb0303040db44f06d0507dcc0056a16ee57004ea748ffb0668a0257b0e0bbd5f5e06d8b9e93aed6195bffcef0bc07638b5a6cfa6ae64a1c47a0a6854902e56ad81c087aa002d6b543d3160d3673d02f58fc6019ccda7ff01e6d36d80f71a1e279a831aab8a103f3f055a4bfddbfa0194e4abafab5ba6791f41c3dc80051caecb526aa205e85ef172567934ae2d014c2b6be712d07026beb906702418ca619600a75e71790510486651b2f500b40087650311b7cb3f9a30a220e3ce7747a0bb1cf706e4d70e18354dec3137d669f58ed4722f1d81012812c1afda2f88fb749f53034e8b45a44dc74d4047ff18a308949f3d004f966f0e408fcdad1c00c88e73ddc908c8d0bd059065e3bea301ce80a776d1060f5acd87ea0b4e247e354bb5e3aea0d20cd30e7fea527b06e863d2644ac0793affce08f4a1eadd11d04f0f005e455363bd3f020d8fa60304eda2a71ffa2e6d33ebfeda741a2b40815ffbe8096047cf85fd0b46ef749307b31a65937b75fed6550cb1c53bc05cbf257709393b4ff60d6d2898c6a5fc94408545fff902e8882ccfd461fe8b649ad3a69150732f4988019060c8dad0a631cf327f08b0ea501fe78048f8cb152d361ea65cf9111000a101d47633d321e15376ecc5dce2c000f130df34d028fbbe14014c9fe19ef6f82f459556b7bda9df2801e642626bdeda56d4750723d011a79f023c4bc17c096047be2a8151bb0ac129af2a550958be69a99eeceab97a61f8fc07182d8329c0d9fea531a09e3c55086f3dc43e696d38e2a2cee21c0f17003b7f99ef0170b8fb0d6d029c374b1aa7ec50de549d6efb13d0e3c65e9681e6e21c5fcef63680f0dbb07a0cc899fade8f0096a4f83c31c076a5f8025474ed8d95116877b27366003feee639c00ad16ecc01815de307ad3e1c466b823d049821c02ce56c8713581a9d151d0aaafe330052a9d71f0119eb0b0eb30128ece48be7b0553d2c68e4710ff4710aa86d0f6400cd0c2711f30448a70c977a5b5f98e954de016c2edc97e9e44b7b1765b40f62c0242a2940b7f6764213eb13404d818bf21210891c7ee51acd8c3eb661c0eef2dd02c678980818f3b3354b795bc463d4dba65d1479494b2b809e3ce00d990a83c28e66a9f54d408e3b7d83db86866cf4fe08e0c82873bb8080451f5f01910099d640af5ee867329d7ca4a47250486202255bd18e274d16127dec0060ceae706100419047fb454bc75d6c003ca72b2719c0aa76958d013b9dbd3380e4a1e481eb41c04ff3ba12730680a7f7f416d0f1606c45bd1d5fbb6a0d6022a21d4d68ebbe5bea46a08be6f50848a53e3460e5b368b1ae30ed9f6b408921a008f701481cc9adec037021b99b6500a9a15edab609b04d88b7f68b9e80907bdab48f94bafe50d70eb96561bd6b0005731085ed12607332e646323b34c13a55104ac0fe652700cc92ae6a40a7b0b569c12f06ade3bf475789e93a8c799e57ea1fc139eabf5cad03a28ef4c25cc323780b09f8793090b1dfbf0590d01fdeff01d8bf841b2e1ab07183c25eff0052613248429c57c869578022433d8a8bc60a6d06769ee9d5387efada0010cb1226062caa42c1b50910da142ef601a651b5c37789549909fbdf808e104d66a9f4aee86d2db84647424c38c90d70f2ae9c91012089399d1840b8669dd7b769dcd1f9c3d8f9570c90ece4e62b23c01ea33d3a2b547cbe07b02ff77d6b80123a9c0226d0b268d1ea6368b552edeba19e940ca3df0260b59e57f8b69dd35ce85a3a6e3f9313c1b1aac7ca0ea70fd562c3611353700730ebf3595bafd8cce5c99bde5e027249524daf970d2835231cca944ceb2f1166673237d2ac85edf0330510931771fdc6e00816fc7c06c49661aa092526eb820aec3c58ccd958b1ac25a055dd6ff060d142ac3eec1a042d7a2518266069e1caa21800cbfcefbf1130af6f8c401da6ad0d9068b09103ccdb23b186043a64578f0f003d13ec7337022277001d6efde85701763c796a800cff707f0c881c516ca96b77e33cd6a94b0de50ab4bcb65780a0e269ddf41ad08542c08fa0117804f4aafe337dd03621edcd02c1b55a5ebba118b8d606b54717a82ce9596fbbb4bceaf5d7644a76e9dbcaa6538da17a08e4d2d477c56d634e11c8ed00400fc529e53f81068fe2c4ae6116ece7cd08d092b7dbf229c3f73bc0e2e92abb4b4f60ca3d0df4df4ae80005bbd7f5e711e8f4bece0db03bb9e7394657f8efa601c22cd61f00ec91e3232d96163efde2c22e1a70a83eb6006b755522a9fb7c3cd3522fec4bcff1f5ae56b1de4411dd7e0160abd14d5f011d1ffb52dda16fbce460a6bf9311283147c9810974645f6f7c026c83a70217756f19657ea2d1d03b2a08c565fec5dba4a4e0a704ec5d662520e085bbd900743af798aa62f0d04b4db8e604e030f256f7011e45ae690d201fd91dce0d10b24abc431f2267c0f7a7800e73e3539b913e12b913321e3d4d4a7a3969fc27509201b173658044fa4f9a30cdc1baed2ab78d1c9386db5540b02f3702a2b2367897d89b4ce0bd01ce9109f6190ae2aa092bbe6d320b7175be1b409cf1fbc300d92d2b7b809cb5f2bb0714c84a9c2e1b6097a458fc01a8c4816f7701e6d994144302ecf8dc0a2d96564219022f7cb961cef97b97273e834d8eeef878048834d98359e0c10da3a1ebc814fed53cd6f7bc7ee8fefa69b2344db976b3123071c6b0bd2e509544a9cd5b80094e2968a0993538fffcfc48a035c5e98d6b8099924f1e60e12fb34301571288717a0068941d1796e70269aba5e9e27c03e0c98ebb7902a0eb34b9e7c17c877a94ea4735b3349fe85f34e326107b7ed10b444a09069ddf2690d193af1e0ca033b1d802e42617c445d3e65d8b56f103b060f437032d65bb976f0154508e931340a4091549ddcc6caf1ef7760136f66f7e01b6155dbc8c800099250373bae51ea060b178dd1c8186c7523f02bded324dd845f3d19f18207e6c852ed5213c11e4756ae699d96313bdcbbc34db415bd1665e5b6ed3ce0c80bb34d6ea1ff3662e3765387b049809b7fa2ed0e68ae876eb0700dbae288e3e5d2123094d49130998d77ac17304c2c5a2227712207069aa2aee09d49af9bdf68409b4e6a9d90438ae213da5047acea2152b39006a2ffcd240915459ef6a0344dcc5030384d03c4d0019f185aab439007e71b36a80131ad5b04bc07cb0d2b56e06f13d12fb96001cc6c6c58a01beedaf5d34507be19e4f19adbed829dfc5846b9c94d107c0bbec2f1968b01caf01a66fa948b7015003e2c6fec54e8ad6172320b6e7c600dbb7954b40c511c5bb3d4743e0922a19355931b34c2e7decacec88dafbd45db2b1d0865423133037a514869acc4ebc7db705300b36d7b4958d6738ab9d80b323ac5e1d26f35683fb886ba40559bf603464960ee56711e02802b95a026c82adcf0d90e838fb0020f2161ea702710caf3c0150922cc443031813c7f7808c69eb7502c0ea8b3ba706d0fdbacb0cb0bcfeb3db52aac57df0b6b1c6777145ab4726fab07b07702cafef370602ee30bb8b595b95dd2598c9f208e888645ae7a269dba006dadc1f019d7fd300a1a2cf0e306797a47a1609983f28ac19c0966aeda2165dba7c6080c9719707eb385e705776172bdff93931208f513cdd06b43d160a5fae737c9797da00dbc8374d5b7951a027fdac553d2f2de868e35bc0b6c44145a8d33ec34444eb4b40cdeab1f70b187db06ad3bc6dd9ad9de9497347cca67fd084927bf38f5d64804a47f1f1b2053444eb33d3e5212b98e80f00955e3f3cbf0038f09f604ce4c18adb447d8621465163ff66cd0087a0370f80824ee77f000e07a2eacd3783fa1cda72cb80a81926dc1ac06b1d17761793606a6f0cb014f4f60ba229a334329b7c0c7ade5c3740ab973450ea85e4245e18a084f06d041036ef0eef01e6857b5833809daca2650370ec4ee80edd78d26cd7402036061ab96b5a4db06ff62f0e7fd0e78381562be1ba3d7a249467d97e817dea77f5b18bcc6afaedeb5f0a2bf2172fb41414be263d7d7b0d40c6f2440adc09f46493fe53a72bc24c899f7e7b0350f02eaa5f39808e23bd12805365ba3937801425766131b83635056780c0d4a718e7a6489d8edd7c0740c22dfcee004cf4ffbb0090ed13269b00d385aba2014a4e1d6bec176387095b06982ee4b94a008788dff818013df9db00bdf0f6c800dba6d5ff80d686271ab92366d31d3e002cd76b97164b2b322fd71820fe0343b11833eb4f787dabdee14eef009de5f2f02f63b15255216acadcb22896348086a2c29ad84ef46d4b0bbd0f922a6d4a4b1f0c0aaf4cc08e495bb57ad9944aa48fe502506b52f22a2ad3942d9ac3eecc0348428bec9286d2703214b70b00496871a6ee30d4bed2ec70c2bf0414a8264a634ca0e2b60b038e239bc5b30134a955d8bb190ac028ff25ff0674f24aba23cdc9699f85604c350114a6907a0fb0dca6631ad9d24bfdc7b701a45c76f70cf40860d06291f463bff10b182d945300a73c71e51fa0b3447a7bd2ae45b38b164ba3412db6c99733e967b7b937020da0f98301b65e2fcd0834d1bf6e00cc8ffbcb8359d78ef71500ef57dcbb30807cc1d235c02ac47c5d1920163fd85d4a4745c72300e56fdc85e6b1aac2f51b9541d554e97d35076537808e3209fb7a8eca6c4b3f7b0578248619ea95ed818222ff9acab5a4855f682057b68b0ebb4b804836ba22ed13e0b691fd7e15f05b4655946e069900d53c902fb819e22d755b1d502560ce9dd51380c3545062700281d972530d5445f23ca334660640ab7fd040c950d488dae42e9682e8377e00d6e9fcf708e4ccf8e0e56cff12ef345b0e11996ac2cd430047255165889ba1ecaebedcd204c0514990ce44538d27230af26daa3110e36b1d80b7273ed92f6c67f16bbf30efb942bd9a64f4a07a7f2ecbb12e467d18b5475d39fee54b4d588f5e96b9b62bb5cb5560dc63d2d6a38688ea482410593c2f01deeb534e15f39d40af43bf097bd33acc49a596ae420244ff4c569f01a5e6b1a9949f06a06db55749f604905f8b3bff0036076dbe025a0263316aeac0d140fcfd0190aa12afee00285f074596a7499c4cbfe83340ce3e6a83071b4334d9240e219a32f2a475f307887699013c02f5572f80403ed0fa2ec05221e5a74ba0c3fc3add02e011709bfccb28a7bdc1974bdd9292533cba15088e0abe6eead1c8bba181c6dc48490e35f558fce8760560c1934b370628513fe553764141adae9413210d417278cfd41d1a5b4dfd835aacb17a0513a7366d528791ed906b88350145d089ea9a0f8052935906a870ecaa96cd00981ccf5e0c68f19c28da2581964a68170d209215ffea009d9538280c10583fd1006a628efea90a050e404d38597d0390b01df74f01668e2a4a2d8116c72ebebeb49d21bbe5b131400f9a6c0102e3d6e702dd9c82307b3b062896de1e00d847b995dd1168ca59a24dbb16ef467b0b3069bd333ec350b8e9efa2d273fc8b36d5a75c96b1d95a1481dfd47769cdff11be64f68c72636ef50c605958aa2bdab48d995f2b06ec90fc47a3a16dcd0b77aa39b975015f70d0976b7da913bc89c23dd2c6238ff4d35d408d0cfece36a0e1cba9006c02ad0cf8d0f21cc1ca791cbc19503ff50a804820aac52618df6dea3034f21ea03719388da8219c50bbd72bfe259a6ab5d20713b02aeeca044da0d22660827ddaa62ea5917dba0968906062afde5a9c41b85d33c019f0a7ddc51304fe690f467d20f7497bc4c84edcd7801e69ce757598d61c224eb20109980b5aaaa2cda0b626c7ffd10c502078b9fb1f508badbf00ec2044017603605bbdb705b08de6e90ec093bcf16db7b5e049252837ce92e1bc8e7c13b0a42b15d76b5c6536bfd27e1b37168f57f46002e61d5569c504d0fc9b3e5f02d0eb3b92eaec00a848af0a648d33253d7f7001b025fadc80d963fbf2393a678275b316807a6568d51eceb7e8f6cc77013d0e66cfdb06d4e6a747cf0610bdcbec174d8988d723804c72375b06781d2dc6af6d0092dcf14a33bf8b33ccaff20d6047259f3580d4723fdd31506b349c6e000af5e490ed014c6fbc5f37602123bf809a8ffdc9978b165ddada5d1a36deb37c045a2b553f7b00f8c6e77700c7e219ec1a4e9be690af013847769f270670dc1ddf18207841b5d21a37aa12eff1725d465c9fc22c9a416c4ebf60017626e3e456ec17566467e9c1001e9275fd8b2fcdc1fca1bbf8ca32ca728d39dfccc3dfbf4cd913faa155ffaee17e001e99f31dbdbeb730ad50ea338c62737e22b3c7a79fc87254b19f0490939a6c6ba6f36911676ffa00e0dbfabb09a0363d831c40a263dcfb6740abe9b42c009da26edcd912a0e74473f13102529879f4483454dcd900147299f8e5951168dc7ed284a6b8e4f04a0e5b20add9b362041a95af7617e21c03c70b3e753abc2c5f00fb50aacd3100bbed01c09bfadcaf01e2d838b0f316a8e3be7f0c50d7eb93ef122d74f6cdfe850421cf618a1f33a73f8f0dd0e936f9fadda841b400cc8993decd0d10b874f80830ed1f8e5bfe0b9e9cf3a45dad278dfb9a607d4fc9a9f0a0d9325981f4b143bd7ea8ac17e20d1c8316fd9a9e23346342cc25c086fa8aa6ade0cd253f758092d059cef88209a44cf7b84b9a2d396cdb03b4f2904cceee0091477fe52eb1c196dac90d28486fb27d6d8029f8731fd0da127d0a7048a56fda4503db484f7b0c3551d5a51a80d5e5d9d01a15cc99e1d834073bd075bf25a0e4174bf62f36e36e4c0ce0746b795b4b6176c787008bc67e51ff88a5257e765a0a62b261d5712fb5ce0d19111afb0a374d362f9e6f57ab9f46df23539c6be14bfd967db6e44f9a41bd519f72ef04e068d3b706106a2c69cdda31d6c44a7eae026cd7d8f2a4a317ff6317d0a195f5b0698038b623fb458f7ae51d2f376a0eaf47039650b767c08ef34f011655a1dcb7268e69e13b931168f71ad6012d894a38ff521f64dde7183d766c68c2ba3ed490c6474558fda29bdb00dad1acdd6514b375a5ba4367f11fe1e100d01bd0bb748535a1e4b59ae12c16872abf28298fe4ae00b5232deb5c5f3fbd0adbd94b799d8642b4321457b600367f1cad03483309bb0b40276dcab8249365300b35054bc42bed6732d93093bd7b40c9e6ecb30504d9ebee87d74f9b44bcb4fafa5db4e3168e1786a83d62250f0119c91bef070650cffedc05e4246ec51340616bc31b80422c93a52f0372aab81f1edd0e41a394b006d71f9b44b691ff55b79d7600abfb76b403e8d065519e45d38da2bbec2b4781364750c918b5e7d8d074a6a71414d9d50c026db20b1f7997d173b5ed47a07f916657d39b9689bfd35dfa514f49725209581a52a60ed337b9c23dfcb66c987e74759eee01ac6b638ff5ce9b6c11c0e3ea9ca80c6002bdbc5fe15d1fbb0f1665e29f0db0e36bae008e223b570d80c234d3562b611f677cb9cf6f00d5c3c2f2a10122ffe80e7dfa509a503849ec2d5f2cae570670317e5e1a907fcc490b7ac87d6288eddd1a405266fdd400f25a7be7063a2ce937009a9061cebb8c496892f84b80608e501b40f0d27d72d13481d0f917062840bfb201284ca7e6098073c7ad7f00c6029fbced9895f6f809b04cae5f3ed4a8b8b4d719208de0fd6fdd6f676627a7ad1fc0f662f9b980753a2f5bbb9d8d7b429dbfb4b376ecb8370074bea36a1db53337fa3f2e05bcd5382c0c046afb286f2d815ebe9ca0424e69585748b87dee08446a9485cf0a909135a080c301c8731595609840d923327b0420ccc2cbabd08e316861fb3fa0cff0b906686cadb4db8e0154fd08348def5e1960a6db7c33c041bb84d112e82d6ffe4220990e1ad9fff8501db1a3eef3c98043d5fc0b50528a545b8d0408b073ebef004b23f8bc35a0d70faf5b000cb4f8cbd71f43cda567908039553669e4aea7a8ee01cfd1e7da01fb1fbdcb3ceb2cb0ed4320374999d56f81d1c6bd5c07582f54edda763eaea60d17b5027dee620e20ee222eec179d8944eacbcd3d7296f199e7485b1cb5ba0a18b4f3800c5cd82b006d8326e41380e3c92031e40410cb769fdb06e8962a7c36804693e39ebecb7c0c29da9e18c0fd73b467001140fa58028ee0381a28ce71859f6d024c6dfef31dc0c1b2ff3a075428c6f2f5e7d171d8b6c3dba6c9118b4d03796ea73cfe88b7356ddbb0e01a6397da7623d01e4849ac6d66b10a2efb0298e9b4abf19255a4103949b7b6a3ea9b9741d266567527549a83b2e1efef17e11110f1b1fd6888656301c7bd5540c569c2e212d05157437a286de6a9e61afef160a1c0d8f40da026b1ef5f0768a8b974bb0788ecd57fb94b7a2e3590ce81fe8076e2931d80b97eafef00b6c1bb5a0314f82e743e9700d54c9cb61a039072beabd60135c1c69363408beef9670eb0c562c3ae1164b1b9d57b4054e674684b807db9fbad11a89f6ea9c3a4914e7b3c70511316f0476700d311586a0d10fea2a221ed102ec6c1e174045ab3f768643b69f6ed21002d46b7746f80697cf716501544da2f038292597ca1f6c8c7594ae7ea6d3ee6ce6e2d09a4a5115b5bd7c8eb9e50c03b0dd3bca170e2f4fa14d0c84de98b0d804d6c526e4960ac44a20e93dbc1509012459bfb06137faf1608b954bde2d9a78148d7fe0254a6c67706b0f4d29b1b8037bfe5ad014cb8853a7f1ea90de6be0f01c8e186cd6f4041b4cbe9090005aac9f78a01b2c11a1e2c92fb16df79b034e5905e0ab080432f018c04083c704b77002454c2d5e608344cd776001626bedf1b90f519dd39205afaa0ba76de532bde4bcf316dcccdec59cf017664d3682017b97dca7b2d274561223cef9f00fbc5af1ab918b30694ebd58efa7441eeb0b6b072628e4e5738cb6b5cd53c56f8cae2a4bf013d799e8dc67e1148b78d8b1f038888eaa4680054fadebe0154d2f84f4b02a0b642c5d70094e3a2b41906c019df8eddb6d5ae71e2f4f58b38478ffe935f440bf79836065002bfa6814647f7de36a046d27fefd44047a11e1e3d3666e21b30b5c65bbb6dcb8a7cce878a811e34b7db868cf6a0916d93184eedb6e807f923fa479afa2885be320234aab49a0e11569a82cfde0d9053a48090762c56ea3eaf0cd8fee51860f216d61ee640f4071b06cc5dca83253350a7c40bda63acf958c986297ab4b242bb0c284a6a3f69cc9595a5bbdcbc02ac274b4eaa2d4dd42c64ea1f6513099d9daad3952d07766e59db84d28f8558345b96819380e927b74df318c5c216801225bda30d80a756da550fe8383c58e65fa269caee7f02ea9a06fa027062e5766e01ad05823e011c877e136e1b7121b99d43037a8e70fa0fd05bfd4a7dfdd2020ec33d2d66f9c8ee97d7ef7852ffe301e6dc59e7d1c792ca8a0a6fc7f29df19177192b6ceb60b92dfb4cbe3e7facd9a11ae7b143f5c2aa3057d69a169caa22cc3348a12c019ca1e1475faeb2e3ebe98356a0aaa954d2d0d5cb00ce4de3b3b64d63cc956300552d053fe2990cb4a1888c3a1dcb49e551e48a189b55a0409f970e7c02a878fbed07031569f2d7808605e786070b88027855214a20981483dd85811cf6f99738ab4954ba0320971ca542d356a6c4e976b86d2c992ed6f70cb044dfda2f2af6730bbb281b4d7f7d02605fe9f6ed2e0d82fd07f660b6173b7f31803363c72e8a4771b2f76c802958c2576d35e6bdfebb05a00011f20d80ad738ab76cab3174b67f198166edf37703c45aafbf026c3fb7b237026ab7d423c02ebc3480f0c4fbb5015423973e00f80cc2eb2f609c0b9f47a00fb5d51840e9f9d19ed424a924d6f007a833b26480d4e163dab42344c22b78b2adf3ccce1a1700dbce4af9a9adcb7172d4143ca8122161af2d60eda82b1a550bbcad83c9589fbd023cbe8bc537201047ff59023ad9da41b1c509f40860ec1d1b90e054f8c773c4dc9c191b00829ffc5e0fa027bbcf0f0378bfa4c3da0e22009a60d7ed1a2d25b86e79fdb4786a42b9a8013de3e51760715ba1d9045052d9adfc07d4c83f6e04b2d78fec1766292905e00f70977604f25aef160670886cf2e863c9a91d0f30afc20e1f6a148bbada32c0b9e9230dd45538ff247bd68ee162714a9b5a39e4200f6bdbe4281d851bf5c2a620a23bbca86b379677e2e9304d352e0519c082169f0016c5e89776059cd996fb5a5e87d3473590fca76d93ec42bcf8b700ea13ba9f6780b7f2d0cb06e43299c43380151dfad47769626606c9d608902ee15fa225f7c47f00cbf23d3f02b07b752cf34d32f27055fc07e8a79f0638bedefe025808af5f18c02c0e97004f4ff6f62fa6d9b5d30190c3f55b3340e4086bdd7ed1b1f35cef4740b08fbdbee5bcaf5f8f40efb2b73f022d058cecb148a893b260db8cc644958f40cbc9012f376a5435f4a0ff8e9e77464044f70fc03623f30b8089324bbb2381064f9e1cdded7f916ec51c60f6871431dab63067c653012005d12b19ae6d2d89d55f7d036c07ccdea335f528dfac00ac92d1dd2da0d2e63d6c01dab16c15cfd1f62a7c165f358db7ceb2af9f35085b5f9bfea9d68636640ace9f1c1a282385df67008f13e1eac6002767379b8058a3b1bb0ae87bf45034a2da38c797b3b632023dc73d0d14cdc7561d032c7d5019437f4073e1d685018ec025a0f307346ea58bdf0ee17332aefc0b002b3864f62f2df9519dfd8b9d9d48bcb3fd4f9e4fa7917f409ba2837503b6463506e433f067dc76ace48c19d876735b92660624c213a543d2b6dd58d1b13280a5b46ed73043e08847b710de38d1a86cfb4cbbd7c9d69d0132315ef4a15c694e37959c6add586a724b9fe1bf58b873cd1fceba54d8336095d076d53f5c7056f35113bd1b93486e1b408949ab68b9d659fab1c7c3eaacc46364ba4880c0c73b1e7d1437892b2340fbe77e044c9f060206ebfcdc005daa5b3240973ab90298824cd835e0d066b05f8cfd637b04bacbfd08f0d262e50cc160ea30cdc608d46196de01483fbbdf66046a0fc505b7cef6c8f1ee7204ea96cbeb062c0ec501acc36cd3626999d7876a7e00e671c65e77e3aa2e4dc8041a8cabb9dd9638a588cb350156f5670d206f0e2287c36c94e7f3747e5fda6d950cd7fa31d8e7b604d8ac9d7980ed091fbe00e6a59dead1bd4d9ffe790dd062291dfe03d8a1ce3f7d86518dcfbfea5dbc9bb3e0ec2d01d847857d9ed431f6fdb6fa980f73dc0c175706584eb679b090ab82a1dbfa00584ef3f533c031392a042f0184c0e2e99a018a835f3f013a2a7e565aa37c9a2db56f68f90cc976d0bf9c7f022c0b2b4403dc560110ed1072a66bdc9d01509cf61cfb788b4e77f35540c476785f1a813634d7ff0cb0059c18e82c4fcbae617bb133da639c3e5559610024a06ef260a32150652350ab1f9d02acf32b28fe0fe8dbfed01ec932d0ee44f995ed20cf87bdfe0d400c39940f003286fcb18cefb4a673d1153d4728ccfd83b33c9849eb2a6dacc62aaa6137024a7279eeb4140467417a4b1ad969fd45806ba27709e600f0db3dc0e1ea5c708d60917f1bea304349547dfd87254046d0a2a27fda41f44e9ff2fa1050caf31d159f3c809e3df23280f88fa050c03fa016db2b0d108574b00a606b1eefaf0db0c13b3d039839ba67bf2033d69fcc00261972fa3402f5b18317806d56d7272360937807b0697c531d26fce70078055884fbce1600ddf338e149c72c9bb83c02bdedfa14601bde5b5eff7f449dc5722c310c453f66f653038dcb30336767e80e272f0c5fffdcd1b94e65776ad2e036c8b274f55714e2135005b4b1f51c8e5a7a856e1b71ff588cd1907840e1a20f7a503fb7234e7f6cfd23aa82a16f6cab31584ef65dee6d798d259a087ecb9e2366a9d217bb4bcca25567d693d36cc1ea7167ab69fa709c121f7e002a82f34d492f81beb2f658b149698808b0d7ff3c04e81a3b8d00fea06d5b70865a72f61cdd17605ea009b90e90ae02873a3192b914c7418010deb713012a9059f58e04e440bc7502985f5fa700ca9af985578027f2ef2d0a041452cf018125fa83d78f12acb30a420360afbef121c021f9c7540057e7db3720173f3acec08c9aef91802d5a6e9d0f9527d895360332856d868979eb75f62a6033ae270022e613cd2b3e5456189a840c6c642f8e0550f5fa7e0768891ed3c85dc501d5c304c0017778b677e9e4750a5ff62f9d8a1fb9aa00a0901ab66cec0f368dcd1f563c3e0145ee5c5a1376527df31333bfba347bda1c446842e77a3cdf1647df0e45bb386e590790261fca35402e1a7200e8584d3927ecd2be164bfa125023d9cef15397666d96241b844338a1ddf6ea019065bdb700957947bd4597b65d36ad4f2340668f291d2510d4e93e05c8247feb00d9cbb29f81e525ed2f0958ba4ba874db4e5d6a23030cf86906b8c27f0092a036f5a85f40a95aeba75d36045ada54bdd0ef3d66600b5fb72860adeed71700dacd7f7f668060eeb940a081f80c5d431ef0229d2e4db036a23037fa992e6ae55eda7e9e0f526d53d417cad1ecf8857c06fec14cda3e274b5addea76d00d44e0807f712596d2ea2e002fbe3bb241d87b2dc0470b004f3483854626d09b393a0a36d3f501a581c031d810c568df65cc5de2d4c24edc1b4f1a67aa1ef601e088d3edec01a87910ef1701355e5ad31c4e0087aaffe66dd3046b2fb7fb0470281d5dad01741c77de646023dbe40bda3e1b02cb3f02a814bd6d00085cf20b3c69ee521cb6e5b0c6787b09d04c1769d34e99a0132f807fec51d7a00a91dfe4f57584e54d0fb6cd518c61f30bd01164b34a97ea4bf60d9672e72673b2c1c2530190bbf4e201a0c9f175c3c05faadb9301895645f3c1bac99ff5e9013a47b6e81f37c97ea96ad340de254d0f0d38eda26d8d72139fc3d6de00dae01d2e0102db95e9a381807a433cb81340cfc0aa87a5bdca8cedfdc70c203da5ee1b50109cffbd0528f1f39bb4cd2fb005f896b78de86d85ea5480fddc4d0bc0327026d690406395ae82a9cdbb419e0fb1a823803c139e16530114b7759f01abe95206c49ee77f21dba75900443241cd89300013a8f7df7a7dcdb8777c393922e25d9d818db93db5474f16d6dba2817409fb50577c0619bd6ee12903f3a05d6e0a9016bec1d7ef2887ec970b015ce1d53180d0a6f0f2254098d6266f9bede407fd4276f2cea9801da4c683870cccd767699d09d4164e1857fe01d236f917acd2833a1f0817e3cbe5ac67534b4a20625a6fd062fd045d16ab8d9e009a08dec209dd74da5003a2991b504536bf601f7b3acfb94d11a0a5c08eb01268e8ebe5354043bd3a07b0cf0eeb363b4c73908d2d9e09e820e4f91150617fc44f00569f3fb38f3dad14f27eb301d02a76cd7334d417f3d797065c4bbcc3ae758721dc9410cd1f40499b069ec36bdd3ffe007012109fac274f931d84a3aa03783c242f3c7a9c73518baa48400bf0f936802c0a6fb2676eaa5cd15072d16ce25bd8da2fb0d737092637481e5a97ba5a16a0af7f6c6460d13fa6d73700cb020f2f0b006f436c747329d0f31c7c7d3955e2262fa76283f17602d024fdc28375aaa2fa46234b9a337edf66602d56d11d3aca3584769e0107543c98dcc7fea312c0fa3ca14dbb1641d4255ebf73de8c9a659b1cd363c9925e07a8f35be6419a2a090908fe16a0fdcb814d6cb35cace39d7f291ddba66f1b40b3ace1ce443fab10210ea6dc92008651b27e0cc81b185eacd30db2a3d6624f6f809ab8be9b2740671e92d1034f1af1e4c5ef0700f2afa19a0048edf21fbc7e246acf9b1d34001283b7a60238fec31c2033d094271390edf01605d8cf7dfd0090d6f3570719d893ded3a659e5ddc4097e8109b51c2d0342b0b7b532e6bfc07ae1ae6e1b2c15d22fe82e486246f33ab94114917ca04d80568fd54f806c2913bc1c800d7577c36d657cc791ae2127f59c27ed140af8499b76bdb3462e6c0a9ee7f9b4bd07a84d2f1e0172666c3b03854c16f70c28f06c1ef12f3945c4f4941290b5f56c5f6e501b33602574122888ee38b0479fa7e9933cad29409bb34b6ba079cb6a1aad30af9bbb60d225e1d2269479684c34c2d9d95a023ae3dbb0f132d458b6ae1d6600ad0d9391006e97c0734469108509a066009934d62fb01389ef5d810ab16cde360b819d6f0194a973b522c0f459eba25ad6ce770410455c3f06d0eaa3c99900668f959d498004c3d85d6440e2161f4a1ee7f86f13a0fa2fde86e95c8118f16a152031d39100d1a57e3303d22a3cb7cd62c896a5e7e60a91885b63404b75db57be6d17484578eb05d0965b34fb74de17667f8439b7ed99c64716869380639bf0698b679105956f3f001d2e02f76a4093b4b3586bf75751fada9ea3c87117ab36c486e839766b021a62d7cf009d143dd877c935a7c385f5d3a21530d9f70454a7e8922775045f7b770d98e2b536a5c504f220e46dd3fed616cff11780fa957eef52802de00e6f9b1a9dcd5904787e71f30f100a6215f601da677fdb6430d49cb651f9b6056870332c09b09df5e10a20691b53bffd05365e2cb938017db989135052ef5606d640810f9536bcb6aacf69f58e3c0bd7bf0a50aef27b033023d7fc605dc0cea3e26127c03a37a68194051e77f58bc69602f726d052407ae510e02dfed4dff15d92256d7106877487ae436e8c15b9cc6116d7fb0039aa0e6cfe280bf5a0f18200138a49630d5a2facb70b5b00b93abf6d3228b36cf36305e00033b0c12b655dc4dee6e4b2c623e04d563301c54b59e2a72b9b991df8c72b1ebde12cc93bfbd8a5437e3e580ac050a6981e74f60850d8c9f63b40a56ae98565da12dbf27ac3bfe4dc84b207cc54b7fa15501008fabc0ec085e4df82007b642b5a96009221fe690cd0c8bed15d6afafa026d9a3a3fdbb71aa050e29b950cac7fdc2e65c0c8fe0670d6e8579a0c7e9f7434d735bc5928719df6505d2fbfa947d761fdfd33405f7f938b664b7afb0d306bf1490b9087939619806a3e7e7f012468f8469bf6527cdcf807c0c4f717b62257136d352a5b2caadcd79fee005929ed08a08065f702f044ed59e1005795fac533a05269e7c21ebdd214ec5f6ccdaeb2720b1b89ca1119ea7b9e63f8b3d75f0350ffc5779b02ccda56ccc5555e21de168c9e404358a3b9d313a00299dfe3f57dcff9cbba7da834e4105a58e72e21afb7014076be7f2c0191bac40b0d0011736f6e4a576934f867de25e67ad1ab000ab085af05011d61ad002afae9f90640ad6e67af09e8bca1d46d1b95dc9e0b5091fe621920c368a4bba0fe123e68a0ec42ba6b0132586f698fec92bf3a05e888b35bcec00e53e6eb00f9d73deda15c0df77508a05c65bcdf103023cf6ffe00181ee1e40050124d89bd5ef5cc63aeb6e7a8730a91a5eeb83a971579790768789c16809c84662f57e75459ecc25a4b816f0e01dadf5a79e804e473b44cd0049411726596419d3d24e7d7009c9061db66a93a6b1158fe9cab6be5bf602ad4d9cab1e81f57b7dacdbf9a495b7bea8aba439b0ceaa083322b609040a1326f6300f51afd33170daa82f8685daa8e13b4d3ed6435017d97488be56da4053d0f8015e88b77d121a85f2a01da685a5df35f60cf61c58e13605e1f55b7028198cd738072deb76602282d46fd4b28d99cf1e5d49343f900504f7ea3c3e469fc9cf6c891f6b7310322ba03404ec82bbebe0af578752925f5c6a58900edb1c777c90121566cf017d867c0059d4533e3b913c074527b74c17447d38c07c0a3e8ac3489abfb56e1a6f6a4cd9cbb04679652232f7eb0b2ee09c80a5e5e0428f8e9d51aa8c95b514b75fb05662a58145202e849c7b801d00c63b5f45cd3b64a86b3476f1ce5c3a329e7bba19eb8cd0edbf6a19a30435068f113302736b05c075478ae2e2b402d3d835300917fc1aa310e803c8b9d03402b99400f401e38b43ca974bfa2e71a69bc906e4b7bc4a9c99f4413661d8085acbae56f007546bc894624a0b89ca516a00dde152f978f5ad9f10d8015a804e076f157e719d85a894f290182270ff90c3a1a480309a0223bdb5c340d17eb41760ae87214b45fe043759542569700aa3eb8bd0da017c6432eda4f2563cd77c9020734e15f58b4c9f325a029c76a0a27a0e973bf0368a85b6549d7aaf4846b3f005968c1be5c5b46e9e2dba86cb3643b67166d8e0d5cb69edcaaa2a32b6ca26f5b2a7d870b9bb55ba7f9e3e518806ce2b8b64fd9fa89c538fb97130005fafc292f978c1a06327709f80c82c55d24a08487e300d0ec70cfbb043c79d11500a439fda6ae41e1006f4a03039813f13f069040e61f6b00b505c38d75a93652e72c9a32ba1b54036cb65ce2b611f771d89900cac636bcab3450dace3239eaa24e675a7fc03689713903a68b3b01b2281addd659429d7fe26d739e56e3047817cbf34c20a88c061d662882f97b8d039e3487698daf33b0116505725c9b23ffba1500666064f14ca0a6e2055fae9f59098cf06c4b81534455f83c0764bb30007266bdcd30ae50c848f807d021a829d73a973ddf1c95b83cd1bf5a9bba8a652d3c2f01b436ec021c69f26e83074bd61435eb4f01d166cbf19b6d129def18d90b3c58d091def10b40a70926fc9d00a7f791f52599019c24de6f02d8568f2cb3cd6589507ffe0ed0ecb05909b07bc577314485db52501d001a3ef6f9074096747799014eb72380472de99b97cb96b42961b9bf10ef1bdee56fd7f895012999fc226b33b08b4ec04488e3391f4aa791de3488124096269e6d0050ac1ffdf02e9a714726869c8034edc32780ac235fdac7f6f9b8e5f908900feb5b80e6e47e19205b7b7c0fd0d1c0a9d9963e9bd61b5f80920dcdd109209f460aa8afdf6f0b306ec7669ffa72cae1a3255db94199d4bead45ca3a5f9700d3b84b4006fcb635a16f748e8cd3de3705eeb0a2076810aeae0890d4bb7a0e4025d13f708d76ce12fdc2a3b74a658a366e7d7a763325f76602f4c2dd3380e3dbaeac0170668c2ce5dff95023afc509af57cd8368917f03404573874f990690cdc95f0f021c82365300bb82b864139b973c8e7fa2c5b409089c140d45dbad273f6f6740e0c18e00916e169cefbc0a16c6116f9b1372e76f00add9d5a50081b1b77c86bf31b79a01569ffe45dbd940ff501e4e3cac04583ccf69b14824935bb5856f50154535d2be6dc81bcde60840b87ab0923109a8e38e1733b0be6e396769e6d3047b617350c82933b76628868a22d4e1f113a0f6e80f01aaf4bd68ed11e440f426f395a6d39a93a2a36d804ab499e2749a5ff5a4a65becc2f0678b384fea147adfdba74cfd05af82a9ac26e0087fb19a6d09047dec13002723fe9f75a9647e607ecd6780f91c2fdc2e00b9537ff40190b89a09f726807669bcbecac0d6dbbb7106041c0222617c114f6f020c75cbb04b4091c35bdb029c7a3d9c02b49dfd0e8096ddda030f9603cae6af00f5d3d34780bae58e07e860f9b6cb8063302e2ad9d5a88fad82ebee8b46eed87a792b2f9f00d10cf18b6fdb95ce36cddfd7004a3bbb2d7310051dfbc4c511a0f3f6e5de6c34c41c76e2ec53a6555f873a7700bd2d465e9c2301e9d969c5628e21509e0234a26617006d68266b00e5583dec0148970bdfb6b3888a54f1ed3240b93c23fd4233cc4f2f4055ea4d1ebdc2c7e62f6d628b2a2de0cef945db9279d0d8978b5944d40ad20d9add58b07804a247d2dfb38a258083d9e48292e93097db25006a0ac08611a089147fe6b641b5f44cca250159b037db1960afdf0b147c4a1a284e787d537a767f31f0a7dc4527bcf1f308d09023b1f001d05edd6a7324e08831dab80278fee59e4f99cfa32e96001ddd01f7e06039595fdfe65f3a6c981079db0ed98078cabb74f31ec72eefd271d01ed9efc74e499b27fb00d7db7839b1cf905606a68b0dfb976eaee3162be03898636c579872ba9c73f66cf3d8a04b6b2ff702c8fb4a539148a0516d0e9b1d3ae58bf9c2be7e97f36f5f76009af94d19cc758edd6bc47197e3c6a3290d24a0ea507b6780804172c96dc304b942d3751a00d96018575dc005edd61cc0a3196a9221ae93fe873fdd02a83d4cad2001a47e22eed221f2deeee2785b259fc7d12580843a7ffe09a04b058bc54f404769a104443affe70940cbda9c06ea2656a32cfcec09e041ab783925d584d929a0ae582bbf00014bdaea68ba6439608d3fdb8adccb327096079c802647770cd0b71deb171ac8b3258026d86b7e2127b52bae00ea52af6f00859b6ed904db976c24fc16ff52960470739edde7539e777bdbbe52884461236a10bbb51997a3e73e672d9a2279020d0bdfd33f00bbf9401452029cae98c8bdeb7d8794cb3a174d7b42b3b6f6b946c0e31cfd0380a2878e10cd3ee814b05fc80077580bd030edd600da7a1dd3c8511b9a0dfe25122a1ae6cf80021fcac31940d21451400798a34906368d7ff072d954d8e0f5e5ccf04f8b02c4e3ee7a01a2e4f77e003ab279bacac0fe65fe029086fbae03c482356a03a0139a639a306d12cd925ea53b74517eba00e86c3e8d563c2d990513cbd08d3b34615f3436e51cf1fa3964e4f07777e227536214fd6161609e0fda97006cabfdf618a0f9c3aa32252017f4ed83018d86f07c05d068b0daa47e92ebaeec7d0328a3e1d7798e5a0a2126b79e1ab4a1d2c4db2a408b96a576f949cb7edf5b7e839ff89a2a00275cc3eb44f390074b3dd9dae3ec1250208939ff0708945a3019c901987c6338be03e8cc62fb558084a9db7580a25c1d4d1827141f7810501d5ed33e4ea024bdf4a31160dcce3f32b0d7dfd02f2a2aa26cbd00347f5c2c0a5063c8f2a3fc24fb50fc5606366e1f4e000a5dd9e4db4a43c41f4d0141678d7a7465622cea393a19bd3b06a45e19fcb200717d37c70047b1c147be4bc7e6cc5b65053f9dd57498377bb0bf38e97a099083f40240fdf4c83ed49f0aefe90cd02a3add1a689a6569ac92f32f2060680460ec3bcbae4d7d322b94016a6d8a4eadaf0f51e2f6f5bf17002d33ccc2a50075561fac274fdbc62ae6b896271dfe7e7ff1c683799d7a5df22f614a96efee11a0e184f7ed1cc02c35fab76f4051aee1c803c815f50b87029881a7bb8039c3f4e659a0e4a844bfa848ef78e0f535e386d98d8055eaf51b35405521ad246a025a6f9f68b1480480b7fcdb04a427ed78f4b41733cb60f936039b1ccfe80e9de6c2998da8f4f2ad595bc13aee90d965eee3550f9065702e20abcf72ce92ed45ce7bb8b69e9ca57d43698f3ecb6566ad3e50029a4ff7ad8166599c60d13ef62c57cd78fb34e07196fb97230166a993270341b991562830013c027e720fa0f891374190045a26a53d1e3dedabad3d2e6d76984559b0affc4bea1ff66d3f78f41c66614a25bf809d450d50d1d4f82050daec70df02149d3edf06c81b7836cdc026fa673d18b5d143e90470cc7cf3a1d4e962a800ad4edfd60094a98e76869380cce2782f806164a96e7ed64d298a69fbec04e6a4ec8ef48bda0297bc65b52640f50ebf7109703364f178db5ecef25dfb7283a3d76687f1a6813961d17eab0568a23f2e0de405d86afaf9790e9fb30891041cb192b73540a9f66ec3804e24fcea2980a0c560a56afd3c2fe216049e80f461ac7c7802eafc473f061a0e759c15e9f2f3b6a4b2f5f21ce04940b58d959f3baa98392bde9a4030f36b34e7a29ea21061c635bcce3cad465902e43586da26837950b0e0845f04e631b7fd0168a821f3e9001ecbe0e01f00c9547f596440a98523804cda1d3359e6b98ac8d1272037f20b807cc2f07001c01008564377007314a75f011a1e539e23adfb36901f1b01e23e2dd66900a8486cf12ed90a2ec602b22e2a409608d58311ede2165a01f6fb2f1ea001b47320d0935542037553abfb161f69e46e4665b8e56340a5a3e735406d81d3e1eada403fb528133f7b07f496a1eb6d33e2ff848c4fccea2bf251c9d12d40cbfcb700913bde8aa8f8a2d0618a092a27a0163bfc06102211aea600f58f89bd4b91ddc7ae022847f39cdb5692d5b4f8d304b4f32cbe0032362b5b3c8bba272debd64654d1a8cc8a6954f9a29d52f0e37607a018816f1b4085c38f1b1b1bc885afad6a863b3b0464110d9e2350ebc81ff1fa81202cb743030575cb9b3b018a83bfdc03647dbeee01b4cc4f1e0488cb3109265fe4f172e033b0f9a35c16c02e3c7f0328ef64692a403454cd73241bc6fad858179d9b4112a6015020cc7a7501401fc65b3ef200949645136a543a8b31f2451e624fb498c44ddce22b209a151c2e56000ae37b5b03f433e20b698f6e2ad70d7dac9b213d70c2c796a45db4a8bd04da0eb1ec778024869f6920e526c4251b95453f679db368db0414e5ba6cb365991d2217df00193526eb9d807ad0ee0a40a3d212fb7c99b3e2c352069c45ef02647e5932be2fb327efcbd6ecb2226dcfed5a7b9439c9f98ebbd4331af93a024afcebf53940be605abd6c28b1148e6d44954e510485ad73a52fe94196433300ffdb84e3c72f4030bd9cb1eb32b0b5f2780f4005217f448b05beaddf3b05e8acd10e527f81d90e273c87d2199c653f25203ffffa4506e8d1d7007d28f32a0c00f1df8f070015c7fd3a2f1725877b7296810d8f33fd824118eef8d8712e054cfd422ade0beb19d894b3f50890c932df026842299f33b0160bb719d8d9ebe78b807cd27cdb883bcc5b85985f806753bfd00ef853b755f8cb460990799edf56b6d4b62e1ad9f0eee8e5d4f99f6d892e2503173ff9b69dca89ddd1c7ba962ed5d930fd0b35f7db80687567fdae7da8bfc8f20d9bd7ab422ec6aa026815bbde0368e13bde01e824711e01da34bf5b4fae72a4caed27a0e070faf110a083a105dbe154cd1c8bde34fffc5f74fa4300e86ccd24537dd5ea493bb3e92a1fac7f8c2d0c67002850b53ca94719dd55366eaba0c562f22e601b1ab7c183050e53e23fda2328e6db04d913a809b15ae7c18272bc1f4619d8e6ec6c2e406aa8c95b24807e90dfd535bc826bf92e79985edf67802ecb2240df65591745623830e32660d3b83fb6e5a4ca55771e270218bdb734906ad8f9c9a70011dd76d09e80a6e0fb2a030a6a1f08e05518df00b42bf88e02ecd58f7997ec9732a9635fe58a0697fb00066198f25df2989bef64604fbaf702900f16bf54a5646bbfaa97e374c5edab3d3a0c920b3d58df9b596ce7d9beeaea8648595eae6b48985ae4e5fa498b58e502a030318fb8fa2180d1bbc0a8eca93e18ad504f026d8b439521962c58b6f7f68b3a87f26c9d00c8d10c9fb634d61a95cee2a512d06c796b93630e680f26ea9e80c750bcb299aece25d9bb0780f2b3f190d46d28f0c2d94c57bb1c25cf2f1cd11d6ec36ca9da3becd3609e895aa332fee349036295fec201941c78ba21407ef6790b90696d0aa90960af87f98500c12d1b668fd5b21cddc1ae80f9c6fd2ab78d3389dcbf0238e61859ddd90414d9b55702d493a73b00d41bfcf95706ac1e0540368c8526f83a27c2e2e8ae155e9966ab0cacc36c9b03a056969e7fe25376148f8ffd8680256f440b364e20cda8d6e9acafd7c3b9cfefdb861f00e3c5ddf2a45a5f469fdc251fa59d595f4f131f8bd6a375cba6c8d269f6a19a122dc6c08cdbfc6976d9506f2a7267c3fd3940437dd53aff10d865bb937b6bb14609fdeec04665e3260acf5e01382960dad8ff2d6dfd0b2cced10ff1eb9cefbf037ac45e4cfbd83781d8af70c8bb84ba40cd621da029e7e55140caf967002222dcc20620ca54e06d95b914ad8a886fb28be06c06207cce4f3e0454b57c1b30d3b171099016c1e51e40c90aa690fa0bf08ede648024846eab708fa7af0ca896b50ad086e6634500e7f085cfc02cd8d31e80d32d942f19e0eba381f2443fdd0528ab6455cf2183f591ef9226296bb19d3580d6a89f4bc0bca24e334fda05cec59c8ddba6afcd2de7fefd0002a2663b02bdc55cc5bd28c068d8b22de05f0cfccb12404df8b00cc8eab766290d69d1acc8ff001a4016afed87a0789c194700a406c3cb0d4006da9a75dcb654d988071b626d451580f0c92f2a87fadcb56d46da1a31a050daecd0b6246dfa075b1bb27878a82f01e96f00630cd6410ff7f7a2630b9efc0594af7807787a90152f49408f7e6d8ddc06e536dd6e000ab6b3b107545465dae2e542ab43bf3b80e21d763e00043d872307e8698f339b1d864202d6a6f34b01c57dde0354f0f44cbf9812eaf5b100902e4ba0c5b47ab8ad27803634c747197026fe2340aaca0ddf56b654bc1e67605d7b7c9701d2adf4200d75c78eafcd0379630e902bfcf80c902d255a2c3bee6e6c996fff560f3e76d7b69445e4e5bad8209f6473509b35cc3cc3232707bed2a6bd8b66af5ff32e7d6722f74e1db7efa2f92d2f69f5beb725c959f8fe2f6010dab4e56673befe82fdc2e54837cbd04d803814c7e1528ed6f79dddd64910c48f9f01f2d315354003d9222107607e6d6ff1ebde654da6c85de4aaf09664e45dd571e8f70a686a1e7deb07e0a58b6ffdd4b92c52cd937a8568dedc027a4a5e5af5743fd4a16597b4079859fe7ee42471887b257c7f074029f4f8580b105ef956023aa96a1c67603d79e733037bf4fa5a4075575604083b3151f704b405bce2c1a2749c3b9e238d286b311387f64e27de61c2eba7be8eced5a50091e5e5234087b1bb19a0a88365e014bbe18f74db1cc17c94814d06873c7aec08166cf58becf87719986f7ccb667ed74d787d7f05983a4ab36e014a3612fd5506360837e830bdccc019addea3863332919501586e829fdaa2e5a7b2d72320cb039b50becf290061ed0c2083f57e0be030cfc72f004faec6cb3540af6faaa203b02ee52b2e5a76920afb02e434462e5a29f091893eedefcda8094f3c47add0b76d6e9beb15fcd877192665eb74b79b809e31472c4bfa30f6606ed1ba547a541c002f07800a81479c3be9360522e61380a3886ced01f24a3e9c03740c766b56f0f00322fef9454e0c3ee533040a9ec6955540832bfc92e7088a3d3f3e04c83d38fe0070d8e68fbf0111f993639bd8d273d9bb8cac98cb0070984da70039654d8823017c9f81309c04e4a3a791b31edbe51c504aedf552807dc3f420035bd63e3e33200d7a21037b97c93f0136ef4faf809af3ec27ba76a404a85b7ccbc0ae713403384d171702981b1f5f19d89c7cab0652bcd4f93a40b3c37d2340f98a27fa581ec89cbdfaae0f28b6f1f5fb86e39673be5c5ad6ec68e0fa31032b40bff72e602767ae35a33764db122ffe90ce401cac4d4aa140162fb8658076af9693984076da7f0be0b95ab6ef12ca89d6a81b0162ad9fe600c55a9b565602da8b71ec13b412ba998dec410bd956b1c69693bf1c090e4242eda9ddf26cc33434fad82f36c10eb10bf6b65bd64083723eb1e7d661d260204660ed0bc0a96837b6ed7d5af7286e73ca930649d81fd2c841b1a38b1f00471685650d24e055045217551cec3f3e43e894c36bcbfce08037dfc5c193005bc0e926606a2112a3a54e8099ffe80220ede3cb1940f3faf5430616188b499b8085568f2c08fc17d839d013df360fe4c30828d957def25da20edabf6a01723526cf80ba445e6b03a0e89fd37f19d8f9fed71ec091cb73489b2a733a7ea8c53ce7d926f5e3836a5184295d2a0b0b1c850cec6464598fdea1c6b7489b4aa23c3cf02efda4b165ed86dbf63a9cde1198cb2ce6a27dda38fdde2530a2fa20a78a2edaa16166c50712e84d5336ee7d08f06d7bbb4bccf6e9828ddbf4591884267b36d4fbc0eb74d203346be3ea8c7955b7d4d004b221700b90bee5934dd2c3fc6a5deab60134f2f6981918eb1ea9f445fb50312b2d9a8cc200f89456c97998811995bb6b00d9520b80ac28bc6a3d28fa19622f5b9b00c9d11d9e0264a1dcd1409eed6c37e6c1c2c4ce6f3b4b0c1ee66854aca62b008d9719b74d639f6374fd4b4dbefad7ae803dd8b83c06b496e917b7f6001e77faa5ae112a14c979d240f2797c3d10506406d7882aaa7b5f0a303b5cbe087072b6ccd75781ad50d1ea51aad50d4da8913dfab91350943c2f9735449e9605580a4e1f00da57ee9d0830c1e2b98a79a81fd0a651b21204724529a58529fd54859cbc651cfe02f4830a8034ff56f4606481072b78ea875415f3f35bf1019feb1584d14e06d4be7e0514560d3acc68f5ae32bde0e0e91f9db2493fce0466c408f06d3b5f5174f95f06e6b70cba2d633fdce92ebd1d2f3813caf7b1afad6c840bdf00621403c70bc309856d57c29780dc50f66043428cf58fa77780a2b25e6d7de9f276b63e04e4b88b23801cffac848304b381690990c1fa3403e40833f37e0dfa288cca37800496ee4f01b293f7be002af9b06cabfa509fcf5add22ed7dd714c839988c75027ecea1df2ea0c7f1bf6faeac2e9f2456d78096dddacb06407b0f7c6c9d2b2abbed2c007a491df3fa69dfc478990394c668b51613487ff61cd6f9bbc0a9b97fad019549b78692164b130ac7939780b6b15d12c1715db25998936f00618e74c91a4026dcb175982e4d1764506d01a66cdf2e4206b6687dd162718ee7bbd906a8aaca029f329ff155650604816f02343b74ba2d3b717f7900a0c2a5bf5d15c05bbc7b029072dca26ecb8955fca13b74331af99b46ee7011f811dda16b4ce42d5ed3f9bbb6b29df8ce1d005fb0c71fd475bd9d15c4ed2d010ca31d46433f6929fecca7ec2b53ac0f054d287f727c5c1660ece34e1f846bedb6f719602a6800f5814dc0ec01a04d00ce8c04cc3f36be781550eca8ad0dfd4cf1da27d700e5599cd90cd3e7309c898d86be88ca7f7900a85aa7490dfa9c97e40a4025fb634b60863fb9b319a6af279c59106adee7b81c2b5997b64039166e02e0499dd519f17d9b638b797437c7ab40c243ef7478b07d05e80bfc743617f69e45dc3327f75950e8d40188b9f27b73404ff0f5c47a501f2704603edd0214677079074085d77df372b9006cd500b2db56175548f341ccc0d6a8a37701a2b1273780fce8bc4b44fac89fda3cd6e71ccd9f7d017649750bd0d2b8cb5dba062bf844ffd27276f2b60b8866f486bd0c3c5598e9303d4543fcec0730f394025bcec02ce9970b40116dbc3c7f02ca48aadb01c0511dfbf90310503c38e05d12b1e89fd986800d0fbfffbbdea609b8602edcdf3530c545e0f7770ccc3cd1d826b41026056a49ae5d0728a1dfea7a85c95f9cf40cc03158b038b60428e5e38a8981aa2016df32ec124056d3997c6398d444c9bbfd234096d9b832909d5df7d700adc82faf006def7779f4961cef60d9f961e2a615e994dc36d961249f0bd478d0762f009e1892b302203feee40bd0138f7b492347ca5506cb471e007a17d6b50780c7f9ad1120a8a4a3c5b49d8d2f77027803cdc914860c2a6ad6ebb62ae76129666122e7b05bd8ccc0e6c2633d873ec3d7aa00dde1c00950def55acfa169eb6b4500b3e742d7c8a5266975a97af96d3d58cfbb8c960d749386bc570f50cc44fec5dcd6fd6421005419ee817fe92b13588a5fbc5c8f4eefe8900fd5473b7ff1a66611860c2a8ed25e013226cc3113a6854e78379e002d1188137bb069a9802113e04a00e585706abd705ae1708fe63e4e405d7bfdde404d2f0c0bd6e9a68dca115a7e431812a68822a800a4ffb8098fde4ea8eaf6190044888c7bde252d6736904d0f2501c5c3cccf0d84822dcff50da09122d73c036b757f0240ca259ab44d02e4beb9e52b800ab14cee04a878b1c7bb44164f7f752940c86ab59781dd657d270394165700923cdcf9126005b2bac42157cd08cd4e0666e35a8db201b09c9cd33fe4c77596773200c6ad9970619a759dcecb0ccc627bd3cb2129e38b11a0564583e50c6cebb5f00e4053d69ff2a1a2c2e72cb42901d54a8b5702564c2e2ee9393a16f1d6c6feb49b58cc55fce16d93b16dfbca372e9a56206bf51d7ed107db13ba7f8b02d874cf7cfdb4589a57e184dba625c9c2802fbe04240ffcbb070ac93cc3b8dab7079b49d7da99072d8146917fef00050c5dd506145313acc265024a93ffd62f648d5fdc0348840dde7ae1acee7075ba6d805435e874b366c291dede22408a18c7f66d672d468ddb5f00e4d2ce36086712210e8beb8060fba8501c023419d8117898f99ab068931e0843aa9b7d860d2e1a140ef4bd02a8e8b88e6b04156fdd3f00b41c0beedd0214b27af9008825f5d6f601cc1f717d5b80639f5dfd4b8f67e291f68853c6fed71a60c67272c8bfe8ec24345b008ac707ab2cf90b505bbb13205576652503ecc26b0051d0fef42a03c2708e05946c7d0e9059bcb328c022feacbb20cde94fe8a779157bd6bf04ce81ba0640ca6edcf967a09b35c8ae1e01e66628c63b5bb367fd8cf27b0f3c7adf702afabe2610ac81aef48baee6187d2ad0da3a7779019019f87a29d0e195fc759984791646b3fd5c98e73869d3964b00393a67a990619e956c2cba2301fdcbe10fa02684a63e06c88f3b33a3665e29ad3334805af9a636e5cc6ba7d8af0b4056055c1160dc5a34659867bb707913d0f2b12d912dccd3da493c3f6fdbce9993fb1100f5ca68814b61eef4b626539c80b4e4afff011873ee84b775bd39667c65a6e4dccb3e5db2ae3de4e099b575fe0028553e9c8b0e05927f7fb1469b0657dbdab0c74595f0e0cf7551fcc96905301035174eb70408cf3e1a0b1041747908d0cb75eb024c7d4711c087f2c76f0092aee2eb3e0051c460c981e1afdec929df456eca68852586300c94274d31360167cb49fc9a03bcd6a8830c6c961adb889af7252574d666008404e3077d2c998136803e7a40b4bbf819efd2f716d2ec67df0296cce2cfcf33c029bb2760713971e544400754d6c8c544e9faf7364c8b39eab7fee25840dba64f0339c3eea902e85f8e6c2e2ce495f4561620017915d6b84bf64a3e7297648edaccffbe01d086e6c986d870304241a939201f937e03f05c85f74d404f0684f9724291bd1b17870039cc6e7f00188ac16479439156535b0aac3a7602157a17b736c1168e0800b76f8640e115d2bcff0620bbc5edbf02bc56e417000582e3a2591743969e8d17570264e25b79e890b3f4fcd608e039e05e9a67603dd94212135094ebed92003b9c89cdda398f2f9c9d01e694fe3e3e0148d66a6b5780421b4fd7803c491719d864d0d0e9b2393a6d33e0a844d7c032f0af6d06747e5d83e3c9f8f20060ff126e68d3d8d5ac846605e71c3c5f4f007362ad4d4f3a01175137e5f5bbc0c466223c097404706fdb1c5428d827f434a11c88ee8846eea379595c5d037a67d52acef52f5a092d733acdb79a94b66c88957329c5bfda102bf35981d57c4c40abd8d43a5d99fd1ffd12804a577ebf0728a9e6e11d9047f604c07e2e7cda66a4aca800e2ad386702e8b185451eaca6e8b2dbe05fe440f40b67003477dcbe8da8415a0ea7ca1740399afbb4479baf710c5036ba29a68441edc386faf40980791eb6ce011e57e701afef238e4cab3a9c8054674736f39741e519edcc22942af415eda835e4d43fff3a07f45205e43328292f3ebd6460a3e1b51060496a2e01534422d945970a598d3fdb19d88c5b058002524d4b3e01aa21f9d3438012a63a1e3d6b775cea5fbc798c82f9e8135044e6ae75dc642835e8c37c008ad65cae91cfd0d5d6f9c3037749e3c5c0251fbbeb2901ba6d137d295d85b8e7010dd93ef52bc0e12139e12e694401de042227457ca8b41212f8f82210cd32f83acdc07cb04c39e59f8fde6e5b4d038e2acb360e69de670ab6f0ec5015ca91789c0134f5ed6f01545e6d771520b7be952619c2a69971dfb9682575754bcc0983f1690bce629781fdc2721312a02657f8b177a9da09c771dd316026ad2c9e43232a5a7dc2900636e259cd3280652de055a8d206cf5c15fbfb80a87818b37286b43d9b71bb6d80d2082ea7021c725915f750c9bf1eacf8c000180d931ea0c4cf2dfd4b57a0c26be3b6eaa6786a0ef8501d2551e3ca3ba0c4621bf1605d874d77fb08c0491dfed94e7ca8568958f69a0013fdb77e316d50465f04cc6b4e890514c0bdae7f890494bd725b4552470b8c1dd4e8ed39dcdd41069479b34f59ffe58a4680b69156272001e5bdde3980c46f3eedcbd5f24cf8db0a20b3e77d1d800c5cd83803742a81619b80ba9ea8b6cf35404e847f63808cbccf6701beade97c27107053d6362aeb0663222c728d64aeb3587c03942ef7c083c977e1f63f005934820672f24b5536e5a4cd1a9ebcf513004a7ae1e65a005191954d008b45b8e63954c3ce7df12e81a35677722a80f6cfce0c20b98fef578067addcbf00a82e607326a03424eb4183261187d33450fa4e94af9866f0fba4e3b7530126d8db39401faae43972ad012bdc3c002b08e39674513addf8ee4880ae7d7d0b6830260e3a0173ca062b221b6aa947f9969e9c35cc4c57f2175058939e9c8338ffe9498343df9277e910def4816f9bebd06c57028c068bd94c6046a7db3d16c08f7bcca377a5850385bb6d80ab6d96ea79db2e38aa1f2f02fa0a85109bb6eab4f5b08bf63702768237baa4d3f59595ba4e631cd03bd6ec6501fb857bfccec01a79e14a205a4fde3ccae0f7e5c6179f027ca86f7b8ea69c12b3c92cd594322696ce01aaa5571f00b44bb294cc04943c7aad5f4801b3de02e074f31736e534d272f54f1f003623aedd0074aad46b137d53cb33f1700868b061160a408b8fcd32a743d3cce8c9a6b23a007ae107d768991c8309e785c695c86b7d6c0390927347b60037bea496efe909807075bf6dc3b40973eae16c710df93efded1d40bb3527e058e6b7ba0c6c0edaf20288ee7a5d94102b77f44f80fdedc12b40127fdfef804e52d8eb0266afc7073e76fa0ffcb802535222feed0214abb07909409f3f5cf0b1a51de6372f0488d77e98674088e68b00794947fa05ab58f0ab0032dbfc219f4145dce2ce33a027dce39347ef26364ce33a5d3bcd9ed64fcb1240ccb7dfa61776cebe7ee440a6e97cc3b93aad9e2c588249798e7ed2da16f0e248405bc06b80d3062f02a86a1f593c9b1ee5fc5030a2f2ba6f2922bf003db68b0ccc1aeff51c32693f3e04ac2e71748f028cfd7d1bfb6d8e3fbd9f654023d70055c7767b00edd5779f0035a2115736c1b6d9dbf37124c035acac7b0233d5af2c013810bd3b05a0741496adf30f2714f62f9c78b79a0cfcf203403badc266bab6212137fa7d802ab398ec48028e615af1b64d27f979eb30ad534ab7e9c225806cb367921eca12d9fcf1c53592314185079ec3a3c4194ef997345dd85d30bfda5030296ddc01583cddce14d09292b9710cf00483adbd020293d28cef1222424fdbbc6de83807dae45d86406903e719d85dacd266c80997e39b0890ed70b30a90ed70f192815df4631940a64ed8bb11a0c370b2daca8f1b2ee985b2f9ddea21406ac03b2380ea155889a5a1f442cbfcf10590f0d5c906a0d4f4c9cb75b545edc5850501158fa7d5155036aae9a77dc312cd617ddbf7cc0e1c0b0e898eb6cc1f6d64808d7b9281e5f2b09cb47f91a1364c0727be5dc3fd0024cabcbf0190a4ae29d80de59295d2dd00344c2ddf230c75556dab51db93ba6aaa32094f80192e57ce925cb6d717bf008ad6e72cc935949d09dbfc4b234f4d11334037d03e946b5b0a271ef360ad6393d8dbd4e71cb1e7fe694d8078cbfd4f80ec8fed2050a0a764a3c1f982a85f428a5c16dedce5b69eec497fc19386898da8386a019cbe85b50f4063aa1ac1323186f21eb6f37484d0b840585298e9a28128133a6e4ea78c5655360ce9942851fc6460c6e68eae210599239bfa9c0463dcea01608a63c612b782cb5925e734618e2218ed656059e08f1b02f4c2035e2e96b819663c7a242fc93ff500f40ba3d5281b00d98216f917feb238f7f5601c1ef8435d43994b56e46f00ec703c1fbb2b58b3c77b0201efe80c4025b4b85a022a3b5a0cd7bc5c17bd4d173b3c585f335d5c71d1beb1106f7f53031cd203a7fa17affd3e5fae8f0d615afa45b498ef70c587ca42b5e5a140b0a96ff69c01125d37195027719c81ad5147ba4b5ec4cd20196a3f51996502509ec5fb0240bee0893dc750eac99eb4db00c81030d9b304a4a66595ad13209b34bcfe03743aa15901107f1aa28d9721f1d35effdd3eb66f38c00cbbfc4bab2a11873c582bbfc3e20340c5f5dc1a205ae177fffe04e8983f2aebb8deb56cdf4cf02178dfb2ce1ddb92e4a52a1a76f945e0c0dfedcc01f24c7c3519588cc0f633a0546c206f1b9cc43c8e0024f6852d2740913fce91bd06f2b89f0bb0025d8f00dabd62170ec0e6204f7bc41947364b3c879cc3be6b0105adfe4d8bc540d8fc21fd2346d4929e00ddd486472869d3ced776a8737d01e8a8f46d421c61888b4656d32c36df5744a8e266f03d4a1471ff1120259b8f080896fe13bf670099c5a6f799406f6b76c0a19a132edd759dc1efbf8c2fde04182f56ba26841c9763e55e4228a79c379cef00341aca00d051c9c312a0620166d31c4aaa43f9f921204b50738d4abbd757ee922542176ca60b7298f98b5d807c5b4f2d80600eb76f03e8778b6363df3e545a7071ededf01caead901ed02f14cab3c65d1c91197e4a7b788c89f07a0ca8944dfa0a5000c4166dea7b8e282c517a00e6830dfb3c471a4036c4ce1f012a62bfbd00d071ed1a6dfa57a56a9281c5f63ce91a11d37a9e010bf092992c69034c60ecb401cc69b13dde2587e158e6c10058f74d282e01d6b94097facb8d5c780150b52b7ef0e80a6c0b1fb6340ed56e6dddbfba15e088c2ea4725505abd027fff0368b04f2f6e0014801dbde91a5a92ae7a404fccf7645d80037ff724206d28bb4b9c871941cf66f4c682dab5c1d98233b8faccfa3435cf04b25edf0100714657bc03a832e3af0f05383c30419004025f8e0d4dd4f0f0137e51554ce3cb1120ad9bd52b40a0dec9d108900b5cd8441f6b0595740b804802eab6ed5fa20c56bfba097005d27a1d40f9d91b3c473b41c06f95bbb48423871f73ffa4de806e0fdba6e82a846a4dc02f01eae0851bee924c69ebb87825a373246d6e590f8abed3ced3a6be986625368917004ecda3157448a041bee06b03e095b9c483c941149a5d80b29ed7b94676305bb9ca5f604f5aed0ae02cb7c2de21e735a64706cc54929d478f9a612e3e32b08beef5808273647cf431ab8a5ef0a1a2f4c6377417a22a42f32a8057e1905f748564244f00a5092dc49d4f01f6731f8c862e5a1ad268c6c7ee5b4c380e52a30e64dcf35d06d62deb5600a7ec684b40269c0dd3ae60afee5fac9f0e797cd6a56e5f003953671350308f5def001ae6d3934f40cb89f7da3920285398bb54da469e3800db6a7f6603b9aba551f5fa0c503cfffa1d40e140fd01801c6fef78b9ba5359221b735d235dfc7605e0cda60baffccb5094fc17047ed15209de3f1d0a9858b6bfe45d5a1d0d8ccc76e89c6af9def48086bb58aa7d02adca439f0002816d933740871fe6c48cde4e913bc154347f01f1fcdc36d97036d4afbf00bdc44ccd2eece41c0e0bb4c71042f50b5676019a941a5e3f3416a4179636040a1eec0c40807f585917a08156a6004267c3075f2e44d5f2e56d552027ec8d003d2ee803de368d7db3b5bf2a017c6c2f0130b5a5601c9704e8eb1cf976792b5a5f0948ee431795ebd7d2e542ae62168944e8d29ed026b6132eda9516db1356f58bca12fb466fe6f8effe164fde25a7ecd60c8fbeb718d6a051a9e39670516560b9094c5b7f797c17b6bcf6a53a4c7d2440d0c083fd4b5fa912fcf8153025cdd53274139813c2fbf20670ac951c1ef4350a98e1eb1aa00cdd45fb727dd312a5b6b506e81401700a408f3e2ceb5f7ae2a40f6c44f5ad62bf7637009e20ac25db34f78e3cf1682a45833d627bb138b6f9a34f3b2d7b172b3c9280a3e6d2c712001996f0f1988135d0c92e201223b05266c04e6b07d0e1a57d9b037ac52a581feb23da83d1f7006cfe68d993bfc086d8056f1b2581b07797011a005b8042ba5feb802c03a7bb944c8e4b9f804ac13e0d80c4ad88d5d7a7458b3ade3461ae801a6dbfdfebac31ee9819d827db92a381990072521db7ed6bcbae75077cec74559be9ae028018b468c2df0330cb319cbf64603d79e55c005db823dda537f9f9b11efdcfb3f93b4c932d8e2b2b6d410dfc9d26fc035096d99b04649ce4bdd8ee3d80adb93fe900d263dbf6006dacc6ff32b021362a0c545349ecd419d8939ae33f0149733ebc01e4d934e98101306db9de40dde2aaa84f005e2e9377818212c22520b2bcfebc0228631efd818146f25aeb0f80399ecd1b0770c449df7d196867e4bcbf3f02d0920f579b061cf658b02d4f02aa3174c8a37b42dea3958b4ac099efc22ff01c9ed384303a3410746abec2730485ab7ff1b6690b68db849d4b005914aee5a22167d72e03d00e0b63be7e6809b33091fb04142f65b1e7032088e288475765b8d8d10b874da135f29d006738ad1e4c917f4ff719609f7a016698a2cd00a5d6994089876407a0502fa78b720e140eee3240bb835fc841e4179e04489999f1f5735d8d9dab0c6cfe383b10a0077ddc0aa067b043c7cdd5a19e9e0530264e5f00da9c9d5e67609deebe15a00977ba0cac7f98ca7bcc899fe1ec2803fbc5d27b06b6d13ca04b29cb26fa98810d8f5bddb62676639b819cc380dff48b80bac70b4dd84d4b14204606fa19d2033b6b02de7ef1c8a7ec4bf3f48edef8508ad677fbdc45d645d861daea3ddb7b0bd11c1c7b2d52c7ef02ce7c7d5603730016a318ddae804db0e39723016e6b55dcd3a641335d63a3615a2aa54abf2825f4f4f205405d3d988ae600f8d8d74e80add7daa9814afbfd7807c0fef076fe9240604ebed803a8af5b7a479cd6b948e80a40fe20cb3c4840251f5ed60d2850383cd619d893deea171107b3a9cf0d80b9f0d97af2b4c5711798c6a76dcbc1f293cd8553a78d95153f4aa040fbc774d012a82c3630580e4d02123533532101870fa5d52f3a0e300feddb4e3d6a7caedd06a824fb7d2180937a3702d879fae306d0a30ab84d130635d0e8408019776919808eb3dfbbcb8000dd55800a1759346502da471d2d0a306b5fee65607d6cfd9f00c7d72b4b80c8d151c1670888bcb9edb100a16f27930ca8445201e4cbb939ccc0fe65ff3c0334442e04086afdc7cbe5e9d3b4e47f81cdb847371970beff234077383bc9c03ed4d2ba00abfa1b4f9a732436ee3360db742d20efc63803b394dca6008e7fef0104620493ea1800cbdaaeee22b1a84ad7c899c24f192073fe9c01d645c8c0ecf5c74280dc952db598f6ea051f5ba7806ee1390396a40780f2f7bf5f00caa07a3d1420692272db4e7efe9e7edaf59c15382e9aa3c2771e013dc70b57310364355b01d2a196be04d0aa38ca4021debf16ece0a65215119b71871c5e64466d34cc72e692fb02102be9173da09694cb07407eedfe1b2095c4cf0b00f398df370b655629dae57a0da005f8e207a09a3acffb000594d96e3e011d73ecb5008d6c2b8f9480f6fb6e45007fd0845fd4130b080926d69080826beb3301e97d2e0074eeb14a9bd6bdd23b7897464db82930a3d5df038014f7f0c3db4a22c3b178ce9a9619667209d082f36e3d28ade9b82ade1f00081cf8b35b80237eddf25e13e8a96bded8d89f39b418c3f13d803cad30e1391c223c616351a0b65f58d2559cf90991e5fe18a07de5fb33a0286c527ae1cb793454c33ebdd057ac62b7ba06d9f9ee7b09d06817ad7f71c4f5b1c3997979beb704722639adeed934474b6788b35068202f0b685bcdcb85d2020eddf913007bccedd33f0221bc7144ffc8c518d88c0c09db36d36dcf33e05dee0538c0fcd05d7a5a6c858b6a5e8f0f6b027342351e01145c0f58b0b31c3361e10d036037dfd01d7268d3011de62f92c909b08aed9f08103bba3306c849fdb503a05e635a8801da9c61c2cdba9942bc79b06ededabb943c7a57b5e817ae08107d3c67cc756dfdfb72a337fea59fcafb4587e9a9b815dd0180cd7b645790408fc2d06d06cc9636b125d38aee10005970aa5d06284fcb1d01941aba752ca0a41adb01cf656c86f76f8064364c4a3f0ee54c6db67c9a023829f273ee92e7c2ef0b801496ef0f011d3e83259b3ee7d93e35ed9f0410bbf5a76700051d599a6b028a3eb6d23571c8f1b6165b2e002a71b0ba0590bcc5d816ad793327fbda0e3112a871dc3d7f0150c173f4c279ae3a7c2de025ef498b35328cb6b94bb20231d04a40c32efac0a6adb9231e375c3f03f0d3b9ed4700da1d7e4a7b64e1de4b3369e79ead68bce7d1bdac8b8edb7adc0cc1e43d13e89494c74543417447b10a2899c7fc0820e978b6c4f3c0b94758a191a5ede24ece0124e539ab353000beedca2c03e2d878d240d78ede01c8c272a65bfc0bcc198a9197004ed9b5ef0c6c42b95807a84ce461254032fe926eab556cf7520073d44a80c65c88361c6f666073e1619101993a0f1930c3f06db356f8519181f5a0620e50ac4231cb80cab47cec3417e22e5d032819bf3d01e46ad08719d8f67ef64f00ebe28cc940619e7191c9203b43fdba009a6e233a6e4e22d9a1d5634f1f9bd3625d4d098c757ed1054726177d4c15fbe2d23d801218e3823ea6ed7d74bc4b9e2d37bf05981c4f6c962a2652e561fa2ca6dae06dd95d8a92f2379eee50e4bd3a0e8022cbc1f0298bb457b726fcb6f1525453c21aad805202338e7c8b6b8074bea7dca5a2a450385807e011f016d6188b7a3aa3223dbfa8d1320927230092bac1ca2226a09de7450fc8917fba864e9a1775171d40583593583439eef30450302adf79db26ce1179334ba97053f4946eb701ba8655824f80dd49bc8f004d9f873c989350dc16efe2a76451981a4e02f2386feb17cc1fc17117af688646bf880a36364360a8c38b0028170d0aac9f710d65f8fbbd5a80f565a500d4ec3c2da5ea1770bcb007d07a7b3aca0051c46f01cbe40a4b2f00c9be6f5d089061b74b4f9647205855d901b0ee1fd3ea811229638b0b4e40a3c1146363a1249250ad0274b06cd10c0968cad9bacec03ee5769301aecebf5f9048ff04282245ed960004a678c720cce5085f4b808e7c8ff7011de15196f71a075100b3faaa734089f9151f053cd2254780b446fffee2e410d076669f5eda7252a4ed2c1e45eea2323ca3379a5006dad8424563aee5eb022fd747fd824ff967a0d91a554e5b629c77ed1a652175a0ef238034fe8b3780a4e4e6df02f4d337b3b6ca326f456f00724339ae5192ace0adce7b028e55cc04eb622927a43f89022a7d7500d04af8612b6159cdd8f1dd8d0032d08eb700caa278e4b6554b7a8715944a406f7bbe0a50dcc505b7ad3ae5cebe00f41c3888d2946ca66458ee0073fc6356d63d01198a07dca556135a34652c9b9cb2bb04f0a466bcdbda50b6ac84a1b33e563aa79d274de8a861176f1e00928ff6367f941e898c78cf93fa9656efc70268ebdfee023825763bbc4b98e05fbf3c0610371e3ff7049483c7934a1d3998047502b902fb3f016248e63cba64bebcd335082a89562f290ee5906db1d8e4e57265c99d0d014eac420b20972758f9ac5f80acc42940f5c5b66719d8d4b7c4ebcb8118b66e32c01df694815d638397cbf52bb160871acb768dd3ab0ccca25fa54be58de6d5420644311e0234396e3c6560cf817fac54d908bffe2a80dcfa021f2abb07af7e32a0c0459b81adea3b8c9758b2ce8df60114d989b34ea04742962f27d595f88f47ef54baf7f4135098e9e40bbe5c57e132e9b968174d7f2ccc748d3cd3d1c89a2dc7270cd31cccb1cf4515471fc75b02140a5cdd13203b6e6b29039bd7d70a012a17bbfd0c6ca23f9864c009cd61068457da4593f521cd2e9b4fab122d026f690403d09c7c02506d524cfcaa6cf119dc3e0350c0f456ae7200dce5ed31037202de01aaeb3505e4439d7e11a08a6cdfdc25abdf3e7c011c07dc8753808ef31f1604b0d856cdcaa9ea82975be6c16ae9f3dfef03648ffd9c6740b9db890017bda08114ede2ace267ac1a0dc29f37408b73e7e007a07fa94700ce80fd030fd650912d986c51acda89d208b86d8b4c60b0721e0994260ae0b66f0052a05a5e072896b6e2ebb73ab02b6c32a89cea25edf35d1c2911e1fa05e08998393c06b027f4b7e653aabc8ee3ae5f016cce5cc573782d49ef0d204bd82f0314d8d6f1f5bd8a614f66022549689f009d245e0b50a7d963e45541727433fa7a4e835e380254c42a9cf12983b27cbf2602ecf8eefb0cac3d167451e21cfdcaa5807518b74e3fd52197df5ecdc096d7355a2cc875b3c6eb073976d9ce56da56bba31701568ff61430d3f67e9e81ad84db4506f66d3f1e04b4e0d0c879a23fab32c0bbb198815939a6ee914021cfe64d06f660dd3803b28e7a015489376e01caf51ad162696b4e7e94de454565f6e974d19b8bd1ad31d43bb97fac9e671c44569072a1d375b523e4bd03f88a203d73cc54da89876f46654f3ceee86d41003b1963a2d2cc1f4fe952d92c7e65a8ff45dbdadbd6852431adb6e050fa88103c8ef4ea1285b2f063f6e9908881d15b674030fa3d403bcfb02cc05efd49bfa0f873b0da8209e888e2b4146020f72b02b6bff5b753401e408b022cd1cf1ec001b73fd5bf282c69e31a10d1ca6292aeb38dbb7422c0313a9bd5bad699d6e73f406088b1ded6dade3b3a7f2d5ddaf060d356dd949892f30e20efc6e14e06f6e8739ea39d1484bef1195a05925bf06402b283ca73015c9d5f34614b3139b7cbebb77244dcd1846e22a138ded635a671e79ff7002d519ded2e80224c616713d02308f26aa653ed4bdc505f7c7d5f91a67646130e6abf665db400bd4bb39081c516df7097a0913de73954e7cc2ff12ea1a1cec8ee16802d60d89e6440fdca0b80c7d8dcad05d859fcdb06e4b8e0870c70a87e6480dc074d984fefa71b02f871fff160d991d99e65606dda3c6680d2e27d06663bacfc64602bd0e14c809dd6c7a24081aa46fe4569bfa8de00b2b50bc68b4ceb70bc2e8061b44213ead43c2c1d00b4bcde1c658056a71e5dced0b5a50c88527bcbc0be8b091a2610151240ffe8ba689bb36f9bc6eb9e8ab0f194b7ed0bb36047baa866cbb84eb7549db360ea2f09f444867eef093873a9716453675727a6c2a0206309ec1bf91af23b9895d34c4b9d15d8504ffb3d66cb0b9be99a9c4234f500e98ecead4d9b9c2e77bf085074d8f11e806294deea040c80697cb50228a4e8e113e059d6ce3e0044eb7bd3fd8a4d5da9bcda3940b2bcb70f001913188a4dcd56346c9b2b7c109dc121c2451be44f5cbd24604946e17d1f40229bef6d7618ceb7cdd8fc4703b54e3b609b0b1b47466a3075e40438be7685f5a0c6aba6f02b0de4b11dfc4e03a83980e078a14966a07d4a53e34bc0a9d2440068fa0cba0b3b8be86d1a6fc25452a5dc25c88629df000a4c59b80154f83fb65601690db251a96bb007f2d53b4007cb9fbb1998b76789af9ffd961b3e036bf5956d012ebaa707d3cb6dea1a9d1273ce045ac22be9c981621d6e81078ba4cb85b50580c2818a02a0fe516d678013722303fb2eab74fe1c8059bd66606d8af7ab51b08ffbda142024608106cab3d4029d2ecbae362300898e23133749a0b1722f618b4e175bf23cff0904ec8f43865837b782a7a1a70987cc8bdf8b1ebe0a30291df1e87f67d1f700675a8cee9b21a682c9617f5580c234f15cc09e74fc722ca049c976afed445be2336bd3644bb0bf5d35a74a9bf6d9363cf6af01522bb00490043805f456c0200185f0de9bb931a8d1d97461952513d036e17d193053fdec2603337bfa3500d11d21f680864da2e9c32480505c787d05e0fd0a5611250e3b517bb9851230558cd1ab006738b7f780b95c0436b25b4994bb439eb4c1fef0efbc7ece9e7cf7805ac771dcb69db2b3187f658048352fd75276c6bfdf0238df771bbb00bcf8617713a0817cc36d1df5919d298226a0d5e3827771816b700cd63a0df58d0cf04c706cdc3a6214c3e71b80a345b7616b54eb0905f44d142079747b1b80069123e8b9f59afa4cf929011da5e18868f359d219af1fa61238580710581fafb600d80e61aa5f2861db923712a8f972e7b447200ec55dee03546a81b0e804d87bb0bd6f03bb355fd09303997eaee5e58602b8d6715b807267bfa602a4647ecd32303b8878a9361f819fd502da67f35db253d61f656073d066930129eebc7e4eeef9a617e629d81f66805376099015c91f3220b24bb7d57cfa7292818dca7f6b1990eff12ac077b10ab9bfc0bedcf7370067f9b8a04b751213bbe0d1bb8a5d74cd64d0e11019bdd1a5b26c916efb2748c6a8eca7a6a9329e3d09b0696e1995fdcc8cbc78bc9201962363bf9f53c6ebf059404758bc5cdeab1ff1607f3978b4694e605f6444f5817a7cdf7301d606938f4ea0d362b107c0293b7e39c880ac23bb8b2bd937f8a7370126fab757408519582f03348f99704d02f910630e88783677f52f12f23131b101b019b9b6c9c05538103dc7c62e87362d2f00b4bd3fd12f1ad5352f01d232792a00f25c3df2a495ea02ae725bb95cfdf20f001fbdbfe75d6a65e7dfbd6660d7c04beb6a0ec9fdec5280c8bf7a0c90b565059412206dcf15ba6dcf26c0948d9379a835ea3d02f4a1e6c70218dfe119904bc47a0145dad3ea2aafe6bf770005d1fa23deb6a19c58783c003458c14432b946e1624fc7191043f204e8c97efab145cbb524c286950aa0c88c357a614bee8a0f7ccab41620a063e686735966e35f066495ec0ba09e7d7d0ff0a465bdd01e79499ad21e5efafca306c0f21afed11ebe42e7fbee1c9075691732b02978c4c7f6526a359dcde842ad2df18e002778f7fc4b96b4dbfe27409ac912ad1ea4dbd38d0098f8be71004f0fba3d0484ca06e1c11e80843a5fac0830e6b619a65952f7885697011fac4e517412bd73e45839557276abb4877c17f1733b035bc4d7b84bf6e3aef0e5f272f2c677c9abc71bdd21bb083eef0038772261056e98406d29603444a5b95ef1a469849901cff1b5d3cc3f3a64eafb0b04a5276bd68e9c25b95c89e45240676bebbcbe3c02eeabcdc00c81c755017bd2314be39f6895e9c3c441708ab97004c8a12b978096f974e30310b18396f40b450ebfde037a25289bb9e1151e15ac04570233e64256539f665c9b614c0b29810a37253ea50120127908400f36e065f17f61053702f871ad7a7a028a3360b6f435be605f2f02142a7a55027acce25bdb79fa46c54b8865f1ad54ac9eae0053bc1b4f478039ead9239ab0ad0bb383d67897562a23cb3c693ea0da6b3230a397409d61e82396bd02602bead8cea6e58d163be463a76e687739fb12e04c9c13ab04780e728abc9f5b8877bce5cb798e9edd32cfe11576f2f40450d4eff61e405599b6f733400182f6f0c1c2c43d33bf57c987804f6900b84c5a01dc2e774b0288de61c2f9a0639fc34b01c4905b5a3d19f016e27d4f0fcaa5d13838f441324e6e2c40ffb89c009467b1f60870cc74cd0f009577bfb426a0432e1a596edbb0e132c0f9570968874323076573146b19582f5cb2b5328b9ac59f9d0cecb684567bc54cb8930b013601a6a8938012e97bde250782362f00c5c37c30e662348fd1b8b429c7774c6c81ddabef4a0ce703a68bae32953377a77fa93b9b4fa77ca8ce59f2c688433f2fd3da991245f4fdcc6a94397c9f5ece8c308d803470ed1aef0005939e32e5c8a475aff4b1be8fb66b5c5c1330c7aefb9e081077e19632603e5dccc064df3991f8d341b3720d435d380e86acd6511c4ac4d8044b24e450bcc556c2e904202d02f701a08c9737998d01b08db47ae231ed44f1a14c3633b0ee807b302864d57fff13c0ece95601f2279fed656096c1fe150047a6b792b90928387feb1640611a777408d04c479ce350c0c146f68a7d86e1700597eb3a408bf8cbad0056dfaaf5e4346c69c26e17a07020c2b383ec5347d46f6874512c94d064f946fd8be320c404a61350ab9ff1a172deeb8f7dfdd052d6cc6dd8c4169cbc2cdb3cba2b4c04d04ff8fa8e1aba619f26748dca10f32993098bf569d35632c7d01c368dbb415e4aa791fccb9ff5f9046063154ef52f084dbaefc50c6c529af1fa5ee52b0ef705704292601824ee1a1e75d148865d740089aade36024c28ffccbb31d4a3b359bbee01531496eb6b807224e6f4f5a07a49dbeb022c6be47afd49dabdf2b1159ae089400c21d73cd8cd809ae45f025cf4e01de0f9fa9c37846c1657b4477a19729bbc007106eb33803afff9420696a339527bf48ae7af32206b911ef4975d7b9001a9a16f1970e2ad7f21e92a106710725cf0c633407589979632b0462e040a894630e6626b19fec9ca022014e7be99a52229cc9ea4cd41f7cc7e61e50863e8a6b69188df5ca35325f8653e65ef4c31c599385202b8a0dd5e1020e42c4e05cc8d1d4c5f6a009dcd412b3e0362153260927e36db219684f2f8c51140164ab0ee306c1bccca21bf3256c825fb857580a4b0993f628e33206b31568a0bbe6801529c36b5a4048274e15601f29f5ecd042488ba09c8322c6f025488c18b1febb942246e012884f88b3b8139c7a453803c2473da236b64927f3b1cf19282c873e40ab944cc44cdb8bed90794aa8d5e033a4588ec027af2096f6d628bc9f8c6a35800a6054a255cb4d5444fc74d80979b7e0b90fc450ecde0eab5558cd8e2e82494bfdd031a4401de3600ec1be2cd93007bc2cf2f4024c4aaa5c51c266d34ede30160082cdb6c19fda4a0f2399fc1cf1a6bd3cb6b80bc2cbbfa1795de7ca4d53d0a87bed5bf6883b77d20802edc32efe209e48a1f2f001db5ce02404e2647a7f38a3320f66b30b76cef81b7389939b4e91f30d74d2422334d0e74ed7d5a2cd9ebb6eefb0a202d93cf154061ae70b7160125a6c2e41ea0c88c655a3dadf3b6449fd161021a9961ef3103fb946f1719a04bfb22c073ac7c023c65011632c0edd2333be81034c6710684891f6480cb84c9201f823e3e66603bbeb326031442d41e9a949a870cc82a51137688cebce9f5e5e79f1e0b903b8b3852fc5b4e78fd1cfff18fdb662fcbe37d06d684f7df021c94b928c040ae760025438cdd6b4cfb5dbbcb3163bf2bc8e678e4f5bbbe25288dbbc887e29f05a866327ee5b6ca2873bb34725a3dec536ee95f7a4a81b565063639ba65014b22711fd71910f2be9b81050cb9e30c6cabf1d109f4b8f6c61950aa763f03eb748f2b19fc3ed87839df85b7bdb5f1d295b807fde11240b54991d9e8d2bec1fad8e107a053656beb855d2565c1ee5c80358a79acabc8cff6450940f9da132cd8e554b7a300d062713a11608fbcda03543613cdaeae52bcb6cb809a18561e3a01c5908c9f0012653ebd03445e1f4190ae22cfd32feab69c69f9ada30cac3d56cddbd3d528a4bad30840182d1c6c02e45322e161d0d934cfd5bbcdc95d2e31bd468be5ad86d5481d00c3a3e1391a62cfc3c65e0636af7f8d011d93e3cb0b00b77e20262f01f270bef8fa2d91a1fe927769a58ffbba0aa839bf3de44339e5bfdcb402d8ebcbb4ba978a66c1a37bb21722e646f797b6c7a7f448b687fb6740c321c6220fa6f5c5f7024c6c8ef3ec04787dab5a1ebbb47a98e5f8d201b2ce772d3045636605c076d6adee646083f06a1b204d15b4083a9ddf8605fd42ba3dc5ba00e385f0b941ef930cbb950c6c57b0f591817db90d3e659ad70979bfcb802a88eb19d8bbb08f1a00917fb4989602b73e0768891eeba2f8fa7cc16da52a1a16688f1c1b785766c081ff4106d6a5166e0518735676770066d18703ba4316fe265ebb8b747e57d34fd31022ce9177e95a8b3e8e1ab7e9756d98eed1e9fa297af47d0128ed64d511eb3468865a7ba01cd7e50a0f5b3f0256a22d7276d2695e776beb02968832fe79cfc0e6c24f03fd9fd0c23e0059096f5ae109f4b2726c72ecab7a8e176e05a0aad4652fc0d2787f0ad0aee0760250b6e0f811407d316fc5a0625fab3ad4dd0b8022d4a1ff12c060fde1c16a55a56e97324073d88cefbea100bd3b78024878e2e013a0ac12748cfa56d5293f0f013a1a08d7001dc53ff1fa6d45dec9f7a6001aaa1bba284d18be787445aa782bf9107b8766a827507800b6ce5d158092c083ed2b80626a8ef50b253c5c74008ac83a1ccc696b4ae87dff01089c7992d6d9e76897eb2340c77431d535e421b9b769abf7d2caea2e052c2cdaed4e0114820bf33d403ebee62e5e0931131e4c367f7c9b015ac25faedf05d8141d9d033427e375eab38ffe6c4780b5c1e45f13d09473bd2b402f5cb2f9b4d7ac1d7011f479d6febc01685fb939cb80908045014e895b5a2c4fd2477cca90ad8b2e03fad8928005b679a2a0fba000bb85038026fa733dba62bfde1a800c78ec8f01e070bfcc00dbf218c044ef0ff63330e7ceb6fea5c31d76c4fc11f2194e9d017bd3c50cece530d0fa5c4a106f713f8852fdfe62850e139587835e4e9fec0d8ee36cb64c139f95e1093db7ede756486184bc672fe33bf47cfdbeb0104dd7eb175567a71a970c4279e01db12cc91847c3bd6796eaa399c5619347ef3bc2a277f51c79d6de12b09380b8a4bbc8d6de6832302df9a5d70c908ffeedeba95f7784df5e4c0c4c25887a7106c8e9d84f064a75a9fb4d004ae0fee300e099c6ad507102f80cc2781510a59af060a042e9c87f9f0a481fe60f58e7bfde02e0fbf42701a0a88af35d40cbd4d72f08e0a5b524a30464c35c8e017275ce755119df166e3a005cd0fd062030e35aedb801d01e67fa17652df6db06b2c8fdf32d80e385f0a05f382200ce2f01920df8ae00e8c17a37359063594c426500a4223cbe03549bf44bffa2e9f382064acb9a4d6c665c25a033cf951aa016b3457c00aca6b7023ac1b394ee0464af5f9c0a482b7cdd404b667db8be02548a84e41a6d4decc62b5fbfc5031f6f01ae51cc15d7488b160e110f08b487a37ff80a0fc9e737a046a9759b4fa912e47ec687d2916fe8e8dade63f31f2c0134d3ddee019405bede64601ffb69450057d6019dcef7aa4ef96c2010e4ebd6f90c7221c5971ea0730f7f03903f688faf1fb0b66237cb0039dc13805e6ee520037b1773117483f6b19d9dacf35d24ae162c0aba9bc897e3f73e33401e872e955d371a62396ffef252004ba9a0afeb68206ceab63d92651667d00dbac5801f808ec15669e41c80b9b203509d7753e44a40b6c39900e9c7eef258a0fc9da546157d6cf8fb7ddb73465437b73a017ec640ee5adc2e0bb447e72a5b70a6cc855d571320f36540818f7ec6049bd617d4811e01592e888fad889951e063e7b41bf3d10f319d94ad7ad635fadeacf18f3a0373bbd4bb1970a2696bc3743e55d51deb96d3accc61d5c21390da9ac51825d029eac6ba545a5e585fcc2df70bd8cd2f037086ba935540f6b2f400453299dbf61790dea17fa14e80bfb80548d2ffdaa69c2c0f1c2c223301b92abe9b0c38a238cc805cf308a00779cb4b1a00a5d0ed0033010dc287d70c6c82fd3c01c8dd61c50613a04886af8e33b0cff0a4bb209a191603a0c7db331d1968b47b7dfbc8c066ba9bb100bbd7fb830c48da5ccdc0a69ce91c50627e597586046a62142f78522d16ce2af70c8079ec9d2fd7d03f8289ff0ec0965777f00f202fedb14d06d356d92d373c472be981099daea53a43306dca6eea94ebc58c3b482e23e443abbbd60672b07887041c1babd547403e6de26d9d3421377839afa89b8d194052d8ee1da0109a075edf632a8463fabac799117a4694c74fe74cefa29b0632b8dd2a1d37eb3a59d5bf04309ddc520dd03cb67d0160fbe69b6f0047be61ee019cef070bc0fc051c2ef519d8c76ef9d80a6b8c1f8f19e03da7afe7401d8ddb1c9773f0910159147c6c95c0f0db7c4aa9beb999aed1943c072f17b35f6a1b10a83fe7684205eab86bbe5c3737bf763079be046a8a30f58cecce35e87f987d9ad580fd0edfb69f35bfd718bd3c0af4a812d361fa796b2bf23f5eae2f49213a6398f695052dbae52f4023e1cd5300e1ea7185fe916c7e5b80bf9a0cac099f9f045008790d19d8a37ffc27ea2c9663878128fa31b34f65d85e8699393b4bb65f98f9eb9f277dee4dcdeed4d816abd56a889e9b45038e7e899c8fcdc08979bfef01baaf5c9a074c887078b40fd0c276f12480d0bbb0069001f75c6c7cb348be21e2470c800e8cb02c671deb002ecccf57001992df7f03084d9123ca4807e44ef916079a41d1d7fded0ea052a28d47019c36f304a0f5631cdd3028e5867420e010a11700b40a396f00e4f57cfb214082e011952b6b7970c7f63aa8861364871a80245d47de9566f0b706e911b40a693b86f62cd62f16ccb70065868b84851d909e2e42b7ce4034505daf034ac9daab025c4eef8e009a62cbdb0651d246ffc03b3fbfcd01b82bc8bb21080c324189aac5078168b1fafa0e4052883c590690aea11a6d09f0d2e773015a7d44bf6425f666e51f48a952df50d2ec88b1a706f1d20b154ce1a4d6688fac2b8aad3b0382ff2e002a05453c01e8daf8f8dc80a8c48c64df790ee94a8bc5dfcc973f3576089b837a18bd5fdfd373cda844e7c8446ec6615f58b34a0d9a3294c3bd375efa17d5fc1ad0cfa83b06806119ced60f27026ddc379cfe00466de4681f3191ffc451e6add41d73ff582e1c4aeeb805e4c85c5c653adb268911eab8036d8e16db3d17a839352e18c480593c1688753d1dce19840ee5f5432064dc9a43d10c842b53e8d87e41ac74b7670621f36fdf192016c77e3b1c2be8ddfe2d2049a9f20c6851634f623ded663e1a928f53808e2b11f3af195aa4ddd913c06226bcf43aa09cf5a1b5ee805cee223de32f88722cbf0114e9e8f9d620feb1a447b49e9e350252dbbe0070524c193055c436a6d80c446de7ee01ccfd14d6d8bf20d6f5ea12a028ef4709a020f757ab00b4d6e9ee4400897e5c01a60835cf0299a03391e9aa0364face0f478066c86743b61c168a6dbbdc028604df0b8bbb0e683d1d9d0aa0f99e2f00ca1a5a6c026a36adad0d00eae374f60f2049698bce2e49f89117e9db528bc1678cc261a53d6ac24b2b274fdb3288baecec00c65853462ce80e4850bc3930e0c8a347b826cd1a8555312106c036a01c23385f0192f2acbe03a44e3f3d350855f81ed3c3fb5ce46d9a011a687d2810a14b52e4d4998109e65171381ba679b900309293348adbc78029ba9c1301149969f94a604c1a51a658220d608eec831da8a4856346a5a49b44c67aca94a37c0028ae53fb2ec06cd84d06f8cf85e834ccfd9060ab8565c040738eda3a5f639b0153e55df90060085ad73d40295f51bd54bb7af92cc0e5f425c32127e55a64c038554bdcf0fe82a8dc29eda12889799716739a958d3901f4856bb45896b2ab5814401eeb314deb4164314b5fac30f524bc4aea7fb4c72c5ac5ef2399b9ef43c00613b9139e885ccb445690fb7ae715508696a57abe1308d1ba9eec03925c996864651199fba109658b9f063cd272a1dbfb7c15d0e5015f69738490cd7e84302cd5c200d044d12b0eef1d4075b3cb92a3c423f96757a0669f9b3308a54a511944f597b605b84d781e18c43f3e9704e27aa1b7f360104ebd2ffb0651fd9758b547635cddd2e95480ce8ea0cccdc871aed0f5750019f7f307d067d5ee350005afe09c3d8b381d6d5a7d02a4a9f97805486354ebb30ae592f595093be1e1a2006bd0ea394092e360c720f6b98f0b408120f0b10ba8647d5c03b84a4b88e7a3899c7a232746071ade318cbd72349d67d9daa2fa53c5738c4cbd1d9003d9ed1c8060fba9a2e853e4d3bc7669806fc200e0e05954ae1371e31df74f8001fa8f45ea5290db38bff4016396be88f2de8182c5716b53803665468d8a92007ef32540ebe9d6b60057038b4340e6b3cfd4b66814939a729404bace2b54bf2c95ce94ca9515faa0ebd89246da4df390823961616477e9809cf1dff70063ac07b7ff09844e2985037b074a0556d43b4afc6f578e01321ad85139aa712c9f35fd52a1ebab96f588025e7ec63a364af3dc8c8c990d49daafd51f01b6e84fa6471aa0ec2a1874b264caf51fa0c50c4286a97b3472d20eb47d0428f0e01e33b4bb736588a3a77454caf208d912e0a415f7953340676fb05ca41a112ed2ba7740213232034617ede9be1620eed715204b91b9c423198bffba4e060c189ad081d150327560c4aafd0618c90e96699a09b450953b065853b206592d77b666102368f4f70fe453068c2f64c25576068839dcd36765d3bb766710db6bf107e291972b01f5cb354009618e198532c2aa7bef063170c3777606d8d54f557416fa3a72facdf28bcb9a6128c04a97f9ca2c3fd4ef23e906405cc954b07bccd43bb1df3e031a6daf4cb17654c6d6f8b00c181390ecf64940dec6ac410e73de507ddfcd6f333dda3a475dbe59c77c365da4d5bb7d8fdbd9d280656b51a0e6c2bf16082bd7542d18c4c9f3fed68053630cbaf13c91b0aa0855da8c1dc32ce2c37420490b7705908076b60dd045fb6400e0b22d855d70338b7b1e1b4ee4a06ac6ddd618ebd8c719c0297397005ad7f39b413c525500699c9b790122a38f6b8024c7d7078002b55cc572319e725b9d9e0f0458b51f285877268c5919a1c16780ad20329f774067c2f37f028a115100b87fa98e28e954379a3f8d001e5468bfc64e2cf119bbe9b8902746fd0ed0eab0bf057084f635004976f21d5f29a492ffa2a485b2da8fa96db7cff1d2902ec6e55056042f00cd7d6e8a3a80acbd4a67971959aa793788aedca7f74b828ae4772a572908f1233dd7c912d1ea77f7003917f7a6006d272ff44b356161c342645c4de5e5fb097066c9a901ba9c670059765344f768c63e57a281efc024b6b5fe1300a79a6a836e48ca7217711566604c0ad07b8170edca9f74541a8479547d9500233cb8c38ebe03e3116ef223c00455c594ae4c843fc95b2f02d350326df700688c6a04d60e30d627cc396d9ef9df9e002368740ea895c49ebac8e42c656643d61578fb6a1057368bc92026f2b901379a1545778ab6f5314043fb951995953bee7a1fa0044ab7538328e9f5b1411c78c315b2038a7fbac5f8c80423acc231a719db286da847e47772cfc075d2764e9eb3506a04b96748d50cdc7cc8dcaf4704aa1d51fd9ad4f07985e1d0cc5738a2bc1bc4323e6122378a91d9505b397de74b812a42b7a6d37540cde9b5ed03da78241d3392dbf992a8f7cb0215f194ee004a29d4677570c4fa11a3d01b5fe4f5ea0071377ab7d4457adcfa84e9e16849fb2c7d6d1bdae27af752203c0e6bcefb635d50e5d192417cf6445f910348af674080942d8368d323bf23eed6eab91d83180eaff706e17c7ef06040f0bde8b9495fb3e1a80718735374196d3a715a11ccc5260af7d11d4100ba9c8e1cdccd44a7d75c5f1910ade0112039e8ea4c4051efaf0cc881b90518e07f5be92b432943b300dbebf7a501d97e5701ca7cdedf014c1004dede04b04f8e987f1dd071e58b169b68276cd60d62b3389e005872aa7123c0acfcda00e856e37dc980dd835697674a750298caca24f2377460ca82b2760128881b782590b0fddad03bb2ceb7d7009925d5f700193edebf0064b1fb180bdba418462c828c45d5a490ce2072e87680234fdea2e70a85b0ef7f012ae4645426932263c558de1ac48a1bd6a51dc0ab357ffc01221c0e007273dd19021408ec9d21554af5fb8fae2c496d9497ef0528d8eb22608c8ae0ab06244e05b78c42aba08721c04fba0d3976b1c8ced001458b4e3450a5d8b6035eaa6d3e4d68a04a279ca57383903f6e19eb55262ae0612c6c93a4551b95da244d88c0fd8f164b44afcc1b74655288f22d4661aa50da475c960e24feb14b9bcae63b5d9e1890f87d470051728d099490a4f386de81cb7f156eae33bf2db9aa30816c048ed6ba03b4d8e19e41cc976d1a287334af96370d622ddc657ce431b7a267ccdb8c4d6f5dab1c85ccb3cf0c0856c980c9329d3dbd0124fef1ef1b20ffec8a952e132d29afd0a6995baf7c40efd7c43fcdeb0ca99ac81cd5b41290d68939d78dfd180e2396e09a509469b26610fd72de13d080619cd6a390e9ea7b16c71aed57e6826a32bb2bfa7d04a5ec64f68bcd530003bbea807e693af9eb778fc21261a2b369adb1eea8b37d1ed1ddebdc80b92f43f2b965d60f6de27303960bedc8f9f0075036e44dd80650b039343513edd9bd23bac1010d23944be37c0519738f4e2e08a1a63add10485821e99136c73fbe0f0ca2c5462a7a4b80832209342495b93588f574f353004120ef19448eb2d54783284704a9fe057139cd09786251e1f4d92044859d7f06717d3db76b105a85cdd6206e78ab45034ee2b1bd4ee709ba5b9d44034dc73290797c05c8e63b82bc35b32001b1594cfa06517d6c59a613b264a6e343805e7a7a0ed0c17bff0f70ac3e3388a52ff5005a603f9f0124a6c99196680690714f27808abbe877bdc3fe2fc700b920fec42a35b36a8c7ff49f05106a229c540708419dfa1f00998acebd03b49b46bcf10e4ce4bba277283478fd049073e0d509005d5fdea47272404df79b00651e5d3e10c0fd678bca15182ee58d798076a0233aaa20e85ddae11f250130f2ea3f005d591dd01e25ae3bd501ef28759378b30ad01a7443494be93e912ea6d53cd2c5bf23c0981090cf3490ef6f13c3c1a7e8856303222cd3d9d638573b80664018161a5991d2d2f1bc0116eeb1154c15e53d6d2d0388e39c3fe9ec24cbd0553da204288f9b0638f61d0890b5eb86ca25191e9cec03244a3e330abbfd16c3583dd2e21f75c24bb5dfe62bded11d89a309b9159dca8e3e631d3603a8c332604048bb9302806546b5f40742743a9902e4c9f5726a107d7b3b024c1513612c805c1819ea3a50a0881832c61cb727fd016244fc0814b1cf25d62019e757a30d01a6298bf42cf306817ce839a7bdfbb7684040d45d8121a1c262cf9ed623cc92ee28d8ccc1e3f71d936bc0948bd43efdd2e81274e70b507181c97df6b4c9a4f2d96646354dec2f3dce2f53eb82fb54ae13b6222cefa815d06eca289461fddc8846f6065c52f46e030ee3c977bad291e22f5961ba1d39bae16c0ea0edf584a9eefbdb0d4ada366caf0b6702fc637e09d086c6394f47023526675f069cb30b83907127f70671cd51f40c8863b46d80e9ec87406cd1f5d2ae41ec73c59c4174f6f8d38055fbef1d715a4b6a205c87abef6c10d267cf2f659bcf2e3a87f79dbf7f44df62395cd8db78bc0cd0a6b57f06902afc2e5687c247f3b706a0404fe5bd01b99ee700daa3c29df217446df79300a2757d0d70649f53014ec05c2c170e0951ab1c0ae2f5712e405dc241b9996511c12aeb18207786c819db81c48ebc1803a6903b4375b207b05a8e924ea70433fdde05549ca35ea86db7b087441f110f6600cd443829363373fe28073646858221a7c36d800e67cf3472314537fed40310732757fa07278b840d7c519073badaa7b6a5f2f21cf348a99e7bdd33883350f8de37b37b6596e02700f7fbf97003209de3c92b40ea8ee121407afe572a57ca74a5a4faa522f9def08f6ecf8e853e8221774047e2a72380fa250d01e8c6d3d99b00778d8fd4568aeefc7609c0a9a6dafd033160e6639b2f523f8ec4a9d901c8828875ac509cbc6a6313e0800f77026c16992654e0bc744e47253909ac950624827b14a02b171600dac4ab798032a0ae5230edd9e9846ec8d2a0cd3506044465de5aaf7d5b01b0fdca37142c130a3b5f1d00941a7e7f41800d782460d71d7db64065d2d73f14fef57cd1203e5bd2d90eadc7325e6469d09aca0039685700f974a87f64c6a95a5d96c3d5ea2a406d1a29a69ba2c6c5aceed384cd544647b47ab7bd62b478231019a5eb88c23b0ba91287a21a05626105331af8420ae6d45f014c2234452f927475a08ab3580fa79aa2cde12ed7e312b4d05e594786ed0e34b159ccb1cd17de2bb7fa8036456dafbf058877f13515604b9a3b11c02f1a33bec2a7c68b398310e06f4f0dc2c6b9bc33a0b6b19e96034220a4add81bcab18643a46be88082897dec018862559d6c01a4643a5c06301bd2690cdcd2ee72371f001d6822734f07146b2fa257766084860409a5f40ec415d60c10c0ef0e4036823cb72280a5fdc71b40b6c557ad00378973eb804a11fdfe01b423731d574e7021aa303ce88054e18f06d10d470d4063fd3cc647b768a32d0e97ff0e28693b3b72d9ed37048b1a0074685e3d1060f37cae01f25d595e3588f9f24c6da72c7d799356774eaefe2780a52f357b02049b632b28a78d42418d0450303fc6d09ea5bf89d5f2e84880cfe65b80ad2a36015ac60ff40f9d3dda7d03b2aa30c6baed94a0ee3d008add7a2e5698b254d8333c52671973c879409b963a465eee1884c0faf302c8439671be520dc6844ca5d5abb1b20fbe02749c7dfd01c89e8e4bd0d2dae21f03eee6d9e6cbaa9d2039322c9d88f6b33588c3c81db321b115e4d11900bfe884bb6d99d008d4f8e194495e8b384b9609ffb96a81a25b7d3cbc13e034ffa847b0f9ae70cce90091f49aa1014edf2c0659015270f99f018e5e3d0126d0020d245ba7dc3c09a083bd393208f9639bcae521370127fa2c19d833865ca51c73f21a83ce5976db2440c2a06f810942def8510043f2fe2240ba8bfe8f01adbe23c0c09d53c1a4db1aaa1c6caff5b500d6d8794f9f957d728f77d40aabb914db49d9cdcbb072c531b8542ef0de1b43db27cf576643db2fe2d438b816d0664137b4c32afae541604480a5f54b80ec94225d76078a3814a5010b4a9be37cdbbb7f10e02b3facb84e44fbc3aaedd4350db5b56217bbe0528add9c2f0d88b6b62c1069cceba7058106fbb1158358d86ebf0da2c5a6530136e0871f8338686e8c0c488cb76f105bf4fca90199031b83b8027f7b3788f68878d24d352fc3fab36583580b4f623854fd79e58d8cd5a15ba4d8922e621256636c6a5204bfe9806ef09ecf008e741427cf593825e23bec1bc4fe72f162400ca24b00190cd3c52b40dbfcf3a90136024b005d1dddff0850f4e33580ce40f71f065197f50d80c327bd031477a3f70fa05959df004a79ead4003b6f6c0214b639124bcc00d1a3ce2f0c627b5d8f6353a5d36b7a3e1150a478daa33bce92b57c04d07df6cd5040f1d8d6010413cbef94549b787aa31c4e3a3417f3b6d27e9b2afe5128d1f978518023e0173de7fdf6a702b04a5507f7006d5a9175b803128c22fe5807148577c0c02da4d74643529584b6c96b47800a95eb7acc86ca16cc8b7476a5a8f73ddab4c24620cfcd0154f4af5b01fa8589dc8111e1c668f5ae8562b59cea1db64064582a1a70cddd5a25e79e1459ff3a4002b6fcae7fb4a4031af2d2848b7b4e4c201d56f373df20dae393919cb0c6ce133a2a398ed1ba009d7dc4f44814bdbefe03716cbaab04d4621380fc92f06aadac60c68a6006a22b0f1852b9afccc5df06216ef45850b20ceb4f7b00699d8a2f032261ad02d41e671b06ac631702ba155d0148e67fd423c44f4e6525308e6e20c64c6535f6d59e4108acad6aab104cdbccfd8c8f5585e95be51833c39e01e160ae003a364d9e0d30357f33200ccb2140c2f72e1328e708f058d774a562b867349b554df6c1dc50f4595a88dfdd63c404f2756dc167a51caeb6e986b60a07d4b96526b24faf68adabb609bbe0dee7a200ff7862b3e8f6ac5086aebd0864920d2e188472e76420108946ebddd2200a3656c1e4f73ada31881134f04b9b18b85a82955129efac1ac4676f2606444db8170891255d3706b189df8c0d62ee7fb9e8a1e9ad2f6e0d48417e624068f0bf7fc4248cace5bf206e6797dd62f44b3fb6c624a3e71c49973be084ebad4154ffe61d20432eccf767de0ce49b7f3520c65d6110f2d8ddbc8062c93f03b4670f2606d8b0ae08b04761cd90e4b994e67700cedad51ab01352b9c958daaf468049c86d42f2b5f1c51b40aaace60020ff97b90d80ec82ff95003561a597b65211a8a4ca9279f364104bce7d4cc25928466cbe33407ababb5501ce1ecd1100c78beaf4dd800565c520d6d34b8a3e25d57552d115d23fdfa91c5376c2cd6d80979cb100bbfa336d3a25ee79da1f0094c9e8e102d068a5a33da60af2d6af0cd8b363aca74221203f69b182dc60f9b60660bf9e8a9141bcf49e31564c709959615816cae6fa7c2d4056849d4b00417832eb692a4a24d85d8aee106e84ea484596f520d52f94d46e9f815b3428badf63cf4e0a91911e999565d70f313e76018a1bf8fc2180f7f525452f2529ddfe00e46ebba147a4a347a5964acdfd46ef60aa674cbc53a9f459d3c6209a90d0031d1861dd112b4c92e774c22e7896c52b1477934d8046f2f8c320bae1631f2069eb8e916cd33722b6a54afe519f4c8f4acae1972140d6c7cb2a98d461cb7b0651b9d74380f5eb4c8f44a4817c3d12e00aeb7353403155fa00dd25957c250db174dba53d1237567993b19e64e2bdd903688abded084413e6f64860c2c98291ecdc0bd8e326e75ec02375963c2d3a6a870536b5f8027ebe0be0f9882d5cb2c5ddc222401ab4836410adbe46399c4d0d1f9a5936b578646d6a10ad7e423914932917b700ae7daa65dac3f9d656370d420afebc0248da2232c70cc4e08fec1d1dc05f2ca35548d9319899d976e9defa36e08af3c420362dee0967d9d4c20beb9bae74664976f554370d77f32c28b3bbb358fa1e00298489b9b1fe21b1a71f8aee248548bdc1ccd6557cb5cdbade495b21c2f5b70df0f562d36ac7e19f5d8ff4d231d205e6d9b34c6858c9eb1f650a2dfedda5802e42e8ecb64ab1470d18306d0e49a95e619c4a1ecbf9c280f5635e80cbfafd1583908308a03303782c9f18c45a4820c1e4cc0a9c2c9232f7a4f9d6009f910583500fde1e1a44c1b65f0542ed927a3b063181567a06f8135606d10d04ce4bd6c30c970d7e8b3e8713fc5f9ab7b3a87e9e9f7213b07f0028d0d2b2c0e6b14c573ede013a24121c69361962e06e5c00346fdb45839840cf85412cd2fd1380e4b148f534031cdff237403a945e0b90f875fbcf007bdc5780f4c95f5b0099f21c4f019a95dc79ce32c3617a7f6b1047406e67b3942a69791940f0acfcb50d5003adc6bccd53853e3a5d0228afe8eabe00b2c32a6d3a9d6018bbda074c51634ff5082e00d534768f590e482e20ae01daf8eee9b9427945e779871422a9a2e8923faaa36383e806357251a21f5b4b02ecfb91cbb799e59f8b0b887dbd54f2e92a5d59b4acdafb0c9812893e9ff18f52a9c04ef40fa9d4fed1844aa0947668205b113c560004b4ea80ea975c2ee5c72420fd3abd5f4e890d75c0082a95cd7551ff204248d56724978a8f7bcb3f2a829b24022ccd32b445ab0fe9174579cfd5aa400868756f00d058bfa16fab0297ccdd23005e1499b067d9c2c4664828390d119d96995149be5e9bf300db9f2601ba127fb16cc9a0ac018a167df6201072617df721302215e9254092c11c2d96147b90103b39394a11f3a5db4fe2e08d91cd2ce2616c05c7f4be2583cf5a0019971008d97606aceb33106271de17c0af71f20918d2a697a700190c11e52ceb76a5c60c67066275d8d367c70a9af960400ebb3703fcf81ac084d3ebbbde3129b92ab901c8bfb2a02b65f15f4596886696179024d46b80c44ab7f16a102379e1d02086c3d63d20a3cbf95049db2161691852b52c6616a89c5d00ce9973f59034c42d4d581711d42c5fd0c8b34bdff807836e36734398a06f1da865c412fc679c1ff258766034a4addc892c51d2feb201ff609f930c5323f6e43f9185166bc75c0c6db337383ecc1c03a69d226eecb3d23957eb1e0dd4562dd9290f0c30495c07e40823592f31d6db3a8c05ab15bd54c1e5a7434013a24275f4238060f44437e8daa7fa3e348841579d1a84fcf17d6c1005e39890655fd81d2f0d18b8ab06bf25ed8def054242e921d1674928734fb54158996c5c1970193b368897627f9affae8e7a06d12f8f67065cd8c524ac07d2d45cc456500fb56cedfe005861aa482ad3d46309f04405acc70a04b6750e48ac0efb15009ff77c1f424d6daf01a247d596723e3e005a83aece0d4860f02ea0d0be97004297a4e30301828a4466850ee81e885050b5554818c7d5723448d86dd5d62915e706215dac1f0270bacaed3240073ce26e7400c9e0641ba0db046e676b273ac7abd54920d3a7daa3c646117fb15a8aaa8ad8d8b3a8dec4fbfc044855b1fc24a0b03485c090be1d01acb95a37c0906b4d008dd1f28a018e17f48b034cdf3c0a10e89a234f6d9788976f0116c7c8dad50179927f0a709eab089f544f33ed11a99e3a40d88034172b7f5dcc2bfdcd1c0097aaaadf37882175d60254b0b3138004c5c86cdd01f5ed6a2920431d664381875dc599b02e48dc9c6e184185025d57fa876c2616af00d2392e52b092cd227f32924b8235e4353aaa4472ac7b1383f8c79026949967da66c0942df172f698d90eadb7c9ea500de25e2cf5990d153e01f985c1ffa7ed79169844ab636354cb96a55aa61c558544ffc4a0ab327acb4c7ba4f911997b68f5a4982a6f9b8081e431a658923fe12e0d647b18e217d60935433a629a3a854eb52ea0ac19db06d8075d000afab66485490401ac3f18ebc931331a018cb0d655524535e7aec099362bae5b6a2541a85f997396c738acd676a73c4d063192db56000deb4b36c086552fd5d5623d27c02a45dcd15a0e2019e1fb2ff56624a36c6ab9535623fa25e3fe53e11c584b5393974e0de278bf5109d01e2b0c294b5b6f3d8130adae5637001adad5102029783fe4a0baaec2d131b7f49c8313206ed4cd7442ce14da74f6fb6d750c756acb526306ff9f2c45033958f6e619a05f9046635720d224d43b6f0215d2d6aa805ecaaadd0e88e58a8b6a6df16b83ca59745aa22e8e3afbcdb2d5e690507a24fca8654233f7c6e0b7b929976db5eee7aaef7d83287abb2910da9eeaf2420085d9f8c8205afde0d42056eda70583d82bf7f60c421edb52e5e45641846527d6ec692794d8935ee70d42ec595b3588ae5c1b1a847eecedef2b98d0c4a0eb0e8004cbe6eab9994fdc046c456d9bb16c26ce36015969ef9e00724fe70ea75110c07c1f67b166e260a6f300bb0fde0174277e310228f8deb31e298728887e00191309dc3a9b0919c7d3700ba05bc0db582e9aa9ced9e31e40c737ec503a802a8b38461d407bfe4339a652ecfea3a40ecf7745034d09cb5b9d2c010a25c9d801944a14b806908fc4d901a0a672df314e1b87e7bb7d04707396ea3b01741747028a904ae48546191eaaa33380ae6c36f6013562e06516e092ebee08409ab77c7f025040a1a73d0156fefd980d8db42cd5fe8e015112294739e60848a4d6991934d1d53f00a4accb637abfb4b57e01681885931b016c9d8e68b1bf18bbdb0223b286c6346daa7942cacc53b94a377838e436d514d5cdfb1b4022edf8da00b7ce7500d63ff9fd4e40c191e240d3f84266634f804dabc7a0b381cc1cf336c9dc634a7b24b92062ff310331d6a7ef021afcf7000902ef2f00c27ce5757a3f91403a6fd395b2a9a9d66e0494f9eb4c00996e8df6b02e47eb874c67eb1b951483a18ab5b071b6bd3412506c39fa25f7397b5cf0158b0aa7950186b1c920862599043a8028b942572a2a60bed457d4ea25ad2e37939a4bbfc641008964334bab1a13b9645876a2426c056bff0cb0cb1190c3d42b533d1309ab226fc24c8912ebc72313a89e8fbca2d53643bb1e302c09c8de1d3d49a371a5478a09ea52bab25b61e3b39a2f0d3a83b9312bbffd2bc7b49877e48685be1db3670f6864e93f72fb0098c649bcde67ac2be241629b6fda3292ebcdad33d6bb9d11bbcf4f038c6c28fa2cdd5e6cd19540151b5f3b279062b940473f03b11672f7da38d21191c01bdff2e4be415c956c0d0c8872f6cf2046617526d0207caf1b848df3ee85410813a37d83500e13e8a9910ea53a7f3788557bfc6dc0ddc99a41ac96f83437b6fe997e18c4381ded1ac41e757f2080fcb1bd6810dbc9950b86ea66e0ca85d6a9fa4e0698039d18904b6f64800ba2db03e5cedab241e8b6d6560ca2a3d6bf0ce258bde6eae35efaefaf2e4839b169b5f3236c26b64265d276227f0c87717ca53b117287b3df03e88077f806d00998b8e7ed982dba3a5907b003e5e718ebad5d5499b7adbc7df25b0dd0c9f3f100a0bbe8e71220f79fc71780dc2ae6b70db87da3a44e0bd09c005417e26cb6be8f7a7c34c07369cd00ffdb0b8042309da92e721e9d0c0199c3087946daa922724d46009c475331008c08e34440b2d6be3c58cccc00328cfee128cd8b808253f4cd03a0c4bfe1611e50a1c9bb54c16ab558cca8b6201443daa72e05a9e1ab298d5c8c78e9c186413cf249cf95ce8d7e0ce8135d7dee0930608b3ea61b7cfd94ef0ce230b27f60407ccb9e412cb0030336e08b3d00c321ff24016eacf619fca56cbe71fa6e4b892c4d06582d478b957277295a80a2697d9602ecfb7314cc06cb84c868ad65e1c6aa95914d2ae705303bf9772140ab0f2a01327d177cb6c2192e27aa6fffdb5bbd433778385eb476435a5e124067807b476b3724e29eb755a5e4e0e7006937882330cb7e1cc3e19c77388806b2769b24a110316506d0e3ee09206c4e18eb498e39efff0013b6f91133bb13e142b66c6e0470105abc071444173b53c12a325e1cd31ef26d4a978b0208ce855eaa1cedbd5783d81a3f590c9cd51ec55d9b753bbb3e2780191fd24507880011c99f9bd6f7734bb4981206a563fd0373c27ca97f481f74fc61102fc5ba6306389a33d6eddbc4b54f6bcb9db52b03ace419c99d80c66d7501a814f78b29a6440a9970b86dce53e27f304e738b2f20c1c3db7a48b097852dc088e5a2a64deb8a79db32e89a6149186b8a3e0b991b8dfc032085702ebf041ab42c1b0252bbf08883568d6964497dbd21a3b01d12dfe1ebd320826711b9d609936bee6fbb3d9d80203d1aa85b1ee29e109f33274ceefdb0f4391425feea9d7c86b1b1e64b276cc5a5cec79c00fb3e6e8cadedb5f758b52d4a62b4d84a944c237da5cd313daa158398d95ffaacd212ddee1ac4d6783d31887ec9030312a08c0d621456c702211766dca15aa579cbf75706a8a1b60dc888323220bafaba0006dcd58f41489f17fe2cd63f87b5411c689e160dc2a57b7fc120e2b2ecdc1b84acfdd11ac4b9e1291be0a3f9bb6a7787b94cb8a0b77f01ec74f53d06288f44f918c0692316ef00240a4c61803903486c912cac03920c464f00aec0f3d53c4062cfdd19801befb43867105ada89fea1fca68f85001bdfdc9a01819dd701d23a45f2f819e0f41a5615bf205efab912602ad3a6b0e7ff05ecfb2d407b65750820575a2ab6013aef2f4c00bab08bb012334092bf931f80f2799e2c1a84e5dfd12e4097182129754052f0d13d40792337770012156e9e05b8f7b8ab033888d7e78e411c248e6e01323b39a47285dc8f8fe95bf958e57d3aca0643fb0c87a2a5f7c3666216611705e2f004203ff1ed0d804650e4afec8004a3e74f4013f6a755c8da1dc019aedadf336085790fe064a5fb7476351c1333f406e08b43a6871cb7aa5d2a57112135adea1df878d7f5262087577cbe9e02ea3e5e3674432575d8cb28802494fcf005e833925779c422cba034883977c08049b2a83a290d48b045135a73f5a4af4862dba4729d0c43e68d6b01ce40adde5171db1416cced2c2977c8c93b5383d0b26cec0ba0c75d981708efa774c018b35eaadc14e01e689ba19d6abcf47699c80e6eb2fa6810abf6ca2b40737ffa651002dae69c41f4fe12ef908f77da65de667c45ab8d3903323b2d01b4184cbf0d30d4393288f6d07a2a27b4b44b13cae7ac5abb16e020d1678c59fb1587805f1082e2bcde31411a7f61e0e6621283ee55ef5052aa4b6665d631321f00749f7da692e61121dc12a041bf7e4147d553c49e96c5a0ae3035ff6648d54d898ccb0a334b5af70b4e9973b3243a31f769f5596ce3dfa24f58601511b49e670996e834575e059005517e643d6dc7ecb71b2ce30ec9fdc23aa690dcf51295933aacda6371ec8e16715176d91340edb2c082d2494abfed31f7a6cffa928be1e000a01b74432729c467356f6782613cf20750a9e9b37892d7bd462047033d940221e5d46130f40b627ff93e328872e4a100fab1f0acff05215c1d5c18c45163fed82056dcf18f410cedf1bb0145df1268e96c97033be98f4f83903f5a172c3457d55561105648877f8f10e4cd258d6ea896a706e8e93e0c62913edf3520babaeb12c255be5c340891f665cf20b6939358943a41416eaed92066f6c91da0c1c0ae1fe3b43fc037b2eac724ec8fb5ae3f1e029429efbb05285458c4bbe8402d892da67a5fee72d5e51740291ecf0a004e13e9ed09a0148f610bd701edb71143b503b841a70801d9814a89dfa7002ec95378b77440aa8af94703f237d400d97ff469c28996e0aca2b72800c20fa7ed4f091a91f20740569d9150bb9d658227bef60da0c00c87bdb26f27b408663a03ba07fa11608f3adc029039303fbc019061d21ce528fa6c7ca7d4452e66d5f4540069eb8d92160afc7d45c18a097104ae5600d217aed273760f3bd24b5982f3fbc0208e3ca7d4a5e4f49a0b8654592a6679ec2ffd4ab16e3ef94ad5471e5b5c04685826c6a94d9adfc70005797b9a0024c19e1d1b7056ff04546ad32583987335434a37787999e1e0786c7354bfdbf06275d8be05f465dc720918280aef1160c86737f58e919cbe99a632d4a94373d53abd7cb5a6af6097536d33d5657c9d076301d2026c33d69dc979a710a0a322c8ca2f88d5f27515a0ea3f30922518a5b2358881bb4ddf3a13c9e6b901e93b550edd125fb00659305ad63bda02f5208b815dedd3a90106cb8c8f3f03ee7f06518e6d7adfb780c79f0631f8372f0ca26061c3da81a1ee5e370ca26fbf170de21c3554c186c43fdd3e03486d1b27f15f10f365bd12e03a7f8d46b63758ffcb00234e86653d0863b07ac03b1454b5571f0008bf963e7847930910dbef0174561fd3fb9d14c3751cab65f78b4d3c8234b57dc7504d7494e3c2d543c0182542f16810ff2819a7127baa0bd6a0761a7bf6dce3810012caa2be5260d27c416ddb52ee50cb0251d25ed8c1fe02ae05d93dda94b04f3e1508e9a2bedf1420b8ebeaa741e894de4e0ce21dc70cfe4e840915d2c9ab015aa705036e4599736d133e67f5dcb6009bf8834acad562bafb3688476eaf0ca25fee360d62c379f4230dd6832383d8e6a72f06b1151cfe3d8232f4d22076a0af338318635a502c4b9dbf1a8459d2796b10f229227edfd7825bfe8af2bfb82e4479d7c266d3a6cd638318da0ff306b1182cfcbd34b6e87add80238f1b1919f7f6d000bd540ccbc13c3e56e9e401207fe497589406e34a56157b00693722d87e07b445874b553b9810823a2d1d0014c12e529275a050c8e537804c018f3e01d24b45b6bd0e48ca393f17606f386d002a5844b1fa056145707e66105bc1cf00d0a27619011cf6bdb8104063542e0208cd999a43c090dbb773ca614969f915405ef3aa5c1140da9ad74b65a17a750a9041eafba2012612f7061871de02b435fef40de2b3a71f00a59ce208389856f2f05f05d88655952344797e0a016de068f3932301024e4d05b4efbfd051ca0c97e65a014502678c4995551d9d1b10a23cce0d035b415fd395a5c29dae539772caa5ce8bfe61d5de3b001fbc3c9701b2500dc3e90e481008bf8219e0b39c2b0725d73eb9cfc0b5803664ac57142c4d9e0052652deb1fbaa09a140208ac17db0075e513c3a192a3c1a25eaa5c7a4fdf0658a9dd09303d16055010e5776a5ba1edc9ef345085e95b1ee81f4adade631276525f48399c3c07093ff1b4473724342479f263108f14bc546955f3fabc4174f623d54fbabedea6c592920caf33b493c6c72533caaaac3eeb476ae8a8038aeea0bbc58b417454dc37cc00776b9192bd0392b68ebf0c28d8910146477fff8892ee3282fee43126b22fecde5872ec2ed7ff11284285f44603d919eef9d220aa7fbe6c10432aec613aa0d861e74b06d1fbabd700459ee4483cc80ac5f0fd2a40e892dd9e4044b1aa9699b74a9a9ab61963b94d714646b61cd4a4bace2db3b2c12c3ab7f4cbcc9ff4f791f547401396d4555e15d00dde3a40bb584b5d66bfdf7deee9ca00db2f96ad76189a89036e0206bab0ebcdb3d275425e843e1a0f0c8896c49cb390f7a27f4c42baa8f39c00b17f34b31d5b7f483748ea4bff58d8da220492de12c3b2554af68d4501ead2d33baa86f8eb138116c37a066e27c2857c7ac98c927e2c27e66d274a6104fe2310f2c7dcdb86413cf2a136256e71fdb36010ba9c93c2005172d300bd14e24627d3c472f1fe2910918df3c28f41cca88545038233ce1bc467af4f04e236b23afe67100377edde2006dd871a489263756e107bc3d5a641bcf4646410953bf04bd1c21db9a4580f3e350631c6109c07961cf71e0c388bbd19c4bce5043cb0e4b8b1611025dd3b30e02abe302026f58d419c1bfe4aca8de68feb8207e674601075a95a034220c4241c0e0b4e7c118fad1d8eb5cd4ff9879c03f3e311a091edd7154056aecf71e21bface737d0da0eb9653be62b73d1400c3891400a7ff0072b53fdb1250a6de53800c966fde008ec1ac47b83aaae69f04701218cf0174ab118116dae1542bdd2205b30f5e8406ef80322bfc0c01aa4bf902d0bebf3c36402db709509480c8ffd201e2f5e5a377803c0fd84d678064a531d68716e1ee8e0530c4f81450c2b1f03b9901bc05a7bb00dce572750b20b1771531ed6700a56c4bc10a2560fb607c140ad4124ece1dc00c272fde0860b9b3a87728bae931c3a150c4e99a7e298851558d16053035ff8c7bb1a1add43e360d6268afcd09a0db5abe060cb85b3b6304298c423ea12b6dc7f6cad02e094d511dd0fba5c4c0b043e9808c05478c20276378280ca2c5e6ef0172332918b8b6305bfd01f4391544988d0e0cb8d3e2ac3e03d1eadb570263a27a31e82cd2869fe72f20cee6254003777c6b10253d1290eaf79246b68a31221e744089251e760db0a76312a6f97041ac16296992b455d02f498e28dbf46d42eca9b62b8358d8ee2600c669dd63ce2914765ed33f2a3c2086d4c5cabff501a095fb4f6910aa8ad70d01faf6e4c42024a59f5aa088da1ed3fb59d1f83e8f040a9c48f8ca5f9688a9000610974c53dd79e6b7d220e60b9bd6d0d2a71647c77562371d2a9c435acb0278b64dcf002372f96ef6013a696d31e832a96bf21c4b4e4ee35883de990db99e8676639fe150cb44738da1dd0ce38ab3be7e11a8f014669a36a308845e735c19ca6daf87126138d3e545c1e601439cf18fbe0494a997da76425ee872f6bf0c08b4c0673b990e7de1b3013657b4ba84bc6eaa010ad9f31f1bc43fc2d1b103a56e3499730a81505de81f28eee6ded60d108b55f4cc57ee6f0d280733bb93e97e1b79eee1db80eb49fda3c1c4aafc3160c5bd1340ba78b93788772ce8a56d1db3f2facb205aec796410c7d9916a2bc55d396f10d2d6536b104ad9e9a600a65ecbe70678943d1b445c85fb3b83581d4a97035bfcd19e41ccec6b7f16b1f8a6366022fffd2394a1cd8d416c279fb1e28ec65cd9241a68342e98ea1b2f802c47a55580dc5db632c0097163571f39384104afe840c1063cf80228ed6e44e16d47f6f05f9c18c4fa71cf67a7230c644ed70ca2b69f9f0012afa6fb75800eef4f7300ae5ad3e1264017a9adde9190509884a34ea889f3cb691c014785524c472ef00ea077c80fa7008cd1d3ea183026f753b8fe756082ec70f404984afe5801205ce57f54df61ac6ff588e217cefd03e097942b7d45e980be54307554b874ff82f8ec230da45c1469eb50202e52137727a3b23f646f1802e886bcf729a0d48a8b009c37f2da16405a96a74d83584fe71e003202bf3c00c847a2f80068cffef9342075de19408e6cbda101011ef51525949a7f1688bcc4f96317a0f618c4b169e44bd023def127902c08a00e3b1090f8f5a347a42e7d2a0da260bb4ca08af34b9aeab304124c2f02726641fa9c81f8ecdd8d00f7c891bba5033ad02cc6f2394af3baf54a00255f3c678c2539b1165380bcf3d98047096d4f3ea4a37c093af70742fdb3436d53c97cb9a55f742b9a5f8e0052b96eb70079d62f535bc73308c7ad0ee8f8561e18a0bad1679b513cb2c67c716cca8d9e41d4e59645292bcfd9c3a34174d4d38601d3c30081e4928eea249468e4c37380d301bd1ba041633664b9445c309133c3217feb1159314ee95b791ce61dca514f1249436a408933ed06a01bea610d75b3079894d1c891fc79a673c22e2753f4d9eff79192e961add33cadde891bbfd5ef6d52fd768a0b229acd91e48f9ed6d34edc203be5be01d2058b52277fa0fd3a35887fcc1d032a6cad476b02b179f6f63f0d228ee2526b8055963eeb68051540765bd78c750b24af23408342647a6b10baade5810136243d030492258032396fa82e6d1dcbd6d5934168f2c2c5fd1770cbf36110d5bf7e37e0aaf54c0037c68f9141147de3d020a4e0397f854be1edd2207a2e3f0b20e52c7d1b1070ca5f69d1063606313e566f0d629bbffd31c068606a10ee0cd32d83d83cd7ef0da281eeb3412c39d33b8350329dba4d5132edfdbd23b2522fff552e944c0feb06987ac53bc6435974f763c51d8f70c74eebf1c8b8138c627f79e901e48cff1813686c9dd2e71240fa8f8f138002f9cc6700ae4c797d07a03dea73cd2084abe5d880c7ba38cc0d9fb5b9faeabc00965df72b005d83159700f25766f4526365a7cc77147daa704148d2e3a22f850875f1651bfbdcd8b64ec58e01775a2f009956afd184852e63233e7f07ac30bb10502886078083547f01b413eec57c195bed725103749c7db915c047e28c362d6d0d45394a7c3473f30d9051bcdad422cbf732400543d9d5019a30b2b976405a96cf09a04194dc65d0952d819d77631d9bf9c146f5efe8db6ac03d61bf044864697e0442fea8312a1957782fe457bd748af01d19c73b40cc8c6a44bf28b375b5ac77249c4731f71857d22945ea890e348a6bcdf8a8d08fe597a900836e0048e4f7c81c12c712597235060c89628535c35816eef507f3d631322f295822f462be9e0870dedfe81bc41e75bd2e300a1966f71c50298cd306407dfb7a2440e5500f8e2db2acb5005df86f85cc3feea48ba8cb0ddd6077b947a67a767ed33381716c05e94ea08829c6d17c9c27c378c73ab5b586649559390bd5fa5bdb573dc2fd6db5d600745dbbc154cf59197342741ad735f1b69e2958dd62158e0260dc0ce21223add01e4d2e42cd90191f76752b868021f2c7e4c0e0f71f4de4d499a943d8c439348f67bfdf47463b06d195d8a18c25c354bb0b8082d83fa36501e58b1628317f79b93608bb2d6c26c6be173b671276e2468c0f2cccc69250e6ded60ce22b0f7a47228e22fac2b12494b948eedb01dd9ccda92e75ecc807e872c6125912d793e3b6a96203fed2571ad94b6d1944394a56fe6eab8c8efa3c35c052456d8a5f6375ba6910866d9cc5c6b22caf1f92418c8feb4f8390d717170cc80ae97234d8d2de1a9093ebde2076f5d53b032272fd3388e971f8651063aca7112463f45b9703a51bc7b7b10da88ada2084abf1df23a1caba757ba0cb79766d51a9e1a834b675faf4c9805bf357839061ce4b032ecade0de2266075641032ccbf430316c728fa64c8dd7c42293b8b4489bdd41a806375c21a7b2271a33a9b1844e52219d42cbe81049265033cb80b80cc3cd7f700920c22ab4a0748895a4d2e00535437a3734081ecb0bc0f902080f1e444ae6e79f9d6207a0e9f910e104700b97032952c15c92867a119b8a159a6a44a019a86bb02884e234aead00358654d8a92dd1443f249a1f8eb5f3b00490648f43310fbedc7aa019a893583d8b43e68f5420e6458534e9cb6bbb932085112e7c0d9dd63ac1f374b00397f6dd1848e45b0726610cbf8634f80eaefeab3055e471100b403ce23f16a107bf6f10050cb294f0553cf2d9c18c4fe32ff0050474d421098fcc533f801c8b678e5c42036bebbbe00f2696463ec803435cb7a07d11b12337b06a2b60543ca49dcd0c14eaa52f2079dadcba56a9404d0d37d0d016aa00746f22c7f56bc9426ec042356dc7783e8b97506dd9fb7e09e80d2129d0ba0db5aa41bfedc070b83f8cabbfea1f6d8d64b096b95efae05b8b09b52391b5071f29c24e92e30189a8158504a5a3d29c0d2fb8d8062117c19a0a8a291930cca166e0dc27a70d7ff40397c726a40807a962d654f4fe36f01fae55ab56d283a62cf0c4449230d4f07e4c47a7868102bcc32ab43d6cdfb3e8d2cf7c1747626308d3daaa6b6798cef1b67e489f3be4516a20e48393cd123445b4b5bdb80065dce1353ac197061f7cabc6d8625c715fd6344c007addacdb4c21a4a8f542526ef024a787acff2e9a891670c877680cbdd3a8d3cbb92f905f3546ea644fa057b9541883db76f80317628b8204e24b1e55660122a930a1be7c9ecf70b702f9dd8e4fd9881db4ed9e6170606c4a43e3788476e8f0185aec1560da2b61b6c9e6d89e5cedea100122c3789934ec88b1bdec91f88e5a264196f13ef9853c152481707f8024e1c8a618991dc898144e09e1a445dea1783f8cafc3f408da26af26e80c9d901c0a11854170270a59f6b83981e4b4b06045a383720b9cda3418ce47a4d8010e5dbdf06b14a5dbf1ae030b563c0083a32e0f64d4da8585969d380701f6f0664dc7a32889345ebafa0401cdf19840231bf1894d12f270671f938ff07a2fa7b7f9f0d79ec3a1910092b1e990e158a72295a7d3ac64337ad36007cdeabcb1f80ec83e6e3a553074988fcd91dc8127b627b9d4a40ab220e4907948cf2b1044c64635403a69cd507db00e2e455e7021c9ad3a780d4fad7f30059c96318db016c0470ea9d0124943d40cd027bbf0450248ae6d8201ec1e16106883d180bcad449db71de9801567e5abd20eb703ea6c50abc7daacb350392522d00241825bd942856694e002fbdfc7809c047335fee02741df7496da597aa2e6371ec9a54291fbe015324472e0ea7a5b47017fb0244e23ca56f6db983596307506571b33a75e0cdd36f83d85e9f2a01e48f08b0d4765d8b41fb1d4d58f5b11fc3cf73ea8b32fc92a615b916f3ee01c0d95d0a01341387345025710357ea0e20085c32606cecc3adf9d4d1a3aee8864a8e9f272abaee4d5f5e04509970f09e56b20d7cff1040507c636877221ca17e98739582340ddf01b5e2901c0ba0857b526d71734dcbff0430f15ea3d593420fb006cd0079df78a92293e67f9f06b19eeeb25c2465a58ee8c81d5000ae276a6b89addc378829b65b18445d5ea96d42d5991eb700c86369aa72e82e3ae24a762031e74a154c610306478036baa1ab6480ac049fbb7b024534e1410f40f5eb9b4d006aec1cf9e73aa0001825633d17d807bd50b95c4eb8e38bdda33b23161c9b18b8cda024d62f256dca8c13fc2920716771c5f868fbe18c5fe515014c79c60c6d27603bdd018c38de574c426553cb9c1ba6dd2f563aecfa6620fcb430e6983a7c81aadf167175d45b7b10c0c3ee7dd3209408a7fa07a1a0e6de8e0ce2a5e33740c575dcdba141ccec133aaa936162273c525d9292961d1844f597d9703a09255426391b108a415fa989c9f4b26410337b6b5d80b0017960c08cda3340d9b56d80f724eb69db1024e1f84a20744a89bba40e200636b7065ce92d03c850979ebf04a21b72bd6a80ccbf6580317a2b402886eb370332d4f50da26f57ef0da2b69a51d68fedac19c425577e32c0e9cae540f7995e05b0ecbaf53f6426fe6210c3a1ba3288f563f3c420062e5afca983352c2e19449bdeee1bc4286c1e0de254b0746710957b1d1ac4898febfca9c4afb9db0383e8fda77f061892ff81189627313d8ac9443b5006c8b469b536c000731fa04d1c55453145ed923e5f00ca1083b95831d52a95df0d624b3a9903a088a8f06c2b3a892d3e7bba0cd0aa8deb4e07502234db008ed5f95f01a823c04175aa822946f7cb8f00a6d59151a903aadce99b01f9e7628a1536e0aea97ea11ccbfb7ca520377a4e09e0b8e707020a81b00120fd4dbea01b247ea5e35383582dcf6b03a27aed021426b0776310db5a41cf3989ca990a2657fb337dd6221c8ff89e100fdd19c06297bef53de1d1b30046473bb7008992d31e40be80bd0b80349b9345803446bd53032cedef00722f8d4c02338012b2ff0a405591cfe70c629c0e62221756a9b101cf40b46964aae9806264ee51f44ea68b25f88841a7789fe9e8d08050610c874a79569fc6009d1b1e3e00296e012b974322edddad00776b6bfa6c4d3c47cce60be7d27b3a0648e87d65c048835671a557a401221ceb58a1685a1546478543b69f33a414b2bddae5b349aadf45a6692729e1c8361488c046f99839a7600dd56e16c03a6c8511e4385787470671c0e35ebd1bb78c31f686ee2cc2679f995176fd5ba11b6c7cddfb044c42ec496d0328982feb3d01d2ce10c7a8c82525bda1fa9d101c57474b21a1144d19225cfaba348877448ed4d9dd1b49649719da6dbf46fff12820bf353e2b59aa77ce08b24e69c482e2bc6f37b4d84c00fb7de4e1d82006ee329ddd95e4b73d7af87817b3b7fc96747a6f1066274b070651b9e51b03e2a150db4e968ae140fcb119882d69cc70e864a990e98e7e0cc2c837cd1b44f531682f3a690b775b15ccd6d87b06f108c7d94ee663dfc73abdb079365a9642e2576f81855e1aa3defeb701fa8f0b83f84a62de76d24638c38d5f058856505d1884dde7f7a5416837362606214ae2a458c88faf6a960d62136f070684fa5907b425aea123814c57de1844130ed4fbb20a3ffd3208add3eed020fa96107f1dc0f3f1e0dc2046e1a6df1102dadcfdbd41146cfbc7204e9e0b7f8fc4f8b8dd366048f92bd1a6bdb9d22054ae5b2e2963fd7ade20ee807fde0c7e5bbdb7f76c10125b84d2ff05dcceba60486c0f4b0621b13d3f1884c4d6ba813804dc6e18c491076f9fc2379afb6e0fcce75ab79834687306d1d9110e77165e3bd4501531bbcab15c982f060045d18ca0dd1d903fd04e0cfe5261dfd3f13a40e2c6e203408f2c5e1b4403dd6f00244ce02054dab1efee1ca05d6c7902903ea867c0fe12c98f3a40b6f0d4a71c9d18181bcef92940bbe9cb2540c62ded0a40dbeb8ffea1821d1f016a9408048d980928b1ef333d3a20577b5aacc097a73adf13c07e2c92ec74c076d23706bce310a02c77e363c0046d0fd6fa65315556951d83a85c8f46b65c58be0374b9b47006d0556bbb67804efa4d40099369a00297aa7c1bd3a393cfc80bf84d9b5a0c5c2c01aaedc192008f7cd1fb0e1d7fbf2580cae49b115496987a4d6e01eab9db1b837807b76fa5ef4d31792faddabba0c52cd3f55f0cb0d66f0ce2a5d7b4ba03c39f5117db8f2d5d009432177fe4b252cadcf57f00f4c989f830a582462484deb2427f9ad7198595aec07f9e04b89cbede05483c2f0a015e4a60b4d28262c1f8a87461f7407b2486765ea75fac52c3e07006a22e4b9501e10be8978496b6c212a14c4ae0386c0123054839008c99c81a419d2849ce474a9ac8c15da1dd283bc911973b1a3929faed21f325e97472cc5a6841f16cc520faf6646c105bf48dc1084d9e8aae63c2e5b1018e39f4adacd4f22153cca264e406fb0551fd6dd60fc72ec5d2ad0365804dc687ade471512d15912b45cacb0ee8d894b70179c27d1493b09e10cea1e2a59d08132dc606dc81b081cf3b21f47687a484f28f466e06dc8a46ea9a590084c8e49c16e8a8a628c81e465d3aa987eb05aa3f0b451a8b125de980ec2f7dc004c5cc392bff4c31f7fb8f333d52a040fc5934884706f4ed2ce7432c069f06214ad6470678723d1984fc71b4601057692543bb133623ce66bd6f80c53fabb684cdfcb96010578bdf1706e4063b36401bb86b10c2e60e7d2b6d606f7c6b109f5dd757ea30179bcbb5804cf04e0c4254a8170d709a6038b40d223eda8d0e70c7579f1884f4b9746f80b8a19e6b53f4fe782410d7a4b50401276eae970d62ce71e4291d8f7e69d18018882b06614ff77961109bd6925f8a76f4df9c0106761f0604ee5d37888e7af4671b24fa6f83a8dcd3bb41ac52935d038278b92e5cc6269794c3c8834b1ae374eed6ef408178376f10be91d5b541c8eb7bad416c27d34783b00d5c5c358831f6efc8204e38d58d01be910f06d1b7e3e8b96a4c6cca8465e82c55490879df7d80cefbe70950c84086774ce7b90524004635d595dee2d42016fafe1e6024f1eb04a02b9bf55d00c13bf315e55068ac74b86a80ca751da0ad8018bb95a2bc57a7cf0009bd3f3d80347957066cd1f52b80ccd639fd334093f707486a7704e0062f8d0f0c1058e70d90e95e00130979b700b5fab86710fd323d14a0e730f6a9ac0dbca4a30ae57b1d95802c9366bda3a660bd57831874abf45c81f560fe607c38d722f160ab52bdaf362dfb18f86f7c01a48739af00459869a5c923400789e29f41ec73f76b0089b4cf6f00652e9ed34b75b2787915184737f44700098a833903e27e31e82a25c722ecc80cc4572e1a80f2248ef8ac63337c31b475e59b4ee60db0ed617a485f58f746024a4f20a0fbca57daa35252ee27bac1e11cae9984154112d281fea1f638290c42eb1479787f01c1a2181f8e00b10ab0c5ddfa19c02ab57b804295de9f0246d8a06dd3a68a119186370268be87542ee1299c77f50e59003c6c09e023b1cccc963b659a7e082872ed9d408cc29a80539583cc1eb2e4245c87d3c5b2c028c6fa0abd9f649971fc66103afa4395d48dcca294fb53845e16a53c88a4870987982a0f87f1d9a31580a4be7c6c10536c64804566790dd0d5f3f29300b60a0bf45c3d5f4613b6bca31e15219f3e528ebac137f28c91dca0a89ac3a7b9b21272d00214b32b33c566be7eb17e30e864b696a617006563dce7b30ebbea7f1428883ec602ec73a7db06b1230f7600dd51225eba248072e7e5ce80fcc82706b189ffbc1a44e5de18c9f2afaccff5d20aa9ef7e62109a3cd41d951c2ee7ca1b83181fdfad41f44bf96d10b76f0b6c6b6daac96dfc2280141c19957e01a17d0706a1a62478e70c2027af1aa00c65a59332b4de59174042b9f9362032c7824168ae3e7f0ca2f75755fd1a35f6cf1f883937da3688924e270651b01515bd2191757a3188ce5ebb32203ad0b500dac0f3a9414839d795413cb2ad97a20cad5f9e05224446b5316f10cad0b93983e8b97f3d01749f4b0b06a1fbe4f2a0b2aab3f8036472ee1b44132efd139033cb9941ccfddea241ccca746940cacb3f1083fffede20569862cd00439d4783500f7e4c0cd06cfefd23f4b8cd9d01c2e6b101c61c3f06b1f45d7d1bc49c6bfe0ac6c92296be34c2162e3f473992a28be5e3122039e8f2db20aadf3f06a0c94bdc36cd40c8638f4f0039a1adf601bae125c84ab7df909e71c057a68aa01b09fa3aa0d402e50240a65ee45e4853a7d079078c753f3700100b29f51f01f27b1d5174590fa6fd7b40ab10b2b16c2545e648c36d01322b8c134002eb199593476a6e770db89cce00b5fac9a501c99f2987c4d1a4ea176476aa389a77809bc4de1dc0d6839541c8a704ca4f4589907742bfe8723ab3797680ebfcde35008f90eae8ca2044dab9370164dc6bbd944d3cd53d01d9082c0324177e004a497d5f2700c5b9fa1919a0655936403143139653c0ca2940578b5f2d80640c55a421ee80aa4f8a940e205a273abb24ec6a7ef807d091e7f6d6203e3ba4914b998aee3182ac1dfdf912e0c8b3cbf8e81a3d6c26fa9b8021bea29f63c0246c26d281dea1044a24954955a5c0ac2f005c43d3d11140e93cf6920121fd0f000a6f31ad05107bdee70530385c61245768f212f663c9393051dba6a410b2eb349045da753a2a59f5db33209609535d8914f2cf87004ad931c3d24931ef5e04580c561e00840b4a07ac52964f97f40f2d06abab02a4a8bfa0f795033313e83a75e22801c8f705b829daa691b37c89d95e93a3df7eb60264325aa7c5aca65ca4b6791a7e166948d173398edaf668b14eb888afec50fdba3be3fc828659d90c0a42b9f08e862867f986466e4638d39ef3c82c43506c7c74543b44b9b3b42f80e3459f2547aeb23df2f2243bc2721f95664e22bfff783a1440625b649c4a2b39d7ac18e046a07fe02a9b47d92036bef7d200b198be75ec8ecb5383d84ef668f559bbfffe03113f492eec9dde1a84c4561f1ac42969f865101b0ed17092dd2a3ed8923a998ec4678f06a1507d7b3088badcfffd239a7043fd52eb6efec2206a4b38ed2441b11749537f41e8502eb2412821275706714d9a1f0c4272fc6214767261b89990f82c4972acb7d4840df60e4b3f066180596d18444977d83d14ec360d960410cf273b06e15b8d6975b266b3f87b04c7e06383581d363460a4a65c5a31885d9dd36b92e163da7e3208856a5b1bc438cdd9200e013faf06bf953b7853f5ada6f467b9467f1e1a84b059bb3d1036973f0cc843e3dad2a62fbb069c4e1e0d307cdc3340d874134ad8746d63381c10343359b3f9fcf70fdc7f5c5b3906ffd5a589779c1ba0fb0ce9228f8728bb5e6203ce13adfca72b00499ff33d009b7875be012851bb8c3701242a4ebd58c7f29474ead5591f30d24bef008a4c7a7e0c90e8b45800b02ccf4f3b06f1150c0fb22295a4ef3d80547b38d5e4297b433aa32e5369f21ee25094ad2e3dd907d040190b805c906229ed3f00f05e48d8f3cf4034f2216d6ad9b2be3788dde398da4ab6cc6b2303d2ba1f0810f4ae7c05e80a3c72a3ff024e1654bfc045b5225e70eee4c210593654b034c05aff0d9091942ef50e09576f6a204c13f24bec95b32012b19e3e5e00147dbfa901968277018a7177b02c30242bd30d40baad91808c1708e7906d09f9b12540676f7c0264e5da1f02e44bdc8f953f5b0ce4126306a2e8abb44735d0496bdd201ae8f1164042dc7cad978e0875fcfc0e1887a098bf185215278b74c90492334b3a5139e4f33ea4b3ab926be3cb554085d873a77f708c4ce78f8086fb86dd7f0228cbf718c99506ffca9d41b46949ef27e982370f0de2a59a0d89fc7379fd0ad01f72d064de5ab67cbc3360cefd189059e104203be9f37f02dcab6f1e017cd0d46735e7c6f4bed278e545ba3239d4e09101a9bf19630a1853916b2027699c5768d324effc6b552e852f4ffdc1f470328647064c966e9cbd6196929cb47754ae1e4ea3725ab6ea348d3136370634dc6737806658727d5d02c6715b3d77c554b7cb6ec318535cdabcc76c98a5808ded95cacde28cfcd665bc6710ebc7da126082bf07e7ca6c77db0f168399c74774c38b015bd2d820e4536ecdb3b3112c9f010a64877e124063541f0ba00d3cbe318826bca90c306b647a74d267eceacd8b41b447668f6aabb8d0ad084cd28186401c8500417717b60c6256a66b03645c152ce1e6faa897a2b74c589766a511adcf87062108687c5891e936cd780ccd0d0da25faa4f83900ceec60621c172bb927dd13e6251eae4b36875ace5b2e2f4d6e78b062116632e9625c1ce117f3d5b3efd605876e2689c4e9e5452f49609f3a819a0d5170d62c5ddfb6710ddf0746410aace76de00338b27409b481a72289039abf70ce22be76f06b17c9228b003352bddb7414839eb0f0621f41e4e0d42c67d993720c2d0aa00ed513f1a84fdc7eac88084307d83107a6ff70ce24673a53288056565c5e0b71cbd9fbfafc46cd833c052e5af7231a40ede5c7d4e7c0f2e3a1ad676c32064dca70383180e0f6b061882fe819060afdd0dba9b7f3660198fcfd66362a8a67e8cb17a42ecf4f45d00242adcb60027922c01ec73d5596cd1b5fda22f9f01bad1e48aa29e0ed93d56e60092b6080c5f3bafe8701dc07d549adf0548605da5607672ae160488b14b86ba7aaa386877d1b7b52eebab932f8076d377fd43f27a6a0d30afe4a5125873aa015266947aa97c8aa67b06ac52070631b4cb4f804496e9be4168be7f12400d747c2e80a59bbf9288ddb14c9b16c460ce2b313e6ac7eb231c6e5d12a8b63a3b3788cf5e7c0024196c1c08a05f5fbe3388edf5946e28c7882cb7f700890a5f1706f1c8d613a044ec210475fd27b0ea2b5665cd0314dbf6eb0fc4eab0b6015010c02f4650a9a4765c3ed6165889ec3303b1bfd41380547b0b7a44a16ceb914194e3f41d2069eb93f1d189a3f18e7fb4a953812d311b247d26b4d6b58c38d3d1094016991b3f0234f2ca1540278b951b809231b0b0cd40546e9f1693389aceef0cc81c380628f5d5c23540f3e5e75980fc51bb34903ca7f3ea0b40770567cb0624fa3a33883568a8974ee27056b1e1d4a962ceed0f01898b76ae493b8051c92113c8191e16f55252b257db7a84a891d536b3219331b8be7e0094c4fe59a1b3bb11856924ed51f7093af3cdf4a85be2c3acd0c8f6b2c10abad68d7722a1652db9706e9915c6fec86451ad25a0a5f1b3416c49d818d58ea9f2be032809e6b1b8621025bde9198494831eb7b646719edaceaeeb7f0bf6f362c076c2cadfc963b15cfcdb31c0cef14600bf93bdc62054ae1f7f80e33d6b90f585272f065c51ac1ac44e38dd368846c6e8b9964f736f7c6310bacf62de20364f0c206a3b39b77d83a8cb0973ae130c423c3fd817406196d42f92c772df202494951783b095fc5a30201b41634024ac37401b7ef3e964cd2044a7b30b811a0bb32583985197ff0cd0e37e1bc457fa8b02c852a413ab2d4bad1c1bc4e1ec7dc38018660706e48e7b3688f1413ae4fa4f96fafb4734f2b24b8a4631370671d4783c3188f3fef0d1201a88a022b514883db244d4d6173efbb3f28bfe7b248614d1d6ea3f6de08201be1ab14735135d1c5e7e02d0d3556743804c7916ef0da28156a3e79a290a80447aa466aa54e8e79b06711623e67063af67ec729aa9ace4dfae01da2c1e8f0d62197f4f0085c15fbd04c843e6273aaa298888918985d414b2b79cbf3220646a0318ea56b41240d83c7a044898e80938bfd89601b7c40f00472af931200eda3740126cf901d0f67a5518a0a654c1a4303b7e34c0d8589fad1498645f00f3ca5a8f482079da1520f6cfa9de91117a1f9e004aad58a8b635566a6ffca394fc810551534afef858040c158c901154ca89e496de2f955ae0715e0055d627252d27eca68fa70049e3933b402989fec6001b9233804496e21da04177dc0768f00ffe017c271e9b4553297b07269a4d95654e58196008fa2d807fd481402d2987ea5b0ec262a603dc453f31822aa95c1fb605b033588943512339a8dadd31c0025140ee2e3f1303a6a9800e12afad016a86138121079a29405a7c6252cf009acd73035291ea1d9804a4f18700c9298e5f01329198668052b48d7f04f04a9bd2ea29cbb53cc4af26cf235c556b80c130faf6e845206c14ab2dfd6348abef508e4ea48fbe259d7ad3497938f453f4ba138c63c0f0d9ee193cb819527fa2d33340699a467ca59d624075b86710c2951603ebc706cca8b6885d6cae3d114098f8a28194482163addfc814706efa07c2ada259354087c224942c558f9f0d62aab7a5416c49f3c70651fd935d832858310010e3aeb7f06210e5785e30887260cfdfb439a2cff54eef04107bde0b030cca54d29a7d7fb467108a3b822335be7bbd3d32607b7d30e0b2eddd806b52f55c43a096f77501e9503e0d62077a5830a0b66f06e8e98606442ab93340ec5906b4559c0a46eaca4e848d955f95236c73377f0da25fb6d57358fed5ff4e0da22eff4e0c62b57ce91bc4deb0b46610d3140562a32bdf84337e6357957c6610b203a96a1b89707969d52094a18bff0c623d2d5d7482df7049de5884bb1f18102ef9c5202e85976e0db814fe12c09af2f30fc46efa796710b7f71cbd1aebc7ea7783a8dcd39b41ccb9746e10bd5fad1b8490577f1884062db9c590b51f160d62eedf3f18c438bdfd7b694c8fdc1a702d18b2f66fcaad008b80924cf0c3654022c4df383abb1d8fb9253e6a00d2f69c3c032cb26c004a65cc7903c8cb66ff1480d95a75b90090b10fa1b05b6720fba4a4639c152a6299b413853ac6ada29db06955a4239c8118c9ef7a64aa6be32d83f8c7d539800bee345c358873d4257591ceb1ba7c0728f86fffc020748efd438328180aa21908fbd3c90980b8b4d5e81680d36675497bd866b37f6480f1e4bd41cc7d22fab54e09725c18c457e6fffe11a6e6fd3383d81a27a70214ac7f69106bd0e4d820ea72360228f4e2f7c08070961f06d195ec841d5016d547801da6f60da2b667f380a114bb6383a8feeaa5418cb1f33501b4b4e83f6680928e0c3837cc19304e5f00127bb89c9e81588217d4c80a7db4aaea736ea8ce543032a1a5efa901f9e75a807c9b16190ed38269fab90ea870a4ff2e0112f14f570d18414f023c72756680ccdf3708c9f145e3435145073f06216d5dcd1960a07b2580f8b5a1da628e5c5daa6f099b98c64cc269a3147e3d40cb75fed187413c32383588ada0d93388e3fdf74480d0580ff49cad3b069b06546ecb20b6936ace80e5734d80bebd4b0039d45dbc1b44d1f382008d7ca14764493d60b59416bf3a3f32e038fb6c4070d76b0396be0303b21fef0828118bbf428b1105af2d90d7abf343032e0f760d628b7eb930888e1aef1b8474b1363440ef9005d83db88a6f7d8a3e5934e03eeac900dfea3d037c79760c089ef56c105f19aa6f15678240e8ad8fe6d35d83583f0852ddfed97c3f1970b2d83688a58f08cb1dc0326351e5d0e541bb6d10c7951f6694cffb78c7cd4074c3f8ef1f31d609ab3903f4dc9d018dac6e2838142d6aac4b67d0ae1a30826e0ce270a69db00328ba2b83e8db7775a5223f5d33b36dae7e7d61c0e5c18a01536cd52056cbcb9e00c7d976dd20ca71560be01cf8f9007026e76c800bd191416c058b8f06ac74af06b1e11c9f09d095879a2f3acdb79afbc4faadce6b8378c750c3121d7d3a545db8f4ab4e3e0da260ed8700b6f8773d032e531e0c8895b561100b6c833c66f3fdd5a1014658ad011368d3202a7735308831d66e1844e5066aa01605c01b23c8f773575383a8dcfe9301f1f97f04c820f4c25aa8f41569ff598095fff3d120344667ec7325924146c33a039856ff33c03aec0b60b3c64f0362b94e0ce291aba100c3f28dd5c1578ba71f06e4357f30400eba1060c070246e9545b53a5749474304b4910129d95552dd47bdf70ca26fdfee0cd891c706a8e51e0d62f05f8d0ca25f6e2e0590f9cf0e0d62aaa332998198b723b5a91d952e0da260c4309b01d245dd18c4a0eba91c5a2dd3a5018abbb101d14ee60dc892b96610fab18f6f8016d8ef5583e8974b7554c1349d0868b5dcb93320cdfd95017913ee0d8840e5475021dd1d1ac4bc9de811fb785f1bc44b7be70651db85530312c22c19446d77fc52d4a513c40d5f3dcf2503fa65c780dbc881018e3987067cf6c7003f9cbe418c64125ccc40484a3abf287a659afc181020656810b52df60c629ca2da9b01b20e6bce6526d0d18d4108ce97eb02619397467a449adee6d3009bbc6cc0a2541bc46240748fd64e468f6706a11f9b7b34c09be34040f96fd5625aa4bf8e0c88ae3e3088958e4c02ad2ffc51ccb476c6277d45abb84ed5c98700e797cb7b0134ac6f7aa94c346f19b80aef99ebb1011721f44bc5293a6fee1a10e7ead8208afeb12dc0b6864ebaad24287e1d18e05eaa77e8626881deafb48efd1406310a17b2417cf6bd2f40d4fb6b841ac71dfdf76e1075d9de3488af2cf40c88bfbe6740f0df030306ff89419403e55f0768752cbb662142f091383088471e4a01f67d8de44af95f7ea6063450328841b7500b60ed42b69b19884d9c9890b36015b4c79b4174c3f69641bcf4dfab016daaae54ca4bf49633c0bdc7d800d7ae0f8378e9f3aa0032cc92ba52f652d33fc0a0db3720bec3a701e1719083149f3fdfce1b7065d31a60e3bc63107dbbbd6d102f5d3f146024af6a04e501ae90770621afefb159c8fc2561c538035820fe18c4de70746c10d52f770df05e181be05fd91ae0f0b06a109d7df4f70e1ae8af60a449b814c0fc65a131c0c06ecd203aea41ef902ff1526d80edf98341f4dcf5b641881b473b0631e896ae0d42f83e502363ae9e7f4a038eb3eafd860c647b6a8f56618a1b8368e493a901a609138378c7f9bd419ca38e34e85a3efbe997d21e8f3702247458fd120877867c776180611bc3e12fa8486b10ef58fafb47ac0e0b730274143646adbd381f5a832818769f1da0e80b17060464bf156095fa6a0c6236fcfcfd235e7acb1e258baa74f062801b416d108d7cf06ac0e5c18d014e242ae940aea1aa8be4f595c620a6c7c5df3f623670893103a1a75bd45786b22ff4231c2476d98013027c3a7813e0a6b9da121846f557551749e3bbc706cc865b03722d6e19102e794f0057d9e18700cec55f492002a4e407a687b277a493810189680f041037fe9d0ba0fdda676b4c72507e3a3188470ef70cb03f7d338816bb690dd870ae0c181f9702ca29cc32ee3cbc7bb50187667da5c00d69f862802ca5cf1664bb79612d4c92d7c9133003b4d88200d2f8cbc42006ddbe9a1093806ab7125042ba1b03a41c030ab6f82980c51d91e35ab930a78367835000e05a3e0358201e18a072fd0371dfb0abe14048ccbad6904a1a30aa8bb6b5bbb101ea0e4d20597714f57fbece6b49615d5bd70f33eebf22874b720e26c31d4e184ccef0f447b28d7bceb5d73a5da354ee1f597124c90a3110661bdd3aac80e8c350621603d1e69edf2b3f4ffa37a962da91fe28fdd4d6efacac62f707444b46bebf0672a2aebcfd0a16b9c5b6f993ca6862d79cce7f40e4d12fcb3f20da52f59becb27eb720e64b3f20152d39dbff80e8feec6ae41859c9689229bab14f01d1b69b4b64f8ac6c68e6cd4ed42fbf4ddfebe8f3a46b1522056b44ed61fdd8b27e8e81e894a2fb0f88e6e93291105a6621b4c8b948082d2b3aceb215d94acb8e4e9e1c4766de7222b98deebf75957311cdc11a3f20bc63d9e21a03616d0bad1f10aefb343b831f101e67694507f8b9762a178d4e22ab6ea7736149a3835a5c3b1b9ee669767a31109df51bd5d6ce451be99d1f902f443718f67fc03a5a6afe8b51cc45e7e3a67e4054fddf7c905d8c2e3dec5d7e40b854c3eafdd250ce6598cb3006427628a563206cb15ee46ed866b4dca315a92ddb8a0e588a2ed5756dbb189d87f26b7537dc416545c704ba4e22ba416817c9ad930cbbc1f4ca3f203a03e01389c7ef0c00f364fc80f06452333ac9c675d2ebe89b56eb079861d1a383375d271365ebe46220f4c776b31fb00ecb11dda4a881c8c9ebc640c8fc9fa85f9c5c7456d627f1038ad11c5b3e06a2d39123cdef147e574d166220643a2bf303a26357a3a52b7a59567458d42806a26d6a8b1f101e5b647d7ec03aeafd4fc4748e19d5f6feabad6946377ff93f20bad9baf5ab9c159de6d9fd35b215ad2efdc99c639be12bf75f496d2be4b1c12406c2a2776a3f205c0021d17a6dbdfa36caf6c70ebfed50e3560c844b9a7fe3fddf2e3df3f38be1465c38f8954369b230d16e0c4413669f1f101d77faf3b69cdf0a805634e07513d176a856270622e61fc440a40b673f20bc7ad31a2c6320da3adc888170a1f075f703a21d76d1a9e6ae52ebd12dddbf5c92115b66cf3fc00a81fef607449751b6e234a25d58bbc90f88569944a77a6920dc2f5689d3f8ed7c8cd4969b8a6e01680c6320acedcf7ab8a9700d89fde8fe80e840b2713b06a27998720c8489fe161e28205c87121d3ae3fe16d69bafc87ab86933e420f3f803c236b57e7dab80e894e6450c84eae2e0ff80f0ec0e7b568981502af3df180857544577b728205a1d16f77e3a3ab2ecf7f14001a1ec27dd188896de6f63206c5389863c6e262cba3d327e40747ac36b120361a2bfc51c0a087782febe15fcaef3b052f12bd166c9d63a06c2465e8f6320d485eb510c842baaa28dc1eeeff813cb8ec4c3cd9a218fd57f0c93b5a2afc47f40d82f83c40fb0a3eb192b311056ae3f8c8150a1f47fd966a3dab6aa3110ae419bfc01d1aace460c444bf0563f2062ba74fc4ad41e9d560c844bde1f9d1808b3edfcbd1235901103215b1e47311089e94fd473a1105a9d5b0c44d722fe5a3dba87d7fc7d8e534028a6c3620c446a6b1503d1c45d3e06a205dcce0f08cf96331f971808bdadcf4f6ea39bf2cc4e3b06c2068ace0ad74074efca2706a2d53ff718087bff11572e5a0af8b3a6faaede20d1ccdf2b51130e63206cc2ca3906c235579bb8fabfdb7e23cdaf2f460c4dd28f3ff291c61d566320daba938e8168e1c1affaf9684b44e71103916374f801a1e63747ab188896e04d6220dc66e2ffaa9f8f96ad4de234a2fdc8bd560c84ae42f71803a152fa2d0988377dc78c1bddb12c5d3f06a213cafed2880e26b9c64074c2e14fe514221e5bfd01a110daa518082d50f20f0879ac738f8148e5546220f43ea3fbd63410d9db9f00157e2d66c440a894ac710c444ae92f467484ca2206c27e390d6220dc5b3d1ac640b4e7fdd74085e8c8c3cf2406c24d24dd420c44a701ef62207426fc38d1a8e77e4b137e171799a3650c842b444a7149a3ae7c5c632094b9d45f2ed1d795790c84b32ca9bfa2475d798981c8defe144a31b2b7fb530c443324a3180839e86ec44074b3c23106c2169bff8a5eb4a3f9d35b0c84ecb09bc6407455cb3e0622fe78c640986da71303d18142711ad12945d630062276888b1eb1437f1303612e133b06c2da7adf1808bd8bdf876505849adff8199c68339c75fe03a29bade3268c549fb78a81e818eb3897687ff6711c03f9b0a3ce31107a6ca3b83d7ea7ab576320ba95a91c03914e8ebb2112f5fa360642fe685d63205cd26cc66dfae38f6880a767dcc3ca1d622034c0a5bf18e12bbfe19b9ec70e1b281903213bdc2731108d0a863110cd08dc622012d3bf18d16ec15f9bae7fbd3f888130d184170391d68e4bea44c6e2a7b67e7b1237851808570ec7466b1df55cd2898130974f3b06421efbadeb8b6f0ff3af31108aba598c816897de2606a22b0e4e3110ae1cdee7622014f5ea2306a2db4b5b31107565dcc891d68e6e7808a68cc236fd03a20db98518882e52b8c540741f70f607d8d1387b1c03d128ba1403d141d73fb63423c3d77763201abe0d6220b462f1e824babbd6feada75340a8a4e3be8db6865ac64ff5fdaec0a8c4250da5729d8ad3885c6bf31c03e115074e2306c2f6b816632014d3f72706c255e1ee320642311dfc251a6e56183e6220da0bf88d81700c343bc48015ca7edcea91cb7279c64074506d33062299fbe9202b1a89dbdf18883e51246320eaca5f7b5861cf59961b03a172ac14622014f5c73906a2a3b18e3110f2d86fcad5b542136d562731106afed72e0622b99dc540c485b918887683356320f2e89d1808f9637b8b8150b237460c846a3cd38f81b04dd78d1808f7f29c7e9c6c451c64d931106a876b2f0642bd5eafc540b865a6103772b4afc05dc440c841afb881220e5affa5110dcdfd1808b5c3ba1203d19ea2550c84dac1f87b251c58997f75096b7b8cd9e1b777e5af1c61cfc5fc614787ac54b731107683358f81b01b12e91808b576a71103a16790bfc540e439fedad48e1c45ab1f03d1cc662d0642fe587b311016acb18981b06099490c44e3974c0c8405738f311096e3fd93dbdf45d65c62202c47e71503d18698b8b6119f7ea631100ad0601c03a1bc3871f523b6acc4058bbccf57dcc8115bee4a31107d14cec740e87f48dc84d1e6afdf0ab3dfe995c66f0dc96fbf3aeb7a0c849a6e13271a69baca3706a2dd4f71f57f7c5a8d81904fbb6e0c447c1a3772c4a7f65fa2d1dd8271cf457ceace6220e2d3b8fa3f3e3dc4407414d44f089d75c863cb9f5fe89811d3fddad4891c92c18fb59d68a8712306c28e4a6e6220da7dfd2b98f3535b7e0c84ecb058c540c8742d2706a26369ea31106acb97170391a27fc44058dbd3280642a5e4fe642e3a8289cb3b06c2b187578c81b0b32f9f1888ee6a7dc640b84baf1ed7363a54b57b8d81a8b34f31106d768adbe3d7d9e518083b7bfd974b74dcfa5f49c3cefe071076b6fd0744bb277f2de6aea3a5f7bf92ba66b436701a0361abb38c81c873bcc440b472b81803d19110bf89aadf815383510c848ed1681e0361ef4f4e3110eaa0587d469795dab7710c442b87bd18880e215ec54058b07890e846da72d68881e8d3f32206c2a22f7e66de8d06dede3b06223d968981d0ed69946220546c961903615d1e8f18880e024bc540a8e81fcf18082bd7706220e475bb1c03d134c35f1a616d6fc91808c71ed56c0c841f5253718b458ee2c0888168b56ddcc84e74c95fdc0da198ae6333ffdbc6984dc740a8e988bb21f22e5e314b856a7c5dfec640644ee2924677c6eee3ba44a21e4f00441b1d394d622062feb8912345bf8f1b2892fdf53d0642d9ff7dce777f8757ac6f3110dd891197345206eb6b0c449a3f9686df5dbe7f4074c4f03906c20fed0631102983bf5ca2a3e46296fac9fe2706c2eadb7f4024ea7147b9d1b64e8cbb18f7b571378dbb65dc6de3ee1877d7b86f8cbb67dcb7c67d67dc7de3be37ee07e37e34ee27352436ee17e37e0dc29bb2724a7f2ae566dc5fc6fd6ddc3fc6fd6bdc4bc6bd6cdc2bc6bd6adc6bc6bd6edc1bc6bd69dc5bc6bd6ddc3bc6bd6bdc7bc6bd6fdc07c67d68dc0de33e32ee63e33e31ee53e33e33ee73e3be30ee4be3be32ee09e39e34eea9e0adb471cf18f7ac71cf19f7bc712f18f7220222c81a31110bb1110771910de2215b6487f8c81e392047e4849c910b72456ec81d79204fe485bc910ff2454a4819a92055a486d49106d2445a481be920dd807a481f192043c44046419c71409380a6ff83d44f33648e2c9025b2421248320053481ac90405c82239248f1490226b580beb356b93b5c5da66edb076596f587bacb7ac7741bb2d58fbacf7ca6e2b7f40d9917fd039a04b40d77fd04db1be928f80ee01a2223f831414bd7e0f6fc5668a1783444a3f50515939c8ca3b518eb4f273945b1f24d864dd62dd66dd61dd65dd63dd673d603dd4bda3587c3d623d663d613d653d0b1ee6ac17012d59af582758abae5789a458a7835f330198659d639d0f7e523ca01aa188a998b98729986b4c13d3d2099a36a683e906b4c1f47422e656a7a34273a75ec7f431f79807cc23e609f3acd9c6bc605e316fc1c33d401e984fcc17e61bf383f9c52c695245553c6696312b9855cc5a68abeb980dcc26662be0f801663b88d7c1ec6a46345559fb980a1f621a9823355ec054259eea50b7e959778339c354255e602e3157ba6bcd046612338599c654d5c862e630f3ba8dcc826e565dcaa26e590b2cc15a6399581696ad7bdd72b05cac0d9687b5c5da61f9587bdd6ad601eb8875c23a63a99857949366ddb11e584fac17d65b575bf7dc52936ebe0cd607ebab6b6495b0ca5815ac2a560dab8ed5c06a62b5b0da5ac6ac0e5617ab87d5c71a600db5005806d6084b95768235c59a612970113c2cb1565889204232a05440e98032016503cafc83d44f39ac3c5601ab880db660afb14d6c0bdbc676b494da2ef606dbc3de62efb07dec3df601fb887dc23e635fb0afd837ec3bf603fba9f4a7f296fe985e3fbf95968d681d5229a0ef3fe81c75a5a673803cff91ceeb2f353b484dbdae137cff65a1e37f357b6861aeeb146c15a78c5dc1ae62d7b0ebd84ac3d683ae5415696a529cad29e8a9e839fe7789ddc26e6bfeb43bd85dec1e765fb3bb0ab51ca635c7da8a86814828bdafe218d823ecb116067b823dc59e6951b4e75ac32a01d0f219532060aa303aaf8526cd63be966d5b21ab8096c1bf8920afa48a139804073b859dd6a5d575c9a88c94c6c756148e8aec3c7601bba819dd014770d638268e8563e338386e106eb482773c9c2dce0ec70fecc9528b90ea5467af1f9c03ce11e78473c6b9e0a8f8ea2765d31a380f1c95fe2ba037ce275048815a72be38259c324e05a78a53c3a96b7de9a8b7949553e9b470da381d9caeae89d3c3e907090e70863806ce08678c33c199e2cc70e638aa304b1c957802271948b2fa3585a35ecfe064717238799c024e11175cc15de39ab816ae8debe0bab81b2d78ae87bbc5dde1fab87bdc03ee11f7a425d03de35e70afb837dc3bae429eb8af40ce0372dfffa0cf3f2806bfb825dc40ce5d4555dc9a16789d511db781dbc46de1b6713bb85ddc1e6e1f77803bc4357047b863dc09ee548d3b239be3ce7117da74b84b5cc516efc888e9aef99ff48b73d1ea4c4be6ebdf42f54f8aa5ebadada29bd0a41efec0e02d37a95373535a57ba69dc0c6e1637879bc72de016d9a019432bbea236171b61b3d6a46cc2c6646369bf6363b351a1cb6613d896adb6511b8f8d52fd8a03fb8101396883a3d3d906b668a45d95cd4e9362958d1fd05eb39ca230cee6a049c9837e3eb239b139ebc26c2e91cc47195dd9dc82f0aeb974ad0c465b8b99323c2abbcd83cd938d2aed9bcd87cd57cbad2ad8a6c4a61c4e4954d854d9d4b41dd8d4d9a80c9a6c54ba6d361d365dcd551b55c4be66c4cd80cd908da13d908d62685f77cc661c8a56d43d9b49e827288f91cd94cd2c28fd9c8dfa6919d02aa84c824d52dbb14d8a4d9a4d864d968de2f89a16a74d9e8de27b5592221e7882b7c633f12c3c1bcfc173f136781ede565b12255ade4e3b549e8fb7c73be806f58e9a94ced38ec404ef8477c6bb6851f1ae7837bcbb1630ef81f7c47be1bdf13e78df202ce195f12a7855bc1a5e1daf81d7c46be1b5f13a785dbc1e5e1f6f8037d486cb33f0465a023d5598c97f92b6483ffac3a75a6d79b3406de503e9aae807e5ac2aa1f2e6780bbca5162d6f85a76a97c44be1a5f1327859bc1c5e5e8b96570818faa6c92bfe8996b221ff10adff4ff8275a8ab41bf9bfe8f09fa2a518608b0e9586dd4ae068b83a91ed3af8c9646bb1b5d93a6c5dcde2db0d5b8fad62c154a0737b6c776c7db6eaa703dba3162ae5628552b13db13d07bf5eb489d85ef52bdb9bb67bfadf3bdb07dba74e563192d2da5b456fb61fcd21dbaf26fd50625bd602a01cb4f827cd42aa5415b655b635b6f520be4abcc9b6a513516cb96db3ede870834e7fdb65ab4adb673b603b646bb01db11db39db09db29d690edfced9aa701988d676c536c136c956a59566ab8631ea39cb56a595675b605b64073b61b76667b2b3d8a932a17b62e7046ec35d8d46030f21740c02577bb761e7b1dbb2dbb1f3d9edd91dd81d033ab13bb3bbb0bbb2bbb153af3fd83dd9bdd8bdb51bb9fba8c12bbb92763094cfb92bb3abb05363b62abb1a3b9578835d935d8b5d9b5d875d975d4fb3ac324abb3ebb01bb213b83dd88dd98dd24f0ce33eca6ec66ece6ec54c997ec56daef52cedb4ee5a8c2143bf5ba8a966597d3c2b6cb6bb6de15d815f1c117fc35be896fe1dbf80ebeab05d2dfe07bf85bfc1dbe8fbfc73fe01fff0f1dfe0bae44cb3fe19f75a81484aa857f09e88a7f0be88effc07fe2ab8cdef81ffc2f7e09bf8c5fc1afe2d7f0159f5d03c150e93402b3f3fe17fdb985ff3b8ce38482f14f52021393dffc231553232dfc367e07bf8bafcadfc71f686deb0ff10dede0f8237cf5ef045f5576a67bc49fe32f22cf25724312daa029af4fa97fd571fe127f859f0828a9e5c14fe1a7f133f8592d4b7e4e0b869fc72fe01735ed612fecd7ec4df6167b9bbdc3de65bf61efb1dfb2dfb1f7d9efd91fd81f83f014d039a04bf0ee95fd2da03bfb07fb27fb17fb37fb8ff6b9f65f2dbdfb12fb32fb0afb6a603666ec6bfa5949d4becebec1bec9be15cee2b4d977d877d9f7d8f7d90fd80fd91bec47ecc7ec27eca7ecd5fb73f6eae525fb15fb44d47fcab628b9da27d9a7d8a7d967b41bb0cf6a577b9fd3a2b5cfb32fb02f72808370587330750994181f2c0e36078783cb61c3c1e3b0e5b0e3e073d8eb4e3a1c381c399c389c395c385c83b76e1cee1c1e1c9e1c5e1cde1c3e1cbe1c4a1cca9a050f150e550e350e7515d3b81b1c1a1c9a1c5a1cda1c3a1cba1c54e27d0e030e433d97705071461cc61cd4f394c38cc35ccbd821b0180745ab80121c921c5419d21cd4af590e390e790e050e458e70143d8a3bae35298ba4644c99af38941347f35f880a053da63a5a1c55e87074396e387a1cb71c771c7d8e7b8e078e478eeaf533c70bc72bc71bc73bc707c727c717c737c78f9ec6505c1e18903ffb1376d3faff8899a2e3f747a53f8aa52b24d5fec7b21ebca9217434ed71fe0dcc4ae198cdb8ab172b1cabbacb8e358e758e0d2d72da9709acd6b1c9b1c5b1cdb1a3fdc06397634f5b80639fe380e390a3a1f5ec71c471ac7d45ad3aeb812393e638095851b5c394e38ce39ce382e392e38a63826392638aa38a96e198e598e398e758e058e40427e1b4e66472b238d99c1c4e2ea70d272fd0501f4e5bdd9ea71d279fd39ed381d351277b3a69d29c16906af6d3594bbb1ac8a8f0a45eb972ba71ba737a707a0689bfb471d2e09b934af91b4ea19638953955385539d538d53935383539b538b53975387539f538f5390d380d39199c46c13855bd32e634d1a2759aea463ccdb4af789a47eee269c1491565c5491557c5490594e694e194e594e394e754e054e40c67e1bce66c72b638db9c1dce2ee78d1ea09f3dce5bce3bce3ee77d30586cebe1eff9c0f9c8f9c4f9ccf9c259c5bc71be737e707e06f4e2fce6fce1fce55ce25ce65ce15ce55cd37c7cae0713062ac70667955a2b12ad739b738773578b96f281cf3dce7dce03ce43ce06e711e731e709671573c679ce79c179c979c539c139c93998bdd0f63015d8a2304cea99431586cf31aee89cd67315ba3c19ce59ce39ce79ce2adf2217b808973517938bc5c5e6e27071b96cb8785cb65c765c7c2e7b2e072d5a97239760a07b5174d19d62a9f8d700b9fde81e91568569edd129d723202d90978776c2f51cd584cb53f7f2e5a53dcccb3bf236d7572e9f601ab0c2e5ab23ff6be630189845294cf5f3a5a427a22e652e2a7e954b8d4b9d4b834b934b8b4b9b4b874b974b8f4b9fcb80cb908bc165c465cc4595611af85d756d462e332e732eaa904b6d765453684152f88a4b824b924b2aa034970c972c971c973c9702972257b80ad7b566bfaba985ea6a71b5b93a5c0379bb2af2b82a7cc7d5d7e3253dd157d57312d73dd703d723d75340e7802eda1bba5eb9deb8deb93eb83eb5bd75fa5a3eafaf40b4aeef803e5cbf5c4b5ccbdaa7bf56b856b9d6b8d6b936b836b9b6b8b6b976b876b5bf678e8dbb4ab4a79bfbdae73ae03ae46a701d711d07a1ca78ca75c675ce75c175c975c555a59ce49ae29a0ec00c5755f41cd73cd702d72237742237e1b6e66672b302b2b939dc5c6e1b2d1e378fdb96db8e9bcf6dcfedc0edc8edc4edccedc2edcaedc6edceedc1edc9edc5edcdedc3edcbadc4adac85f056e156e556e3168ca06e8a9adc5adcdadc3adcbadc7a01f5b90db80db9a9228db88db94db84db9cdb8cdb92db82db9adb825b825b9a5b8a5b965f4acc32dabc952e9e77e94ff07e5fe41056e45ee70173da0baafb99bdc2dee367787bbcb7dc3dde3bee5bee3ee73df733f703f723f713fa306a56a40ab3ae27ee7fee0fed47aedfed2a4d49c5652964662f0fe0ee8c3fd8bb2369acafa5f15f95e41f9dbfaa71a6a24a38634f7a6f620d4685e293245daf834b5c6bc77b877b9f7b8f7b90f8298432ddb8a2c557283bb8a33e63ed1f87d1a904a7faebd1525bdf725f79556fcf7046ae8714f714f73cf0461967b8e7b5e7b34f782f61837aa8ec5c01af8dac284d6e6010fe1b1e661f2b078d83c1c1e2e8f0d0f8fc796c78e87cf63af9be871e071e471e2a19e2f3cae3c6e3cee3c1e3c9e3c5e3cde3c549a5f1e255db04799474593d6c80aaff2a8f1a8f368f068f268f168f3e8f0e8ea09c9478f475f874e524f215a2ad3018f210f2310adc788c798c784c794c78cc79cc782c79287ca26c123c923c523cd23c323cb23c723af5d85478147513f3cd19dfa149e6b9e264f8ba7cdd3e1a97edaf0f4786e79ee78fa3cf73c0f3c8f3c4f3ccf3c2f3caf3c6f3cef3c550a4f9e2f9e6f9e1f9e5f9e259e659e159e559e359e759e0d9e4d9e2d9e6d9e1d9e5d9e3d9e7d9e039e439e06cf11cf31cf09cf29cf19cf39cf05cf25cf15cf04cf24cf14cf34cf0ccf2ccf1ccf3ccf02cf222f7809af352f9397c5cbe6e5f072796d7879bcb6bc76bc7c5e7b5e075e475e275e675e175e575e375e775e0f5e4f5e2f5e6f5e1f5e5f5e255e655e155e555e355e755e0d5e4d5e2d5e6d5e1d5e5d5e3d5e7d5e035e435e06af11af31af09af29af19af39af05af25af15af04af24af14af34af0caf2caf1caf3caf02af226f780bef356f93b7c5dbe6edf076796f787bbcb7bc77bc7dde7bde07de47de27de67de17de57deb780eebc1fbc9fbc5fbcdfbc3fbcbfbc4bbccbbc2bbcabbc6bbcebbc1bbc9bbc5bbcdbbc3bbcbbbc7bbcfbbc07bc87bc8d8046bcc7bc27bca7bc67bce7bc17bc97bc57bc13bc93bc53bcd3bc33bcb3bc73bcf3bc0bbc8b7ce0237cd67c4c3e161f9b8fc3c7e5b3e1e3f1d9f2d9f1f1f9ecf91cf81cf99cf89cf95cf85cf9dcf8dcf93cf83cf9bcf8bcf97cf87cf994f894f954f854f9d4f8d4f934f834f9b4f8b4f974f874f9f4f8f4f90cf80cf9187c467cc67c267ca67c667ce67c167c96dae1ffacf824f824f9a4f8a4f964f864f9e4f8e4f5e7994f21a0225ff84a205adf355f93afc5d7e6ebf075f96ef87a7cb77c777c7dbe7bbe07be47be27be67be173dd9fabdf2bd6967fa7be7fbe0fbe4fbe2fbe6fbe1fbe55be25be65be15be55be35be7dbe0dbe4dbe2dbe6dbe1dbe5dbe3dbe73be03be46bf01df11df39df09df29df19df35df05df25df155d925f9a6f8a6f966f866f9e6f8e6f916f81629414928ad2999942c4a362587924b6943c9a3b4a5b4a3e453da533a503a523a513a53ba50ba52ba51ba537a507a527a517a53fa50fa522a512a53aa50aa52aa51aa536a506a526a516a53ea50ea52ea51ea531a501a5232288d288d294d284d29cd28cd292d282d29ad2825024a524a514a53ca50ca52ca51ca532a04118a94a12c94d7944dca16659bb243d9a5bca1ec51de52de51f629ef291f281f299f289f295f285f29df28df293f283f29bf28bf297f287f299728972957285729d728d72937283729b728b72977287729f728f7290f280f291b944794c7942794a7946794e794179497945794139493945394d3943394b3947394f3940b948b54a02254d641484026158b8a4dc5a1e252d950f1a86ca9eca8f854f6540e548e544e54ce542e54ae546e54ee541e549e545e54de543e54be544a54ca542a54aa546a54ea541a549a545a54da543a54ba547a54fa5406da165586540c2a232a632a132a532a332a732a0b2a4b2a2b2a092a492a292a692a192a592a392a792a052a454d55a80ad5355593aa45d5a6ea5075a96ea87a54b75477547daa7baa07aa47aa27aa67aa17aa57aa37aaf740b4aa0faa4faa2faa6faa1faa5faa25aa65aa15aa55aa35aa75aa0daa4daa2daa6daa1de543eb89f56a570f94ab3daa7daa03aa43aa06d511d531d509d529d519d539d505d525d515d504d524d514d534d50cd52cd51cd53cd502d52235a809b53535939a45cda6e65073a96da879d4b6d476d47c6a7b6a076a476a276a676a176a576a376a776a0f6a4f6a2f6a6f6a1f6a5f6a256a656a156a556a356a756a0d6a4d6a2d6a6d6a1d6a5d6a3d6a7d6a036a436a06b511b531b509b529b519b539b505b525b515b504b524b514b534b50cb52cb51cb53cb502b52275a80bf5357593ba45dda6ee5077a96fa87bd4b7d477d47dea7bea07ea47ea27ea67ea17ea57ea37ea77ea0fea4fea2fea6fea1fea5fea25ea65ea15ea55ea35ea75ea0dea4dea2dea6dea1dea5dea3dea7dea03ea43ea06f511f531f509f529f519f539f505f525f515f504f524f514f534f50cf52cf51cf53cf502f5220d68088d350d938645c3a6e1d070696c687834b63476347c1a7b1a071a471aa780ce342e34ae346e34ee341e349e345e01bd697c687c699468946954685469d468d46934683469b468b46974687469f468f4690c680c6918344634c6342634a6346634e634163496345634123492345234d2343234b2347234f2340a348ada0a35a12934d7344d9a164d9ba643d3a5b9a1e9d1dcd2dcd1f469ee691e681e699ef418a179a6a9c22bcd1bcd3bcd879eac52c64655adf9a4f9a2f9a6f9a1f9a559a259a659a159a559d3d2d8acd36ce859ae6693668b669b6627142df58e2a508f669fe680e690a6417344734c7342734a7346734e73a1154f734973157cb3d20b9df41c5133a18743cd24cd14cd34cd0ccd2ccd1ccd3c4d956b9116b484d69a9649cba265d372b4bd6ab9b436b43c5a5b5a3b5a3ead3dad03ad23ad13ad33ad0bad2bad1bad3bad07ad27ad17ad37ad0fad2fad12ad32ad0aad2aad1aad3aad06ad26ad16ad36ad0ead2ead1e2d95d180d69096416b446b4c6b426b4a6b466b4e6b416b496b452b412b492b452b4d2b432b4b2b472b4fab40ab489b7f90d05ed336695bb46dda0e6d97f686b6477b4b7b47dba7bda77da07da47da27da67da17da57da37da7fda0fda4fd0af037ed0fed2fed12ed32ed0aed2aed1aed3aed06ed26ed16ed36ed0eed2eed1eed3eed01ed216d83f688f698f684f694f68cf69cf682f692f68a76827692768a769a76867696768e769e768176910e7484ce9a8e49c7a263d371e8b87436743c3a5b3a3b3a3e9d3d9d039d239d139d339d0b9d2b9d1b9dbb6ea5ce83ce93ce8bce5bebdfce87ce974e894e39082b741458a353a7d3a0d3a4d3a2d3a6d3097eead2e9d1e96bffb333a033a463d019d119d399d099d299d199d359d059d259d149d049d25199a6e964e864e9e4e8e4e914e814e94257e8aee99a742dba365d87ae4b7743d7a3bba5bba3ebd3ddd33dd03dd23dd13dd3bdd0bdd2bdd1bdeba9a9ee437f4eec3ee9bee8bee97ee87ee996e896e92abc4ab746b74eb741b749b745b74db743b74bb7a73fcc74fb5aa8ba032dabdd215d95e02810adee98ee84ee540fb7ba33ba73ba0bba4bba2bba09ba49ba29ba69ba19ba59ba39ba793d3bb453452fe899f76e911ef484de9a9e49cfa267d373e8b9f436f43c7a5b7a3b7a3ebd3dbd03bd23bd13bd33bd0bbd2bbd1bbd3bbd07bd27bd17bd37bd0fbd2fbd12bd32bd0abd2abd1abd3abd06bd26bd16bd36bd0ebd2ebd9e1e83f5faf406f486f40c7a237a637a137a537a337a737a0b7a4b7a2b7a097a492d90bd14bd34bd0cbd2cbd1cbdbc16a45e815e913ef485fe9abe49dfa26fd377e8bbf437f4bd80d4c396fe8ebe4f7f4fff40ff48ff44ff4cff42ff4aff46ff4eff41ff49ff45ff4dff43ff4bbf44bffca30afd2afd1afd3afd06fd26fd16fd36fd0efd2efd1efd3efd01fd217d83fe88fe98fe84fe94fe8cfe9cfe82fe92fe8a7e428b743fa9ebd54fd14fd3cfd0cfd2cfd1cfd32fd02f3280813058333019580c6c060e0397c18681c760cb60c7c067b06770607064706270667061706570637067f060f064f062f066f061f065506250665061506550635067d060d064d062d066d061d065d063d0673060306460301831183398309832983198335830583258314830483248314833c830c832c831c8332830283284a1305c3334195a0c6d860e4397e186a1c770cb70c7d067b86778607864786278667861786578637867f860f864f862f866f861f865586258665861586558635867d8d01f24874d862d6d8e866d861d865d863d6d9f877d860386438606c311c331c309c329c319c339c305c325c315c304c324c314c334c37083c830cb30c730cfb0c0b088018660ac314c0c0bc3c670305c8c0d8687b1c5d8e9afc3868fb1d7cb6a8c03c611e38471c6b8605c316ee835bfeaa727c60be38da1e27f314a18658c0a4615a38651c7686034315a186d8c0e4617a387d1c718600c310c8c11c618638231c59861cc3116184b8c154602238991c248636430b218398c3c4601a3c80846c268cdc8646431b219398c5c461b461ea32da31d239fd19ed181d191d189d199d185d195d18dd19dd183d193d18bd19bd187d1f747eab9c4a8cca8c2a8caa81670fc4c3f68aa336a306a326a316a33ea30ea32ea31ea331afc68c8c8603462346634613465a45e9f335a305a325a314a304a324a314a33ca30ca32ca31ca332a302a3286b1305e3336195b8c6dc60e6397f186b1c778cb78c7d867bc677c607c647c627c667cd1ba7f7c657c637c67fc60fc64fc62fc66fc61fc655c625c665c615c655c635c67dc60dc64dc62dc66dc61dc65dc63dc673c603c646c301e311e339e309e329e319e07b460bc64bc629c60ac724c314e33ce30ce32ce31ceeba99d71817191094c84c99a89c9c46262337198b84c364c3c265b263b263e933d9303932393139333930b932b931b933b9307932793179337930f932f93129332930a932a931a933a9306932693169336930e932e931e933e93019321138349b08046d08bce26632613265326332673260b264b262b2609264926292669261926592639267926052645fd35750a5361ba666aea69de69b813c06a30b5993a4c5da61ba61ed32dd31d539fe99ee941b7ecf4c8f4c4f4ccf4c2f4aa2773af03a637a677a60f3dc93e55a9bf98be997e987e999698969956985699d69806d31853454da62da62ac10ed32ed31ed33e5395d490a9c174c474cc74c2542538633a67ba60ba64ba629a609a649a629a669a619a659a639a675a605a64063361b6666632b398d9cc1c662eb34d401eb32db31d339fd99ed981d991d989d999d985d995d98dd99dd983d993d98bd99bd987d9975989599959855995592d78505467d660d664d662d666d661d665d663d667366036646668d19a8d988d994db45d9a4d99cd7e3467b660b664b6d252374b304b324b314b33cb30cb32cb31cb6b1b352b302b3287b9305f3337995bcc6d9defdc61ee32df30f7986f99ef98fbccf7cc0fcc8fcc4fcccfcc2fccaf7a0ca6bcc1f98df99df983f993f98bf99bf987f9977989799979857995798d799d79837993b9caa2cdbcc3bccbbcc7bccf7cc07ca855cfdcd0da673e623e663e0968ca7cc67cce7cc17cc97cc53cc13cc93ca5d5d33ccd3cc33ccb5c1523cfbcc0bcc8023d5fb210166b16260b8b85ad2dccc261e1b2d8b0f0586c59ec58f82cf62c0e2c8e2c4e2cce2c2e2cae2c6e2c54fc078b278b178b378b0f8b2f8b128b328b0a8b2a8b1a8b3a8b867608174d3d6fb168b168b3e8b0e8ea15158b1e8b3e8b018b210b232055aa318b098b298b198b398b058b258b158b845e62ba5089a458a45964586459e458e45914f434c9a2c81296c272cd32dc76b2b458da2c1d962ecb0d4b8fe596e58ea5cf72cff2c0f2c8f2c4f2ccf2c2f2caf2c6f2cef2c1f2a9bf5f2d5f2cdf2c3f2cbf2c4b2ccb2c2b2cab2c6b2ceb2c1b2c9b2c5b2cdb2c3b2cbb2c7b2cfb2c072c872c0d962a8531cb09cb29cb19cb39cb05cb25cb15cb04cb24cb14cbb4d6dccb0c4b15e658e65916581659c14a58ad5999ac2c56362b8795cb6a13841eab2dab1d2b9fd59ed581d591d589d599d585d53552fcab1bab3bab07ab67402f566f561f565f562556655615565556355675560d564d562d566d561d565d563d567d560356435606ab11ab31ab49f03c6535633567b5080ab00cc2f061a57dbc55825592558a559a55865596558e559e55815591042484c49a84a9ed70c22261937048b82436243c125b123b123e893d8903892389138933890b892b891b893b8907892789178937890f892f89128932890a892a891a893a8906892689168936890e892e891e893e890189210983c488c498c484c434709855a96624e624162496245624122492245224d2243224b2247224f2240aba191345929014926b9226498ba44dd221e992dc90f4486e49ee48fa24f7240f248f244f24cf242f24af246f24ef241f249f245f24df243f24bf7af23359d2132d25f5a0a842b24ab246b24eb241b249b245b24db243b24bb2a7e711927d922a1c9234488e824cc72427faeb62724a7246724e724172a9e775922b92099249922992699219925992399279922a7e9114a484d49a9449ca2265937248b9a436a4bc40b452db8076a47c52fb807c4dd50ea903a923a913a933a90ba92ba91ba93ba907a927a917a937a90fa92fa912a932a90aa92aa91aa93aa906a926a916a93629955497548f549fd480d49094416a446a4c6a426a4a6a466a4e6a416a496a452a412a492a452a4d2af323f59c259523950f7e2d902a9286b4905effc8fc6f6491b6493ba45d6d51d31bd25e106e49ef02f249ef491f481f7fb40fc013e933e90be92be91be93be9c73f5e79927e917e93fe9056c9964897495748577f74fa37d548d7493782349ba45ba4dba43ba4bb7a4e35dd23dd273d203d246d901e9156e084f494f48cf49cf482f492f48a74827492748a749a74867496748e749e748174910c6484cc9a8c49c622639371c8b86436643c325b32bba08bd5834f664fe640e648e644e64ce6a285443153e64ae646e64ee641e649e6a5a71c951864de643e64be644a64ca642a64aa4158235327d320d324d322d326d321d325d323d327332033246390199119939990999299919993599059925991499051f9a6c8a4c964c864c9e4c8e4c914c814c94256c8aec99a642db2365987ac4b7643d623bb25bb23eb93dd933d903d923d913d93bd90bd92bd91bd937d907d927d917d93fd90fd922d912d93ad90ad92ad91ad936d906d926d916d93ed90ed92ed91ed931d901d9235c88ec88ec94ec84ef507f1ec8cec9cec82ec92ec4a936ad26c826c926c2adaf3aed7a75c1e7acb9a5ead7cd00f3b47efb4c9a6f572e69dad972ff5d063aa6c866c966c8e6c9e6c816c513fe42027e4d6e44c7216399b9c43ce25b721e791db92db91f3c9edc91dc81dc99dc89dc95dc85dc9ddc8ddc93dc83dc9bdc8bdc97dc87dc995c895c955c855c9d502520f75720d724d722d726d721d725d723d72fd1f0dc80d7fa122230847e4c6e426e4a6e466e4e6e416e496e456e412e49241b80a9054f053f86bfaf76b464f78aa50ff9bf8455694d513362acca95f552314c815c9a37f6a66a33879d1a4535b4669e6d7e44df216799bbc1314be4bde25bf21ef91df92dfe9616ade27bf277f207f247f227f267f217f257f237f27af223cc9bfc8bfc97fc87fc997c897c957c857c9d7c8d7c937c837835d3957bdecc851a9b5c8b7c977f43ac37c57af42caf7f44a287f44be4f7e407e48de203fd212951f939f909f929f919f935f905f9257354a904f924f915775c990cf92cf91cf932f902f528082505853302958146c0a0e0597c2868247614b6147c1a7b0a770a070a470a270a670a170a570a370a7f0a0f0a4f0a2f0a6f0a1f0a550d25e7da14ca142a14aa146a14ea141a149a145a14da143a14ba147a14f61a0e7600b430a068511853185098529851985398505852585158504852485148534850c852c851c853c8502852245280ac5354593a245d1a6e85074296ef45ab0a24771ab37dda8b0b88b36e0ecd3c1bf5bfd1020d13e64fd4fb0def9df9b763e147dbd925af5c45aa5bbd7a2553c5054e189e299e285e295e28de29de283e293a2caef4d51bdf8a5580aa84cb142b14ab146b14eb141b149b145b14db143b14bb147b14f71407148d1a038a238a638a138a538a338a7a82ab3a4b8a298a098a498a2a8aa91a198a598a398a758a0a85a827f8412d05af4765325f003d11b2df5c278d11bb336a2f7a86c2558ccff2365855a821a5b7e75986e04110ec14f47d12b3d8fbf980ad4eb1d83f817d14bd36e82f29095f7f610bd2c45fdfa0aa28531b7418e8adea2971ba8f44ba23f0f57447f95ac89fe1ca6b26b8afe46d1163d35de153de5aa1c2f55f2a1e869a591e8b90b35ea9f2a6d2d7a64a946606ab0a25c7be513abac95bfa5bc1365c195cd521a3e17c87421e8bb6093d5516551548da287c7ce315a2ba8e858d6cb97f27dd17f6b1153c412b1451c4a6f11576423e2896c457622bec85ee420721439899c452e2257919bc85de4c140b5fb53e425a2defd887c454a2265918a4855a42652a799175162af72698ab444da221d91ae484f4415632032143174b546ea79243216998828efda119989cc4516224b9195484224299212d15f1a4514654572222a8b8248516f3a57755aaf699f646dcada92b52d6b47d6aeac37b2f664bd95f54ed6beacf7b23ec8fa286b15f32ceb8bacafb2bec9fa2eeb87ac9fdabae8c60cb7a505e254542fbe7e7bdbfe93a2e33db4a8e9ed21ad3f93a59adefec8fac34165f655ad2feb92accbb2aec8ba2aeb9aacebb26ec85ae12d59b765dd917557d63d59f7653d90f550d686ac47b21ecb7a22eba9ac67b29ecb7a21eba5ac57b24ec83a29eb94acd3b2cec83a2beb9cacf3b22ec8baa8f7e0ab2e36d7629a625a62da623a62ba626ec4f402da8ab913d317732fe641cce3bfe914d059cc4b105ec5bc897917f321e653cc97a6486654226ffda0c18f98df3f52c2a0118597220aa369515192a9f22d8b5911b32a664dccba980d319b62b6c46c8bd911b31b503ba09e987d3107620ec534c41c8939167322e654cc9998733117622ec55c3155af27c44c8a9912332d6646ccac983931f36216c42ceaa309144f5a6bb14cb12cb16c5166a75417cb156b239627d696d949ac9d58be587bb10e621d950889a5c0b35817b1aeda37b9948cbb7abe897557564bac87584fb15e62bdc5fa88f515ab245659ac8a5855b16a62a92c1a62a9745a7454e4b6581d5a19b1ba62f5c4ea8b35106b289621964a6d2cd644aca95833b1e6622dc45a8ab5122b215652ac945869b1325a2b5959b17262e5c52a8855d4a72e28053857a11a3f2fc536c5b68261b323b62db60a5db137627b626fc5de89ed8bbd17fb20f651ec93d867b12f625fc5be897d17fb21f653ec97d86f51cc6c7ff57791da42ec92d865b12b6257c5ae895d17bbc1372b76530decc5560e6d47ecb6d82aec8add13bb2ff6408996d843b10dbde0383059628f621b25f6f85fa2b54fff17abf5b7cf74ad0a3461adca34d5f2aaa456a73e137b2eb62a9faaf94aec84d849b15581d26267c456e5cb899d17bb2076511f4ea1148db316c714c712c716c711c71567238e27ce569c9d38be387b710ee21cc539897316e722ce3520f5700b244abd7217e711d0539c97386f713ee27cc529895316a7f2a36a40b580eae23482b0294e4b9cb6381d71bae2f42207ef172a449cbe38037186e218e28c7ea49ec7e24cc4990661186126ce5c9c85384b71562c550112e224c54989931627234e569c5c60a03ec1b3a2bc3805718afaa80e6506dcb5b8a6b896b8b6b88eb8aeb81b713d71b7e2eec4f5c5dd8b7b10f728ee49dcb3b81771afe2dec4bd8bfb10f729ee4bdcb7b81f71bfe296c42d534f8a5b11b72a6e4ddc3a73956043dca67634948d52fad86d059ba93ae2b68363335e5ab4dc8ede0774d4d1c4ed8adb13b72fee40dca1b886b82371c7e24ec49d8a3b13772eee42dca5b82bc62a72425c95694adcb4b81971b3e2e6c4cd8b5b10b7a84f2451d66eb3968d291b4b36b66c1cd9b8b2d9c8c693cd56363bd9f8b2d9cbe6209ba36c4eb239cbe6229bab6c6eb2b9cbe6219ba76c5eb279cbe6239baf6c4ab229cba6229baa6c6ab2a9cba6219ba66c5ab269cba6a395cba6cb58853dd9f4653390cd5014d36e46b219cb66c2682e1b35cccbc966261bf5bc90cd52362bd9246493944d4a3669d9646493958d8a9367a922146453140fbd7cd99ce846d37a35fd9f662a7411ffc36afd0fd17aeb0de1ca175726d25beb0d0baa03ee15f14cf12cf16cf11cf15cf136e279e26dc5db89e78bb717ef209e7ae524de593c558eab7837f1eee23dc47b8af712ef2dde47bcaf7825f1cae2a934abe2d5c4ab8bd710af295e4bbcb6781df1bae2f5c4eb8b37106f289e21de48bcb17813f1a6e2cdc49b8bb7106f29deeadf940828f9a3947869f132e265c5cb89970f9cb180bc4240c53fdaa27d1f6d584691855148f893f2e2b66bedce6d4d6d82b6966c6dd93ab27565bb91ad27dbad6c77b2f565bb97ed41b647d99e647b0e908b6cafb2bdc9f62edb47404fd9be64fb96ed47b65fd9aa6455fa15d956655b936d5db60dd93665db926d5bb61d6d24b75dd9f664dba7aed2540518cad690ad2ae158b613d94e653b93ed5cb60bc6aa244bd92aefa0acd5a252db4ab48e2ad944b08deaa25d446536b749bdbf4e2f6657a54ac9362ddb8c6cb3b2cdc9362fdb826c8bfab41ee509eed6b2336567c9ce16e5d42455e8ca6e233b4f765bd9ed64e7cb6e2fbb83ec8eb23bc9ee2cbb8becaeb2bbc9ee2ebb87ec9eb27bc9ee2dbb8fecbe5aefec4ada6aedcab2abc8ae2abb9aeceab253b5ee6ac3b56bcaae25bbb6ec3ab2ebcaae27bb3ebd89ec06b21bcace90dd4876637a0a57e0547633d9cd65b790dd52762bd9256497945d4a7669d96564a732cac92e2fbb82ec8afafc21e5dbfa6bf14df12df16df11df15df137e27be26fc5df89ef8bbf17ff20fe51fc93f867f12f7acffb3f9c40e510fe2f9f309cc628ebdd3be1769dd021d4531a2ff1afe2df504ea07fd79b05143ff90ff19fe2ab9fdee27fc4ff8a5f125f45a8885f15bf267e5dfc86f84df15be2b745e948bf2b7e4ffcbef803f187e21ba2dc0f7f2cfe44fca9f833f1e7e22fc45f8abf123f217e52fc94f869f133e267c5cf899f17bfa065c92feae39894abbf5fcbde0c424bf6b696aebdf32337a04d409eecb7b2dfc9de97fd3e7838c8fe28fb93eccfb2bfc8fe2afb9becefffa68716bffdff63eebd965cc79560d18fc97785bc79a495f75e6f296fe83df9f51760f73233dbc4cc3d27ceec8e0a06a526019062b20c0a59492929ac0c560eabf8962f405a0a2c1596d8d16119b04c587d58035843582358e3128132d916d644025588358535939aca9ac35ac05ac25ac15ac3dac0dac2dac1dac3121772847582558555835587d580d584d5822514acf8d881d585d513ce94a4a5122e8f783ddb847d867d817d857d837d87fd80fd84fd82fd86fd91ec147e0cdbaa9c4fb06d19cf90ac15d2d1925a8b1ff9cb0ab3df76617bb07dd801ec1076045b9c95c04e6167b073d8056ca552fdc056616bb075d8066c13761ff600f610f648ce59afc4c0c6b027b0c5d866b0e7b017b097b057b0d7b037b0b7b077b0f7b00fb08fb0c5a8aab06bb0ebb01bb09bb05bb0dbb03bb0bbb07b927d4b78760ee19ce15ce05ce1dce0dce13ce03ce1bce0bce17ce058706c380e1c178e07c78713c009e144706238099c144e06278753c051e0a87034383ac41bc731217c51e1f53843382338633813385338333873380b384b61364b95e5ac7e414bd8845fd0fa52625febdf7ec433bef9d5be1763ffd45ae55a54c8259f47a9b59c4d6942882bd9c2d9c1d9c339c039c239c1a9c2a9c1a9c369c069c269c169c3e9c0e9c2e9493e32e1ebba847b867b817b857b837b87fb80fb84fb82fb86fb816bc1b5e13a705db81e5cbf94006e0837821bff90046e0a37839bc32de02a7055b81a5c5de2d035fe2826dc3edc01dc21dc11dc71b933813b853b2b650e7701770977558ad85997df6c240edd2ddc1ddc3ddc03dca3f4e8dc532955b835b875b80db8a2d316dc36dc0edc2edc9e245f138ebd477867789752ae52a42d3a8277837787f780f784f782f786f78167c1b3e139f05c781e3c1f5e002f8417c18be125f052a9d6bc0c9ed816f014782a3c0d9e0ecf8067c2ebc31bc01bc2135d8ce14de04de1cde0cde12d2ac1bce405caa4cfec2d854857f16badb1d05ade0ade5aaa353954f1710b6f076f0fef00ef08ef04af0aaf06af0eaf01af09af05af0daf03af0baf2799e67cc027fc33fc0bfc2bfc1bfc3bfc07fc27fc17fc37fc0f7c0bbe0ddf81efc2f7e0fbf003f821fc0802f37e023f859fc1cfe117f015f82a7c4d5ae3c2e3f575f8067c137e1ffe00fe10fe08fe18fe04fe14fe0cfe1cfe02fe12fe0afe1afe06fe16fe0efe1efe01fe11fe097e157e0d7e1d7e037e137e0b7e1b7e077e177e4f92e50540400467041709c5e08ae086e02e0351c103c113c14bdca2651420785784872cbcac7fb100ff9dd6fab7d0925254265d041f0492520681e8c641e022f010f80844372102318e18418220459021c811140814042a020d818ec0406022e823182018221821182398209822982198235820582258215823d820d822d821d823103d1e119c105411d4ca9d3a8206822682168236820e0231bc9e24110c21511712e119e105e115e14dc232bccbad3032c307c227c257296f6973861f8416421ba183d045e821f4110608c3722bf6c5e931c204a168394398232cca2315846aa5b741a821d4111a084d847d84a217d1ec08e1b8526f219c94324538433847b840b82ccf5d215c2314a76f11ee10ee111e101e119e105611d610d611361036118a46da083b08bb087b92283142e534414444674417445744374477440f444f442f446f449f522cc815931922e70701465ab22138dff466df8bf995ca59b84f23e9480bd73772117910ef66f10c452184952825fe21fe6f92fc9014b2971c51814841a442780d918ec828bf3111f52b4771d800d110d108d11891b88429a219a239a205a225a255f96389c1af116d106d11ed10ed219e3a71bba223a213a22aa21aa23aa206a226a216a236a20ea22ea29ea4908c819888cf882f88af886f88ef881f889f885f88df883f882dc4366207b18bd843ec230e10878823c431e204718a38439c232e102b8855c41a621db12133901ebd3225fdbf21ea5fa0256ef71fa0957e434b6a2d55c897d692efb6d844dc473c403c443c423c463c413c453c433c47bc40bc44bc42bc46bc41bc45bc43bc477c407c447c425c455c435c47dc40dc44dc42dc46dc41dc45dc93049b099010c959e227b920b922b921b92379482c254f242f24ef72e783c44262237190b8483c243e92004988244212234990a4e54e564a8ea440a2945b158986444762203191f4910c24a892e10f19c9473f194b11484b2648a6e5ce4cc22c99235920592259215923d9201107ef90ec911c901c919c2a6dd1c8094915490d491d4903491349ab6c41b4d346222ea78ba4273945532025d233d20bd22bd21bd23bd247653b43fa44fa42fa46fa914924b313520ba98dd441ea22f590fa4803a461652ada8990c64813395312cce58a7abff8c127f3f357ff6611449a56284ecc24d38970b73e2bf1f42015df17e53ad7ee7774fee77afe6fe6c93fc9a68ce3dbdfdeb890d75998a0b888e129959bd8aa15f1ca4b35a43a5203a989b48f748074887484748c7482745afe9ae24ac5f5ce912e902e91ae90ae916e906e91ee908ab11d901e918a3b50455a435a47da285fa3e2a63591b690b69176907691f6244d6b06644476467641764576437647f640f644f642f646f6416621b39139c85c641e321f59802c4416218b65f0294b90a5c8b28a24abf54b5602fbaf43abe40ff9731823472644128c205390a9f2d60b259369c87464063213591fd900d910d908d918d904d914d90c99386c816c896c856c8d6c836c8b6c876c8fec80ec88ec84ac8aac86ac8eac81ac89ac85ac8dac834c5c4c4f72d7e6404ea9acf233f20bf22bf29bc4557e970a2d7f207f22171fdfc83fc82de4367207b98bdc43ee230f9087c8a36feb318fe5af9527e57e8a3c439e2317fb0a7215b9865c476e2037a5159af7e58f9a0f900fa548180ce547b1938f2430f2d2bccc27c8a7c867c8e7c817c845fb2be4e2c40df22df25d29fb4abb5fea28bf54538104ad6c4a9c2eaee2885c5c6015790d791d79037913790bb9e8a883bc8bbc27397c0ba0208a338a0b8a2b8a1b8a3b8a078a278a178a378a0f0a0b858dc241e14a964f493e53aefa116eb7c0c69f099ea4be42e1a1f05104284214118a580283f7ef55fa42045afe95c4e617576e293f81c7f4175fcd17fba764de556483c22a291214298a0c458ea240217a575168287414060a13451fc500c510c508c518c504c514c54cbe5e8b398a050ad1c80ac51ac506c516c50ec51ec501c511c5094515450d451d4543aab8a289a285a28da283a28ba227dfb94a45b6209e16055008e50ce502e50ae506e50ee501e509e505e50d451c6341b1a138505c281e145f2a76493be7ffdf80962246134a68291194188ae45d809242c9a088ff8aef15282a140d8a0ec5806242e943194019421941194399409942994199435940594259415943d940d942d941110d1ea01ca19ca054a1d4a0d4a134a034a1b4a0b4a174a074a1f4243db300950aa8847a867a817a857a832abe7c407d427d417d43fd40b5a0da501da82ed42f98f95085045043a811d4186a0235859a41cda1165015a82a540daa5efa7881449778fa851e530d69b408c809b0a926d4be04983a803a94314c7504752ce7dcd409d429d419d439d405d465a57710db525650c5b91ba85ba8bbb297bd7414d543a98abb508fd2ca554f50ab506b50eb501b50c5372da8a2af0e54714c4fd2636b80c6cafe0aed0ced02ed2a676c845ba5dda0dd7109a03d4a4ee910da53a81d682f68ef5fd0fa0589d21464b014b69c266059d2ee521c6c9588ba974c2773b9737bcb6f8422129eb666cb0931e1bb6b4ee57e2a3d850f34179a279cfb928975208322be5bb9dc64b39a0f4d68c5049a184f042d8626f65368a2d31c5a014d81a642d3a0e9d00c6826b43eb401b421b411b4b144943681362db7b3f2e31cda4286bbb425b415b435b40db42db41db43db403b423b4133471400d5a1d5a035a135a0b5a1b5a075a57da9f5a4f128deb804ee867e817e857e837e877e80fe84fe82fe86fe81fe816741bba03dd95c1f7721ae3afe0ea8fd012eed61fa1255f6cba2789b284f7a9fb156158eb01f4107a043d862e3ea6d033e839f402ba385885ae41d7a11bd04de87de803e843e823e863e813e853e833e873e80be84be82be86be81be85be83be87be807e847e827e855e835e875e80de84de82de86de81de85de83dc9be6e0006619c615c605c61dc60dc613c603c61bc60bc617c6058306ca9cd3e47794f0d07860bc383e1c3086084302218318c04460a238391c3286028df111481a52f6819aa8c9d189a849670debea0e58aef7518626bca69808f18551fc600c6505a26c608c6b8dc0a99c098c298c198c358c058c258c9e7c658c3d8c0d8c2d8c1d8c338c038c238c1a8c2a8c1a8c368c068c210adb5617460884be849da79133009f30cf302f30af306f32ee95f24a35300536c7319ae10bfe9795bfa06f66f54b83fe86f25937bc9442d89ac23299f194cf1da8eca9c83c7b7cafa5d6b7d3d15dfbcd649f9d8a81263e6eb8bbca964775dc17cc3fcc0b460da301d986e45b8d0a607d387298617c28c60c630139829cc0c660eb380a9c054616a307598064c13661fe640fe5ee610e608e618e644ea31732adf95a6d899c35cc05cc2149dae618a5eb6307730f7300f308f30c5d8aa306b30eb301b309b305b30db303b30bb307b92c0bf0ff489fe19fd0bfa57f46fe8dfd17fa0ff44ff85fe1bfd0ffa16fa026081d0e7f21a7fb10bff4d687ddf47f15140ab5f8695849b2b5e60c28d13d67cdf45df43df473f403f443f423f463f413f453f433f47bf405f9ca8a2afa1afa36fa06fa2df477f80fe10fd11fa63f427e84fd19fa13f477f81fe12fd15fa6bf437e86fd1dfa1bf47ff80fe11fd13fa55f46be8d7d16fa0df44bf857e1bfd0efa5df47bb26ec1001810833306170cae18dc30b863f0c0e089c10b8337061f0c2c0c6c0c1c0c5c0c3c0c7c0c020c420c220c620c120c520cb2529f147f809630e106390685543803451af70315034d40abccbd3a491d35d03130303031e86330c06088c1088331069352a618cc309863208e5c62b0c2608dc106832d06a2cd3d06070c8e189c30a86250c3a08e81e8a589410b8336061d0cba18f464098721302486670c2f95dd00c32b86370cef183e248df1eb22158b541d595954e125a9ceeea7efdf57422bfdf69d24baca92088e2a031b9fbedcf9c9fc5e3e09bf2c40f1f19b2c3efda67aff06d80f92776ad22d97749f15a9e2843df9194a3642461547c7f089e10bc337861f0c2d0c6d0c1d0c5d0c3d19eb1afa18061886184652650d630c130c5309ad6186612eb59378370d0b0c150cc5f19a74bd86a2590343718c3845dc872186230cc7188a23a718ce309c63b8c07089e10ac335861b0cc5593b0cf7181e303c6278c2b08a610dc33a860d0c9b18b6306c63d8c1b08b614f56cb1801236274c6e882d155ce104ac5f5fe118cf84bd02abe79f1ff042d47c5e8267ddc6d990b33bacb44a7d103a327462f8cde187d30b230b23172307231f230f2310a300a318a308a314a304a31ca30ca312a305230122d6818e932543832303231ea6334c0688891f8668cd104a32946338ce6182d305a6224ba5e63b4c1688bd10ea33d46078c8e189d30aa6254c3a88e5103a326462d8cda187530ea62d4938544c6c098189f31be607cc5f886f11de307c64f8c5f18bf31fe606c616c63ec60ec62ec61ec975ed0974158860ac701c6612911c631c609c629c69994e704e35ce6618d0b8c9552548c358c758c0d8ccd52fa180f301e623cc2788cb138658af10ce339c60b8c97f23d3a5e61bcc67883f116e31dc67b8c0f181f313e615cc5b886711de306c64d8c5b188be33b187731ee55767a592c05e584fe10136272aedc6b985c30b996f562324c6e92a0f38bdbf817b47e5079be6f3f5ec35f387130b90b2979269df2e3434899c39dfed9d1fa9ad271b772c66cf214d0924955e7adb00f317961f2c6e453b15a985898d89888a65c4c3c4c7c4c024c424c224c624c124c524cc438734c0a4c144c544c344cc4a519989898f431196032945314691b931126634c26984c31996132c76481c91213d1e91a930d265b4c7698ec31396072c4448cad8a89b827754c1a983431114312ed7430e962d2937566a6c094989e31bd607ac5f486e91dd307a64f4c5f98be31fdc0fe4874c910fce16f6aad7f8596ed606a553ec2bab530b53175643accd4c5d4c3d4c734c034c434c234c634c134c534c334c7b4c054c154c554c354c7d4c0d4c4b48fe900d321a6234cc7984e309d623ac3742e67baa60b4c9798ae305d63bac1748be90ed33da6074c8f989e30ad625ac3b48e6903d326a62d4cdb987630ed62da93f57766c08c989d31bb6076c5ec86d91db307664fcc5e98bd31fb6066616663e660e662e661e6631660166216611663964868cd52cc32e971099535cbbfa1352b3053305331d330d33133303331eb577a5501ad4a6f27e3f2b3016643cc46988d319b6036c56c86d91cb305664bcc5698890637986d31db61b6c7ec80d911b3136655cc6a98d5316b60d6c4ac85591bb30e665dcc7ab2aed01c9813f333e617ccaf98df30bf63fec0fc89f90bf337e61fccad65b4911ae35e9791bd7b15731b73472a8db9fb07687d29ae5fbced69993bfa9189f0e244bfc0dcfb72a2ca723e9a44d7f2f38358f73768f9f1b7bcc5787ccc03092d99832a13ed310f1188814595f7b3a4ef5f621e639e609e629e619e632e3a52305731d730178334303731ef633ec07c88f908f331e613cca798cf309f63bec05c34b2c27c2dcdfef906f32de63bccf7981f303f627ec25c5c750df33ae60dcc9b98b7306f63dec1bc8b794f96675a000b6271c6e282c5158b1b16772c1e583cb17861f1c6e2838585858d8583858b8587858f458045884524391e85f0fe37a08545fca5eeb148b048bfa085c5b7eac74248818522b39c162a1662ab6361606162d1c76280c5108b1116632c26584cb1986131c76281c5128b15166b2c36586cb1d861b1c7e280c5118b1316552c6a58d4b16860d1c4a285451b8b0e165d2c7ab248d5125812cb3396172caf58deb0bc63f9c0f289e50bcb37961f2c2d2c6d08c02f5d2c3d2c7d2c032c43c87a613196099629961996399605960a962a961a963a96069626967d2c07580eb11c6139c67282e514cb59196930918cca952ca60cf49dcf52232de7d2f05b2e6472e37289e54ace862dd795ce5da65f2d37586eb1dc61b9c7f280e511cb1396552c6b58d6b16c60d9c4b285651bcb0e965d2c7bb210d70a5811ab335617acae58ddb0ba63f5c0ea89d50bab37561fac2cac6cac1cac5cac3cac7cac02acc252229980b38aa5aff565c295baa87c452a6556bbfa5df2e757d8fda7fceb03f19bbdf74bfeeb29b22f45b2f3dace2f77ae0c1b96a1ea0d56095629561956395605560a562a561a563a56065626567dac06580de5d4cb6a84d518ab095653ac6658cdcbed02ab25562bacd6588906b758edb0da6375c0ea88d509ab2a5635acea5835b06a62d5c2aa8d5507ab2e56bdb2ce19b026d667ac2f585fb1be617dc7fa81f513eb17d66fac3f585b58db583b58bb587b58fb58075887584758c7582732ae23ac4161f4fe0d5feb9a619d62fdcda38f758e75f1f397c0ba9c9d58abf2ddb3d6b0d6b136b036b1ee633dc07a88f508eb31d613aca758cfb09e63bdc05a1cbcc27a8df506eb2dd63bacf7581fb03e627dc2ba8a750deb3ad60dac9b58b7b06e63ddc1ba8b75afacf6066c88cd199b0b36576c6ed8dcb17960f3c4e685cd1b9b0f36163636360e362e361e363e360136213611363136093629361936393605368a34f312d1888a8d868d8e8d818d894d1f9b0136436c46d88cb1996033c566564e9888a6e6125a9b45a53d92898b9ba50c066e56d8acb1d9c8b07b28fada567a0d993dbcd961b3c7e680cd119b1336556c6ad8d4b16960d3c4a6854d1b9b0e365d6c7a65e53a604b6ccfd85eb0bd627bc3f68eed03db27b62f6cdfd87eb0b5b0b5b175b075b1f5b0f525b5baef7fa75df7debf275fff33229fb3b240c9576ce3befb15822fd523b601b621b611b631b609b629b619b639b605b60ab62ab61ab63ab606b626b67d6c07d80eb11d613bc676526ea7d8ceb09d63bbc07689ed0adb35b61b6cb7d8eeb0dd637bc0f688ed09db2ab6356cebd836b06d62dbc2b68d6d07db2eb63d590f7007ec88dd19bb0b7657ec6ed8dd2bbd2e760fec9ed8bdb02b53c31e2bec3e3242b3b34a55fc5b2916e197fef5082176dfb601760e76eeb7f32ad77895d0baae642ac6ce93935a3b1fbb00bb10bb08bb18bb043b7156865d2eaf705760a760a762a741f8003b033b13bb3e84c3bd1b6237c26e8cdd04bb297633ec446b0bec96d889cb5863b7c16e8bdd0e3bd18ee8ee889db8b02a7635ecead835b06b62d7c2ae8d5d07bbae5408bb9e2ca7b807f6c4fe8cfd05fb2bf637ecefd83fb07f62ffc2fe8dfd4706bef716f6b60c4eec1dec5dec3dec7dec03ecc53711f631f609f6a9d45afb4c6e0b714a8e7d2153a5f68ab4fa04b4f6aacc15de6b32e37eafcb8ce1bd81bd897d1f7b71d810fb11f663ec27d88b76c49173ecc5314bec57d8afb1172d6cb1df61bfc7fe80fd11fb13f655ec6bd8d7b16f60dfc4be857d1bfb0ef65dec7bb258e401381087330e171cae329427f5c33f87a5ff0eadafba0d5fb54e0a199cc4e186c31d87070e4f1c5e38bc71f8480d7cb07010ff153b2e0e1e0e3e0e010e210e110e310e890498322a77fa38a4386438e43814382838a8386838e83818389838880306380c7110c78f7198e030c56186c31c87050e4b1c5638ac71d8e0b0c56187c31e87030e471c4e385471a855dae2943a0e0d1c84276695b30e3f6215df61f3324c2a4d00e54744e7af40ebd0c2a1fd759b70100faef31357125a876ef97d4ff4276b821e8123713ce378c1f18ae30d47f1fd03c7278e2f1cdf387e70b470b47174707471f470f4710c700c718c708c714c704c71cc70cc712c7054705471d470d47134703471ece338c07188e308c7318e131ca738ce709ce3b8c07189e30ac7358e1b1cb738ee70dce378c0f188e309c72a8e351ceb3836706ce2d8c2b18d6347424b1884c72e8e3d59d654e0ea04995973224e6789a2d3454602d51d4ed7ef60e0e926a175bae3f49053c072866a81d313a797dc3e473233f8245af8e064e164e3e4e0e4e2e4e1241a0f700a718a708a714a704a71ca7012bd880645cb2a4e1a4e3a4e064e264e7d9c06380d711ae134c66982d314a7194e739c448f4b9c5638ad71dae0b42deb80a87fca049549a2b208e23f0bade417b44ad314a79d7c5f9ff6381d703ae274c2a98a530da73a4e0d9c9a38b5706ae3d4c1a98b534fd69aad0255a27a46f582ea15d51baa77541fa83ecb8f2f54dfa87e50b550b55175507551f550f5510d500d518d508d514d504d51cd50cd512d5055505551d550d55135503551eda33a407588ea08d531aa1354a7a8ce509da3ba901c4a9ee87df955e3ea2b675d6e65ccbc8ca0fe7568fdd04e6b5405b83b5fa624aaeb2f8715d54df9712b57435677a8ee513da07a44f5846a15d51aaa75541ba836516da1da46b5836a17d59e2cc95b036a44ed8cda05b52b6a37d4eea83d507ba2f642ed8dda07350b351b35073517350f351fb500b510b508b518b504b514b50cb51cb50235053515350d351d35033513b53e6a03d486a88d501ba336416d8ada0cb5396a0bd496a8ad505ba3b6416d8bda0eb53d6a07d48e32e1b0762ab596e8ab8a5a4d62496c6bf55ffb91b88a46c91aa07d898059f9d19453c6b5266a2dd4da127eb50e6a5dd47ab204711da813f533ea17d4afa8df50bfa3fe40fd89fa0bf537ea1fd42dd46dd41dd45dd43dd47dd403d443d423d463d413d453d433d473d40bd415d455d435d475d48def22237ffa2dff29b3f0abc4d6bf404b5a3a7553be94eb7dd407a80f511fa13e467d82fa14f519ea73d417a82f515fa1be467d83fa16f51dea7bd4c5b947d44fa85751afa15e47bd817a13f516ea6dd43ba87751efc952cf0da04134ce685cd0b8a27143e38ec6038d271a2f34de687cd0b0d0b0d170d070d1f0d0f0d108d008d188d088e5e2a38a29b556234123452393753ca244ce927f21ea571a8af2a320ed5fd75a8d1c8de25b6b3514e95cc9ff7dbba468a8125a0d4d1aa00d1d0d030d138d3e1a033486688cd018a3214636456386c61c8d051a4b34c4c16b3436686cd1d8a1b147e380c6118d131a55346a68d4d168a0d144a385461b8d0e1a5d347ab22eb65c884d34cf685ed0bca27943f38ee603cd279a2f34df687ed0b4d0b4d174d074d1f4d0f4d10cd00cd18cd08cd14cd04ccb69fb1a9a199a399a059a8a4cb16faa686a68ea72eab669a069a2d99736a1409180537380e6506e9391dc7e434bfb42d7d77eb9d5e5ca97a638668ce604cd299a3334e7682ed014cdaed05ca3b941738be60ecd3d9a07348f689ed0aca2298624ce6da0d944b385661bcd0e9a5d347bb21a780b6811ad335a17b4ae68ddd0baa3f540eb89d64b42abf596d0fa4750f45fa025dfe8c90f5febdb8842eb237557cb42cb46cb41cb45cb434b7c13a015a215a115a395a095a295a195a355a0a5a0a5a2a5a125aed440cb44ab8fd600ad215a23b4c6684dd09aa23593a06acdd15aa0b5446b85d61aad0d5a5bb47668edd112bd1fd13aa15545ab86561dad065a4db45a68b5d1eaa0d5950909ad9e2cbfde06da44fb8cf605ed6b253ccbd9e1dbfb8f35ca6406c5324a963248f8d7a1d5bea17d47fb51462c7cb49fe56ae4ec6be6be845656d6ed7ea0fd42fb8df6076d0b6d1b6d076d176d0f6d71568076887684768c7682768a7686768e7681b682b60af1508a27b26d40bcf2db7db407680fd11ea13d867867b4a768cfd09ea3bd407b89f60aed35da1bb4b768efd0dea37d40fb88f609ed2ada35b4eb6837d06ea2dd42bb8d7607ed2eda3d59a5be037488ce199d0b3a57e93b756ee8dcd179a0f344e785ce1b9d0f3a163a363a0e3a2e3a1e3abe8c0a7e69ad2f68fdd05a6542e0f637dda5a313a013a213a113a393a093a2237ac9d129d051d051d1d1d0118719e898e8f4d119a033446784ce189d093a537466e8ccd159a0b3446785ce1a9d0d3a5b7476e8ecd139a07344e7844e159d1a3a75741ae834d16989b72632e517c3c997fc6f42abd3964fe756dca50e3a5d747ae85624634597e89ed1bda07b45f786ee1ddd07ba4f745fe8bed1fda06ba16ba3eba0eba2eba1eba31ba01ba21ba11ba39ba09ba29ba19ba35ba0aba0aba2aba1aba36ba06ba2db477780ee10dd11ba637427e84ed19da13b477781ee12dd15ba6b7437e86ed1dd4953b0bb47f780ee11dd9364e0792c2bd1f83bf1a29cfa43b72ae331dd1abaf5bfe36b751b42a47ff5152114d0fa4ab5fc0d5a526b7d41abdb44b7856e1bdd0eba5d747be855d0037a44ef8cde05bd2b7a379937d8bba3f740ef09e10cf4dee87dd0b3d0b3d173d073d1f3d0f3d10bd00bd18bd08bd14bd04bd1cbd0cbd12bd053d053d1d3d0d3d133d033d1eba337406f88de08bd317a13f4a6e8898ee6e82dd05ba2b7426f8dde06bd2d7a3bf4f6e81dd03ba27742af8a5e0dbd3a7a0df49ae8b5d06ba3d741af8b5e8f958aa427a9503a5d5fb89229b923e16bb17246be17c2cae52be6ceca95b28efabdac68fda4ccab7b535662b5288b5e3a94a5083dca8273014bf382b2145442596528a3ac72239a5528ab926894c5300cca2a0c7dca1200434a46f931258bf99492237b4ec9cb2cfa5d5132276ebedf9a3f29847e62ec9f82d657f1d53f42ab4cb71bcaa7b323ae45bc32ba940cace2361e2829304f94048b354a16bf0625b75b8b9212ac434907251ea68a648b012909522ec4959207e24e4909f0c44258352fca95cf1fca25b136e54a499772a99c4fb9f44a98fb11e5229384724d414699eb5d50a6e5aa8446993e6850268cf5297379869499176362f2e784a69f0532bf33bcf2bfed6b7db7f2ab00bb340889a974b7848b5cc6df29e765e794136f4bcae99835658c7c4b19d1dc6321d4ea8132ca71a2f446859b257c0e610b8b1b21ac1cf15fa14dc42bab47f114cbdb26fecee485bc9237f24e3ec827f922dfe487b428c6408774498ff4c9800cc9888cc9844cc98cccc982544895d4489d344893ec930372488ec8313921a7e48c9c930b7249ae9055c935b921b7e48edc938772fdb218db913c91e2801a59271b64936c916db24376c91ecf159e81c35a5ec7f9ccf385e72bcf379eef3c3f787ef2fce2f9cdf387678b679b67876797678f679fe780e790e788e798e784e794e78ce79ce78267856795678d679d67836793e73ecf039e873c8ffee72284ff095a5fb1b58f18f398e709cf539e673ccf795ef0bce479c5b3b86f1b9eb73cef78def37ce0f9c8f389e72acf359eeb3c37786ef2dce2b9cd7387e72ecf3d5e2a9297493c3597332f175eaebcdc78b9f3f2e0e5c9cb8b97372f1f5e2c5e6c5e1c5e5c5e3c5e7c5e025e425e225e625e125e525e325e725e0a5e145e545e345ef472fecafe6d5aef37747d63ec2fdd99ff062d5e0c89ae8b290cc5af08a15094bcf47919f032e465c4cb9897092f535e66bccc7959f0220e58f1b2e665c3cb96971d2f7b5e0ebc1c7939f152e5a5c64b9d97062f4d5e5abcb479e9f0d2e5a54761725e2151763df37ae1f5caeb8dd73baf0f5e9fbcbe787df3fae1d5e2d5e6d5e1d5e5d5e3d5e735e035e435e235e635e135a518fc35e7b5e055e155e555e355e7d5e0d5e4b5cfeb80d721af235ec7bc4e789df23ae375ceeb0286685fe6aaf32a64cdeb86d72daf3b5ef7bc1e783da2a8f37ae2b5ca6b8d57b1dfe0b5c96b8bd736af1d5ebbbcf678ab48362ef1aeb89d79bbf076e5edc6db9db7076f4fde5ebcbd79fbf066f166f3e6f0e6f2e6f1e6f316f016f216f116f396f096f296f196f356f0a6f0a6f2a6c1fcfcf5a995ff47d0facf06216fba809630087933783379ebf336e06dc8db88b7316f13dea6bccd789bf3b6e06dc9db8ab7356f1bdeb6bced78dbf376e0edc8db89b72a6f35deeabc354a69f2d6e24d74211aeff2d6138fa7644013efe7fb99f70bef57de6fbcdf797ff0fee4fdc5fb9bf70fef16ef36ef0eef2eef9eacbaf85579745a12cb3c56e5d2c4fc3bf9585cd16fcc31bfb95e7f115adf392fbf955eff0a12fe9cef5a24a24bde7dde03de43de23de63de13de53de33de73de0bde15de55de35de75de0dde4ddefbbc0f781ff23ee27dccfb84f729ef33dee7bc2f785ff22eda5cf3bee17dcbfb8ef73def07de8fbc9f78aff25ee3bdce7b83f726ef2ddedbbc7778eff2de2bd3b221359c78a01f673e2e7c5cf9b8f171e7e3c1c7938f171f6f3e3e7c587cd87c387cb87c787cf87c047c847c447cc47c247ca47c647ce47c147c287ca87c687ce8957a5386d4c533fd30e44ae4cd860f938f3e1f033e867c8cf818f331c1569c32e563c6c79c8f05c5ab47dca8c79a0f71fc968f1d1f7b3e0e7c1cf938f151e5a3c6479d8f061f4d3e5a7c88f177f8e8f2d1e3b32259f184ce7e9ef9bcf079e5f3c6e79dcf079f4f3e5f7cbef9fcf069c9ec877f1c517f015af24112c6b2b81b4f9b4f874f974f8f4f9fcf80cf90cf88cf98cf84cf94cf8ccf9ccf824f854f954f8d4f9d4f834f93cf3e9f033e877c8e248a9e633e27a54cf99cf139e773c1e792cf159fa2a30d9f5b3e777ceef93cf079e4f3c46795cf1a9f753e1b7c36cbd65a7cb6f914ad75bf538abf16a7094d5b66a5974176b714f5f799baef34c0ff53685dee32fe2e34c0b357dacd778a414ce5a21e69afbdce7c5df8baf275e34bfcebc1d793af175f6fbe3e7c597cd97c397cb97c797cf97c057c857c457cc57c257ca57c657ce57c157c297ca97c697ce97c197c997cf5f91af035e46bc4d798af095f53be667ccdf95af0b5e46bc5d79aaf0d5f5bbe767cedf93af075e4ebc45795af1a5f75be1a7c35f96aa12f7a69a325daecf0d5e5abc77745923a0a93f37de6fbc2f795ef1bdf77be1f7c3f2bf516dfaf72fbe6fbc3b7c5b7cdb72397907c3a7cbb7c7b7cfb7c077c877c477cc77c277ca77c677ce77c177c2b7cab7c6b7ceb7c1b7c9b7cf7f91ef03de47bc4f798ef09df53be677ccff95ef0bde47bc5f79aef0ddf5bbe777ceff93ef07de4fbc47795ef1adf75be1b7c37f96e494aa67f1c517f82d6bf0bbe7fe7fe7ec4b5b7f916b7ae8bbab8f61e3f15c9a829ecfdcf999f0b3f577e6efcdcf979f0f3e4e7c5cf9b9f0f3f163f363f0e3f2e3f1e3f3e3f013f6129113f313f093f293f193f393f053f0a3f2a3f1a3f3a3f063f2645d79f018545fa19f133e667c2cf949f193f737e16fc2cf959c934894c9cb816520249f9b188f327b47e28ae3f5109fe3568fd9607fd87f345979270869fad3040f9d9f1b3e7477c3cf273e2a7ca4f8d9f3a3f0d7e9afcb4f869533c7c9f2e5ae25f3d5a1549482a9c16eb4ceb42eb4aeb46eb4eeb41eb49eb45eb4deb43cba265d37268b9b43c5a3ead8056482ba215d34a68a5b4325a39ad8296424ba5a5d1d26919b44c5a7d5a035a435a235a635a13ec67b4a6b4c4768eadf8d7024a95d692d68ad69ad686d696d68ed69ed681d691d6899638a046ab4eab015ff4db2cb72d5a6d5a1d5a5d5abdaf493ecc34e9fdd967da17da57da37da77da0fda4fda2fda6fda1fda166d9bb643dba5edd1f66907b443da11ed9876423ba59dd1ce6917b415da2a6dd1ac4edba06dd2eed31ed01ed21ed11ed39ed09ed29ed19ed35ec8f98f45f1cf23ea7768fd872963b963b52af23e2c713ad25ed15ed3ded0ded2ded1ded33ed016df9f685769d768d76937683769b768b76977687769f7bef2efa5c7ed9ce95c7ec895ce8dce9dce83ce93ce8bce9bce47a2cbb1e8d8741c3a2e1d8f8e4f27a013d289e8c474123a299d8c4e4ea78070c01ca5723f94c9fec96f4b66f21f57f4e3a2aee9dff7b5fe2db44aa12306aad1d185194ac7a063d2e9d319d019d219d119d399d099d299d199d359d01137515cc38ace9ace86ce96ce8ece9ece81ce91ce894e954e8d4e9d4e834e934e8b4e9b4e874e974eaf7c5340c62cdc33dd0bdd2bdd1bdd3bdd07dd27dd17dd37dd0f5d8bae4dd7a1ebd2f5e8fa7403ba21dd886e4c37a19bd2cde8e674051a177415ba2a5d8dae4ed7905126d7a4dba73ba03ba43ba23ba63ba13ba53ba33baff4d67417e5fe92ee8aaef8b8812686b7a5bba3bba77ba07ba47ba25ba55ba35ba7dba0dba4dba2dba6dba1dba5db2b271821e32fde99de85de95de8dde9dde83de93de8bde9bde879e45cfa6e7d073e979f47c7a01bd905e442fa697d04be965f4727a058ee5f2c47f1c51ff065aff92e8f4bdf2520c5ba1a7d2d3e8e9f40c7a26bd3ebd01bd21bd11bdb174aebc09bd29bd19bd39bd05bd25bd15bdb554569ef8ef96de8ede9ede81de91de895e955e8d5e9d5e835e935e8b5e9b5e875e975e8fa2731f32ece59fe95fe85fe9dfe8dfe93fe83fe9bfe8bfe97fbea0f5c3fc4b7e32c4fc3697f52774fda7b4e6ff04adaf053c5fe7fc3028a5b2f22d610ad2b72b9f157db1e3420be97bf47dfa017db11fd18fe927f453fa19fd9c7e415fa1afd2d7e8ebf40dfaa634f3fc3efd01fd21fd11fd31fd09fd29fd19fd39fd05fd257dd1c59afe86fe96fe8efe9ebe18c091fe897e957e8d7e9d7e837e937e8b7e9b7e877e977e8f81a44e9181c3e0cce0c2e0cae0c6e0cee0c1e0095d63f062f066f0616031b019380c5c061e039f41c0206410318819240c520619839c41c14061a03210a7eb0c0c0626833e8301832183118331830983298319853e0f160c960c560cd60c360cb60c760cf60c0e0c8e0c4e0caa0c6a0cea0c1a0c9a0c5a0cda0c3a0cba0c7a0ce58a7b19f80ccf0c2f0caf0c6f0cef0c1f5877183e19be18be197e185a0cedff6968fd9e9efb035a98882b7218bad8260c3d863ec38061c830621833145fa60c338639c382a1c25065a831d4191a0c4d867d86038643862386638613865386338673860b864b862b866b861b865b863b867b860786478627865586358675860d864d862d866d86e2ae7619f6185518497d2b17a4d12a958a64652c27b58ebfa1cbf906d8df41d797d62a41f95371499eba10735b86b8a333a30ba32ba31ba33ba307a327a317a337a30f238b9138cc61e432f218f97292270a18858c224631a38451ca286394332a18298c540a0518e98c0c4626a33ea301a321a311a331a3899cc488a68c668ce68c168c968c568cd68c368cb68c768cf614b08f8e8c4e8caa8c6a8cca906324a4c9a8c5a8cda8c3a8cba827792262c8407d7c667c617c657c637c67fc60fc64fc62fc66fc616c31b6193b8c5dc61e639f71c038641c318e19278c53c619e39c71c15861ac32d618eb8c0dc626e33ee301e321e311e331e309e329e319e339e305e325e315e335e30de32de31de33de303e323e313e32ae31ae33ae306e326e316e336e30ee32ee35ef98342ce32246726172665c998dbff58f0fdcbd7fab9eef807b498dc98dca5d64a1e4c9e4c5e4cde4c3e4c2c2636138789cbc463e2330998844c222631938449ca2463224e2c98284c54261a139d89c1c464d26732603264326232663261326532633267b260b264b262b266b261b265b263b267726072647262526552635267d260d2ac5c455fad72cc5ffacaf99dbce047dee0efbacbfe9bd0b2aa72bdcdd7329b929b8e499b4987499749ef6bde584e20a567a617a657a637a677a60fa64fa62fa66fa61fa616539ba9c3d465ea31f599064c43a611d39869c234659a31cd99164c15a62a538da9ced4606a32ed331d301d321d311d339d309d329d319d335d305d325d315d33dd30dd32dd31dd333d303d323d31ad32ad31ad336d306d326dc979adb4cdb4c3b4cbb457fee2901360d999d985d995d98dd99dd983d993d98bd99bd98799c5cc66e630739979cc7c6601b39059c42c6696304b9965cc72660585ef9ba9cc34663a338399c9accf6cc06cc86cc46ccc6cc26cca6cc66cce6cc16cc96cc56ccd6cc36ccb6cc76ccfecc0ecc8ecc4accaacc6acceacc1acc9ac85a118555bbe56b30eb32eb35e395d09f1a0fe7573ffff1dba7ece85fef9b12b9fda9b275d9afcccfcc2fccafcc6fc8e6dc8fcc1fcc9fcc5fccdfcc3dc626e337798bbcc3de63e737196382c621e334f98a7cc33e639f382b9c25c65ae31d7991bcc4de67de603e643e623e663e613e653e633e673e60be64be62be66be61be65be63be67be607e6c76f2e03bb5c33c277b93a518ad897c1d85ffc05d91f9690fe1568c9c23037572e322dc94384e9c9fcc4bccabcc6bccebcc1bcc9bcc5bccdbcc3bccbbc57660043ced31667161716571637167708bbae78b078b278b178b3f8b0b058d82c1c162e0b8f85cf226011b28858c42c1216298b8c45cea260a1b05059682c7416060b93459fc580c590c588c558923a498ea9098b298b198b398b058b250bd1ef9ac586c596c58ec59ec501baf8ef91c5894595458d459d45834593458b459b4587459745af8c09414e382b672a172a572a372a772a0f2a4f2a2f2a6f2a1f2a16159b8a43c5a5e251f1a90454422a1195984a4225a59251c9a91454142a2a158d8a4ec5a06252e953195019521951195399509952995199535950595259515953d950d952d951d98b9f838ab0cc13bcaa548e544e25dddf5f6514fa1f92df92f42bfc485f43a90af7864a8d4a9d4a834a934a8b4a9b4a874a974aaf24bf844c0150cf542f54af546f54ef541f549f545f54df543f542daa365587aa4bd5a3ea530da8865423aa31d5846a4a35a39a532da82a5455aa5a45b833aa8e868a9d38d7f80e5a0868397d8125aaa68cc19622a1f535b5f0f59af8dbd02a9c1fd02ad9e484eb3d1703ed531d501d521d511d539d509d529d519d535d505d525d89ad24cd198bcb5e53dd50dd52dd51dd533d503d523d51ad52ad51adc3100737a836a9b6a8b6a976a876a9f6ca45e2901914da99da85da95da8dda9dda83da93da8bda9bda879a45cd960469c907668b9a43cda5e651f3a905141ea016c9f92b2da696504ba965d4726a05354526c5682a358d9a4ecda06652eb531b501b521b511b4b6869136a536a336a736a0b892e6d496d456d4d6d436d4b6d476d4fed40ed48ed44ad4aad46ad4ead414db4df2aa54dad43ad4bad47bd222b25e9a47ea67ea17ea57ea37ea7fea0fea4fea2fea6fea16e51b7a93bd45dea1e759f7a403da41ec90579c254d085452bbe4f2a9f916432bb667ffda7fddf921fe98e5f5cb1e5565cb8b8c08c7a4ebda0ae5057297c635da76e5037a9f7a90fa80fa98fa88fa94fa84fa9cf28de98fa82fa92fa8afa9afa86fa96fa8efa9efa81fa91fa897a957a8d7a9d7a837a937a8b7abb4213e23da877a87725baf41e8d0a8d1fd6ecb544d70be5b461f84b7e87d6dff5b57e414b1884c20d15bfa5214caa338d0b8d2b8d1b8d3b8d078d278d178d378d0f0d8b864dc3a1e1d210c7fb34021a210d59c18d464c23a191d2c86466717e8030298d9c4681c190864243a5a1d1d06918344c1a7d1a031a43b8a2f1118d318d098d298d198d398d058d2505388d358d0d36e2c82d8d1d8d3d8d038d238d130dd1698d469d46834693468b469b46874697468fa6bcab32f3c93cd3bcd0bcd2bcd1bcd37c488c994f9a2f9a6f9a1f9a96049569d37468ba343d9a3ecd80664833a219d34c68a634339a39cd82a64253a5a9d1d4691a344d9a7d9aa2cd21cd11cd31cd09cd29cd19cd39cd054dd1f88ae69ae686e696e68ee69ee601c181e691e6896695668d66bd129e4bc75ae8686f19ed504495cfbc725eff2015fca7a1f2ff57683604b4683669b62a564d42cb6cd3ecd0ecd2ecb15f9135dbfa64ffccfee5ff23efbb961cd7b1653f86ef0c79f3284befadf496292f4a94b75f7f015575f7de3373e34ecf1977e25620182c8a044090492c006b65429b435b405b425b415b43db40db422ba0eda0eda195d00ed08ed04ed0ced02ed0aed06ed0eed01ed09ed05ed0ded07ad0fad006d238599ad086d046e23b1588a1bb3686a67d20f4fab65dbf868e72e5e0f259f256beddb8fe04adbfeb4ebfa631d6eaa9fc56af905dde075a9a0ecd8026aa6241b3a139d05c681e341f5a002d8416418ba189faa58a306ab50c5a0e6d026d0aad227b2dad0aad06ad2eb9c7ce4db185d680d694abae5a4b110daab525aba3276eaf03ad0b51b8ae48a73f9dd067d0e772dca52fa02f65afa5afa0af955883be81be855e401707f7d04be807e847e827e867e975a15fa05fa1df946608fd0efd01fd09fd05fd0dbd07bd0f7d007d087d047d0c5d64a843005e176559d06de80e7417ba07dd871e40179944d063e809f4147a063d873e813e855e815e959d955e835e87de80de842efe6d43ef40efc250a5ac9f011894cfdb98c198c358c058c258c158430ca88c2d8c02c64e42cbd8c328611c601ca5ffb5149813579da426aa1419d9a95b71d5f97f35b4c4cb0ae322997a87b68a0b8c2b8c1b0c719b0f184f182f186f183d187d1803184318231863181a0c1d8601c38461c1b06138305c181e0c1f4600238411c1886124305218198c1c8668d2298c0a8caa1ce618351875180d184d182d186d392784e5b7e4d51fa7287e7afcfdd137f78f5e85bf072dc9ecf345d9d39306a1d181d185a94ac1471330097306730e730173f921bc4f60ae60ae616e606e6116307730f7304b98079847982798679817b535867955846963de94f805f30ef301f30953ecbf61f660f6610e600e618e608a9335983a4c03a609d38269c37460ba8a2b8af060fa30039821cc08660c5354238599c1cc614e604e6156605661d660d66136603661b660b66176607661a952bfd2022cc29a4158b3c226b416b096b0569fb486b581b58555c0dac1dac32a611d601d619d609d615d605d61dd60dd613d603d61bd60bd61f560f5610d600d618d608d6169b07458062c139628c586e5c0726179723861f9b0025821ac08560c2b8195c2ca60e5b026d2abed8bab5586b5de3eb47e6f49e02e8cf6ffedd0b2a65f32b0b02ab0aab06ab0eab01ab09ab05ab0dab03ab0ba10d0b315e9536d13f60cf61cf602f612f60af61af606f61676017b077b0fbb847d807d847d827d867d817d857d837d87fd80fd84fd82fd560371660f761ff64049c46943d8a33ff30affc133e97f0e2ddc577f82d697cc59db853d86adc1d6611bb04dd8166c1bb6035bfce4c1f661079f9d1076043b869dc04e6167b073d813d853d815d855d835d875d80dd84dd82dd86dd81dd85d38aad467752075461a63c5ddc1219c199c399c059c259c159c359c0d9c2d9c028e3861afdc0338259c039c239c139c339c0b9c2b9c1b9c3b9c079c279c179c379c1e9c3e9c019c219c119c311c0d8e0ec78063c2b1e0d8701c382e1c0f8e0f47e41cc289e0c4701238299c0c4e0e6702670aa702a70aa706a70ea701a709a705a70da703a70b579542b32ee012ee0cee1cee02ee12ee0aee1aee06ee56a2517c1dc46dba7bb825dc03dc23dc13dc33dc0bdc2b5c71c21dee03ee13eeebc7aaeb5be2eaeccab8fdfffd06a1f44370df1fbf781d6e0f6e1fee00ee10ee08ee18ae06571c37e09a702db8365c07ae0bd783ebc30de0867023b831dc046e0a37839bc39dc09dc2adc0adc2adc1adc36dc06dc26dc16dc3edc0edc253a50cb0077884378337ff3078f7e02dfe4c2abcffcb1eec3bfd70d1f83d68794bc9d3fda55ffcc914de4a111f036f0d6f036f0baf8027feddc32b213a34ef08ef04efacecebf02ef0aef06ef0eef01ef0c4b52f786f19b7e9f594adb8a53ebc01bc21bc1184ede769f07478063c139ea5ecc4b5363c079e0bcf83e7c30be085f0227831bc045e0a2f8397c39b28ef06bc29bc0abcaa2246685e0d9ea88038d884278a6bc3eb2881a86117be2ab5947dc027fc19fc39fc05fc25fc15fc35fc0dfc2dfc02fe0efe1e7e09ff00ff08ff04fffc4917f857f837f877f80ff84ff82ff86ff83df87df803f843f823f863f81a7c1dbe01df846fc1b7e13bf05df81e7c1f7e003f841fc18fe127f053f819fc1cfe04fe147e057e157e0d7e1d7e037e137e0b7e1b7e07fe27ce00d2431ac266b107e2db2715a5bf383aff57434bf400d7508e3e9689f85e48bdeb0008886086608e608160896085608d6083608ba040b083e86dc4930d0e088e084e08ce082e08ae086e08ee081e089e085e08de087a08fa08060886084608c60834043a02038189c0426023701088a23d04fe47ae65ffb7d35fa3ebb7e3b51647a914f80dadc7675b4868050182104184205645cf102408520419821cc104c1144145222aa822a821a8236820682268216823e820e82254955524b5c2437cb654a7ae323fabd3832abe3de10ce11ce102e112e10ae11ae106e11661817087708fb04478407854e233c21342b1bd20bcaadd36c21bc23bc207c227c217c237c21ec23ec201c221c211c231420da18ed0406822b410da081d842e420fa18f3040182214d588112608538419c21ce104e11461056115610d611d61036113610ba128b783b08b4895eae7111011d10cd11cd102d112d10ad11ad106d11651816887688fa844744074447492e88ace882e88ae886e88ee881e889eeae4a6c8735eea39522f22db3764c4b7fe21d97c4b6e70fffdbd882915e0ff4d3090c1e69280e89f9bedf34b4659f65a511fd100d110d108d1189186481c341099882c44362207918bc843e4230a108588224431a2049168c90c518e6882688aa882a88aa886a88ea881a889a885a88da883a88b589552f5311013f10cf11cf102f112f10af11af106f1567298fe5272d9ffad79f6d71f04cafe4e68159a7a3a7e43eb4b58692729a3101788c5768fb8447c407c447c9254aee2458f2f88af886f88efea3456d308f103f113f14bcd1255d845f11b710f711ff100f150156f763c423c46ac21d6111baae8e26313b1386e237610bb88c5111f718038442c328c11278853c419e21cf104f154e159ed761057d496b8b08ab886b88eb881b889b885b88d58fcda45a222516470634224332473240b244b242b246b241b245b2405921d923d9212c901c911c909c2fe4e2e48ae486e48ee481e489ef2e9262f246f243d247d2403244324232463241a121d8981c4446221b1913848c4f91e121f49802444122189912448522419921cc904c91449054915494dd2a71e6752056678963ba5fe51acd23fd258436910ca05fdd54f499e7ff59231923f072cefeaff4cc628ec7fc8968a966f20692269216923e920e92255912a32243525d219d239d205d225d215d235d20dd22dd202e90ea23f4f4ba407a447a427a467a417a457a437a477a40fa44fa42fa46fa43da47da403a443a423a463a41a521da981d4446a49c1909f7d91f872cd44593652e72f3b2efc23d0124ff122971d44378d42e2eaf196d04a5da41e521f69803484c04f1a234d90a64833a439d2892a3a84748ab482b42a4085b486b48eb481b489b485b48db483543459ae8ad145a6aaa287c9146450454b654436433647b640b644b642260e6e906d9115c876c8f6c8c45507644764276467b51548686517a5e220bb22bb21bb237b207b221339bf959bc8a787ac8f6c806c886c846c8c4c43a623339099c82c64363271b98bcc43e6230b9085c8226431c42d6429b20c598e6c826c8aac82acfa49356475640d644d642d646d64a2265d888e245790033991cf90cf912f902f91af90af916f906f9117c877c8f7c84be407e447e427e467e417e457f510cb41d44f16f50ff5ac14d7f16f1fb7d11fd0fa2578f577d1f9ff8fd2d70aefbf22e70fb43efa2977e437e462fb40fe44fe42fe46de43de473e403e443e423e46ae21d7911bc84de416721bb983dc45ee21f79107c843e411f21879823c459e21cf914f904f9157905791d790d79137903791b7a4777cde46de41de55f77b4c544c1419503ee1677ff63d61f8a711d7f31f859638f57495a3e4ed428af98934d84b684de6982c305962b2c2648dc906932d26852a06df13f1aba85689c90113f1ef09933326174cae98dc30b963f2c0e489c90b93b73c53402beca9615f15e6d6a487491f938184d66488c9e81b5a9331261a263a2606262626162636260e262e261e263e2681d41156c569212611263126092629261926392622e72926154caa98d430a963d2c0a489490b9336261d4cba98aa982a322a7f4a4c6798ce315d60bac47485e91ad30da65b4c0b4c7798ee312d313d607ac4f484e919d30ba6574c6f98de317d60fac4f485e91bd31ea67d4c07980e311d613ac654c354c7d4c0d4c4d4c2d4c6d491d09aba987a98fa98069886984698c6982698a66ab00bae47a52ef2c9e4477dbc51b7a29b1a7da8b9de1f9f00f5dfd66b7d410bd3fc5fc26d2835943f7292100d3bc1748a6905d32aa6354c45a10d4c9b98b6306d63dac1b48b8a8a8a2259142a446586ca1c95052a4b5456a8ac51d9a0b245a5406587ca1e951295032a47544ea89c51b9a07245e586ca1d95072a4f545ea8bc51e9a1d2476580a1383e94d37885a5bcaf72d2417cc536ca2f74fd8fa1251dec5488f171ef9b86175b09adca0895312a1a2a3a2a865adfaae2ddad98a858a8d810fd46c5154935c5dd7aa8f8a804a884a844a8c4a824a8a4a8646a5534478eca0415716d0595aa2ac62a959a2adee34c0cbd44a3d45169a0d244a5854a1b950e2a5d88eeb3aa484e8a2a2172a8ce515da0ba540e01aa2bb565a3ba467583ea16d54239ee51dd290d43ed4e5115fb25aa07548fa89e503da37a41f58aea0dd53baa0f549fa8be507da3da43b58fea00d521aa2309adea18550d551d55035513550b55519083aa8baa87aa8faa283d443542354635413545354335477582aa28ba826a15d51aaa75541ba836516da1da46b5836a1735153545526cd488da0cb5396a0bd496a8ad505ba3b651ca08bd1cb52d6a055ef96794f5097715e68ab0d8bf827d961599fed5d0fa5880bf786cc4bff3e843f2f54fc9ff89fb427d5fd4ed1bb51d6a7bd44ad40ea81d513ba17646ed82da15b51b6a77d41ea83d517ba1f6969661ad875a1fb5016a43d446a88d51d350d35133503351b350b35173507351f350f3510b500b518b508b514b504b51cb50138d3c416d8a5a456009b52a6a35d4ea725ebed650c6056a4dd45ad27cfb27404bda21258c939412fc38ffa2d69693efb50e6a5dd45588a6ae0375a23e437d8efa02f5a5eabe505f294afbb3b3467d03813d6126d50b551851f51dea7bd44bd40faa3026eb476907d64fa89f51bfa07e45fd86fa1df507ea4fb9be5c7fc9698cfa1bf51ec4c7bb3e407d88fa08f531ea1aea3aea06ea26ea9672f051b75177507751f72453f4c142dd17d0423d405d9415a11ea39ea09ea29ea19ea32ef29fa22e6a5545bd867a1df506ea4dd45ba88b0a7750efa2a1a2a1485e9906d198a131476381c6128d151a6b3436686cd128d0d8a1b147a344e380c6118d131a67342e685cd1b8a17147e381c6138d171a6f347a68f4d118a031446384c6180d0d0d1da2aa0d130d0b0d1b0d070df7d33b95d22c64fcbd702f9e9f44d4518ad095fdaf97f2b77cd8fee18486f713571f50fd53fbae8fd4038c567015ade4a311a011a211a111a391a091a291a191a33141638a46058d2a1a3534ea6834d068a2d142a38d46078d2e9a2a9a8ae4016a12cd199a733417682ed15ca1b9467383e616cd02cd1d9a7b344b340f681ed13ca17946f382e615cd1b9a77341f683ed17ca1f9964ec3cd9e9c8cfd0ed9faa307c63f02adc72722e52cd7fbbfa025c676025acd3e9a033487688ed01ca3a9a1a9a369a069a269a169a3e97c922de7339ae27c0f4d1fcd00cd10cd08cd584dfbaa2bce4fd04cd1ccd43043334773f2b97c8a6605cd2a9a3534eb6836d06ca2d942b38d6607cd2ec487a3a548f6a41695f51cad195a62bb406b89d60aad355a1bb4b6681568edd0da2b6288d52ad13aa07544eb84d619ad0b5a57b46e68ddd17aa0f544eb85d61b2d71661fad015a43b446688dd1d2d0d2d132d032d1b2207ac59683968b9687968f568056885684568c5682568a5686568ed604ad295a15b4aa68d5d0aaa3d540ab89560bad365a1db4ba68ab682b9200aa4db46768cfd15ea0bd447b85f61aed0dda5bb40bb4775f14481ffc7c028784ed57041f0d384d765fd201edf10dbc7f31b4941f0af348ea68efd5aea86189f6e19f93ff46b4c611ed93744b689fd1bea07d45fb86f61ded07da4fb45f68bfd1eea1dd477b80f610ed11da63b435b475b40db44db42db46db41d88b7b4eda1eda31da01da21da11da39da09da29da19da33d417b8a7605ed2ada35b4c51d35d06ea2dd42bb8d7607ed2e3a2a3a8a64e8ea109d193a736569fea091fe33b47e7bf25d3eb6523d3d2413c017b43a0b09adce129d153a6b7436e86cd129d0d9a1b347a744e780ce119d133ae7cfce059d2b3a3774eee83cd079a2f342e78d4e0f9d3e3a0374869fed089d313a1a3a3a3a862a30d931d1b1d0113b0e3aa2440f1d1f9d009d109d089d189d049d149d0c9d1c9d093a53742acacb40a7aa6422b71a3a754965a1b7d169a0d344a7858ed8efa0d345574557411772e1a84b7467e8ced15da0bb447785ee1add0dc47bd32dd0dda1bb47b744f780ee11dd13ba67742fe85ed1bda17b47f781ee13dd17ba6f747be8f6d11da03b447784ee185d0d5d1d5d035d135d0b5d1b5d075d175d0f5d1fdd00dd10dd08dd18dd04dd14dd4c7a187673742710466cb7826e5546e0c90195748efa193524e7dc45df251ea778465faa73ffae752d09b0cf4c861874a15b43f79fc47328a0d56d88ce41ba9814a2959ae8b6d06da3db41b74b55a5aa48063a95546754e754175497545754d7946db4a55a50dd2117fb7baa25d503d523d513d533a5e7e595ea8dea9dea83ea93ea8bea9b6a8f6a9fea80ea90ea88ea98aa4655a76a5035a95a546daa0e5597aa47d59713e63fc3ed7f590aff88a393542bfba821259f9593ad7a7aaa679f6a4035a41a518d614ea9265453aa628494539d887112d50ad5ea27d5a8d6a936a88a975bdc5b8b6a9b6a479975a876a9a854142aa094a99a519953595059525989fe88ca86ca964a416547654fa5a472a072a472a272a672a172a572a372a7f2a0f2a4f2a2f256461ea5847a5fed8a4e6d40a9f63ca2d4f7d528a5570d4aa14c4b6abfdb225b5bbd8a1c1c4a713b71a14fa9db15522a2ec5943a3c29a5d8494ea91331a552415f9c5fa5246eaf5372643729998bdb94bcaf02a62a25f72428c9076794f46e0b4a92ae152521d38692d1a6a06405d953523a1c2883f84f94b1d017e20aab4f199e79271ecaa0f8c547f233fda4e6fa8e17fae39cd5bf1c54bf46569f752dca40b7d7af831f73f183bddf5ff5fae99ef7d1295706a2c5de94f13c7df51c5346400c297dc3c7942eba3aa5ffa549e996662312ede9503abc7894de00011152ae2d8a0b13ca09fb8c72a27642394f55a11ca98ba1ad18c9082b5f588d2d4ae341f44d5d4aec2a923952fecdc839b92097e48a5c0b0381dcfca079d27f045bfd79c2f0ef83d6457459c1f5fc59c82ba51182918416b76441eec83d599207f2489ec8337921afe48dbcab8d881455792a8aaf862df245bec91ed92707e4901c91c29e9c921aa99306699216692b2b719a43baa4478a120332244586313622f3844cc98cccc9092972a89055b246d695779b6ca82d4bd2e1773b6a4b5cdb245bca43b48ef8a9f389cb5849995dbb4376395339532409a768c9d98cb339670bce969cad385b73b6e16ccb59c1d98eb33d67256707ce8e9c9d383b7376e1eccad98db33b670fce9e9cbd387b73d6e3accfd980b3216723cec69c699ce99c199c999c599cd99c399cb99c799cf99c059c859c459cc59c259ca59c6552f3f75f8c967f005d5f10e24c2a202a91b8df096753ce2a72d5eba38df2037bbf3f478fafe898e7e7ad13edf9e9b1cf9e14cb2e44e3d43813e536386b72d6e2ac4df1819e75395739572481aa40c17cc6f99cf305e74bce579caf39df70bee5bce07cc7f99ef392f303e747ce4f9c9f39bf707ee5fcc6f99de24b317f72fee2fccd798ff33ee703ce879c8f381f73ae499f32e9f5222ed4bf7c62bea1f59bb7f9155422f9253e53a2b13442de3765500a839073837393738b739b73877371c4e3dce73c502739e7a1228f479cc79c279ca78a12abd3a53a15b79a712e4e98703efda40ae755ce6b9cd7396f70dee4bcc5799bf30ee75db57e54e68e527a5ca85c289279567c3e16332ee65c2cb85872b1e262cdc5868b2d1705173b2ef65c945c1c243f7b2a7e3d2213db1317c23a6d7171e1e2cac5ed43de1dcab8eb5547a98db8b873f1e0e2c9c58b8b37173d2efa5c0cb81872217e1d73a171a1736170617261716173e170e17221eae6731170117211711173917091729171917331e162ca45858b2a17352eea5c34b86872216ad2e6a2c345974b954b4532ea8acfe272c6e59ccb05974b2e575caeff0ba1f50d1801ade53772b8dc725970b9fb46da8fe3bfdd717d33d27ca1abf75127d0b9dccb8572f91e0b33f8c865c9e5814bb173e2f2cce585cb2b97372eef5c8a9a88d25f5cbeb9ec71d9e772c0e590cb1197632e352e456e06972697169736970e972e971e973e9701972197119731970997299719973997132ea75c56b8ac7259e3b22e0df28d78640d25fc54183ff8807f67f1e30b5a17d9097e91cf7c29a8ef1aca40dc4f93cb16976d2e3bd2205c76b952b952b882b2eac89e531874df3b33753a97a29693015773b5d3e36af1d92ed574ada673ae565cadd589c861f3495bae0a6813b5d5552713aec49726447dc6d59eab92ab035747ae4e5c9db9ba7075e5eac6d59dab07574fae5e5cbd29babb559f2b51dc90ab115763ae34ae74ae0cae4cae2cae6c75e87e9e9638d3e1cac52be4cae3cae72ae04aec475cc55c255ca55c655ce55c899a4cb9aa7055e5aac6559dab06574dae5a5cb529efb42bda896b856ba09a702d9a6dc6f59ceb05d74bae575cafb9de70bde5bae07ac7f59eeb92eb03d747ae4f5c9fb916a37671e695eb1bd777ae1f5c3fff0ba1f5735650ce10e21b423f7636bfe60cc56075fa7709fbfe115abf8832e5acc09762d5e56b6cc9f58beb37d73daefb5c0fb81e723de27accb5c6b5ceb5c1b5c9b5c5b5cdb5c3b5cbb5c7b5cf75c075c875c475ccb5782e29d719d739d713aea75c57b8ae725de3bace7583eb26d72daedb5c77b8ee0abb8f1b45d2876f840d38e366cecd829ba5a4aa6fded4e3e2438fb1ff8ae094e8f8bb97ecbfdd733fb38dbad48afea2f76d16eafbc6cd8a9b35371b6eb6dc14dcecb8d92bf79c9b929b033747b5fe829d7073e2e6cccd458ca1b8b95218729b3b378f4f7a72f3fa6cdfdcf4b8e97333e066c8cd889b31371a37baecf15633a5d82376b931b831b9b1b8b1b971b811473c6e7c6e026e426e226e626e4489293719dea2457265276a35e166ca4d859b2a37356eeadc34b869aa4129c5674b4d8c98214cd04d8b9b36371d6ebadcaadc2a928c5dd8bcdb19b7736e17dc2eb95d71bbe676c3ed96db82db1db77b6e4b6e0fdc1eb93d717be6f6c2ed95db1bb7776e1fdc3eb97d71fbe6b6c76d9fdb01b7436e47dc8eb9d5b8d5b935b835b9b5b8b5b975b875b9f5b8f5b90db80dffcba1f5859f2f38a1bd9773863fdca0fe3424fb1d687de642bfa6437f40abf8c4230a4b641b711b739b709b729b719b733be176ca6d85db2ab7356eebdc36b86d72dbe2b6cd6d87db2e0b95852279f5c5f0a598b198b358b058b258b158b3d8b0d8b22858ec58ec59942c0e2c8e2c4e2cce2c2e2cae2c6e2cee2c1e2c9e2c5e2cde2c7a72e6d67e7fc684fb5fa434bfd56b493280c55e95e234ad9fd092bd56d1673160316431623166a1b1d059182c4c16160b9b85c3c265e1b1f0590414867211b18859249f94b2c858e42c262ca62c2a2caa2c6aca76a88877aea8b368b068b268b168b3e8b0e872a772a748e10131bedbcdb89b73b7e06ec9dd8abb35771beeb6dc151470daedb92bb93b7077e4eec4dd99bb0b7757ee6edcddb97b70f7942cdee2760aef2b4a97bb17776fee7adcf5b91b7037e46ec4dd983b8d3b9d3b833b933b8b3b9b3b073d91adcb9dc79dcf5dc05dc85dc45dcc5dc25dca5dc65dcedd84bb297715eeaadcd528cca75d83bb26772deedadc75b8eb72af72af481d05315cddcfb89f73bfe07ec9fd8afb35f71beeb7ff85d0fa5e35febffc2a30f6bd88fc0f0cb4fe08ad9f2cd09fc87949d8dc3b735f70bfe37ecf7dc9fd81fb23f727eec5f10bf757ee6fdcdfb97f70ffe4fec5fd9bfb1ef77dee07dc0fb91f713fe65ee35ee7dee0dee4dee2dee6dee1dee5dee3dee73ee03ee43ee23ee63ee13ee53ee33ee77ec2fd94fb8a545e9e1dd0177956b9afc9b5fb9fb3b2bf4bf12917254f47e9402819ba4339d612183b8b4ad4b96f70dfe4bec57d9bfb0ef75d962a4b450a6e946439633967b960b964b962b966b961b96559b0dc7db622ed59962c0f2c8f2c4f2ccf2c2f2caf2c6f2cef2c1f2c9f2c5f2cdf2c7b2cfb2c072c872c472cc72c35963a4b83a5c9d26269b37458ba1403b3d26719b00c59462c639609cb9465c6326739613995d0ba8a222a2a3632de4900a0acb2acb1acb36cb06cb26cb16cb3ecb0ecf2a0f2a0480991037998f130e761c1c39287150f6b1e363c6c792878d8f1b0e7a1e4e1c0c39187130f671e2e3c5c79b8f170e7e1c1c39387170f6f1e7a3cf47918f030e461c4c398078d079d07830793078b079b078707f7bf115af33f1b7e5f88fab2fda473c64f8370fb35cff15bd0fa3608ff025a625f9a88a20d3d1e7c1e021e421e221e621e121e521e321e721e263c4c79a8f050e5a1c6439d87060f4d1e5a3cb479e8f0d0e551e551916a3047f238e371cee382c7258f2b1ed73c6e78dcf258f0b8e371cf63c9e381c7238f271ecf3c5e2435a177548ab37c2eb87ca6cd4fdf2b8a5fe431bf33432872fc68789e8e8a2a6a76533c51d89dc7078f4f1e5f3cbe79ecf1d8e771c0e390c7118f631e351e751e0d1e4d1e2d1e6d1e1d1e5d1e3d1e7d1e031e431e231e631e131e531e331e731e273c4e79acf058e5b1c6639dc7068f4d1e5b3cb679ecf0d8a5b891932255724ee469c6d39ca7054f4b9e563cad79daf0b4e5a9e069c7d39ea792a7034f479e4e3c9d79baf074e5e9c6d35d198a7f1ff2c3c15c1143dbd393a7174f6f9e7a3cf5791af034e469c4d398278d279d27718ec993c593cd93c393cb93874854c6e729e029e429e229e629e129e529e329e769c2d394a70a4f559e6a3cd5796af0d49413faa7164f6d9e3a3c7579567956a4e8cf993ccf789ef3bce079c9f38ae7b58cc9fb8f03e90fe9a799f7b3e3fab9c6f517a7fd83de4f3f1718be05413e84648b13cf1fa1300c79def25cf0bce379cf73c9f381e723cfe28433cf179eaf3cdf78bef3fce0f9c9f38be737cf3d9efb3c0f7816978f781ef3ac49bbfdacf36cf06cf26cf16cf3ecf0ecf2ec51f41ce780e790e788e7f893129e539e339e739e273c4fd5652e230fbea195fc487f6f94f7075a87f813717956dea2ea159eab3cd778aef3dce0b9c9738be736cf1d9ebb1418be285214ea425e66bccc79596051e765c9cb8a97352f1b5eb6bc14bcec94f688973d2f252f075e8ebc9c7839f372e1e5fad9de78b9f3f2e0e58991c7cb8b97372f3d5efabc0c7819f2222e1ff3a2f1a2f362f062f262f162f3e2f0e2f2222ef179097809798978897949784979c978c97999f032e5a5a26c44afa52350558a9faabcd47811b56df0d2e4a5c54b9b970e2f5d5e555e15a9747525af335ee7bc2e785df2bae275cdeb86d72daf05af3b5ef7bc96bc1e783df27ae2f5cceb85d72b450f79bdf3fae0f5c9eb8bd737af3d5efbbc0e781df23ae275ccabc6abceabc1abc9abc5abcdabc3ab2bdbff3f0da77f6f7a7eafc07e6b82f43e3c4a3fbab2b99c94e7d5e3d5e735e035e435e235e635e135e535e335e775c2eb549a7fd70aaf555e6bbcd6796df0dae4b5c56b9bd70eaf5dde54de14a95e76236f33dee6bc2d785bf2b6e26dcddb86b72d6f056f3bdef6bc95bc1d783bf27652575d550cb96f67dc975fa16522f176e1edfa89f4f9bba1155caf72f25dbab15de5fb77bbf176e7edc1db93b7176f6fde7abcf5791bf036e46dc4db98378d375198c19bc99bc59bcd9bc39bcb9bc79bcf5bc05bc85bc45bcc5bc25bca5bc65bcedb84b7296f15de442935deeabc35786bf2d6e2adcd5b87b72eef2aef8a5472bb93f719ef73de17a8dc795ff2bee27dcdfb86f72def05ef3bdef7bc97bc1f783ff27ee2fdccfb85f72bef37dec5250fb51c7de14a3a490e9bbc3f797fc11645bc79eff1dee77dc0fb90f711ef63de35de75de0dde4de8e288c5bbcdbbc3bbcbbbc7bbcf7bc07bc87bc47bcc7bc27bca7bc67bcefb84f729ef15deabbcd778aff3dee05d14d7e2bdcd7b87f72e1f2a1f8a94a77b908f191f733e167c2cf958f1b1fe4fbfebff5e5c7d91ec7e6b82bca587e4b7ebc38f31980c1d7cf0b1e163cb47c1c74e18667cecf928f938f071442a0e9ef838f3218e5ff9b8c915fcc79d0f71d5938f171f6f3e7a7cf4f918f031e463c4c7980f8d0f9d0f830f930f8b0f9b0f870f970f8f0f9f8f808f908f888ff8c742d653a98d95c1f27bea42d6592a3bfc8ea3d3f78ad6873bf210a3210a4bf848f9c8f8c8f998f031e5a3c247958f1a1f753e1a7c34f968f1d1e6a3c347974f954f456a1a3ec9e78ccf399f0b3e977caef85cf3b9e173cb67c1e78ecf3d9f259f073e8f7c9ef83cf379e1f3cae78dcf3b9f0f3e9f7cbef87cf3d9e3b3cfe780cf219f233ec77c6a7cea7c1a7c9a7c5a7cda7c3a7cba7c7a7cfa7c067c867c467cc67c267ca67c667ce602578abd525251ee84cf299f153eab7cd6f8acf3d9e0b3c9678bcf369f1d3ebb7ca97c295299f145be667ccdf95ac849f6d792af155f6bbe367c6df92af8daf1b5e7abe4ebc0d791af135f67be2e7c5df9baf175e7ebc1d793af9784d6ebcd578faf3e5f03be867c8df81af3a5f1a5f365fc7f06ad2f9ee7feaf2e6b5ffe195ae59758ab1c9eec77927df17a974bc92f932f8b2f9b2f872f972f8f2f9faf802ff153c457cc57c257ca57c657ced784af295f15beaa7cd5f8aaf3d5e0abc9578baf365fe2897491877cab7c2b52855326f23de37bcef742e047d6677ee17bc9f74acadb15a1dab654acf95eff0eb4565d199a76ebc8800579b7d23983ef0ddf5bbe0bbe777ceff92ef93ef07de4fb4461370a5cbd45c157be6f7cdff916e73ff97ef1fdc626e2bbc7779fef01df43be477c8ff9d6f8d6f936f836f9b6f8b6f976f876f9f6f8f6f90ef816f7292e8cf94ef84ef9cef8cef99ef03de5bbc27795ef1adf75be1b7c37f916a5b7f9eef0dd654f654f9102a53db237636fcede82bd257b2b550c5e05b4c447b1eca9e55b42abb7666fc3de96bd82bd1d7b7bf64af60eec1dd93bb17766efc2de95bd1b1c93bdbbecb57a0ff69eecbdd87bb3d763afcfde80bd217b23f6c6ec69ece9ec19ec89f32df6c4f90e7b2e7b1e7b3e7b811c74f542f622f662f6c47eca5ec65ece9ea8cc94bd0a7bd5ffcf0cc23f42abf7135a5fe9875958fea25f3f7bf2cd16c676af2697bc7a75f61aec35d96bb1d766afc35e977d957d452ad4f6c9fe8cfd39fb0bf697ecafd85fa3eab3bf617fcb7ec1fe8efd3dfb25a627f60fec1fd9173b67f62fec5fd9bfb17f67ffa1421c7cb2ff92212087ec0bdb681fd5c297d3e9dfb4847f0fb4b66b012df6dfcae0e325f5f10465bfc77e9ffd01fb43f647ec8fa19bec6bec8b9f0cf6c5bec5becdbec3becbbec7beb88180fd90fd88fd98fd84fd94fd8cfd5ce9bcd89fb03f65bfc27e154b71498dfd3afb0df69becb7d86fb3df61bfcb81ca8122257c07e460c6c19c8305074b0e561cac39d870b0e5a0e060c7c19e8392830307470e4e1c9c39b87070e5e0c6c19d8307074f0e5e1cbc31fe30b6eeead2201cf438e87330e060c8c1888331071a073a0706072607161291a70d4b94ee70e072e071e07310701072107110739070907290a12d72c839987030e5a0c24195831a07750e1a1c88825a1cb439e870d0a518090f15294a3c2487330ee71c2e385c72b8e270cde1e6bf6d1ae3df82aed7af398c9f611abf285f763f84c65772296878565701875b0e0b0e771cee392c393c7078e4f0c4e199c30b87570e6f1cde397c70f8e4f0c5e19bc31e877d0e071c0e391c7138e650e350e7d0e0d0e4d0e2d0e6d0e1d0e5d0e3d0e750941272187118739870987298719873280cfe87e295a2e35296e66f40eb7ba0f6b5d82cee53dcb318f60ca71c5638ac7258e3b0ce6183e2d51cb6386c73287eed72a472a4480deb11399a7134e768c1d192a315476b8e361c6d392a38da71b4e7a8e4e8c0d191a31347678e2e1c5d39ba29ad0947778e1e1c3d397a71f4e6a8c7519fa30147438e461c8d39d238d23932383239b238b23972387239f238f2390a380a398a701467c61c251ca51c651ce5cab850a6d9d7c74f2ef38b61e4481437e5a8c291d8af7154e7a8c15193a316476d8e3a1c753956618163456a738fc9f18ce339c70b69d38f971caf385e73bce178cb71c1f18ee33dc725c7078e8f1c9f383e737ce1589c7ce3f8cef183e327c72f8edf1cf738ee733ce078c8f188e331c71ac7faff7fd0fa01b0aff0276156e04be5e4f1eddaff35c1fdb50226dec9f7555d6c954d55426b6c706c726c716c73ec70ec72ec71ec731c701c721c711c739c709c729c719c733ce178ca7185e32ac7358eeb1c37386e72dce2b8cd7187e32e35959a2275d835529b519bcb693c6d416d496d05d1e578076a6b6a1b88d75edbfe962ae441dc9e22ac3eada0b69374c1a2069af8b7a426323d523b513b53bb50bb52bb51bb537b507b527b517b53eb51eb531b501b521b511b53d3a8e9d40c6a26358b9a4dcda1e652f3a8f9d4026a21b5885a4c2da19652cba8e5d426d4a6d42ad4aad4c4bdd521f0a035a835a9b5a8b5a975a875a9abd415a946af93fa8cfa9cfa82fa92fa8afa9afa86fa967a417d477dafcc13e9fa291e8cf8bce925f503f52375b17fa67ea17ea57ea37ea7fea0fea4fea2fea6dea3dea73ea03ea43ea23ea6ae51d7a91b14fdb66e51b7a93bd45dea1e759f7a403da41e518fa927d453ea19f59cfa84fa947a857a957a8d7a9d7a837a937a8b7a9b7a877a9786fa5fea43f82f4d7ff2ebd73ed0ea49e147ff261941ea7db19551a152aaeb25073c86648aa601e9d76dcc68cc692c682c69ac68ac696c686c6914347634f6344a1a071a471ae292330d71f995c68dc69dc683c693c68bc69b468f469fc680c690c688c698864643a761d0306958346c1a0e0d978647c3a711a86747ba7affa6e7fb519ddf1445a511d2883853d5b9a84d4c23a191d2c868e4342634a6342a34aa346a34ea341a349a345a34da343a34ba34559a0a4de954447346734e734173497345734d7343734bb3a0b9a3b9a759d23cd03cd23cd13cd3bcd0bcd2bcd1bcd37cd07cd27cd17cd3ecd1ecd31cd01cd21cd11cd3d468ea340db42b344d9a164d9ba643d3a5e9d1f4690634439a11cd580a907d39a79909cd94664633a739a139a5292eafd2acd1acd36cd06cd26cd16cd3ecd0ecd252692914dd978096b00fad19ad39ad05ad25ad15ad35ad0dad2dad82d68ed69e5649eb40eb48eb44eb4ceb42eb4aeb46eb4eeb41eb49eb45eb4dab47ab4f6b406b486b444b64aec9c1eddf7cfffee676fef82b4694bf7ed23f18cc7f87a3fc3f03ad6fcdbbde67f26d201941b62bc9b7b39c7e86642f013c5a7265999641cba465d1b2e53ca1e5d0726979b47c5a01ad9056442ba695d04a6965b4725a135a535a155a555a355a755a0d5a4d5a2d5a6d5a1d5a5dda2a6d85366893f68cf69cf682f692f68af69af686f69676417b477b4fbba47df87f37e967d5ee4794f1fca9bc0fb48fcae3a9c8ac4fb4cfb42fb4afb46fb4efb41fb49fb45fb4dfb47bb4fbb407b487b447b4c7b435da3a6d83b649dba26dd37668bbb43dda3eed8076483ba21dd34e68a7b433da39ed09ed29ed0aed2aed1aed3aed06ed26ed16ed36ed0eed2e1d958e420732f4c499d199d359d059d259d159d3d9d0d9d229e8ece8ece994740e748e744e74ce4a7da82e0ac5a622ec37e742e74ae746e74ee741e749e745e74da747a74f674067486744674c47a3a3cb0ec731e898742c3a361d878e4bc7a3e3d309e88474223a319d844e4a27a393d399d0115755e854e9d4e8d4e934e834e9b4e8b4e974e874e9aa7415ba906134ee8cee9cb7db075a7f06c9cfa0a6bfdecebf299fbe0da73fc5113d7e90bc7ed419c5f6fbdbff5f89aebfe67cc6679c2f6bfefc9693fb188d72d15f604fdcb29cc7fe2c113dd674177497745774c5fe86ee966e417747774fb7a47ba07ba47ba27ba67ba17ba57ba37ba7fba0fba4fba2fba6dba3dba73ba03ba43ba23ba6abd1d5e91a744dba16a6e25f9bae43d7a5ebd1f5d55debc3a6b6fc5bc3ad3f70597fe6637e0aaeeea5597288bfcc5fba01dd906e4437a69bd04de9667473ba13ba53ba15ba55ba35ba75ba0dba4dba2dba6dba1dba5d7a2a3d851e64049637a337a7b7a0b7a4b7a2b7a6b7a1b745b7a457d0dbd1dbd313fb077a477a27e984ee9de95de85de9dde8dde93de83de9bde8bde9f5e8f5e90de80de98de88de969f4747a063d939e45cfa6e760207e72e979f47cd9657d1e09bd805e482fa227f6137aa2a08c5e4e6f426f4aaf42af4aaf46af4eaf41af49af45af4daf43af4b5fa5afd0870c28f367f4e7f417f497f457f4d7f437f4b7f40bfa3bfa7bfa25fd03fd23fd13fd33fd0bfd2bfd1bfd3bfd07fd27fd17fd37fd1efd3efd01fda1baccfe069dffff2d49116efd7bbde41b5dfb3fe3eaf54bfb54926d44ff8dd0fafb53a1ff8296b85f31722ef52fb6534c664a72969e136ff13846f4c7f435fa3a7d83be49dfa26fd377e8bbf43dfa3efd807e483fa21fd34fe8a7f433fa39fd09fd29fd0afd2afd1afd3afd06fde6f7b4a1dfa2dfa6dfa1df25bbead591dfb8efa9973fcfc2ff2186f507b4be79aea5b0ebd7cf0c54060a03c8d0c460c660ce60c1401c5f315833d830d8322818ec18ec19940c0e0c8e0c4e0cce0c2e0cae0c6e0cee0c1e0c9e0c5e125dc15ba22be831e8331830183218311833d018e80c0c0626038b81cdc061e032f018f80c020621838841cc20619032c818e40c260ca60c2a0caa0c6a0cea0c1a0c9a0c5a0cda0c3a0cba0c5586ca17a79f845608196619ce18ce192e182e19ae18ae196e186e19160c770cf70c4b09adf0c0f0c8f0c4f0ccf0c2f0caf0c6f0cef0c1f0c9f0c5f0cdb0c7b0cf70c070c8702497bfc231438da1ced0606832b418da0c1d862e438fa1cf5054236418318c19260c5386d9c71566ff27cef16f30fcc5f627b1ebe3bb3bfafab47f310d8941cb77d2ff1498fcdf6913fe0eb43eec20afbf8696ec03c29ce184e19461856195618d619d6183a178822d866d861d86ddcf1746610419641bcd24b4a239a305a325a315a335a30da32da342b203443b467b46a5c45574607464746274667491ae4fb3d9478febfe9de4d2ce277d4dc97ca5cf83f8264bfb18bb025a9f1835910e092391ef8dd19dd183d193d18bd19b518f519fd180d190d188d19891c6486764303219598c6c460e239791c7c86714300a1945b2b38ac4fd886c534619a31c5d51fb895c9615888aa68c2ad2fd3caa32aa31aa336a306a7e3417c52db518b519751875a545e09878b7045e1843f4468c678ce758b4192f182f19af18af196f186f19178c77e203cf78cfb8647c607c647c627c667c617c657c637c67fc60fc64fc62fc66dc63dc673cc073c078c878c478cc5863ac3336189b8c2dc6366387b1cbd863eccb75e438905e8571c838621c3316258a7f33c639e309e329e30ae32ae31ae33ae306e32663710ba2ce1dc65d7557fde064ff6dbc7dc901ffcdadc4d5d7a2d0e13b1ce38b4dad94dc4fc1b5f74b76ed271dc07f1c1bff1468cd7f40eb6bcef0cb69635fa2ec29c2de91ce7d0a13c8a8f464c664ce64c164c964c564cd64c364cba460b263b2675232393011579d283abde4c2e4cae4c6e4cee4c1e4c9e4c5e4cda4c7a4cf64c064c864c444bcea17a9d0590924b4fe024b7f2b7df55aef0fa82e9f9d8ff9ce8c89c6446762c810f4c4646231113b0e139789c7c46712300999444c622609939489b82a67326132655261526552635267d260d264d262d266d261d2652a7d24984286e7a733a67319459f2e982e998a9d351a1ad30dd32dd382e98ee99e69c9f4c0f4c8f4c4f4ccf4c2f4caf4c6f4cef4c1f4c9f4c5f4cdb4c7b4cf74c074c874a4ccce728d2e1d4b7f9954e429f60da626534b7adfa6365387a9d8f198fa4c03a621d348a22b8d99264c53a619d39ce984e99469856995698d699d69836993698b699b69876997996836851924e14036633667b660b664b662b666b661b6655630db31db332b991d981d999d307c7cdafff8ffdc2ae3d567fffc239de4fcd3d2500bef974c28b6e2cdfb5a7bfd45b9f11f47c8ff005adf82c27f0dadd389d95979be985d985d99dd98dd993d983d25c6c4d829133fbd99f598f5990d980d998d9889e31a339d99c1cc646631b39939cc5c661e339f59c02c9473f159c42c6696304b9965ccf24f9baf7ecdc1fc4c7fb2d8bf6bfe6386f0fb81bdbea17512159d309b32ab30ab32ab31ab336b306b326b316b33eb30eb32973ee5cc21a92bf219f339f305f325f315c4303d5f33df30df322f98ef98ef9997cc0fcc8fcc4fcccfcc2fccafcc6fccefcc1fcc9ffc3fe4bdd792eb4896a6fb30b8874192c025b5d612b8c3faa8b5564f7fdcc988d83bb37b7aa6b2a6ba4ef698b9c1401070b8c0ef4bf812e3a78c5f32cec8382be39c8cf3322ec8b828e3928ccb32aec8b82ae39a8ceb326ec8b829e3968cdb32eec8b82be39e8cfb321ec87828e3918cc7328ecc75d5dcbdcc5924e358c6968c6d193b327665ecc9d897714ac6691907320e25322532244a740c8ee24922249a4834956826d15ca285444b895612ad25da48b4956827d15ea283444789d4fd67892e125d35b4a29b4477891e123d257a499491282b514ea2bc4405898a1295242a4b5491a82a51ed3b0ee19f8b02d2efe5fbfa67a6ce5fd05213a04491e9e10b5a6f5cfd5ebefc79ffed08f9cb4537feac8f1f35c61b5a5f4b86825654373267bdc91b35246a4ad4d26e0a912a1d89ba12a9eb7d8906120d251a49349628922896c892c896c891c895c893c8d7f136a2944469890289428975aa4089131d8d2546e289c45389673a1cd3275bec9fa0f5d16dfc08c3eff281d647fb797833ee6f686d5c89e7122f245e4abc92782df146e2adc43b89f7121f243e4a7c92f82cf145e2abc43789ef123f247e4afc9238237156e29cc479890bda81222e4a5c92b82c7145e2aac43589eb1237246e4adc92b82d7147e2aec43d89fb120f241e4a3c92782c7124712cb125b12db19394d54fd5364f625fe294c46989038943b14cb10cb1121d96c642ac895853b16662cd3513b59a8bb5106b29d64aacb5581bb1b662edc4da8b7510eb28d649acb35817b1ae62ddc4ba8bf510eb29d64bac8c5859b172895a29acbc5805b18a6295c42a8b5511ab2a564dacbaf6e7b71a6235c56a258aa7b5da6275c4ea8ad513ab2f96fa7728d648acb1589158b1589658b658ea4e57e3e477c5fa9f32a9fdb93cdeccc5e19b21cc7c393bbdd384fe10abff39548b6febd82f0de12aa99c75bfb43c7993839a324f2c5fac945869b18224adbe84506c536c43ec44c728b2117b22f654ec99d873b117622fc55e89bd167b23f656ec9dd87bb10f621fc53e897d16fb22f655ec9bd877b11f623fc57e899d51fce717c1fcc84d5f56237fa45ddff3f82d6ba91f6a9234b4def3a7a06567c5ce899d17bb207651ec92d865b12b6257c5ae895d17bb217653ec96d86db13b6277c5ee89dd17f591d943b147628fc58ec48ec5b6c4b6c576c456d57a62fb62a7c44e6baecf0ec40ec531c531c44974a426077126e24cc5998933176721ce529c95386b7136e26cc5d989b317e720ce519c933867712ee25cc5b9897317e721ce539c9738197370f9c491d3b6b94e56f15de2e4c4c98b5310a7284e499cb2381571aae2d4c4a98bd310a7294e4b9cb6381d71bae2f4c4e98b33106728ce489cb1389138b1389638b6388e38ae389e38be382971d2e204e284e29ae21ae226e28ab8883b11772aee4cdcb9b80b7197e2aec45d8bbb11772bee4e119f3f044bfb5f41eb0fb1266fdfeae93faaec7f0fb4a6f3f096debaac7f373cfe79684dbf9d11e73d6db0fb4e31acc8b5b87be375484a19710fe21ec53d897b16f722ee55dc9bb877711fe23ec57d89abeec98a9b13372f6e41dca2b82571cbe256c4ad8a5b13b72e6e43dca6b82d71dbe2aacabbe2f6c4ed8b3b107728eee8cb6cf787347d46fb33ce9fbdefafed6f3d416f68e9845a9befa4773f0be7499b7bb863712371dfdc94ab8a2daebae88aeb89eb8b9b12372d6e206e289e299e215e229e88877813f1a6e2cdc49b8bb7106f29de4abcb5781bf1b61a2dde4e4b53de5ebc83d6017a47f14ee29dc5bb887715ef26de5dbcc7fbe429de4bbc8c7859f172e2e5c52b885714854caf2c5e45bcaa78b5ef5217af215e53bcd6db78f9e7333d68a37e852eafad1dd24a5339dbdaaad0eb48fdf08ecdf034f75d7d45c1cf53ede989d7176f20de50bc917863f122f162f12cf16cf11cf15cf13cf1540d29f1d2e205e285e29be21be2273a6a9b8ff813f1a7e2cfc49f8bbf107f29fe4afcb5f81bf1b7e2efc4df8baf1ad635ea8b8fa9f5f73ecffd8fdbbecfafbd9437669296aaf328fee9cb5fe16b77ebfe4710fee60df57f1c95f2ff8fe54fd09a1ebea03579bee375bf09977f165f1dafe2dfc4bf8bff10ff29fe4bfc8cf859f173e2e7c52f885f14bf247e59fc8af855f16be2d7c56f88df14bf257e5bcb577e47fcaef83df1fbe20fc41f8a3f127f2c7e247e2cbea59df1376aed1c261d53bf3afbd46650bead8a3a31ee8fcee5f1e1d5dfd0ba061a5d93fb6f71771ffa447396aad1ce5b79a8daed8aef89ef8b9f123f2d7e207e2829535286de6e4a2592124921a989a4a6929a496a2ea985a496925a496a2da98da4b692da496a2fa983de074b1d257592d4595217495d257593d45d520f493d25f57a434bfdcc484a559e93545e52054915255592545952154955255593545d520d9d69c23055d17999d7edb7c8b1fd85ab2f15a8f6f5345efbb7daf49b3e6b2979ac63e74fcbefbc4f3d49358de2466fff9f54b35b926a4baa23a9aea4d45f7d490d243594d44852634945928a256549cad6a270ca91942b294f52bea45292521d0c24158a6251d286a4131d1c318da427929e4a7a26e9b9a417925e4a7a25e9b5a437865332e291a1e4d5f456d23be3b44ed63d558c47c63cee25bdd701939397a40f3a00e5074bef664b5a95d31f369135597b7d2912ffd6d0d2e4f71d44e92b78f0c1dce5be76173ef6870a5de9b3a42f92be4a5a9ddf25fd90f453d26aa03292ce4a3a27e9bca40b922e4aba24e9b2a42b92ae4aba26e9baa41b6fe37735804d49b724dd9674e75dba92ee49ba2fe981a487921e495a31d867f398d106598fa711d89d8b42fe5421aa73797d8a02983e3ec68a96fe0eadc7afe0551f3def3b1280a4a3efaf53bd3e96b425695bd28ea45d497b92f6259d92745ad281a443094c090c091209440224984830956026c15c8285044b0dad6025c15a828d045b09767ae72ad84b7090e028c14982b3041709ae6f92f5d0842eb8497097e021c1538297041909b212e424c84b50904091afde7fc23efd6ca77efcd0f49271d3ca34ada73efef4ee13aae1032d731e2659556749e373abda5996a0224155829a0475091a1234256849d09640b5b92b414f82be04030986128c24184b1049104b604960bf4f1c095c093c4da9025f8294046909020942094d090d09130925c9bebe38b79fdd5e5d76df27ef8befcc9d1a5aaab49f3a1fdae7cbfb74e46b452fff66defac1d5bbfcfda1f5669875d71413a873f67cb85c35086f664c160f09917022e154c29984730917122e255c49b896f06d421daab293702fe141c2a3842709cf125e24bceafd92f0f63ede2554553d257c499891302b614ec2bc8405098b1296e4597d8ff6e0b7e0fb1f842b6eb0f4871c42c9f63f42eba3867afccc9984658554fdef4ebda9226155c29a8475091b1236256c49d896b0236157c29e84eafe8184430947128e258c248c25b424b42574247435e1523c61e86968f554bb7de9f912a6244c4b184818629a980666f281968e78ab77e9269853cc19e61c7381b9c45c61ae3137985b9d9feaf379fd1ec0e0839c0fae3edcd44f6c938f18faf9043fd07a679ac5543c6a11738fa996c612e611f38479c6bc605e316f98ea1ed5a427e60b338399c5cc61e6310b98ea41f54819b38259c5ac61d6311b984dcc16661bb383d9c5ec61f631079843cc11e61833c28c7f99f9484f2d8d7a75dca4545152a2d959eb144dea333a1e744c3b4593eb6a94acf7d1c67430dd5f5bc93f456f9465bfdca2fec7404b7a7a714c965fd05a4df5bf7335a41ea68f99c24c63069821eaf3360c8c44874b36c098604c31663ae67174c65032bcba6781b1c45861ac3136185b8c1dc61ee38071c43861a83b2f18578c1bc61de381f1c478bd73a0e990b8495edb3a2a9ee20df894d699cd7b5f82eef1fa49a7607deb917e18f4c7d7c22f7d8c8cc6de248391c5c861e4310a18458c124619a38251c5a861d4311a184d8c16461ba383d1c5e861a81a0618438c118662a254eb238c18c3fa502d0c5b53ad6f6829aa85e160b8181e86429d3a4f61a431028c90c4243148121d5e3a816442325532e14f6bff00ad5f8b4af65b9a7f8b915fb18434d764d4a7e6e4f2f16b2099c97d69ee0a247373972759902c4956246b69ef4836245b1275b22739901c494e2467920bc995e4860267f240d7f322c99064497224aa1e556191a4445226a99054496a2475920649934471f9b19a2ddef9ccd1e9b2bbdfa5a7aea8bfcce3ed5b5791315aeabd7d741ad9213aa9e658b1af2491d1d87c73f23f3cf08f25debf1b1eff24b4f456d2ee17b436d69b0779286829c8198fac94d4671093584949cd978dce5fe6a25339f9e80c376974029250fb2e74cfe8340d4632786944e980fdf286d6161dac7c22bd3d3a74f30c99a303b82ed1712ad59d1b74b0bb9d34d5bf7ba3abc0f642949cdc4387463a99eb3a3a5ccc3bffddbc6f5c3e5bc6bfab0ebf7892c72f9e6a7ad229ed7679a3a8aabea20356dcd16efa4fb4c77306edd899437bf91574f8bed8418a325514ba84f6faa8a0cde06b68bbe206a2782a55430b51328c6a53076d7aa4dad7476fa40fd1bbad63f4be528cd6a3db68a5a18bd68df868614ec92b8ad70cd1e44cad480a61f287e5e0d3ecdddbcd4ec63a529a3a26992febbbe4fe45c1de0298915ba36ad16be10b264abc4cf23734037d8419cc61014b5881ba73035bd8c11e0ea0ee39c1192e7005f5e0fd5d1ef004556106b290833c14a00825284305aa50833a34a009ad77694307bad07b1ffb300045dfe2afc208c610813ab7c006075cf0c0d71b5cff675e7a7fa7f247687de2defd404b49d49082340410aa0964623049743cff899acf099329931993399385a65a0a5a9325931593b5a651930d932d1375b2d71b9259f5ef81c991c989893abf30b932b931b933793079327931c9e8b8d98f486bbcce3693ac5cd50d39267926052645262526e5a490bce3107e24903f6e78a9cf944945e7f0dbbdbfbf49f5fd588d499d49834993498b499b49874997498f499fc980c990c988c99849c42466623151af7798b84c3c263e1325dfab26a6990432543d0c999a92baa88f9969c25424f560aabeed09d329d319d339d305d325d315d335d30d6a34a73ba67ba607a647a627992de470ed5c865ffa892ffd58595124e3b5d7e5fed90bda7e11b42f9e50b38bfa733c353f8184749a539d1c7eacadd4f4bbce4c55c3ae4c6f4cef4c55c39e4c5f4c334cb34c734cf34c0b4c8b4c4b4ccb4c2b4cab4c6b4ceb4c1b4c9b4c5b4cdb4c3b4cbb4c7b4cfb4c074c874c474cc74c23a631538ba9cdd461ea32f598fa4c534cd34c03d4f2a4e7c46096e8ac0f0ae9b309b329b319b339b305b325b315b335b30db3ad0e5fa545b2ff602bf06f87c7ff5568a9b5ef0b5a3a1159c46cc76ccfecc0ecc8ecc4ecccecc2eccaecc6ecceecc1ecc9ecc52cc32cab1842663966796605664566256665661566d564a06eae31ab33d33a4366aab498b595c4c0accbacc7accf6cc06cc86cc46ccc4cbd3a666631b39939cc5c661e339f598a599a59f0d9d7baea8ff26bb7eb075aaa4de19b3f3c1aaf137393b921a50df34467f650abf97cc27cfa2e33e673e60be64be62be66be6eab62df31df33df303f3237355c399f985f995f98df99df983f953436bfe629e9194ba9ed5994314d59ae798e7df7a1bf5488179917989799979857995798d799d79837993798b795b5cb584f305ade4c7fabbac8d805a7b5d14d7f705adb7f4f9b5f3f3256bfdca5dfbf957b1c79796e2819977987751acfcbccf7cc07cc85cb56dcc3c621e33b798dbcc1de62e738fb9cf3cc53ccd5c3d188a625f17260b8345a2b3a028cab798b098b298b198b358b058b258b158b3d8b0d8b2d8b1d8b338b038b238b138b3b8b0b8b2b8b1b8b378b078b278b1c8b0c8b2c8b1c8b328b028b228b128b3a8b0a8fe27d0fa642df8b7c3e39f84d6271cb4961edf53a908d7e4dbde7fab06adc6a2cea2c1a2c9a2c5a2cda2c3a2cba2c7a2cf62c062c862c462cc22621127b6ba62b1b05938c9485d7159782c7c162916696ddc14ab290b24ad6a08599a2c0d9689ce63a37897e584e594e58ce59ce582e592e58ae59ae586e596e58ee59ee581e591e5e9db1ae3cf1cf98fc5f4770c83b751d39b2c5c589e59aae395e58de59de583e593e58b65866596658e659e6581659165896559149fb3acb0acb2acb1acb36cb06cb26cb154d73b2cbb2c7b320a58f6590e580e598e588e59462c6396164b9ba5c3d265e9b1f459a692baea4c9aa57a2464654a69aef5691f0bd73f9890ff3106c337ea3495d6eab8fbaf60a85a737356475606ab444734d0061c4b9d15487182ab09ab29ab19ab39ab052b757dc56acd6ac36acb6ac76acf4a3d7b647562756675d1e8ca04acaeac6eaceeac1eac9eac5eac32acb2ac72acf2ac0aac8aac4aaccaac2aacaaac6aaceaac1aac9aac5aacdaac3aacbaac7aacfaac06ac86ac46acc6ac2256312b8b95cdca61e5b2f23405fecce3efee27ff5da9eefe55e52790b5e6eacf8a817a7f87df3e388ab75af9ac52acd2acd48087ac4dd606eb44a773522cfc7aa2339b440b6d78116e594f59cf58cf592f582f59af58af596f58bfb7859460bfdeb1deb33eb03eb23eb13eb3beb0beb2beb1beb37eb07eb27eb1ceb0ceb2ceb1ceb32eb02eb22eb12eb3aeb0aeb2aeb1ae7fa8d63fd8dbe3590bfdebc63b95b5eaa17a6b93758b759b75877597758f759ff580f590f588f59875c43a666db1b6a5a7fe527d70597bac7dd6a92f68add3acd5316463b231d8243ad395926e3613365336333673360b364b362b366b361b365b363b5964cccefa7f67bef00d30192b3af6a66fdb2fb58786e2e91de7f4fc65612d03c9abfaf76c0e6c8e6c4e6cce6c2e6cae6c6e6cee6c1e6c9e6c5e6c326cb26c726cf26c0aa2d8bf4d914d894d994d854d954d8d4d9d4d834d934d8b8dbaa1c3a6cba6c7a6cf66c066c866c466cc266213b3b1d8d86c1c362e1b8f8dcf26c526cd266013b235d91a6c139d004c4919db09db29db19db39dbc57be1fb76f7fac4cafc1f02ad8f07d4506f4b7ea0f526c86c976c576cd76cd5f996ed0e45c4b607b647b627b667b617b657b637b677b60fb64fb62fb619b659b639b679b605b645b625b665b695f7b1cab626fd886d9d6d836d936d8b6d9b6d876d976d8f6d3fe9a9970ed80ed98ed88ed9aa9b63b6165b9badc3d665ebb1f5ff7168a9ae1eb5f902dbd4976e605794658a6d9a6d90e4d4ebc344bd6067b233d8253a059c12fb7713765376337673760b764b762b766b761b0daddd96dd4e53ad9d5a30c2a45d6777607764776277667761776577637767f760f764f762976197659763976757d0498c3ece33ff4916e7dfc9afdeb87b6b056fdf4ac55fd0ea5c54e54505adce45bdb7c4aeccaec2aecaaec64e35a9c1aec9aec5aecdaec3aecbaec74eb579c06ec86e24a66ade985dc42e6667b1b3d9a97170d979ec7c76aa9b697601bb90bdc95e87ecd7c9f1f6b09fb09fb29fb19fb35fb05fb25fb15fb3dfb0df4a479decd8efd91fd81fd99fd89fd95fd85fd9dfe49e667f67ff60afcd02de3b603f31fd8e5ff1b9fed6d0fa9a41ed1ca071b52b6815dc9b4564ff629f619f659f639f675f605f645f625f665f615f655f635f67df60df64df62df66df61df65df63df673fc0f024a56a18b21fb11fb38fd8c7ec2df6367b87bdcbde63efb34fb157e31cb00f39981c0c0e89ce6a7880c384c394c38cc39cc382c392c38ac39ac3e62f416b72ee5c321cded6439acbba70d871d8733870387238713827e7070775fdcae1c6e1ce41fd7c7278c978cb413d9be590e390e750e050e450e250d6d03a5434d53a5439d424ab1eaf736870687268716873e870e872e87150770e92a6fa6bc861244a14398cdf8aa3a5b96e6995ccc723f03f488f5f5ac13f40ebe3abab5641d5d488436c2e020dad83c5c1e6e0707039781c7c0e290e690e018790a3c9d1e098e8949147384e384e39ce38ce392e382e39ae38ae396e386e39ee38ee391e381e399e389e395e385e39de38de393e383e39be3866386639e638e639163816399638963956385639d638d63936383639b638b63976387639f638f6390e92a712f10b6a65f94a31fe11fd3f5b297f6ffdfbe39bc3d7d125cc75531b3aedcae6fc1d18f0a865668e438e238e638e11c798a3c5d1e6e87074397a1c7d8e298e698e01c79093c9c9e0947092b7b98f6605b5a2f734e13455923ea719a739a705a725a715a735a70da72d2775db9ed381d391d389d399d385d395d38dd39dd383d393d34b8aaafe0ca7ec5f8256b24ab2454e39adffd02689794eaa1438a98b2509eb9cca9c2a9caa9c6a9cd4cf06a726a716a736a70ea72ea79ee6894ffda498d7d03a0d34b44e4389735ad63a8d388db50ee314718a39599c6c4e0e273769a8a1f138f93250c714a734a7406fc657badad6a9754a6e73b5aa690f9f2fe5c437b47e318ab72fb5cd9fa1a5a3732715e7a345e4147236391b9c139d6cf50ce709e729e719e739e745e22f382f39af38af396f386f39ef38ef391f381f399f389f395f385f39df38df516bcdf9c9f9c539c339cb39c739cfb9c0b9c8b9c4b9ccb9c2b9cab9c6b9ceb9c1b9c9b9c5b9cdb9c3b9cbb9c7b9cf79c079c879c479cc39e21c278a0f39ab627376f4e2f2914cde71ef38bb0a6c6fed68e6df0d8f7f0e5a5f739451fc91f1ba24e98d8e65bbee1a2d35e69eb9cb24799fb32a29ce69ce01e7908bc9c5e0927011bd477c81cb84cb94cb8ccb9ccb82cb92cb8acb5ae3eab2e1b2e5a24ef65c0e5c8ea8b5f572165f3d7ee172e572e372473135972797178aae5cb25c725cf25c0a5c8a5c4a5cca5c2a49595da972a971f90bb2d65712978c5e23991ab30a97463270b834b9b4b8b4b974b874b9f4b8f4b90cb80cb98cb88cb9445c622e16179b8bbadfe5e271f1b9a4b8a4b9040a5a5c420dadabc9d5e09ae8d4c157b84eb84eb9ceb8ceb92eb82eb9aeb8aeb96eb86ed151f055e71bc6d252e3ae09d7dbdff6bf82d6471ff3032dbd287ed41847ae7b735a7807662c713d6835eb555d3c713d73bd481ca1de75bd71bd737d707d727d71cd885a56ae59ae39ae79aeeabcc8553d5ee65ae15ae55ae35ae7dae0dae4dae2dae6dae1dae5dae3dae73ae0aabaac5e34e6aaea8fb95a5c6dae0e5797abc7d5e79ae29ae61a700db999dc0c6e894eaa7c83db84db94db0cb5a6e46fbfa0b52bab45dd789ddfd974ff67404beb9fd4d2a910f54e9ba6a8d686dbc25c3d35b46e4b6e2b6e6b6eeae296db8edb9edb81db91db2919a5c56a703b73bb70bb72bb71bb737b707b6a86f0f6e2a68e596e396e796e056e456e256e656e156e556e356e756eaa8626b716b736b70eb72eb71eb73eb701b721b711b731b7885bcccde266ff156819879e166998ea6ff1e618a69a6f979bc74df530c52dcd2de016a2eebd1bdc139d565b6fa54eb84fb9cfb8cfb92fb82fb9afb8afff0cadfb461a36f72df79d3639b9efb9abe391fb89fb99fb85fb95fb8dfb9dfb83fb93fb4bbc5e52cf7decb87e5933fdc903ea175bf87cef2367bfe3b77ca0f5d2e216aa7919bdc9b050cdce72cf71cf732f702f722f712f73af70af72af71af736f706f726f716f73ef70ef72ef71ef731f701f721f711f738fb8c7dc2deeaa470e7797bbc7dde79e42c948f7807bc8c3e461f04834de1ea2779b1f131e531e331e731e0b1e4b1e2b1e6b1e1b1e5b1e3b1e7b1e071e471e271e671e171e571e372d8a4c1e5f0ca1e2972a670d2d75f1ef0ead2febada7b627ca16bf62d1bec97292cd19ed5732acf2b8f378f078f278f1c8f0c8f2c8f1c8f328f028f228f128f3a8f05077d678d47934783479b478b479a891eff2e8f1e8f318f018f218f118f38878c43c2c1e3a4497d66c3f1c1e2e0f8f87cf23c523cd23e011f234791a3c139d3bfe09cf09cfe95fd110f2fc98449dde06bb7ad755a3eb39e7b9e0b9e4b9e2b9e6b9e1b9e5b9e3b9e779e079e479e279e679e179e579e3a9ea79f07cf27c69b6f099d1d07a6679e678aa9f059e459e259e659e159e559e359e759e0d9e4d9e2d9e6d9e1d9e5d9e3d6d45b1cbfc973e4ebfe90977d9f71679f66bcebeac78b3ba2feefebd6468db4a9e7d9e039eaa49239e639e11cf98a7c5d3e6e9f074797a3c7d9e299e699e01cf9097c9cbe095f0126d89f19a24d68cd794973ace792d782d79ad78ad796d786d79ed78ed791d781d799d789d795d785d79dd78dd793d783d79bd7865786579e578e5791578157995789579557855a5e4f1aaf1aaf36abc79da8f69f29b70ad2b6f6ef0f2f787d67b1edf4132def13f7e1c3d15eb9433f4883579b578b57975787579f578f5790d780d798d788d7945bc625e162f9b97c3cbe5a5c6cd97a69ab514af34af8057885a57330699848c68439acc84cc94cc8ccc9ccc42146b96599259915993d990d992d991d9933990399239913993b990b992b991b9ff05687dad22daa5fcf8fcee7689cc83cc93cc8b4c864c964c8e4c5eeaea7d05324532ea8632990a992a991a993a990699269916997652548f74c874c9f4c8f4c90cc80c25589019695575664c26221393b1c8d864540f5db17c329edc071ae1d3b2915baaf25b8ab1ff10484c4f4c56af02da1aa8f576d0fa13b40e9a4b5c97becc17b4cdf855c7b22e4d134fb553bd2e45262d79d5c2804c48d6246b687bc26c4256b43d537642764a7646764e7621e93ad925d915d935d90dd92dd95d525227ea9103d923d9134a9ecc5ec85ec9dec8dec93ec83ec9bec866c866c9e6c8e6c91650926db644b64cb642b64ab6465655de20db24db22db26db21db7de7597b1b4f1eaf5f5f9ee672cf7f6f687d87f57bc7d239bc2db9be0cd6c8f6def9d3d480f7c90ec80ec98ec88ec9466463b216599bac43d625eb895afbb23ed914d934d9806c48ce2467904bc8093964bc233721377d9719b9b9f49ae416e496e456e4d6e436e4b6e4769256ffee13f5b5e70ee48ee44ee4cee42ee4aee46ee4eee41ee49e7f095aefdd1272af77c086ed2f74e532e4b2e472e4f2e40ae48ae4d4457567855c955c8d5c9d5c839c6a718b5c9b5c875c975c8f5c9fdc80dc90dc88dc985c442e96d4565be8e62c723639879cab859f9cbae2730a75d8aae3d1c87fac60ca9dcbe95d8e9f933f434b5bbebfd94505aa53f33768fd588bdf7e0b8df436a77cfb7769778fbd6a5bca5cca7b76d568a6c905e442f22679837c425eb485607e427e4a7e467e4e7e417e497e457e4d7e437e4b7e477e4ffe40fe48fe44fe4cfe42fe4afe46fe4efe41fe49fe453e433e4b3e473e4fbe40be48be44be4cbe42be4abe46be4ebe41be49be45be4dbe43be8b427bbe9f74dae6f1f5b5b824dfc6fe5a3d73fcf670fd7b969ffcdcdaa8fc2bc6c47737739ab75fab1118901f921f911f938fc8c7e42df2367987bc4bde430963f914f934f9807c48c1a460680386424241b475676142614a6146614e614161496145614d61a3375d0a5b0a3b0a7b0a070a470a270a670a170a570a370a770a0f0a4f0a2f0a190a590a390af9bf0a2de9ff06adfbc7a641676d4dd4fb0a5a4f5a9f1b75d5d02285128532850a852a05d5993a05d5d62685d617b40a6dadcf287428a8f31e853e850185a1784a2455cd1d5118538828c4d031dcac391b187531c532774f9d1e663ffab29f5063bd52836251b0bf92cffee0eae362add7bc962ed38f5bf1fd57e3b52547e6aded2c7da940be5cd7ded15de6fd2f87e5594cc1a1e052500df629a428a4290414428a264583624251b4156e7142714a7126b1fa39a7b8a0b8a4b8a2b8a6b8a1b8a5b8a3b8a778a078a478a278a678a178a578a378a7f8a0f8a4f842d1f36296620ec533170b148b144b14cb142b14ab146b14eb141b14df099167d16fa9d2deb45ac7f77cfdbdf7b57e1433ebca17b4dede9fda6fb57dd5bcc6a945519536c50ec52ec51ec53ec501c521c511c531c588622c07353516455bd6338a0e4597a2a72952d1d7d0daab4949514c530c28867a77a764523228259444db54972694a6946694e694169496945694d62836a4b4a5b4a3b4a774a074a474a274a674f9eb54eb2bc6d0afb57ffb16786e3a6cf7c7864853b634a52ba51ba53ba507a527a517a50ca52c25c531b612f5f594f2940a948a1a5aa5928656a94ca9a277c74b554a354a754a0d4a4d69ce7ef9fca9d7e995ac635e72945adf5b3719edd4f8d161aca6bf024528a87cd0f55175fc015adb6f68ddde899e7468a47774aed2b701c7dbe4f71a68138d5a45eeaa796d4a1d4aaab53d4aeae780d290d288d298524429a66451b22939945c942c54f229a528a9a1082885944dca06e584b2682378c3a23ca13ca53ca33ca7bca0bcd41ac8f28af29af286f296f28ef29ef281f291f289f299f285f295f28db2baf341f949592d0425ede6a0d842dde65f33f57787d667075c2b303e0c61b2fd404b8645335117d54065286729e728e729172817299728972957285729d728d72937283729b728b793715f6bdecb1dca4a30f329f73490ca7dca03ca43ca23ca63ca11f37b9255d311535673645376b4e16bd9a5ec51564fa528a7290794432a2615834a4245b45783825665f29765aded57e0ae7720216dd27abc7e16cba472fad80a19c32d9529951995399505952595159535950d15f5d78eca9eca81ca91ca4943aba21a74a172a572a372676d53795079527951c950c952c951c927cf91590f90bde60c4d874a814a31f1d56da524804ad9dcaafa2b54aada8dff13ecf2f7683b9fe0479fe00abfb44fef4849dfd0d2b3f815a6e2bd701c6f243da3be54854a8d4a9d4a834a934a8b4a9b4a874a974a8f4a9fca80ca90ca88ca984a4425d6d624158b8aea8b6aaa4bc5a3e2534951495309a884544daa06d584aa684793ea84ea94ea8cea9cea82ea92ea8aea9aea86ea96ea8eea9eea81ea91ea89ea99ea85ea95ea4dfb38b43a725feb80a18ad2ea4f70f36dc9b5fdf723e49f2ada98e64b48fecccb9b6fd25fc24cab43a9dea93ea83ea9bea866a866a9e6a8e6a916a816a996a896a956a856a9d6a8d6a936f4a7556d526d49af45b54db543b5abb5148a70557b1a665555063256433da43aa23ad6b8aa46494d551e53b5a8da3256f53b545daa1e559f6a8aaa7a3ca01a5233ff1ab43484b49e6d72d199bcbe0c93ad8fabb286d6473d304feb0d879a412da126da3ba936a136a53693b94b6d4e6d416d496d456d4d6d436d4b6da73925c3a1b657544bf384b5833669ad1da99da89da95da85db55abc76937d9bda9db9aaff41ed49ed454ddda9a4ffbe1c6ed47252de6a2e6272feb5c1f5e1943e74ece3d8ab58a66f86f61dd7e590b466ba533abac6f19bac658cc7537fa3733564796a056a456a256a656a156a556a356a756a0d6a4d6a2d6aaa611d6a5d6a3d6a7d6a036a436a236a636a11b5989a45cda6a6baa9c6c1a3a64629452d4d2da0165237a91bd413eaa2fdb9ea13ea5314775d9f535fa0e05d5f515f53df50df52df51df533f503f2a507ddcba64eba8aff0c7e9fd6f0eadcf1ceddebc5ff32d71bd3f361d6c784cfda4a689fa99fa85fa95fa8dfa9dfa83fa93fa8b7a867a967a4eae6a24f3d40bd48bd44bd4cbd42bd4abd46bc9682083987a5d5a8996afea0dcd192a8c2974d59bd45bd4dbd43bd4bbd47bd4fb1a5af501f521f51175d58088ba7adca26e5377a8bbd43dea3ef5d45f83d6467b77be2ec9b0463dadad4ede663549d1d51c94e2f8154372543d0ca887344c1a068d848668afbfc684c694c68cc69cc642bcbdf6321e7e43abb1d4d06aac68ac35ae1a1b1aeaa2bab2a771a071a471a271a671a171a571a371a7f1a0f1a4f1a291a191a591a391a751a051d469c207170d925f5908fabf1c493e5128fe082d4db26e731dd824597d39f6ab996b94b4b587b61eda681ba8469946854695468d469d46834693468b469b46874697468f469fc680c690c688c698464423a661d1b06938345c1a1e0d9f468a469a464023a469d23468263445fb46362734a7346734e734173497345734d7343734b7347734f7340f348f344f34cfef30ffe5b7aaf3aa33ce98e17b81d8fc92bbfea66536d4e9b6f4477554d07a9b9894bfe26c262f23b0cdd799e685e695e68de69de683e693e68b66866696668e669e668166916689669966856695668d665d8b5bcd06cd26cd16cd36cd8e0c6c9a5d9a3d9a7d9a039a439a239a639a11cd98a64553dde0d07469aa677d9a299a699a01cd909649cb4041b425b4f84b864e1f6568b2345a8af1a81aafeb6fd07abe4741efc0ea5ce3a388d684d694d68cd69cd682d652aaeae28ad69ad686d656879d1905b476b4f6b40eb48eb44eb4ceb42eb4aeb46eb4eeb41eb49eb45eb432b4b2b472b4f2b40ab48ab44ab4cac941d55ca155a555a355a7d5a0d5a4d5d2c857ebdc176b77ff8e1672ff86d6f3972bca1b5a4aca5254eb8b217c4738d01931428b569b56c7dca93674b5275bab47ab4f6b406b486b446b4c4b752aa665494fb5dcd6d11a5a0e2d97963af169a568a569a96e86b44dda06ed84b6f6b6a13da13da53da33da7bda0bda4bda2bda6bda1bda5bda3bda77da07da47da27da67da17da57da37da7fda0fda4fda29da19d7d43eba60357e5d6df0bfcdf3cbea72a3a2ec8ebadb178bd79c28ede2ffeb690a49da39dd7dae976817691b63a29d3aed0aed2aed1aed36ed06ed26ed16ed3ee88e2a1da5dda3dda7dda03da43da23da63da91b6016a2bf074685bb46dda0e6d97b647dba79da29da61dd00ee998740c3a091dd11ee19d099d299d199d399d059d259d159df55f82d6e4db1de83b90cd97b8a515d66bf5af31dcfc68ae93ec93ce86ce5614f43b3b3a7b3a073a473a273a673a173a57a4a7e3a529f2d5b9d1b9d379d0514fbde864c45327593a393a793a053a453a253a653a153a553a353a753a0d3a4d3a2d3a6d3a1d3a5d3a3d3a7d3a033a434db5d417f6255cdd7f89f5bfd23afd3197c727cdc72f7b8ec7dbfae4ed89bc2efdfa527f45c9bfe8143e49f13b70b48e1a4d67247735ca633a119d988e45c7a6e3d071e978747c3a293a693a019d90ae49d7a09bd015edb3df9dd09dd29dd19dd35dd05dd25dd15dd3ddd0ddd2ddd1ddd33dd03dd23dd13dd3bdd0bdd2bdd1fdb4eaaa257b9df7edfec5fafeedd1f55b908fef488cbf42b97cd4577ab3eba2a353741fe6418dde93ee4bdd90e4ef743374b3747374f3740b748b3256174b74cb742b3ade49b74ab746573ddbd03eb8dd26dd16dd36dd0eddae5609aaa32e3dba7dba03ba43ba23bae324f3a21bd18de95a746dba0e5d97ae47d7a79bfa6b0ce1efe5f99b1be5c34cd7df1a6afb032dcdfa77d37403ba218a72f40c7a093dd1711f7a137a537a337a737a0bedc0df5bd253f27a446f4d6f436f4b6f476f4fef40ef48ef84a2063d75db95de8dde9dde83de93de8b5e865e965e8e5e9e5e815e915e895e999e82df505b49cf7b5f293c34a5da7e7d73ff501f7f1c523eb3fb5b52c34fd4db3f04019f3c3077e64af5ab4aafa6535c47aac1757a0d7a4de33242c9cdbd36bd0ebd2ebd1ebdbea14763406f484ffd3ba6a70621a667d1b3e939f45c7a1e3d9f5e8a5eda4cab3b037a217d93be413fa12ff431d75ded67ad7518855f01ad74930eff030366fc1745db06e4f4142bc1b83fa13fa53fa33fa7bfa0bf4c7265fa2bfa6bfa1bfa5bfa3b1d06a3bfd7311afa07fa47faeae799fe85fe557f8d7d75fd4eff41ffa99d77fb2ffa19ed8bd0cfd2cfd1cfd32fd02fd22fd15735abeb55fa35fa75fa8d7f3db4fa4dfaaa4d6dfa1dfa5dfa3dfa7dfa0319aabe0db5ee52741c42fa23fa63fa9136ebeac7f42dfab67698ef3bf45dfa1e7d9f7e8abeaa30a01f323019180c1206a243b30c260ca60c66c9a1cf60ce60c160295e53cb1beffc1d5f2af51f4dc65f80d6e41b5a3f34ed4ff91abfe2f66ccdd5426f5b2ba6e580de7519ac18ac196c186c19ec8cd1c6c8a518ec191c181c199c189c195c185c19dc18dc193c183c19bc1864186419e418e41914181419948c95ea6699418541d554081cd418d41934cc8bb6a6d3c33e79fdcab4fdd922ffbbc7a6fec7cad950047cde65d064a006bfcda0c340fdec3150dfc680c190c188c19841c420d6c13006164ac41a380c5c069e86d6c04f6a6ad8537ae76a9066103008199a0c0d8689d66428b670280c6138613865386338d7546bb860b8d49b4cc3d57f0bb4866b1490865b863b867b86078647862786670dad43f90b5ac38ba6bcc32bc31b431d3797e183a16ae58ba13acf32cc31cc332c302c322c312c33ac30ac32ac31ac336c3054ef6a316c33ec305455f53ed0d2b2d32ef796a0ee7f49a67ffe2a3f1ce38714fc3a3ebf8ec9d6d87535b434c55869c1e0ace6a3cf70c070c8507573cc30621833b418da0c1d866a4a3c863ec314c334c38061c8c86464304a18898ee3349a309a329a319a335a305a325a315a33da30da32dae9dd7325df2b20fd04067e7ba96a4ee9ff316849799b6462467be37566746074647462a4ce2f8cae8c6e8cee8c1e8c9e8c5e89b54a9c8a8eee34ca30ca32ca31ca332a68688dd45a9696e4ac0aa312a3f2bb54185519d518d51935183519b518b51975187519f518f5190d180dff5b18c2d188d19851c44875d86264337218b9da7b7fe43152c79486fb28adf59ba3407b948c426de864268c4dc6066375223a4cd878c278ca78c678ce78c178c978c578cd78c378cb78c778cff8c0f8c8f8c4f8fc43b2bea0f5d758a38fd1d0af6c8bbfd1b1e43776f127f6ad0c7430ac75a9731968bda282d6f8c2f8caf88662f4c70fc64fc62fc619c659c639c679c605c645c625c665c615c655c635c675c60dc64dc62dc66dc61dc65dc63dc67dc603c643c623c663c611e3d84c371585fc0edafc2d3dee8a9a4bfc7f0a5a7a9ad470598cdf5b116387b1cbd863ec334e314e330e1887442691419410898e1361ec7504ba684234259a11cd8916444b8d2e6d72f12e0a548a8e452ba235d186684bb423520f1e888e4427a233d185e88a1201a2bf629efb0f422b7a103d895e4419a22c518e284f54202a129588ca4415a22a514d4b5c8aec4675ad731fde34d58a1a444da216519ba843d425ea11f589064443a211d19828228a892c229bc82172893c229f48c1b5f79f41eb1fa75a3fccde175dfabdbccd35bec2da64be7e76d6467dfe4e2797d30d38a906ab7108884262d3787ac40671422c3a9a603c219e12cf88e7c40be225f18a784dbc21de12ef88f7c407e223f189f84c7c21be12df88efc40fe227f18b38632459e2ec3be47de96b3ad4517ba65dffde36847fe59b548cb11ab79cb43ac479e2027191b8445c26ae1057896bc475e2067193c95e97b845dc2656f777897bc4effdab7890e48d4f211eaa9fc4235db66a3ac6c411714c6c11dbc40eb12b539f584dae3aa688d3ff7a68c5017188656219580996e8d094d6046b8a35c39a632db096582bac35d646ef6b595b49a97375b2c73a68aa651db14e5867ac0bd615eb8675c77a603db15e5819ac2c560e2b8f55c02a6295b0caff9764adfb2f69ea17b47ee0f4fa0afefcab3c93d6fc273ebb56e29f3a5815ac2a560dab8ed5c06a62b5b0da58eaaf2e560fab8f35c01a628db0c65811568c6561d9580e968be561f95829ac34568015629bd80676822d3ad4a73d3194cc9679bce33add7fb613feb36021ffa34bf2c09e6a35923dc356c705f6127ba517297b8dbdc1de62abf33df601fb887d4227d4b2b12fd857ec1bf61d5b55f2c47e6167b0b3d839ec3c76413aead962929d6297b0cbd815ec2a760dbb8eddc06e62b7b0dbd81deceebf1e5a760fbb8f3dc01e628fb0c7d81176acfd316d0bdd2507dbc5f6440982b68f9dc2564f05da26c30e714c1c0327c1111d28d699e04c716638739c05ce1267959c629c35ce06678bb3c3d9e31c708e7fd6107e05a3beff63d0fad107fe015a1f147de72bf809c6f62ec6382d8be7574e61f5d459b5fc94281838679c0bce15e78673c779e03c715e38199c2c4e0e278f53c029e29470ca2819c0a9e2d470ea380d9c264e0ba76d1e305eaab3da7ed248d4b35d73de1125823a3d9dd0e89761e7b775f2bffd73ff6f2d4f9e7d335183d9c719e00c714638639c08477d27168e8de3e0b8381e8e8f93c249e3043821ae22f3475c0337c1151d95d89de04e7167b873dc05ee127785bbc6dde06e7177b87bdc03ae7aea847bc6bde05e716fb8ff028610f7f10b5aee13f7859bc1cde2e670f3b805dc226e09b78c5bc1ade2d670ebb80d5128729bb82ddc366e07b78bdbc3ede30e7087b823dc316e841be35ab8aa7207d7c5f5707ddc146e1a37c00df14c3c032f116ba6930ffcc77dad7fc8f0e77f09adbdd9d998da5fabf7c1159ee87fc3a5b6e54db6787c6cb4cd337813bc29de0c6f8eb7c05be2adf0d6781b3c75e70e6f8f77c03be29df0ce7817bc2bde0def8ef7c05395bff0327859bc9c795460be27375561be73519fd1dc78a9fb0b78c5b7f2fdf0cb60fa1b5a467237265d9d184a352f5c19c9bf1d00ffb2a2e6488dcf510d6909af8c57c1abe2d5f0ea780dbc265e0baf8dd7c1ebe2f5f0fa7803bc21de086f8c17e1c578169e8de7e0b9ba64d4239e3676f57cbc145e1a2fc00bf14d7c033fc1177cf027620cf0a7f833fcf9bf185a8a6af98be459c75fe2af34d5f2d7f81be954f0b7f83bfc3dfe01ff887fc23fe35ff0aff837fcbbf69cf11ff84ffc177e063f8b9fc3cfe317f08bf825fc32beaaa78a5fc357af68e037f15bf86dfc0e7e17bfa744acdfe2643cbe377cfe61687de502fc8256e6cd047ea09579434b0f027e5f5b45f95fd952b42de51b5af8437cd5f1b1a1a0e247f831be856fe33bf82ebe87efe3a7f0d55805f821299394412a21253a9ef9489d4f484df50e726a466aae5dc8e4601e5f5aa80b2c9ddce8fe20b5788752bcbca9e8fd0fd0daf8a496aa2fa456284e3bb531263d8db17f3b0cfe15657a4c2a675a9da4a086714b6a476a4fea40ea48ea44ea8c12e953575237526a40d4b83d49bd50827d2a4b2a472a4faa404f0d75915489549954e57dac6a8ca56aa4eadabc3dd520d524d522d526d521d525d523d5d761675203524352a37f3db452635211a9989445ca26e59072a55325e59152539e92b1ea9bba2d2015cae242da246d904e488b8e929f9e909e6a63f0f48cf49cf482f492f48af49af486f496f48ef49ef481f491f489f499b4aae4aa3584e99b565dfcc49ff94945f57f0b5aa2bdbc48ffdcd3d756d8e907e927e91769755b412a8971513fb34971443a473a4fba40ba48ba64dc545fcaa42ba4aba46ba4eba41ba49ba45ba4dba43ba4bba47ba4fba407a487a4550de3442d37e948bad11bb76743c969d7bd12b68cd7277bd35e5b45feec6b7db42fe152912c99a9718b495ba46da3f777b62afcdf414bbaeafb7148bba43dd23ee914e934e9807448601218040981e8040cc184604a302398132c0896042b8235c186604bb0d3842bd8bfcbe15d8eda574351b0e0447026b8105c096e04778207c193e025e50c812a7f2158da3f04ad204790272810a835c0925b85a0445096f28b409d2b80a5086a0475820641537a63ed5a1bb408da041d822e418fa04f302018128c08c60411414c6011a8fa55cf5d02d5559f20a5d9c2204d10108484a656be7f4c01ff9940cd7f82d62f41eb4bbe32520b23b7352c25f954f4ce92b6e2bd917b25d9ecdb73f965364c42833021144208278453e3b6369e73c219a13a2e0897842bc235e12669ab1bb6843bc23de181f04878223c135e08af8437ad069c7c87f24c56ba7c79977d8724f8627abfdc4093755f7544947c1fde0975df13aff5efc7c0bfaaa86e3ed58c10be08338459c21c619eb04058242c1196092ba2f8e7b04a5823ac1336089b842dc2366187b04bd823ec6bb650d1a8704038241ce95c426aad0fc78411614c6811da848ea651a14be811fa843a8d23a12ac1bf105a84e1c43427a631319389293a3f8b399998d389399b98f389b998984bcd100e0f13733531d7137323717d626e27e66e62ee27a6ba7e9c98a789799e989789799d98b789799f988f89f99c98af89999998d989999b98f989599898c589599a98e589599998d58959d306843f7af3ef5c7dffb086f0bf82d6d33c7e3291abeed4f5b6d2411b1c6980adbb13b331319bfa67be39315b13f3ff6bef3d96ddc696b6cd795f46638ea037d1237aef3d67001fd01374a08df8efbd33016e2395ea6ba94ea9ead369edc8406083208865de9566a569637630e57a0fb36f5cd7c6535e758039c41c19f728e618738239c50c618631239872318619c74c6026315398697b58c0308d9b876158f383754f589518868561bf1af8ceb2e4f5746f2d8331d3866ca356f2835dabeaf5efc3e02790064a6ac42006180ec61c6381b1c45861ac3136185b8c1d868bb1c738601c35d363ba8d71c238db891b86f4ed05e3aa9e0cb110c64d3998276abc8d71c778603c31a457b318398c3c868c4811a38451c6a86054316a187f2de7fb7740cbbe6d155a4603a389d1c29057ef6074317a18d2ec01c610638431c698604c3142766f624fe5a3304604238a2133268e91c04862a430d2582696816561d95a42c902cbc19a2333db5a62ad34ceb438c45a636dd0788af57b80d6cb4818bce70fb5f12b33c6e7e20c47cfe83ddfc2cbbb6ab8eb7ac82f9e0d212c1711cfcef2b607ac23d609eb8ce559cf2bd6c5788cb1e4e48675c77a603db1325859ac1c561eab8055c42a6195b12a5855ac1a561dab81d5c46a21accdea6075b17a587dac81be8030cc005d01aedcec5bb682b22a577e73ace958e8bf1a5a37df1b46d63be943990c232ce9ea09d6142b8415c68a6045b1625871ac0456122b8595c636b10d6c0bdbd6ea5c36d80ef65c1dc7496bdc53698bbdc05e62afb0d7d81b6cb9b2c376b1f7d6f58a7dc03e629fb0cfd87f2580ffcfa1e58742be430bfb822dbf77c3be633fb09fd819ec2c760e3b8f5dc02e6297b0cbd815ec2a760dbb8eddc06e62b7b0dbd81dec2e760f5984ec01f6107b843db61a72cf047b8a1dc20e6347b0a3d831b4e47d022dc49dc24ebfc251e5c54428ca165fa5667fd421e37f80160f66a64e68f5306a99b1255ad9d362666bd9342d9ce6a025b1166809a0155af264839687d8a159f0f768caf0239a13f9ccccb3aaf2e9054ddb7943d311caf39f68ceae2c9a6d288fa64729a2891acacc2a684c720d0d966c306b1a4f3f4dda5b754fcdda1704c8f84d1621d01a44fffda9ffd3a1e5732d65ddd2992d3468a7830614f45077dd01eaf63742fd7a26e8867d885918ddd5896ae1c4aa28f7315b072bce2c310bc990c915d1c9d2a8d025ac5056745b6be2e99f037358c01256b0860d6c6107eedf08addb67689932abd8c3018e7082337870812bdce08ecc4b9e9081acdda9400ef250802294a00c72b10a35a843039ad0823674a00b3de8c300863082314c600a2108434477b402e5ea53f8f02b2bc65f4057305f035fa79dfb42973621aab379a179922106714840125290c631710c1c0bc7d6ea84d2258e83333713319c859988e32c7156d6ed80b3c6d9e06cadb85cdce1b8387b1cb97ec439e19c713c9c0bce15e78673c779e03c713238599c1c4ede9ec734704e931f191f3566fdf23938053bb9f71beeb75d84d82fa269fe48ff363cfe230ae2dc77e66e6feca44b8b38259c324e05a78a53c3a9e334709a382d9cb6356ae37470ba383d9c3ece00678833c219e34c70a6b637c709a1e505652823b3730a278a2323282395c049e2c895343241e606738bb9ad6528e77f2537c627c79fcfd116c1a81c2f2a69c8b80a57993bcce7cc17cc97cc57ccd7cc37ccb7cc77cc5de67be607e647e6c2408bb3718af9596442e61ef38b9595f7bb32bf31bf337f307f32cf30cf32cf31cf332f302f322f312f33af30afcec667e6b5d93ac6bc6e0ce4bca1e554fc8e7ebdf3576eb53f385a6faa8b6fa550434526a86cafebc8cb36689bcf0bf326f316f336f30ef3aed99137ef31ef331f301f321f1976c3b06f86e896f331f3892d089c4f99877c0a338f308f329756c49927982799cb0d6916260b8385c5c2d6d2a1b24a2e1c1673160b164b162b16ebd9de177755f15bfba2efe3254738ae66a82e6e54eab9aafbd5cb1b2b30247ea6cf26fb7f1f21ff01f97183f6a3ca62c362cb62c7c265b1677160716471627166e1b1b8b0b8b2b8b1b8b378b078b2c8b0c8b2c8b1c8b328b028b228b128b3a8b090a7d558d45934583459b458b45974587459f4ec969cf4590c580c3577a5c8326ee12f45197f76fcf90a5ad6d6875649a065eea449231663161316531621166116111651163116711609164916291669bb9cb36b264b2183a5359bec58da2c67ca69970ecb39cb05cb25cb15cb35cb0dcb2d4bb9c765b96779d03dd0ad2fede896e8eaefdeb409a2f1aeda5e3f25b23f3b0f72d1d758ee1a3c2fea96a855cb23cb13cb334b8fe585e595e58de5dd2adc593e7c506d84a7b07c9a496969866596658e659e658165916589659965856595658d659d65836593658b659b65876597658f659fe580e590e588e5d8bf32d1302d5fab34e6558550509fc9af1fab19aa055a91a406861f3a5f43eb3dcfe97f07d79acd8ddc4e8e2ca75649ba34c432cc32c232ca32c632ce32c132c932c5328d4c13b5a0e65859ac6cad722c62ddca9979355673560bbbfc64b564b562b566b561b565b563e5b2dab33ab03ab23acd6ef2754da5aa592b75cbde2f0de3967e3eb4561eab0bab2bab1bab3bab072b79dd0cab2cab9c552eb1cadbe98ed5edb32acc44ae5b15ad6291955c2fb3aacc32d2922a2b696a9d55835593558b559b55875597558f957c71f0e15e10381c6cff5ea5e207a1b51ab292864b5b26aca6ac42b64886abb08f2b41d7ed05ad55845594558c559c5542f9d52ac92ac52acdda646db0b658dbac6796404bc4f8b5c37ace7ac17ac97ac57acd7ac37acb7ac7daf5ebee5d35678e615ac39a9feafdf0b1b5f585dbfe97b2dfbb093460c8812de45f47c87f02ad64421593dddaf472acf7ac0fac8fac4ff6fdccfa6c842fac3dd672bcb2bed98512eb3beb07eb27eb0cebac4a83eb9c922829eb3ceb02eb226bb9adccbac2bacabac6bacebac1bac9baa5e5e4134bad2c15543f7c7385f947a0b56eb3eeb0eeb2eeb1eeb31eb01eb296068c594f584f598758875947ac9af4429475cc2ac9bc89b34eb04eb24eb14e234c7e63b0b1d8d86c66aa2e6e1c3673360b36cb0f36f5bf015a9b159b359b0d9b2d9b1d1b57a1b5d9ab1cb839b039fa0093eb72e7998d67d3b5456ed95cd85cd9dcd8dcd93cd83cd964d864913575936753605364536253b666d20315365536353675360d367e8a4f6ba5aca99e9e89c8ad82dff9ad9cf6a722b49fb71fde52fcbdea71bd9ab6f8b52b8b0bb46e5ab79a4d5ba1b5e9206af0a6c7a6cf66c066c866c466cc66c266ca26c426cc26c226ca26c626ce2661676420926c52763567d564bea5ed5915d1dc656a6f2db636db999a2ab60edb39db857db968b16ffb6c3cf7feacb8059e093f1f5aa26b6d976c576cd76c376cb76c776c5db67bb6879957617bb4ab69b6a79951677b9e85e47e8fed85ed95ed8ded9ded83ed936d866d966d8e6d9e6d816d916d896d99ad3ca1fa05b402fa17a1b5adb195b634d836d9b6d8b6d976cca4add0daca301fcc7ccf3fefb1eddb9b94b1d919963479c076c876c476cc76c276ca36c436cc36c236ca36c636ce36c136c93625e20bdb3482919dc1ce62670735ddd8cdd4fffd2b687d9411fbe4fdf45e3cf28d5919eda71fa7bcfeefe05aeab0e25dd556b773d8cdd92d946bed96cab5762b766b761b76d2633b762ebb3dbb03bb23bb133bb9cd6327b7c9d76feceeec1eec9eec32ecb2ec72ecf2ec0aec8aec4aeccaec2ac653be52d5224c6e362835daf18e3f1f5abb1abbfaec2c270d764d762d766d761d765d763d76fd59485a3e60376437d2e5613766376137651762176617b16505da45d9c5d8c5d925d825d9a5d8a5714d5c03d7c2b5bfc0d2df8cab1f87963bc305d75168b9738596bb309c06eed24c847c0acbd1305ddc15ae487e757b61e36eac5208778bbbc3958ff6b807dc23ae3cf08cebe15e70afb837dc3bee03f7899bc1cde2e670f37ef88cbcd8dc2e6db48a9fd62839be58d6879562f705a87c7a25f6f81ce5f9afc3e3ef8096e1f68cbc745d01b7885bc22de35670abb835dcba5d58e0ca88c800b57065803ab85ddc1e6e1f77803bc41de18e670779c204778a2b4313c68de0467163b871dc046e1237859b360f8e66bc0c7225fc73d0da9bec0ddbccb1b7d8db7ee019ec1df673f68b59b46aa7e48625fb15fb35fb0dfb2dfb1d7b97fd9efd81fd91fdc92ee7d99fd97bec2fecafec6fecefec1fec9fec33ecb3ffbba0b597c6ca0b17d817d997d8970dfb6226a5c99537aab2afb1af2bbaf60df64df62dc39206b60d27cebec3becbbec7becf7ec07ec85eba71cc7ec27eca3ec43ecc3ec23eca3ec65eee4fb04faa8932783725df195ff3c0ddbecda9749bdb4f2d1ca43a953b03ce16a48cffa52d19ea7963c98940cbf464b6a4d8a711adf36070b0ac679183cd61a6bb420787c37c366c7158588723872587158735870d872d871d0797c39ec301fdf4c4e1ccc1e370e170e570e370e7f0e0f0e490e190d5f80335113d5f02e1f1f98f40eb90e390e750e0200d2b712873a870a8da1d665e82438d439d43c3aa35668e61c7e4ce260769709b43874397438f439fc380c390c388c398c384c394438843984384c3df2e01fe67d03ac438c43948d3921c521cd208ff100d2b9d1232c6618e9629ef7bb439ce386246e71c1d73f0d46322c251fe5d705c725c715c73dc70dc72dc717439ee391e381e399e389e397a1c2f1caf1c6fa657fbb04368aaf0e107b3e22dd398eff7f4cabced1c7498824c8c762f5868cd45daf763f8a5b3eddeb4b4220ffb51351bd2c9778e0f8e4fe32e1d9be198e598e398e758e058e458524becb1ccb1c2b1ca51ceeb1c1b1c9b1c5b1cdb1c3b1cbb1c7b1cfb1c071c871c471cc71c271ca71c431c653423ea0a2313404b8d1e028bab51fc0b41257f0e2dabe5e80de9b58c19c7a842eb18e318e798e098e498e298e664723238599c6c4e334eccc239ab9ce0e4709a735a705a725ad9a2ae9cd69c369cb69c769c5c4e7b4e074e474e273bd6090c9d41919e9f5f3feadbd0d2287d81b46e9467831c189cce9c3c4e174e574e374e774e0f4e4f4e1933d1b046f26956d025d0320e3333d1e294e3943756d2b402a7a2b2af53895399538553959374429d5383935c979bdb9c3a9cba9c7a9cfa9c069c869c469cc69c26e66ca6abb5e6d0d5aa3f9ca65664fd82d65c6e0bc90b730a6b3519e4f5221adbaf4b6c90804017daa084d27f418ef8005ac6fd6158594e514e314e714e32c7929c529cd27e90aa61ad96c86a78b639cfd4a3e1ec709e735e7096eb2bebdcb59271ce6bce1bce5bce3bce2ee73de703e723e713e733678ff385f3d53cb5d4e26f3d67b9b7745ad6e11f81d6f9c6f9cef9c1f9c939c339cb39c7396fd78b9c0bb36684b39c9438973957385739d738d73937383739b738b73977387739f7ec9969dfb6fe9cf0a7852cb79dcdcf1760fe1c5ac1a732a757a6515971ee731e701e22bae579cc79c279ca39c4396c756518228659b45231e3601bb68c50d4b07b9c63c64a3e925e4ad874d445e39ce49ce29cc6d3a4fa78169e8d37c3c33ac68c690ecfc19be32df09676b68fb7c25b6bfc9fa8199e1ba41f9de5e25a7e4a15ad82d62eb2f7e67c8cb7c193de3be2edfc6ca487378fad372be27f416593376899eb8542cb73f164e58a5ba23b78073c69fb09ef8ce721e2a277b544c6f66ed65afebde33df0e4b60c9e7c51fa398f57c02be295f0ca7815bc2a5e0daf8ed7d00d7daf89d7c2d3b86fdda7d648b9c20b5abbbfe0e8f4a3d0f23a785dbc1e5e7f961ce20df0e438c293919e68a6df9c347e6a77767821bc305e042f8a275f8c23e2a29754687929bcb455cad8b3b056f7794bafa9a9e767eecfb768fd7f414beb33f8d012ae253cec6270b1b8d85c66eada7571b8cc8d6598cb82cb92cbca1065e9b2e6b2e1b2e5b2e3e272d9731125a0c3e5c8e5c4459ee371b970b972b971b973791829f9fa934b864b964b8e4b9e4bc1dacab1c8a5e4db2d0e5cca5c2afec6e54533548f935caa5c6a5cea32d5ec5a55ab7b2ce462c3c7d5d374b3eabaf1d9fefeab1bdf7973b8a3a28e4e97a695f38c81746c4b65c24b9b8b9c77b9f4b8f4b90cb80cb98cac9df4ed98cb84cb944b888b0c90dc1ce512e312e792e0229d96e29216a18fabc1d5e26a739da9dfded5e11a0404e6fd6a7afd60a7fe9f80d62c32e2bae0bae4bae2bae6bae1bae5bae3ea72dd733d703dce2672fdc4f5ccd5e37ae17ae57ae37ae7fae0fae49ae19ab5b20f4dbc91ac9b56e5632a88fafed3a7c29fe85af3a9afe3bd55e61681f09ae39ae75ae05ae45ae25ae65ae15ae55ae35a3796216bd2e7da309651ae4d631fe7dae2dae6dae1da0db8966e285f7b5ce5b601d72157e9ba31d709d729d710d730d70857f97a8cab7c3d616de517935c53c6f3149457e59ab6e35195933597d3dc2f3eb07dab86be7b953b0a9c8cfd527d6a70f74d8bea61bce8f85978c7ff3e3cfe636869934584d60b06378b9bcd6da6eeab3787db9cdb82db92db8adb9adb86db56a175db7173b9ed590f66a26bdd0edc8edc4edccedc3c6e176e576e376e776e0f6e4f6e196e596e5a4f59c12cd2e08b6ba99ff43fc2b56e796e056e456e256e656e156e556e356ef5d9482e36ec6664961b706b7293f64877c857badc7adcfadce4fa90db889bb47ca26c77b77f412b9810cefadf82d66c9ed6fdb4cfba9640eb36e516e216e616e116e516e316e796e096b417d20f2923218f4cfb461f43fa8cbbad2bec5d98db41717577b8cfb92fac856b91e5bee4bee2bee6bee1bee5bee3ee72df733f703f723f713f73f7b85f8cd6debe8f55d8bb5fedfaa1e30d75bc1ba608459a1cdbf37ca1656e7a55733513f070f71d0e45edd048ca4e1063a6e8b2e6bf3cb45e91444585d6fdcefdc1fdc93dc35dfa33c73dcfbdc0bdc8bdc4bdccbdc2bdcabd6639724f9d7b837b937bcbbec875f97a877b977b8f7b9ffb80fb90fb88bbf4de84fb947b887b987bc488e67c7becc9cf5eacc6bc7f045af7287739c6b927b827b9a7b8a7fded13037bcec3e261f398cd1245f5237f383ce4e282c792c78ac79ac786c796c78e87cb63af5b16c2b5b48088565fff77b996d1bea883d56ca1c68340207c1c781c799c789c79783c2e3cae3c6e3cee3c1e3c9ec656da95e191e591e391e751e0210d2f1973cc729c4759ed878f0a8faaaadd8f1a8f3a8f068fa6319627b478b47974787479f478f4790c780c798c788ccda3f4cf449df11f53df5d50fa30c4439e16312327abf73027170dca7c4479c41463411d9d579e7a05d88b7d0506c67f1d1e7f07b48cbacc1ce955e9c9248f148fb4569f7d1a3c2d9e36cf99865e3c1d9e739e0b9e4b9e2b9e6b9e1b9e5b9e3b9e2ecf3dcf03cf23cf13cf334f8fe785e795e78de79de783e793678667d6b706792a87ebd696f6eacf87d633c733cfb3c0b3c8b3c4b3ccb3c2b3cab3c6b3ceb3c1b36977e48616cf36cf0ecf2ecf1ecf3ecf01cf21cf11cf31cf09cf29cf901a0c5e1698b32ff35cdf3cdcff0d6889ae255c4ba0ee43cb3cc9cb8779467846794ac3e33c133c933c533cd3644c3206198b8c4d66a6c1341987cc9ccc82cc928cd67a20b326b321b325b323e392d91b918811af90399039923919d51b9933198fcc85cc958cfc7b27f320f3f48dbf59ade9269ab759d720974c864c964c8e4c9e4c814c914c894cd914552123cfacaa8af5da32b96aa2014df8917d1598fdd7e1f11f90e197352153536865ea641a649a645a64da643a64a4677a64fa64066486644664c6642664a6644264c2642264a2646264e264126492645264d2d2bb640db2224cd8646722529075c8ceadab63ccceda6ffb3ed985a62bd6f4e097ff38a8e493c767002db24b99f1022d0d2a598c5420ccaec8aec96ec86ec9eec8ba64f7640f56a64af648f644f64cd6237b217b252b4fb8937d907d92cd90cd92cd91cd932dd8db87dac1826dcd653ad0d44dabfcd3a7c26b05b9bed42a99917a25f3ca4a2b501719d5cfed4eb648b644b64cb642b66a89809ead91ad5ba60c46836c936c8b6c9bacf449976c8fac0cc680ecd0c8cac88dc88e0d5bc66f4276aaba4136648ca567c2642364a3646364e3641364936453c857722639c32e9cc959af92538e4bce263753f739f52f75acfe86dc9cdc82dc92dc8adc9a9c5cd9fab2b40f2dbbe757afca2929c07e75e7f7875f42f26edbb2ea35c9edc8499fecc91dc81dc99dcc74ce10013b279de691bb90bb92bb91bb937b907b92cb90cb9293decb932b902b922b912b93ab90ab92ab91ab936b906b6a0873ae658a5a6bc9d7dbfee2ebd9bb8842cb2dcaccfc6ba1905fb9c3bcdca8c905795b1faa87d8277b1726d725d723d74754a99cbcca88dc98dc84dc945c889cdc102117251723172797209724972297266f9237c85be46df2330d92cc3be4e7e417fee666b0fd92f37d797e72e26561279a48bd15ecabfabf7b0b343ddd78b51ebac73a1fe854ce2fc9afc8afc96fc86fc9efc8bbc648de7c6fdc7a46ac42fe40fe48fe44fe4cde237f217f257f237f27ff305655f24ff219f259f2f2b43cf902f922f912f93279f9badc50235f27df4044bb7c8b7c9b7c877c977c4fb1ed55ccdd46f78ebdbbee96e6fbe407e487e447e4c7e427e4a7e443e4c31a5a968fbca0351f6bea359ebe30e2bec529ffeb08f9cba4a5eefc0ad41985563e4a3e463e4e3e413e493e453e4dc1a46050b028d814661a7f5b7028cc292c282c29ac28ac296c286c29ec28b814f6140e148ea65bf0f77e567ee45bd3af39fc31ff5fd9944520d460d9c75f80d67b19812f70a55af9742857289ceca8bc8a0a6c143c0a170a570a72fd4ee141e1492143214b2147214fa140a148a144a14ca142a14aa146a14ea141a149a145a1adb15e850e852e851e053fdbd9cb69e0a6765069de4f2d17a091b955e94d3f39d9e9151cee87151bb393d5315f5c54a055185018da5b199211853185090579f3108530850885a89992a18a518853485048524851485334291a142d8a36c599c658171d8a738a0b8a4b8a2b8a6b8a1b8a5b8a3b8a2ec53dc503c523c513c533458fe285e255744e8ab797b2241c49a055bc537c507c52cc58a99835e952cc52cc51cc9ba781c61dfbf123140b5664253c59197220eefedabad6dddc26646ecc064d8556b148b16455a513ca142b14ab146b14eb141b14e5d316c536c50e45e99c1ec53ec501c521c511c531c509c529c510c530c508f39a3d94a745bf734bfdef84562048ccae112b9b9d150a22b0518c518c534c504c524c514c53322919942c4a36a59986ea971c4a734a0b4a4b0d1b29ad28ad296d286d29ed28b994f6940e948e944eb39c6e132bae02ee815f8be4a79666f3a1e507ff975ffe0a01b4acb915cf6852b4e9c8477bc7e8c97b9e2979942e94ae946e94ee941e949e1aa25fca50ca52ca51ca532a502a522a512a53aa50aa52aa59fda439918b754a0d4a4d4a2d4a6d4a1d4a5d4a3d4a7d4a034a434a234a634a134a534a2231ca0f8529454caf288a96bf0d201d1ba514a314a794a094a494a294b6ba9eb18c235d5536285b7ea5637f0b2be05a22eefaa9a97efd7dadbbb95e7c70adb24d79a6e920ca0ee539e505e525e515e535e50de5adb57029ef8c7288b29cec8d8145f940f948f944f94cd9a37ca17ca57ca37ca7fcf87e47b0ff5c20fc1a5a949fc2b57cbe29af95a19ca59ca39cb7ba2dca05ca45ca25ca65ca15ca55ca35ca75ca0dcad20b72439b72877297728f729ff2c03f19521e511e2bb43a63dfe76df0cad4f9ee32f7f3864a04c281f7095a3eb794f9a7d6ea56c7bbda1781775a19c544066042796a74644864a8c2942394a3946394654e27282729a728a71139a26250b1a8d854669a04a4e25099535950595259515953d950d952d95171a9eca91ca81ca99ca89c1578158fca85ca95ca8dca9dca83ca934a864a964a4e5968254fa540a548a544a54ca56224e4e7aa546a54ea541a7e95097f0bcb2abca0a58ead3fbf3f7f3af9d5b483fc6202ad4ad3d80c8dc2d03845a8b4a8b4a974a874a9f4a8f4a90ca80ca98ca88ca94ca84ca984a884a9c8cd512a312a712a092a492a2963b633ddc7f72738f8fba165552281af8df194a990a66a5235a85a546daa334d245375a8cea92ea82ea9aea8aea96ea86ea9eea8ba54f7540f548f544f54cf543daa17aa57aa371508abf7570092bfe1fd4f08302bc3c86d7db5eaf659d7329e17f5745e246791bee1ea1e00d5072278543354b39a51b09aa39aa75aa05aa45aa25aa65aa15aa55aa35aa7da3062653321f734a9b6a8b6a976a876a94a1bfb54075487544754c754e55153aa21aa61aa11aa51aa31e32e5f89534d504d524d514d8b04683f17c1b6af6e6489365533a919d42c6a36b599e6efa9392a8bd6e6f2a95d31de1292e6847105f6cf9791e6d7d6b544e938f982d546a1555b505b1ab9b87196de58515b53db50db1a9934b51d3597da9eda81da91da89da999a474dbaee4aed46ed4eed41ed492d432d4b2da7c9360ed9ef9c6f7f2bb4e661b932bbec5f6e6c8709b53cb502b5e26c55a456a256a656a156a556a356a7d6a0268d6f516b53eb50eb52eb51eb531b501b521b511b5393874ca985a885a945a84583940f4142957f0c5a7e98c6a7bcd66a249486c464bdef78072bb2d1497996491ca7267337492d452d4ddda46e50b7a8dbd4679a99aaee509f535f505f525f515f5b6139df50df52df5177a9efa91fa81fa99fa89fa97bd42f46b140fd4afd46fd4efd41fd493d433d4b3d473d4f5d3e2d522f512f53af50af52af51af536f506f526f516f53ef50ef52ef51ef531f18f5ad313cbcf96b3f5fd052eff8d2471eef5f951ebae4693ae18d1adfeb43ab250d1f19d714f531f509f529f510f5b03195a189508f528f518f534f504f5297dbd288a6da306858346c1a33cd27d67068cc692c682cbf734bfd3f4c96f625b4b6f1376865d4927188aadf4d6345634d6343634b6347c3a5b1a771a071a471a2213778342e34ae346e34ee341e349e343234b2347234f2340a348a344a76a56ba912f98a41d2166e3ab373f45585e4a7414ba3dc826ca1efdeab8aea1e0d619ec599216f5bd164c879694e95468d469d46834693468b469b4687469786dcdfa731a031a431a231a631a131a511a211b6a2724f844694468c469c4682465245c1468a469aa649d3a069d1b469ce346d5cd3a139a7b9a0b9a4b9a2b9a6b9a1b9a5b9a3e9d2dcd33cd03cd23cd13cd3f4685e685e69de68de693e74ce359f3e8bebaa802d1294ee683d5e29d67ee97dad4dd998ed356466b7f79b99a199351ed21b399a799a059a459a25636b59ad08cd32cd0acd2acd9a66806cd66936683669b668b66976687669f668f6690ecc7c53abda7ef752fe3742ebe6e77e79e8be96406b5237678e69c9d00e698e688e694eac98bcee94668866d82e6db51ea639d54453cd881d936394666c66c9fd719a89595aa64292668a669a9669e71e5625e133abb79ce6ce5155206bf5732d849a8fd68f1a0cb86510fea4c1b919bf82810fad9641cb92994acb362327f3d4d7a3975389cb59d3d25d26a545c74c6f75786490ce8666556c39b4e6b416b496ea3ad85ad192fb37bab8b6b6b476b45c5a7b5a075a475a275a6775593aca758fd6c59c5c685d69dd68dd8dbbdcf0a0252f93a195a595a395370ef213055a455a255a655a155a555a3595945a7e266d37a83956782bc0a70ebbbf3ab4ececfd035aad062d69ac0c4d1b9969c2c15ad2cf7dc3969e19e89e7e6b486b446b4c4bfa7c4a2b442b8ca0ae1535e3d263315a715a725b528daeadd4f7b3f4ff1c5a5fd1e3ad96c7d3f7ad3e986ed158858ca73b9b39af6c7841d6ae79c58f6b38fadbbe9ab2c33e88e4b3957b5e76aa45d768edecf2cedcf8e5159de39b483678414b57d99f5fabf7959b2558a8eeaf705dadd27008e27344205493945c9717b6b22a6b89aa13ccdac0917ce16781f7151b5a9ad397b669e4cee6c4a36dd0b668dbb467c6726a3db79ac2b4edd0967b16b497b457b4d7b437b4e5a31d6d97f69ef6c15ca4348590c05520da3ed23ed13ed396075e685f69df68df693f3436acfda49da19da59da39da75da0ad1e402a0d0ad42dbfcac4676805b9befe7584fc65d24cc95a5c579d8f4e6dda25da65da15da55da35da75da0dda4dda2ddaf269877697768f769ff680f690f688f698f684f6947688769876847694768c765ced55df1dcff6b743ebf6a9b8dbf36d153cbf6762f848c610940e0902607d295fbac38790ab0aa880471894ba391e3f4af87c0e325768655e0e913f75cbf83d31f5fb95c0e94e43749f1aa2339fa8378346f5ba2fe77127f02273bf4c93a4fbb376dd35727bdf7cdf314f32a209da49da0280341d938e41c7a263d399698ee08e43674e674167496745674d47953a3aa2fba5ccf55333519fe5ce1d1d97ce9ece81ce91ce89ce59d36cdce5eb1e9d0b9d2b9d1b9d3b9d079d279d8c3a1376b27f02adccaf0e2d9d4522c3ab039ab43d47274fa740a748a744a74ca742a76a1ca44b6b74ea741a74a4375a74da743a74ba747a74fa74067486744674a4c32774a6a6577fc562ffdbd07acb8dbe297fcc4e2d71f0469f95b4b7b40d2fd4bd279d54fc5c5f8e6dc1c52033d1ebd3ec8b31feec32d8ef8e5d414338fbe55b4b6f85b672fef6bfef61b8e9a8f468f74ccb15b62cfc59b8ae5539bf2cda56964ec8deb734b65cc07692510cd389d0891a8f919990618ed189d349d0491a193949d1496b8a80ae41d7a26bd39d8958e2877e74e822ec51659eae43774e77619b31ba4bba2bab95b74251ba6bba1bba72c38eae4b774ff740f748f7649e2d05fc3704c2cc2f2f10fa9b25ea6afc3c6946a7ee99ae47f74257ce6f74ef741f749fc651ae64e866e9e6e8e6e916e8168d8bfc5ba25ba65ba15ba55bf3bbb14eb741b769e61bb38bf461eb3be7dbcf81d6c7b6f25ba585cf49f03e67c30b6016002fc05e70b3cccef9d4b4f22271f9613079750cb37b5f3ee1fa2a25fccf4c85a092908fab17b4f04b5aa90354cf7f9987cfca32c297948f21606b6b6447e063aeed92916bd3edcc6e596de9a94fb74bb747574e069a392311a63ba43ba23ba63ba13ba51ba22b172374658c053971ab7717894751b11ff92a9ccc9804dd24dd14ddb41624e919f42c7a36bd9926c6ef39f4e6f416f496f456f4d6f436e669f082d657668cc049e7178796e6b43aa8439ceeeff5b6f476f45c7a7b7a077a477a277a677a1ebd8be144e95de9dde8dde93de83de965e865e9c917f3f40a66543e2dd22bd12b4b57cfce51a3b8fccefef9cbd0fae6aed9e30ff476f33771f5cecdde4b81bc3b625b7ba3b8308f0f75c31592935735ee776f60df5f36a09f3e15de58ab404b775a7baf22aeef4d7bb9c6675eb5ea82ed2f3ff4d8170b2befa6175b00d3abd013b9b74caf46af4eaf41af49af45af4daf43af4baf675405037d7a037a437a237a637af2c529bd9079b6856bf95bbd0bdd5e8b6fe885e945e8c92c89d18bd34bd04b5a05992e297a69fa267d83be45dfa63fd312147d47f709faf397f15d57b137e37b50f4f99736be3b4776335f26d7f231f417f497f457f4d7f437f4b7f477f45dfa7bfa07fa47fa27fa67fa9e861d8808ddbfd0bfd2bfd1bfd37fd07fd2cfd0cfd2cfa9bc208bd1770731fd3568fd9973f41f41f5e9fe3f666f7d13025f85e1deeff95c8adbdabfea88cabfb2a0061b2f6a102f7fa0ebe77a6abf81477754dfd221bd179bfc106b1faf2aac4108b7537e851e8bc6e86774f1d5df8a5a50fbf9d929adeed2fd02fd22fd12fd32fd0afd2afd1afd3afd06fd267d99166dfa1dfa5dfa3dfa7dfa03fa43a327fcf0a455a472aeb98dce0672e788fe98fe84fe947e887e987e847e947e8c7e9c7e827e927e8a7e9a81c9c06060e986f23313446d7dec6b69979edfc6e2df46c85f261997350a2d55c8e70c6c06332d68337018c8bf0b064b062b066b061b065b063b062e833d83832626191c199c189c19780c2e0cae0c6ebab131b83378985ef6fb1377ff0c687deb7a1094a193cffd10eb0527ba15eb9bb63f434b84a579e84b1cde5f96baf77c60f2954fb11e3f73b43ea0256f2b2ab26ac99febb8be57739537d1395af42558bfe690bf1bf6e11e35f0cc4d9dc173668aac9b6120946590639067506050645062506650615065506320373710f00c5a0cda0c3a0cba467cddf1ceca6a8e77a3ee582d992b3d067d0603cd233f183218311833983098320831083388308832883190a993609054eb7f5016ecb337c67f87e7bb70ad41cadf7894a524cdd0646830b418da0c675a316ae8309c335c305c325c315c33dc30dc32dc317419ee191e181e199e189e197a0c2f0caf0c835ad883ef4fcb1340ebfee5027cfbf278fbf4d1ff1cccf327d0faa248e9fe2d4757463513e7f092af5ed95b5fc90c7d686d3f7015a476f99445f9035a3f3de1ebdb0bf85c2b10085f52d317d0baf96b47dec7d5512de3db905f71e7cd8783bbbaf3364a0cefb3d9486f70cb0c1fe6a9f33227745c612622aa1995d56cb0d6d2920d99164ffde8207322c330abf1f9c39cb139e90ab5efaaa3e64a664c9e61c1d83e1816cda8dc203f214fae30ac32ac31ac336c306c326c316c33ec30ec32ec69e283970f61eebdcac97f830f61b040e8427ca225d0ea331c301c321c311c339c309c320c310c338c308c328c318c334c304c324c314cab222a3d3ff20308365df5041819c66923fa3323ebfb53a0fad00a0c099fcd772ffde15d84bb7da2cfee897f54aefe84ac6f51a0347f5144e3f1d1417fecb240dbf92c10fec3f44591aeaff0fc7813501f1fab4660ea787b7f7f0569699c9c3df69383bbaaed08051b12ef3b60fe88fa270bd3d929e98cb77dd57c64da430d8d1bd9e6a9a1e78b0ea399d6eedbd7b91c18398ce68c168c968c568cd68c368cb66642265391d18e91cb68af02e1e8e07b991c5ef6a120ca532bc7767e6d68a1a2b215591bf5954acba32323c1c69991c7485a7d657463241df860f46494619465946394675460245d54529dcad5f0d68f9cf8da21be161dacef3f20107e654bf83027ecbe85aeb752b9bfe9cf28d009bf93fcb0b96f93665cfa031d45aa2c331216ea29923d992b15465546b55785a1519d518391ccaa16a3b6d6671875cc44d8d86c197519f518f5d516e2e57c91f5e82f073bf33d2f95e0edd78696769d31dce9f6ee4c969801a32123e98431a309a329a310a330a308a328a318a338a304a324a314a3346353bad467367ea4d2bb9ef232022f7eccd1c93874dec9f4f3ac7d2ed7fb3944ffcd14f659c0fb4d7fa06f42e27fa03f7b8e30a53f9255666c98d6c9be2d45af53fbf2d8626c339ea9efc5ddd1d2b36339ce192f0cbbca7829174541b7423133df61bc62bc364f5d631778bd643ead9e5bdfa494f9b575ad95a11b89ca906f6ac6186f186f19ef18bb8cf78c0f8c8f8c4f8ccf8c3dc617c657c637c677c60fc64fc61981966daf3430ef78f11593db6b4f753e7ca5e8fb0168b5f61f5477540d78b9203d3ff4a2774bb775ffdbe4abff620a24c6ef39fe285932037ca56b2593c30fcd1ae71917d49aec438871917189b120b0c2a3aca2e0bea2d593c702b31ae33ae386efe2e87b9aaa87e4ee431e917f7ff57d2d6bcdb8f90afdd0ce69316e339635a5cbb8c7b8cf78c07828ff1a8b08e311e331e309e329e310e330e38872ad4b5a99de0b5aef6ed9cf9787cd0f40ebb957fa0c2d3f07ec27687dc9bebeb9fffb9bbeda5df8cee38f3fd988146520ecbcacc751b5708c053682a804e324e314e334139389c1c462626b3adec94c4ba84f1c2673260b264b262b8596ebef1058bb0f37976077ee5787d6446863cf776a81986c99ec0c2a4c5c267b260726d22172fdccc4637261726572637267f260f264a25cebb5e2f82950b537e6c357661ecedf6fe6f1a135afbce85d207c092a7f9006bfa183fda67f965429d225d9b83f75803c991359263926792605264526252665263299aa4c6a4cea4c1a4c9a4c5a4cda4c3a4cba4c7adf809690e6a9fcc5a18560a6cf64a09915155a432623266326132653262126612611265126312671260933f530ab02aa24931493b4424b8dcfca66d4f9dbf2d3c8e9fe4441ed673f66c6f8ca8efc47fadaf8fe6fdb09feff4c9b322dcf989d989a1a0e3735985a4c6da633a6307598ce992e982e99ae98ae996e986e99ee98ba4cf74c0f4c8feaf9bee8f81ab9eb1b846f2faec5f39f731cfb492402eda969a74aa6fb34f743a6d251d24b1ed30bd32bd31bd33bd307d327d30cd32cd39c59941bf2664fbaabc054d5574d77399f6870c6a919788afabbfc855720f60f404b64ca77fac204efd3d7180bf6a99e2fbf9edfc77ff8a8fbec5da32773a2a4d03a458cfcd1d86944ad79eae8892cd5533f9e45348d694577874f7ddd25cb378ddc592b0c4cabea0134adbdf6be83bd960f67e85f3ca84427e741bde49c32d33ad306d32653696f9b6987699769cf30e34cfb66490036304b0b632d2bd1d00a090e474cc70a2d5fc5fa4867203db35ef87ea18fff005a5fa0ab127821696ceff12064e496426f52e2edf7f14f8ef71f3cfec8f3758f642d641c7a4c27a695b75a0bddf5b2e66f5c688fc12c97f4b3a03e443798b53a36baefac9bd4665dae6838d374aa79e14505d0a9f3be9399f92722097e2eb4aea653129e633d26fe0a12621a661a611a651a632aa04a304d324d314d13320919842c4236a119210839ba55189afb7e5215731e51cdd64f8b42c82f4c33e307a1f52d36f5429423a03a19b3bd9055cf6974f4bbffc1efe31f8f1ff447bf963f3bfec8f3055a41a67b6ba3896f4f1b0d11d0ea2d9bd7c43a35082d0909804a816b8866f0def767fb0ca135a1cdac9d537657cef8e9878f6fd0d27157a46949bb5f195af3e1cc782a938966355e2bb425b423e412da133a103a123a113a9b25f9c82324c72ba11ba13ba107a127a18c00d2ca847caba06b0a930f6565ddb184a135fc849e222bfea00fe19bab41e021e196b43ccca113889b56feaad5c5fd526a2a7daa32777cf9adff3e7e759c7d727dfacee30ffeca5bd4f3970af0ec5d5cbfbe79693e7cd83c1457b3812ae20242ddfacccf169db7829ae7d73b041e3932b86ef1e7466dff6cb2ee1a2a2a2d5d592afd867284f2b639655922542054242427654215b32488aa12aa11aa1392f5a849a845a8adbbf021615c5d423d427d7b136c3e15b438b2b5f9418130082894e52a20aeba7ab925eb9ab05a733bb90fc8749434cd8b7a9dfea66f93314ebee8d0fbdee338f9033f2133c67385ac96e373a1b561dde45f4203fd28b77bedbd7c0e70b68ef4f34671454853381ab9fdac33f259d6e555b426f0dbf4a1a56be82f0e2dc5d57ca8c69ebab0ac11a1b1bd11904c084d09850885094508454514346fd287314271420942494229426915ad95757b34c35672639869f957f8bf080884cd1fb4106ac9b3d36b3b2b706ff3f9928e935f9e4143978566332123d491d11280fda63fa3970befa2ff9dc71f7ab8ac718cb342c6d8b126330d11a9248c68ce08f9d18da286c9cc10b54a486d809da05e166143d5fab0ef5dba4ce9cc0bdb7eee83c3db6e8a0fad4deba727fafee974572f27ee84675a70350c6187f09cf082f092f08af09ab080644b7847d825bc277c207c247c227c26ec11be0878acbedc799d75861d6f40f846f8ee77dae3c7b68cdf4a6ef981b13bf7257bcc43663c4cf8493863c64384b33ee5cc98bc569e70e137fd391585fcdefbaee30f3ebc44b8ec5385709570ed13d5093708378dcd21203937f3b559a443b845b84d584eba843558db4845df9c6c76efae182f15e0178756501f7d96bcab8d34dc272cd810548c08cb1233213c252cf3597a3e42384a3846384e384138493845384dc4246210b188d844664420e21009dc56163fb665fce675e12bafb27a1d2fe63666db2b220b224b2272b226b221b225b223e212d9ffa63fa7dd1b1dbefbb8fb91e71f899c7c3a13f1885c885c89dc88dc893c883c89647cca12c911c9132910291229112913a910a912a9e912b98dbd8982b78f2470b2b6feea660c6bf78af256ea12a913691069126999223647dac8421391eb3d227d2203224322237326bd3436d7727142644a2444244c2462eea5bba2446244e244124492c6ecf49d792f3f432bf33207ab093e633a3278292269a2265183a845d4263a230a5187e89ce8e2f7f15bc7bf46dffffc25d115d135d10dd12dd19d4fae4f7ba207a247a227a267a21ed10bd12bd11bd13bd107d127d10cd12c2240becaabdf3ffb79f89b42bfb8378625bd9157f3a0dd275a205a245a225a265a215a55a8446b44eb441be6ba4bb449b465dad2b16da21da272a54754be38203a243a223a263a213a251a52501c167ef99ff287efc467f7898f4da9776869f289bbb98d28ad9f1ab690ac9b1701559868846894688c68dca704d1a47994d14d05e4bf6b1a590185e4e437fd7d247dfb0df212c40c6216319bd88c18a66509117388cd892d882d89ad88ad11d13db625b623e69afb0ab13db103b123b193191ffbf5350fb6bdb40f9e9632b2b25a4cd1cdfc98d7d5ff4672899dd5081113962e1d7221762576237627f620f624962196259633ad64c78b13cb9bf6ace3b54cda4a76c55c6c4cab45ac40ac48ac44ac4c4c7aafaa694862358d700d5cc394d5bbd275d28146dd919e24560f6469620d019e42cb7e546739f98d263179627b768d98cf33b10eb12eb11eb1be890ccf4011151b121b111b139b109bfa24272162619f42bfe96fa5c9b728422c4a2c464c864c60962496229636774bf328e8ca28fc364fe2a64f8669a4895bc46de233e2107788cf35bb861a1297b3cc5d8b7716cef6a4ae99c03235633a145d60265c2e53fb258ffb8cbfa9e0052949882f882f89af88af896fb4739661732f2c44b0911050998c45b522be252eb04c99d6c49c6d4ddb25eeea89f3308d24f13df1839af1761bf586718a1defa416d7b83cff343b4cec92fcc499b8e73b5464ac41f45d207c8f1df677b7444b13415cb856fc42fc4afcf6195a261be277e2c20165a993c17bf8b4d61554dffe37fd8df4f8064513caa3e2029e0cf12cf19c7f675ea5867881b82cb4e62768958897753ec908c62bc4abc46bc4ebe6be4325ab2974f257f5400d2c58819cf3bf61dbfd3f395a0f3c696c837893788b789b78877897b8487a73ed8ad3ccf4042d7de2a28c9d4da45b86e6e26eda029892698d4c4bb44d6146699356c72b131f111f139f683a80f8d43eadbe949f9fa29daaed67d352e78a60cbd7df1f5668110f0990b4a6a3d7348533da21d32bce4682d4b02fb28b5031f8125a82f228f1d81b45954402094e7ed3df46b16f519c7882b84c8e14f13409938441c232e70d12b62cc92f68a94cb82221eb5d5945c404241c1273120b124bdd4a5999a657d3cd1fd1bba239ad802d8bba4e80a69cfcbaa475a5b95b5747a3f7e32112d2096b121b125b5556a573e60df324fdb0335731122e89bdb9ca753ccb5c75481ce48a39331572569fc491c4c9dccbcd67129ee9953adec44f7d7732eab6d64a96dfdaed090de4ba1192af5f7cbaca3dc670ef732dc19548997eb76a31794197d7356e1912371277128f005a249e2a10c60d5f7cdfa93123915152ab86f3baf29bfe460abaf76bca92c891c89328902892289128ab6498a8e87a2c749c07d0d2453051f5a1f5205123512721f06b9268916893b34d6763ce23ea2697db05b3c4ce3eb50ac1ccfda549642e121dd391fee992e89110900cd40294182ab4f6551223735f2631263131b732c3a72442e656b0112611211125214bd840291157c52c21dd9b34631b9feb74cdd9424d1adbd8ebe7c80ab4de486e4e99f161c71bfb5c2b9126699234485a246d923392907448ce492e746c92cb005ae649aeaf48ae496e486e49ee48ba6fc7fda7f3dfc7bfe5782079fcc3f144f24cd2237921792579237927f920f9f44d4aa9005a8aab685215ada80c5f866496648e649e64816491648964d91feb0ac9aa4f359275920dffd824d9fa95a94db243b24bb247b24f72f092a2a3559dc381112e395474254724c72427e67e2bdcc93c2d484e498648864946ccd3525956324a3246324e324132e977947c3d4dcaf4c920652970523e705242907248cd7d68a516a496a456a4d6a436fe51feddfab287fcbbf3ed4b3ed78ac649b9bad199da933aa8f4993afe3efeb4e349f779bf3a2a9da5f355387164743c521752575237527745975a08473ee35a2aaed4662833e041ea492a432a6bba72738e549e5481549154c9a7f227aa90aafeb254235527d520d524d53237d2ccb67645aa636e6b0a2dcb5274a5baa47ae67e651e9d17b947df78285dd49773bdb28fa8a53e3550836d6a486a446a4c6a426a4a2ae4ff9674946021422a4a2ae61f052009524952a940d77af8dd9d463437910dd3967f6e8b80aeea6ff44d0f7e412bacbec0338c71d22a467fd3cfa32f326dbd911f175c213d532b9f57b6bb325e9076488b22b17c87964f4bd20bd5be6466a445bf4a084323bd22bd56e923bd51cdf9847fbefd9276bf32b93ac5d37bd2071369cb91f4c96ff83980966fe55e06bc4bfbc44d92f6488b8e34227d35f735d237d277d34d98a7dcdbf507e927e90ce92c69b998275df0c9255dd43ef4e1ea83457ef140ba44baec432b16262da355355d5911b34ae99aae7cc7b92f63949552f2d275d20d8556baa9314281a7fcf1fcf5c96ffaa914b8a1395abdcecf4f3823dd22dd26ddf1e164ea34f2a1e59f28b4540113dd5dd5f7d937c9e76c0bc1e17f03e944edbee461e981d4eed304eebde6b0525dfff53f0d3a47a5447f0fc9cc0930faba03961ebcfa4d50a0f777d5e82a0a517aa8a6d7c44c2f0a3ea50313b6da66d323ff1dc6a427a4a7be192378b43eeb7d87caff0d7f8f527ffef36b29b4c2462af4da7b3e7a5f9ffca69f4bbe95f978305a477584f764958d901651a4e00b8101b496fec2ec434b06de9f342f4dec1d600239616832277cbbe2eb5f1f8ac1459d2bbfe0d1dfb6aabecc156f8e0ddf82968fae8460a6e7df2f72dd5d291d231df7394de50b148850ad404a2abd21533f92fed47ef325c974427b3b2d37a4dea015f47500d000bebe9bc5c74383e7be28ed98a6317c2b90e566be3ef94d3f97d4a7c6d86d4d37af1b295ecd310dc7b45437164ef51aafa54fe66b40d3d59724e20b236fa833bff2f30806fa355d0204fea2c74ff43e938345c7970ceb5fd1ebbacacfb12f28005b30ffdf28100ad450240b59704f3a14fc34b1887e1a17a5a9e898f607d7fa58cf3ebdd3c72af8fe2aa9d26f68fddbd0cad807afe33d055a242e3eb466aa46a703a9e635643a6382719479e0454dcb744c84d492a1fced4d1ffb0685bfed63f52b5020a10562f0e739fc4e3eeffa4cf57726ffba21750f8e01c0de80f7c606fd6dc3a01bfdd5aaaa5ccee76f8e291a6fd731e5bb72bef0a1f5fe4e2a162e3ee4cbd7fa377a5feafc9f54689997d46ba4adddd727bfe967933a01944db7a04e375ec331978eb952ff4059803f0ddc3bb464f8742a049bc801051ab54fc102fc096ca3af17ef5f8b62e117b4fcae78138fdf954ff37db67f05bc2f3e12e9f1e37ac0e4df246ad5bbaa1fbde79ed442e1ffb463aea56f1d73e3985bc7dcf9668c00be81b6e7abb39f5e6bf461c9f5650c52ee6f68fd6f809695cdfad06a39a6abd052f9bef7a659bda0f5a6692455adff04ad807dbd33b17780bd41abfa0b93f01c1f5aeffdf03681472f21f95de77c17173ff3a5c01612e8669ff8ff8b93bf4c1a1fd072ccbd90ffd322991f7c2b7e00add3fffd7ffe9fffebff05f98c5ebf - - - 789c44bdc97232419376b9afabf8ac7257d6163f90f3a21720090d20a17978db7a91a34690049240ea9bef003f4fd6f6580e317ab87b7878fc9ffff9cffdf9e97ffee7fffcd7eaabf87aaefe533d15cbfffc4ffd3d9ffffe3fffeffffdfffdd77f0f06bdffa4fdffa4593ffb4ff8dfffd77ffd77f0f7f99fea3f41afd7cff26807f62e00453ed802979c02da3cdb3d118c0d0c06456ff7447607080b5ec90051d6dfbdb2f912c80bfb8bbe91e6c90efcb6802c6bad6025202f637be51fa028ec1bdfef80aaaa77607d04a87965f801688ad2ca91089456b09f29a02d0c14a71db06fac5e0d84837260bf3ded007fa109c390829dd73bd0ef57b9156cf46b6030a8726bb17b405ca6bb27c6831d180c226bc2e0f91790e78db5fa01a0a876dde0f2125097f6dbda9a701046857df4d8be110e92d4c0f713a02aab1df87a0634a5f5edc77d0776250dda00d0e63d033706c24161e5f8b17244fd2cb3463efe0014858db180277c65ac729f5780a4b0ca9d3c00526b53971f024a86e5c6da34f265b756dfa480d8bee1e27c07e2413f8b6c14fe034499fde5f31d90e556fdbf67404e49cb19a0a86c387c558032b3579677808adeff3901d47cf4a7ea808de4d519a0a16f174f80b6b4277e86067c9b1ad8f09730a11b9a680712df8436e7922f40a859f90c88329b51cb05202dad09d733405ed847572f06c296ca7ddb6c48a25eb61b526efeb603693fcced952bab6d3a485326722dc038fd5902b2c206ffe211501656b0c53ea0aaac3d4efb1db06e783a07d4993df1d81328ed1b7ff78086b1de3c015a3efa77dc012bc7706520ece7d673a3c30ed8375eaf0468f567ead2cdfd710688721b1ff5a7001266cd6fc338b3f9529e02127a7ff8074899fb6f0120e3b79b0a903370cb3301caf14103798963955bd10d6149df7e59d1b341afb0debf3c0484a97da3d807448c8f833120ceeca38f7d0186e5f32b2065ac97b54069af7c0c01159dbd3c03d4889c5fbdd2201c5b93c959d8437ceef500214bc1f30920ca6d7cec9f036204ca5b014868b1e76301a6d8620d4833067f03c818631f171db0f6f8a6c57cab5b578e7340499b9eb91dc87d0359c1dc1a90e4a509fa73404adf7e7f00b2d24a5a47802247f415809a1568f6db011b30ab31a04dad91c73660723f70ed95c7061032b4bf8f0049666039eb800ddc9f0920a560cb5b81da1a68730fd0ea7164b52dfa8dd536f8b229560cfa147def1220f9f1740c88e8fdf13920b5ce76d9172043aee77aa5e0a39b4340c59214040248edc92ba0d6acdc748015b92f50db2b7f2f80a6b2ca5de9b72d4d7864ad5e843d75e502d067ac7f958090923ed680a8b201333a02c474d43a1390d8d2130952ea632450595d86534026617007a8981ec71b01e6eda58dd3b2af21b578076855bfb0b5b21cf4595fe27d404a39d6b7808211f43a1140e4b831a0a4606f4f80aa4aad6f13408dee909f001a9ab0e4b77e249b3058de00060cfe9f5340c8dcff7b10a072f59f40c56231ec8095f4f003a05178e004e8a8620a8835916301a6fae1a74089dab30624ac849333019635f706489152c7330144f05025cd181ffb1700c9f53f7ba5eae7ccdb4bab7ee5e5870ddcd34280695a1f014aca31fc05483f3d3a10a0918f32406bc0a569076c9afed954afc21ed2b27eec80b57a3d04f499fba7ef8001caf7c513202caca4e31a2023a0fa0394f4edd096b5ca2b97f6d14f5b2cea7ec247473300ede19e124099eeaaef8ef44a9d58df4ea78026b361f96912a61ef412fbed34060c980dc11c1033e7deff00298bc57b0a90b9f2d4004a6b75178f0155ca1a752b40e57e07809645ebb3149041c347bd5062223f76c0a6c7e806a00934a3a4a134c7fd5c000de5f80c10d173a35e07ecb7f51210d3ea855e491996b50a9632c62699002575af80129dffd7baa1e9a78995e37209284c1d0d2a2b6933484d5abafc0d90312bcf3780021d667f4f00313ebd10a0e82f9f1db0df9631a044417bd45f2a33bd82e78b0e58c15e0e01526a96fa6dc3442e52408bc1fbdd13e0b77fd62f8dd78358b4a86da7b0be3901baf259aff4a9cbe20730a02b976d076c9a7e7c09201d8a7b01445f5074c04afa31038408b6f5b9406dd56fd68028b3924e52015a7d730b88ed1b6e68d56f7ddf9ab576ba0134cca8831b408bb41c9b32d10e06cc869b3f40a4ceae05f86d702ec0f86827808456af96800c1be8e80190d3a6af7d40a77efd75c0e6edde31a035a3c8adf5db16ddf26f2440139e4d0530bcdd6907ac815213d26dd863129689406df3651403fa4c8fd381004be3979e1894588d39c02b7556b94b0106ddc93f406cb230386b0109b55dec014a169c567f290b4cd117012a77b66be47eaf5fa2e4b56f06063dc0e6022045d105800875e3ba0f88517adf3f00684a2ece00b9f9a5828f5507107def0268171f2f022c8d85031448bab20194b82a821f40852b6b740ba899737f2702c88f03d5a5a1f71f2b0164e1f311a065253c3e37e07b1fdd61da015b91c310d0c7d07c9c7400c5f94840ae2c7e1b0e9052dfe30e302c23016a7b760a0891638e160b6502b6d700f950fe0a408140d93b0454e61071a9b558bf2fa7cae2ccc04003f7720508e9fd6006404f765106c81039f39e005d391a002a14b4fd6381da16e0f40150e31fdb0c0558b30fff00f28f7ddb48ee87784882f77f02b4c7b804f4990d930ef08d20070c4a245d0d0819c9c965076cce952940b6fad7132056dfbe011274878f6f40ca449e9c0ac89149abfb9ec3041c012a46e1b78df5415f4d78f965c08b60fbc6ec111061ad653520c6f53b5e0aa0e23fa580c47ace650229c6c82a14e095d70d4026cff214506802ad0055666d5aff026a5e99e91b0d0d74a6a2cbc0fb2c0430128fef0c749e898a8f7a016b4fbc7c0850fd34010cf8e82410e0b70b8190e130a2817cdfa2f5f501720e17fa688ceff396460e93d4aa3fa43d42f40fb7b0da86fd28c145700ca818306f362b432f8291b83d80e4c7f39e80e90e6e3c0744a98dc2ab1c1027364edf4b0173a7bb7101483013defa02f4edde2f20457c369474206757730328f00517b10052aa50490bdab499006afb8b4b568026b54177f42790e192ff16902e75d0019cc3363d423f1cec2f536aeb7bdf9e987d0006283507a30e609b1e0a50fdb310a0cd83258dec8783bdd24e3b608d7c4113fa996d4f5cdd0372e4e9530d28532be9ea14d0d062bfb6ac8551af44265bd1a37ec9243c18026a34b6f727402bcbd3d6ec6820db63740ce8e31d6d56024c8ff13720c209f9c95ffc22ce707815602fc9768a3c4851f23e470208c7e98900cbfcc10c9031d67fae008569176ea872140cede80c5052b9cd91805c048d00fd323bee80adc8094de8f566ebca9f4b016654d2134077a8f58d9a060a078036b5ae3c381440a959988612f9516805733f027465fc06e82736b3f70e04e4a8ba10c06debf84ba81d9abd4f40489b567b0274f617450f51addd5a1f8d19745f4702147d1874008f404f007dec7302a06f5d92003233565dfc0228e8a88b0da0e42fa33f408d9efc611a4adc2fad3ddcfc4c203529f5f60068583d0e3b80182fde006c0bbab935503ce821fa9e43409f71fabb0184cccaf18f0042fa9bbff8d9807e7a02d09e56f50f90a0f49e7f08e0a57d7a07e4e81f552bc0133f54df0f7ee6cb0850320acf67805ae65baf03ec04d0625e5a5aab1faab6dad33a1c76c0be71693d17875a5fde5201daf48d57b47806df8f0226c65d1601508c82f346c03c8ac1e12f4066c2e3ab002ec6bf790770dbae00313accd51140aad3b93e2a4de9b40464687d6f2aa97cd2cf9f1d40b7cc00b292fe4cf98e2339cc021a2852f5bf5e0003d6fdd24abaddf433bb723305c806fa8800899cd4b702586b1f278014993c1f035497cf930e5839ae8f05586f9fae0590962721403b89d7138066e5e3bd00636cf8d5017be2652420c7ee39a04a1941ff04b009df7f3b606d7aa6df5678371ee7004c73973d001a360e5f0a408b2c0c4c9e269ddbe5ea09d04fad3d5e72c040a28f92ca6876c99500aac2770ad0aee8b35e49d11dd6d4a573757e2502d651eee0079027d4e54280c11fbc75c08abe3a041474e5de83001afd6a2820bfd40140bee0ef3e80ad56f747cf850d4bd2117f897a391bedd4d62b0f06f20a10d2eadfcf003c8a6e6a622beda7a981830f4015a3d32d0035636c98031a6d70dbe04fbdba619ede8f356040f5173340489bbe4e010a91281e017277bc5f011226e146dfd0c6e1c5312063684f9c008dbc2e00397d7b760690c13bff1560383c6d0055c656897e5ba149e7f30e5867bfea1b356bf645db012bd8f3a50056e3db7307ac09af6b40833e76792fa0600e8196797bb6e8800d98e64480adb42bfed26d0d7c7f75c0aa3fad04105b8e16f34b8175e51195f366810dfefc15a01dcde99f008bc521e3238c084db8e8008eee9f950072fdf8161033d53f1f05a8fee7a58022440e3a40e0816a1b63bed5fa4b8a6366d40184c142af6472eddd010a4a5afe1340a909a87e145923bb63ebb9acdf22d797a100427a6d3a6ee635147be5e70e402307d5070063c42d578030b1da3e8e04f03a2df9ad5759f02afc082864e455400eb30701a4c3f1aa03d851138016e0b2074899ea4fbf0254eebb04648c8f934701244c3606e43822868580b9d4dce4ae03f83ed5622553ec692180c4fd7901e0ca0ada25a0a6fa7bb180c23d22007e6df739e8005b8b2da06538bc5d0bd872e2fe4cc0669dd7697c21c0907abf14406aa77c34ec3392f7661db0579a460095f68092fa3987c9a3df0e088e5baf3b803bbd02842cc057650770fdce011153acd647239a703812e02f533acacf4a2bfacd4200fdf482f1e13536fbed42af647476c1a0f3eb9cfd2560d0797dcc06cc28015448fe8d9e687076ed995e984598b3eecd245dde8f99518b2f01b31bdc490ec859d6e6078032318dfe3705d4b4c7e111a045d73ee52f831e01989363409fbf4c920ee0e9fd1540a9393d070c1852c1bd80f4d34f00dbe82edb0744d6fb2eda0820c766930e5849af2e05a47d3e0162cda80b017e9b2c000933fb740e48e9fd139523637a3c3e08c883d603e472dd1c024a7a7fff43409ae35307eca37b2a7a95e2aab81360be5cab1b2a96d7e5488041779075c0e4e99e8a5e2b56b21660c1b92a002d23797c20c06c38627c7875d4be711801e4733c3f1740c51ff7056af6c5a86d3840ff787502b4c7e49f001b43690390c3fde653402ef9b100b6e9df2b204e901f212041517c7e11c014dda35ffcc267d53f5d08b0077cb007c831ced637801261d09e0ad062815aaca6813ef40d05fb7cea2f8a3279b73957f4ebcaaaff66dd500c0689b5fae55507ec1b750608990d93b500dae738006813b4ba16607a1c774fa05b2e9d005b25c78700a91bfb945491b2eeeb1490c6c43bb4801c3936af04b0923e8e3b60dd30dc003a77d89700be9ce81b50c6d6c82f43018a7ead821184e56625a066021dfd13a02e9bf30e5837cc6b01dc3f8f27006d9439f58b02b8878f0085ac5a74c71628b876d1012bfaa7c9e4ff8ddb5add00fa0883a80fc0fbe5369f80909091e85400d1771976c0fe72f0258094baa1e861ca6a7a3317908abf124033c8160214fdf54480a21f326042445f50d2d9a182b066f44ba8fdca1fd545ebcbf05d00ab606973bf887a981aec9b96ded2b2b5f2f914a080c3592cc0e03f34f1597a65d386035b47a55f814c63fb3c001043e2f6a71db0b5e1ab1160c0dc6480d8160b172d3b60a3f0f25340a717ce006af5cb1701aaff110b2083fece051017c3102003eff3bb0378be0301b49c57fd25a7b6eb1301c6fac77307f0055f0370cbb9bf85005d792b502636602c1074076cdeb236947e15b3dfb6f71db0e971f92ec07afb7b2a80c3fde5a20366471da9d5098f0a864f0214acea9e406a8f8780866e38c83b80b35cdf68b4215300da040ffc950063ec8bcaf9758e70b10b011317ee640090d7fae44d8056aff60558805f1963ddceea94def7e61bfef5149060e07d33c614a4e7d20d40275396fa4bc5d08e6d692ca301fee4ab0740cc8cfa30d157f54b74bad11050a56cb79c03eac83eba0e010d5eebf95e07ac1bf0b2545e95c4f2b416abba53037f8700045b30bb0544c8b15a40e1eaa7c30eb03d7905d076ed750590bff0fc0e90334d67eb0ed85fdebe04b05edf7b80c2d67d374e002503f7e449808da1d10250c5263fec80d016a0065e7c0ae0a57d3917c02ab87e05e0f976078f00edbf5cea2fdaf5aaba2758b42e4dae575da846732b804039d91360c01c1f01fa8aa8ba1340537ad113da36be8c0021adfef903886c22bb133aaadb7f79a75fc2c4449fcbde010a0978bd1660023dcd04106c2f25405de9be059063470e50306fdb14a0adb4f35600efc6916a5b49cb1909a05ddcf40198d5c19589beda4f7decec7700f174eed47e5b0f0694e3775f00c1c6d6733df02db403cd8b80edbfb8c997002adcc1ab802dc0eeec0fc016b88b1f045048ce558e980ddd56df48a9edde5b076c669f52b9ee5cd2ec1e404c8d5ba92e8a84dc57490b164f14a3daaf0df6c4c90f007fa13b1e016afc631f550770441c08e0b8db2c3a800ef30c20523668571dc0e97602686d12bad3b5802265f9869f2f38778e041874478100d6c994360dfb16efe0a243c080a9feac8f867cf4f240003b6add3d21a7fd0620fbf6866e086316adf941076c12cef50abe3e97300a439df7d85c0a6013be0f01a9e22ee8066f68518ea9004adecd1250c8279d08e0ea4c6953bfe0e097aa018a0bd6908afa16e6e9e636829abe04dbfbb100dbd795b569e34d1e13b0fb1340c802bcff4f40814b6f1d60e37003508bfd5e77c0c6c73404a44c0fb68db731bdd6b778e11a3f6d51033f0450cff3cb0ed86f9ffa1d30b97ef30e289895977a42fb519703809ad002da3d90c871aa6dcdb2567d0a10a26991d41e3409c75ce702720eabb60d8d8c3068bae3a537f44bd82376749a7480bd8206d0a7e87f4b01536adce1292064adbcaa04506a668b0e606ae8a33a90bba081bac1ff7625a0200a3a4a27a85cf22d80a9f13c04642c382723404e9cd2c5a5002575670284238fc70039552e9e01dd861d2d16f52a24bf8d8f561b436e6ab3a10b1476ab1f00b575f13f013e7a7309c0e7e8460520415c6cf88bb72c9884fb020ccbf8169061e0c5371db061b9ff2420276429c0323fee095814a3b323991ed0846e510920b68a46005b8cc0250f50e1aa4907ec89cd085030c60ed51e05e273321740cbb91528710f7e2d047022c46aa04a6edb1701e4d8ea4b4033eaaa039ce1fd05d409bd7f24c04194d13ba06157345547492d9e3e005a19896f02ac2f17e71db0a2478c8fb087318217ce033afba97b02f53cbd133009e3ea89005acef78d00fec2934b01c6fa2a02f45114cfee3a6003e6fb1ba0c3d6076b4088b8487e05d8803869013adbf49201620a761a0032ad620239ad7ef20ad009ee735a5d21de2e535d2a96d7d274dc368a2bb67d28ba37f7ada3663b30e8f51373a9b9b30b404b57e60f06742adec5978084bfdc0c01042f380b58de01d4f31301768af28b0e988a3f14c871c947bf021cfff9d80860362daf0528c7f9a7003e94c90140012157fa46c9ce59f203a86cdebae33d0134fa45d601629c55fd1a6b6dfe4f80f171a5bae804e6b99a5026e0d9bd00ba543d35106a7b21a2725eb9e2a38f02a870df45076c483dcd055004a674830e91b811dde0c72996d6a90016df4b0348f0f44e5e00f45c30ef7700b72dadee95714e0b9e036437ecf1d16dee011b41cf00298a9fd4365224f56427c607fd7e8b416306efa0df45319e5e0294efc2229906dbf85b7b653e1340f21f7e093082a6faa89cc3c73920560055db0193b8f3850022d882163dd001c3e34200a7ca660d4819743fb7023aa43800644887f52720a74da78f00c52adcec01f029b9f85c8045fc6d2cc0b2f6a6276ab3b482f94480e170f32a805570f6d901134a1f490770fcbf0930c58e9e01789ddc17fde265b2f5dcf97d07f82ddff0ba1499066e00034caf83730139aa181fdd9199eb2920a26fed749c07313bab3f670045b84747808c8dc3433d2187c85c1f2d352c195251a2bdd74340c661dac5ce913918f453b55865601b37bf7b65f90d0889867a5b022214a3a333015cd04ffa06c171cececeee80b5c7fa1ec04972674e841d6037a11460df74b2ea807df4ec10205dea341740189c380186d46c06c8621b85a6a16c01f234ea8066d4a3003650fc0ec8b1f7a317010cded70f01dae3f0b903d6b7a30c50b078cebf00258be7534f80168ba71d207a5075912b2b3e055408fa7dfd56c719466f025838bf4f80868e7a5339b477f2a656d7d6e2adad40032ff96d486938749e2bd30bb74036f21ea04f5d3ee928c5e5043fd4c54f0f4ef80702acfb7b1b8012934c2f05d0c6cd3b3ad8fa65b0812602cccaab3b4082ab33657c84a989e0e0f44f80a5e0b305289d43570ec5391edc0a60addd8c01b914f854002753a2927214c1a5cc97b0e448c4c72ba0d6d6c0004058818b4d5518449cd075df06c2016746dc7b1f10e25598f60064077216e0ef01be3e37bf116012beeb155264b8d52320c1e37cfc0d90fd32bd06e4daf57a15a03dde030174a9f11140b1c5e5ad8002daff01387d1d5cbd08a0f68c3f0550f127f71db0cafd0e05f0c0276b4085e618eb1585cfa5a702c8200b05f4a0a6a34ea7023adfb00fc095e5523dd160233fee01e4cafa8b0550583f6d1286612fe66030bff51a3dbba2052044e77f7f07284bd16a2580da33a1a3fcf4c0f43a1060c0a4252041f217af0258f3d525809d7777a6dfe6cca813159d43242ea54d3b3754700628f19e8fe839af7eb127fed0011b5229e3346c897629a702547f6adf88faad4e2ed9488e063d0a56251db0ce9e3f0342ed8b2d04300199d9919f2f56b09f18c0a934377e1460f1fcda001242df822520c56cfa280550d02c00620ba8edde1490b17a2cff006c73b8e8b103d684c55c007bdf826b07db83288414a9fa3adf309f7780bdf97f0288bee377010e4b9e7d00d819716ff71d207cee4980b5e1e4b10326d75ff45bf993f7d5ea35e363742e80a961e7f83c681028f19d00a6f9faa50358f313011ae8702cc0e6f45cb555268a7d33dfa250e1c86900e8272c5aa702e852232aa783b0ae7a00a018054f0301247f361740fb2c460065b05b50396f03d00d4f0234e1990a9695ec58ad018add681885deac3670ce080a1b3a7b69d33456205770361220b7dcc70440f23d172f0009ed51f700a945fdbaf781004d787800902b6bd276c0fef27d25c004fa9d0b10eab5f70890f3ef4625556ccfe14c007fd0f84480d523ca0125bf3dd62b6c5fbbf8ba0326612e2f051454a25794a06da9da72cad75942b21d20855b02e0f88ffb7d13d04ea200e1b7ee782980f6796d523bf6ba141bed0f0002b95c2830603b3fa25fbc2e455d3e0468a0bf0b803261bd9d01b4b974bb06142c8db67bbf05d82fb310502b91cf14d02aa79b4de438cad1717fac8192418f80c3d53d20c4265c1500ed237fdd09e071b6dc1d83edd91504dbad00edf1fb07c8115b8b7380f680bf460244009cea1b155a70f424806e79fad7015c8c57021878fb2a7a8da06fea0e58131ebc082083d20340c3ccbe8c3b60c2b132b195843d9c5dd37f022802ab6b80a290d2930e105e990208a1099ea30ed8f898eb1b8a42ba9e09285245df88998487e702da7f093a605d69f1411eb06d1c1cfd08a0d1278f809415399900b481f9d40ae0cbf9b901c8276d274107db83281cda3c0368af7152011aa6a9a5d6db02fca7a80a49a4c8aeeb39404700da5b0125672c0129de8d0de323d26ed3d06a9b0e38b5e82cb0de8384719a0c018a20faba07e8f057d40294f270fd21c0d2f87c0d90c2babae800ee9f2b019d6dbaeb00eda18fd6a80a49d50102db9e3b4074e98d000afcd71ca00ddd979e001d75a6da720cdaadf45b653b8955f456d69a4da0b44b5df2d20a2811c75d074cc2ece9893e2e35cbcc31e84e8404874f02041d252540b908f62b016526d537e4847cfa13401158c6809845fce8bb03f68d974400f5ebfa0cc0966ff0d6eb80f5fe0bad1e92d22eb855c1327311b8ec11d0051bbf01948be0c6d6a8d48f647be5c4067fd66fe5e7374744262f4b30fd006823b55e03323b52e52ce3c116b0cd6119ecb6001fcafc08c06c70d34507acd537cf020cfeab5740219f6304289540f8af0326712dbfd40e58c116bf80ca6237dcfb8d007aa105e96d01fdf2da03d44a0694035a72761df70590dab149a9ed290a4cd1b603d4e50ad047316a1f3a60ddf0f74f8095707c2bc07292eb8981a698fe42be60f7a5bf843472fd06d01989f25340bbd5af02ccfde80b10e3dd782f0418961f471d20d5cf6707ec2f174b40c2cc6ee8db3093e74aafe4ec7a5dd0956189ee80ad9e85ad9279d01e910ccd68d0012bd82fa33052b0b1a55e1ce4dec033b1d57e03e440b418d641975633385e00528ebb8cce00da59b5ed6b0f72331283e15a4051aeff00858e225c081066f1aedf9609201360682394f22ea1613d0734cc28244cdee59988f84bd82382687e0ad0188b7b02a8f8452b406df7ef010336dae33f0184c1e57707acfa68b0b9978544fc1f0b10fbf5fb0a8890528ffa46c47c395b01f03b04f59d0063fd360090eec345eb0ed8142bbf0490b8c7cf001ded7aa45fbcee60e2d3f5013aa7b5a6d5bbf8b1d710d028bed0e447ee4d2d0c891450f044439bc672659d9984290634a17b3804684661de17ca65e2ec5c8107295d899ba150ca65f7fb0fa0d9b0ba0430819c654bda0286e5ec145031700f558e868f5ad8bc072dbb2b578d00ebfea18d8f42bbd5c171082017a3435c14dac173610ee0f0974b460208faef3520ac6d253cbd02c40a6f7807246ca44ef40d79697fcf04104a5f4301e573a4c53a1bf9e808c0e11eb7d90348f217bc1269bb257f011022e1467aa241c51ff1db58bb91e5032063ee4f6d249703cd97a346806d9fdf0290e0835dcc011c4273fbad807668c6805c8bf83980a4aacea2c376c03eba890524d8de01152753f626001dd9fd7d06b41c423be5093f1c4c6c2d0f05d0820f461d60bebc09304d0f56803e2bf27b0840fd729b404059ef73018ea7ffbe00e4a76bae3b6003d78e76ed00bb3c7b1d20df851360a7f993360d6568462a69ace3e9744317b8b4bf012860f96ade01cedf0e014a23f95a0b301bf696805221457d00c95e824bd545be9c5a2da6c4f0176b40ab83d26a0fa509d4908a6435ce22405f0a2bed11e9644afb0990ebd7c2a3b600a57742df464acff7f9042081b0b314b2834a69be5c5d0392087b7f22809554c5809cd97032035448cbd99700714a7bfa0b13d97d3c0848953c06c8ed32cc0064c37196647650f9c513f1790e18a0e35ab6932d607d9936005acced970074ede0b32f80b586cbb5ea92baafdf0510069fd30e70c4bd1540636363a80a13ea724ae5ba6169492306ff1b6bbd7702d0551c47d78052f91dfe009592ed9f02d8460fbe68f548b1b4f112d0274c7c439bca46766104489063963671b0cd8f8b37d016be7aa0f0a8c504c05137373b0024f8b6c667004da0f34ca0267f5005683001cfccf4aa4322baddc94200c579fc000819b8966773b08de965ad7ce900c76eea0e981c9bc40254ffb81260deee7f0362fcfcd1184003052f7f02e80ed8d95b601acaf54f0798fb2b807c28b70e9029796701504cdeeb5a0093f8e611d020c6cff48a0e3adef017dfd9646e6900d2722c918f07d2e80bd3e9ea58f9e9be4c046f4378c98e5c01c877e17e36808201333c07942c3876f3c61660590c4f0498c876aac40305a3473780867dc28f42005dfbf41ad0c6c4d1db8069b65b9abb57e6fc3624aba87bd31311826d7edb019c2a0f1d209df644804daefd9e0076f690728431f9a42d0fda16304e97438092ed5fbd09a0f57ddf035235d09e80cecf3d7580b0d70520e3b731fd1216daf176009d7a8e6b40c524fcfc0028878853f51b06ddcf5f074c5afe1402889c6bda23eae1425ad395114103c1fe25400984837f80445137df00e2609d65d21b6c437819637b800c89fb96030a3bf0e05e534085daf3560ba81b8e00b5e2faa60052dbb8f9b9807e6be3f47fc33ce743404894fc7d25808246dc56db9d8bfe580ae8acd73520c1d25afc13904b4d7fe13e0b6769f03d204ba28b3e01da277cfbee00a93a1ca0617a58a27c0f9482fac94470eb3b8a10de012062029d3c0bb013904f00cab5b7ffd9017be5f8115062f2fcd9586f637a2e38db7565d81b44acc896f929ec2909a0b3ac5ee1ff0660ee0f3ac014fb022810e32be8807de32c05947483d9405ba0b35e27006d3eda569a072d5b14f36301eaf23b1160f3f1f3d68057370c2c7b80107f902523f44079158e297a18a3c1460d40617cf33b80dc7276007507ac6067710790960e9023e8a33f010c095b1b3c404807b7fa68c1e2f9d101dcd8ef345048e0927b3fee007ecb7301bad272757a50a119ec4500a5393f7aec00be3e3a3bea11d8f6bee98055ee6208e82b39819ed076edc9158061e912da23d299b34d2cc0e18d4f6ba0be627a9de5d6df01e261be001c9872f5b500b3f2f704a0d8d1ca6adb0f7bcc6c3b2abb05289bf3eb0ed82bed08d065191900948ba059024276bdcc25ef418cd87abe119094d26f9587f5640e90b13afb14607c2c7f05b473a68fca6b6d4798b74072bd2f40134635403124b17e5b30a3725a5d3124eee715a023cc5fd30e98eff3c609a0d4d4f70062479d1d740cfb5ecbe1ae129e8842ee7ebaa62b3ba368be0610e81758faf92d20bcc12ea40b07dd41693345c341d84331fa5d03faba58622980aefdf601186059ec9d02647b0c6f00115b142f8f003c242e3a0764042edd04025816934340ce243499ec41a9d4e043802e8429555202a75d57b086ae1c561de048f71f4079156e2e0cf8594972934c00396679693d20702960140e229dad5e518e2855fe20ea122965fb220170b2cdd931a4701bea654b52fdcf40d7a6b32b000187ce2eb8d802a698dd891186da1575a72f02485ccb22e181ec97b74b4046828354df5049f71f000a7d8b66805a17d235022c5a96b3dc8306cb62a3bac89317f34a247191f1846f647be5795f8010ef8f1090b263f5da02945f2a880550696b9b6261ac5cae8d0ddc68a0a319552ac09c7b6b3a604b636b532c52d6376757a385db301cc4d63d40a6b925f00b2345bab947fe228fa2ab1f00a9ecb909403eb6d91940e7a32cb87607e8b90250c4c4a11c0a20e92c819f0772319e95007c6ceefd5680728c4e055058e7aa1cf185ee952722898b331ac8cf1752e9f3db48ee74c76fe3887bac6e69e4b860acdb7595e136dac55afdd4568f5897b9b8fd470146e1b20fd0a11abb6ece0305a36f0a408ec839fc064897da2b01529d96ff0015736efc0490a7c6e580563df7d0012bc7d8b49cd82ff3dc351003ba48b753802e1c1b2e003a02509b7488e3b2628cd97048740b913313d0839055ecf459402afe12c09520ee6d01203a3df8dd036873e9e1082089bb18036afae56806687476f607c06d266e68f3368974a22cbf1740d7de6c004aabf9f202909960a9f4b740c719ae000a9d4d688f38d1492eeb9754a7d11d4d988603cc84f10c40c25cb7d113a96546771685e40191f6ce2e2df3406e6cbb68d4834ab755f40035b3323f07102fe536bc12f574f3c604a06897e31701fc0e4f6b00e68a4bdf01b2b3bf4c06a5719f90d5a71300ea79d07c01a47c3f58576e77bcb1b3af00354bc1da14b4ed2628a97def002d626b752080c9f36e433b8be4e81e7f010a5d89ba07d079b1cf10d02aaf24df881b949a8dcda8cc1bd1042e3d021a2c8b375b91b719b96c9abe7d0a306fef4b80b2efdfcd018426b8537d83f028674755c2ed669b49dcf73d019a70682227f723d9ca317904f4659c1d01060c98c71f4082a931a21c9126e1c1b5001a8a25ccf540e1fbd78700c9f5889246441fbbf14880f1f16e4d98c7a9ec39d3828bee42074b52ed41c49a3d7d0150d2603800e4f4ed52a0a0fa76afa8078a6638d35f14d4dacc002df9b62c9a322c2205718e1700b94c2e2847a48888df0c40fa577762c3b20cb946c31dbf020ae5d6ff0094587c476f00f9836e0a408b9960577184a55748c843f22540c1d69702187847fcd6abe7d6ead3270089e2dc3e258d52769adb170134b68f1f018228ec9a6a0f48001a9857d20319bc491fa09db39714a0da8e6300e7919da54bf6a0568a72ebca3266e73d38a1b6f100ab607d0d507ae0ca064c999078c2d925c361a52bc9dcbb2d38955f5f6cf0d75700ed572e5e01e47176a79f001db6b6d3931eb4285776062fac7cbf2082f701ca8e3cd1137df9d8e68081520e3d0a303eecd2100fe45fff483b40e44e0d508ebbd94d07ec2faffa06c66a70f100c831cddb468089bc790334dab3d8032809b1251608abb887a674ec00c4b204131bb8955f92adfa6736c56aa52a75b8a1fe3711c7c72140b733dc1c09d01e960ec603ee1575cf5340a355dd66541de9b8dce4480061f09700d80772d1a203ecf05e0052faf6742a80d7da32b67990e99a953f80acd7e40950e96a341b96b5d7aec8b0bcdb1a089b906bef9ce599f0a05208de5480bfd8ad3b61d31989c70f1db08f36b6aa37518f143b6f1540feb1cf67013c79af470045436d4e3b8023730950a0f0e404a0cb6c9fce04148fabbf28b1513300701a3d78b3166be2583709f0444c569ea0ba00e87cf695bdd2764754e736e8da90637b6e3515a838887207e01a40773407c86cfab0b9dffa69ca9531138076686c53d88304f78f1decf320e5a6abb30740891ac8546fe3ce45b01bfc512fea6901be0428bf76b607e07c83b3fb2b77c0bac16e0ef420213c7bf50ee09a6ab7e901083577273140f9932d92da03a5921bbd0274f1d9e1858158177c8e3602e841cb9dfd12f5430ef7b8976b40c346c8512ba0b3093c11f57562a80352146f015ca4e0de4a401ae3d61f09e8928c8500fabadd6fea0157093abb397007ac815e0e003949ee4de27a405aabe07b03e06e74978e01dad03d1f1af013d91af9df6e6d8806618f797b1c0164ac363c11f574a0ff1da02c786b0788b5b97407905e384b001cc677677a45f174161fb4059809b30b40810a77720050dcd6f5c040accb6cab2780f29e9b9fdf831a0751d5089032d54ed67bf9d2afc9cab35315a2ad730757c5354001879660da03ed359e9c0038e9e7a6df06221d42ab3780013279752740232fae3b80c3fd09a0a3d42b0149fe790a50a2c9fa06a0acd5bf0700dd63f5160374d16869e3238c7575def05980547276f8cb030582fefe02746c2fc80c24110e77bbf62e8a429d9e1c7d0314596ec77e3d609fd0adac2ba318bdd08d53c000796ac68807ca2c689a810729ab7a351560894e29474c560d972f0015c7e4ffac725112a1d359b286687bdcc586c37e08a874d2cf01e4745bd86fe30809e33eef0021bd6f02d60325fe3efe07505291df638034b6ef0ca0edb8fd254047bac76b40abe31dd6b771cc75c8ee2402c40cedf59181246139b1cbb0a3c42bf036b47feca3899fd9ec8a6600c53bd8d5bd1e70e7815b4480148366fa0be0a0416097756c0137c2ce5a408d94aa478016b527e4b731d32330379407ca406561f31e44ca6a7e0b889563e60890ebd05520c0ce7bfa08a81039965b2e4a23296876f555b4750058ab2f1f01e4b477763ba5079a6207364dd344f78a1e9bc8f19638fac787355016cb48fcba04844c8f7c0320dcc34dad6079a403db3f130083df7d0be8a6ab5509901979f00e68f0c2b57b1d2075eb58405b585700f99327d6fb79ac13feab6f809c4ceffc36d656bc658cf5a05094fc4280897c4bc162f2d2062f942321d8c7bdefbc4e51d119efa74f802ecb7b02c85980172b802ef91bff1320ef571502b830c8593e25afc0e01b0fec56590f2a1b30c18b55bf48148435e62f498ef77cc35f92c68676f00848c9e1eefed9374aaff31311716620d25df188716f8aa27e7dfd02b8702cb07b023c6859c42756746f462a4be22120c3c2b18d650f1477317b06b408033b4eb903d662e7fb0612ddaa12af008aaa581f0ad01e1b8a9e90c6dad9d5579137dfe84abbbfc18354d712858086557d7e29408bd9f68207920e761e28f2e61b49019840de7ca3725f26d7ab84c32c81799c3dd015a0a595d49b4d44eceecf01daadb6b3f71ec871f76c63ac8efbf8827f4b8012c5fd841d3075f4fa02c0ade5ce76793cc0ebe4a62661bca9c170b09bcf3dc850156663408eae7dba072063bd3b49010db50d4c8c7beb448916ee056ace8be909ad955ffc25193060860ed0608c1c9b96d34635f3c58eb946adb7a2ad601661e681bc70f36f8076468efa02543fef7580dc503180fdfde0dc1aa84d9402e1fc189021835e76d323f6660252ca7275c6bd5841e0f7354022a7e1955897c75b5aef2dc0f73919024839e4e21940aa931d94f640db60b73d03892e3dfc7c10a850be8f00898c119e48095e08563b891bf7236d84eccd0dc4ba92fdf116c08d9fee554f28f7a09d79f72063adfc78021484ab5b5a1a3f8ee597ba3c072837c3f2de401a375c16f66520eb379c3cb08f6e8ff95adf66230049cd9c259df1a0d415070272eb7f27026c736c2240cd69f4f7350061109cef19487468d334250f140ff3624de815568537c400cef2b8bd1e40e548cf00baa779c31349c247a73b71e135389d27b4a85f0f74e9723b042833d8630ed036c77c0550ca90dfdd4ae8f5b31ce960b79978a08bce2dcd970715e6caed1b402730073d80c46775d0012efcb07ef1ba27d7ffbe2e01092535e5dbb717899e821f1b1f5b5dca46905ddaee41c637a6c70612b96ede6c36a45a81dc690c506adfef014057919e9f1848482f1e2c7f00dd4d8ab7002ed575dfa706526549b4c0690fb802c33d58f5b348a90722fb4616d77ce3e50ba00d88550bc0a912d826689c79051587ea03a0bbe6edc240da67aadb79420fa45b263660723f4e6d683f1e03185281bb07c89f3cdd495c2fb2395eeafead003113d9e2c63d90a46b7f04d89dfd9e039477e37c0c900b89a2175dabdbe5251e14042cdf3e004a949adb7f804a17f40d017c3458f18d143b2a38ca0135178efddaa02bb573e6ec1c9f07f24bd9c5abf15687b1f9f2fb0dd03ef23c0070c8d9cda602ac84af8700c4a73355d26b9603162d3bbde0013650603eb6b8f4ebafc9c2cd6e118f2b6f26206017005d1a726e7fa97cdf121a5902381f158cf701bacea33a064818d855711ee88cf7e809a0dd37bb9738ae52e5e9fdb5e150777b8d531b4175428a3ff7fa0fa0ca59263d0f52b6c0db1340496d4f6d59ab531d973b3679ba5504d0e9fa005631f7fa06903192e7007de37c09d0d5f04b13f44d3a60be1c7f026a1412cbfd13b79252ee6c03d0356f973f80842976f409d03a77e03a80949a02945068ad5794e87a732cc002fcc82b5948c17e77732ee92524e2706506e0ce5837e80372dd8e7d0328d0a55eff0ca4f2e2bfed444ed2f7b3924de1270309d95edde13e407fb12bb7b74067bc8f013166f5a700774fba57fe92e458f3ab4f80d226ce1e0ca4a45d75162f950ce28c6315764d64e29757163e3b73e64182726537c27aa094a9a31120d7653f2f0025053838329086b8a09fdf00854e1eec16f1248ce5ec3a3b3590908bd1454340ad8db240a0221734df48074486e663405ea1c05b7b44718179bf1918487a6a8f358093c2c1de1e4019a89ef54acb36fa1920e5da2af76b8d1cfb858fd0954303be0549f7f16a20d5354dd9102075f477b7682549ac95f0cd194822add91180dbb1dd730a5044e66f0f5070a0eeb604341a0e56f4a453475b7eeb3b8a64a6a71d20f3d3ca40a6e32eb689b105ecdf2e76623c49930c6fcff20a50717df8f93f035e06714aaf3090f530685a01941af7b2d3e8932c512ed7cd52800daae93e40eb7e7606d01ddcb14d8f4c42c9bd9600655c9a59476559bf46333801d41845ef3bf199e45e33c06a3c03684bef4da0d5ade5363df294f8e4e02400f469a0977d80f6703e3340587181e30410312b17d673791622e82df83a29b649444c6ca5005c7b812569f2402997573340c5c04df404522ad8bb02b4bcf26783aec8b42ff6be7363276542c65877fa0a50c8fbd446509976516a7d40430eb3a9bd5279c1c6dec91f40d7019d59e52a3fb3490c7f2850731a7d01e05e1e77d002120a36d41335eb9c5d71e0418b74b0737c499591693178b1a5a0ca3374bad62661edc7189b5c2540b12c166c9cd4be1bd8bfed01b4acfd4e017945ca323d51211dfeacf7eb2ca938b9b453e19226d525c388be2693b932b7e5c42f9e0883d8012ad6cac51ba0a1b36ddd4fda540794ed02360fb87c2038bb3590c574f6f14ed94c7b49531340756d20cd307837670076245c780f9011f07b6920ebf3cafc0d408b05272f80ace50800dfc8c396db2aec957e9ad0fb4f8780c676ef83af6f035984f3ef77e7204ab7e9f9d9353f3690f618a79640c783be6edb5b01129682e51b4037071ecc010dd334b833e02b87cff10530a0d5370ea01cbbf93340aab5dd5fe94541c3eeca68d70d69d8a9922f3700a51bdbcf0c78eb8410ab1f806683a582da5e29ac7cd263012e817cdd8df5344a0b86d43e20eb35d6c8c113a0cf62615e160f42c6a96535f726614a10c5d53f03199b8fc1db2920411d3de0952cd3ccfe35900f10398fbc92678d7df4ddea92f8698a3bfd5da0e6acf9014079f15f9f01316bf6cd3940d7dc5f648092dfda19bcd49ba274b6e5604e53df40648f5a1bc806fcc5f6913d88acc5dcd73e2061494a2e0ce4092acbf90290a17f5cec0220d22c9503f1c43a3bcb480713acc7808636fdb646de2e16b6569e6f0c6489a27f9e00694d7bbc02aa86bc81f6973c57b286af9d5194fae5048fc0e6052021fdf167202322c27d5d039895ee78082828e92a0668c199da042afd286435b527ca6c808e6b29213c081b32f9ee01b8d93ab0301c0f62ccb7e31290d4e4209a000a8abed013257fb1bcb4a9d72d6a0e5d99c8a9a408b8ac020c582ccc65e281b471db46df016bd3437d236e48509f03c861e60e6e04b0b4f6ff04a8dcfc10d0303e329ef0253515eefe0d9021a41b9bfb555134a4a6d8a90aa95fa3580aa6f64a9da6b4e92407d01eeec784749dc90959f30ddfea84df3e00f0c2053727800407c0fb1f4096e7b005c8d76757c37bd04af4f1173f2ed9e6b009d464831a3fff0940f79dd8d5bd5bc013765c7f0b1aacd709a064bdbd1d002a2c3ed3723ca8594e6eef016d4334b689e02657ae0af70548104a2b6b8fd6cb20b2347f035497c13f819a93d3ef02ea861450b0bcee992c6cf31e436afd20c0bc354f6fd64b752066ffd0801fb86c946500bc1bc1cd17401b65f72b01e4fa283590a35cb9af4780a69809690f5274ba31bf2d060d47ba77f336ebfbdad20d054079367f5240cbdcdf5c19c8bbbdb531a066556f6203458f7ef97a05c42d4e7b2bc7c00b58627b8680b2b16e387806d0fbc14c4fb40d4e37fb6de8bbd28abe3c03243c61b7667890639dbcfe0064ce5edd0250bf8211dfc81be6edf3da40419e89e0ef1d1021a526bba19d4599bc81a6f66c3363d1ea473d037e7cd89afd7cd60132c7fd00c286fc1f2f8098f972770448d9c0741b40c5a0b38b463d60f33158db47fd228ec5674922b7c01a28b8bc06e806a1974b807c9f97ae035ceb9e022a9396cef66f3da8190ed50da061662f1a03799ff698ee0112a6c76f05206944f002282204fd6802c023e0263b17419674169f5daaebd7d20186a6adb75b600337d8bc021aedaed89c4bb3527b8d01a06e308af6002d6bc37466c0cb75b48b1520a51b3eef01354fd851c82c2d7a2d075176ab6996f989cc5ec100d0d46427b4899ce5c4c1bad51e20b2f1e19615006f4f70b506148cd3f603d0304e5f6ccee519f97183b77f0235fbb756973c47537216039f6dd50d72a71f01524257da3b40813e66f68b072563ccb43e5f2e6f7b990cfa02642d37b25580bae1888835615ee6262e82939d6e9915f940e19527020ced8f1e20a41c071180691aec5f01623c68e94c80adb4af4340ca348d37801c9bf0ea1d50a117fe582317c5801d890f1beb65d662145d585d4a0d7e17f601e81fee7305d0f9ec9989e0d27fd42af77a075044d5f70b800113ac4c5a967eda12a5b65b91b3caebfcf46d08503ea5975b40c976ed873572956bdbd8522f7ad0979ebc06a0f33bcb7ced4142cf1df700698b136102c85158870298806e434973d697a036b95ef935caba72bf0130e882a70b804224beed953a4b5bf6d56f001553ecfc05a0acb3ef364eeb5cc7b2de6b4042479dbf02f07eb9d9129037dc283d07c8616687cf3d686a1b41171b40cbfa726103a62efaf4ed4f0518304eaf5340a8ebe58f01094f04a7808ce9f1615d5997d80deec21ab9c914b3694944bdaad56f6c9cfefc02082b708b3f40c88a6c796a3c50ec86051d7920abd1360f3c28a84bf30440e40463bee147b209a5b73d807c5ba317803c1307f780a625e6db7adfeb526c3f1d7c0a30e7662b00da453072801c2d275b030a34a5a76f4083a57564a3b0d5aa1e3cbe00e2d606ee410250ab5b1a380f72d49e8729405eebca94abb61cb46c81ef8492af09e7d69c1db5df029b40ceae20f720c61d667e180f5214c57509c819631b7db4403d7f391640713eff05e87ce58b03b458f3774b0126e11b1f2d7a48dc8c6ff8816bfdf23e0684cccac3be002d76b40164003b01e181ceab071d607c0ccf0c947d14c5c94ee2e65b07115e851140aecef187012f60ed95c30d608086325a01c286f0971c50b6f6d1f335404aef5d1f40904d70fd0fa0eba1ef79a2e86933c50142c0790290c4fdbb17609aeef3db025b2cf8bd0014f48b39983d90bb6363bddf2f4b54eb60371bf24186a2e87e0380d686838101df4036911fcf01110adaef0f807befdd450ec819c9b727801a49777d096818308b7b40cbd0b634b45e95e8616846ef803e05b39443f93627a6f5fed90d20d469b0850046c0412c60450f860900a91db809206fb88d91062a4ac658f9025072d72834500eb01ba6bbf5360fb3b845db7a03542802ab5f40c3d26817b0e5a1573689e98d0009f3f6f80aa013ba1651956f936a588b3d5a136e8ffad938cd294791b45c4e3101a06cbabf59076c24d340a157c74cff789e7500e13805d4ec48bc3e1a287bec592ccf0111636c31ea800914bb0d3a8f3252b6bb0b1b965b8386ec957700ad1e373d4089396b999f3c40fb0c9efe011a66c383cdeca8e8333ede7e01da020f2a80f65f96352022567294006284637324c0b01c53f42265c0ecdf00b46dfc42490b59270f3f0009034b1b9047a51c00b68fec411f55c1c2c43d085970fe0e0119ee9f6f6bd3d85b0558d156396f363182a62b80cebe2de7001dfea2a362afd29a30580500ce123b3b6c9d6f6328ac1c7664660b50d06ef700f82dddf018406d5d7a258051746775890bb6055db611a06f8b1a20b7dc25bf2d7481b4ddc09e6f835948fbae275244cede3d204387595e004aecb9cfb90042a92c055a6e968c0095a6e94c80e951be0214d86661057e3d8e58f76b1b967135b06d0e67d7bbe649ae7da0b32b408ed4b6b32bf93610017bee04a0587c0be0de022222c67a85409de0f108d0e2c8b41c887e8229f96fce6f8b086d7cbd00c858b58b693c409908e67cb420e75ff03011a04d2da35f9ee60037fd0328cde86103a858e66f43408dd8b2043a1e348c20bbc0710b70547d1c74c0c6c7ec5200c7eef814a0fc5296bfd04b53c59feecf008aeabcffd701ee7a7e044454df72b87b10e30f2a8602884f3beee28194efebb1008e99db3b0114563b17ed41ca3af740d10b99090fd60d69d993c6b600540c985b9b73debcc731f39b0052f9a4cf0125ead7e93740f7bf5c3f0b20a5aec6023865fff4979a469e9c011a449f9df5f2a055ea561bfc59a7f66cbe05506a4c93f62064e05ebc03627ace2e0df1406ea8aba0032420af01292a7ebaec00b11b1b001a8afbae3bc0769c4a9aa3187deb2fb9d995eee71aa0c4f0dffa4bc3903ab917c06760e93e3ce066b860c55f4a722204767ff676271a0d657f051898fb38b0acd51ec42dc699a99279e7757aff06b40c5c3301f33c8fb4367c02320c1adb16f4a06297e7a206488e5962e73cf7f38513214301dce9af95000236ba0374451f03425cd0d31ca064ea276b408aa3ca8efce75be786cd86bb54802976a7277031ba7124c09c3bfe116001b6d4365ba713957ba03d8a5afb6273014de419a0458c7f9b84f11632410316ddb103f617bb0b6bab0353f4b5f54b9193cbc4cdf6014a857dbd0448ddb86901ec9bbac505a06647c25cd01e3444bb9cb51db0797b621a5b51f4d89bbf1d75c086c3472040f5ed3cb20703bc1b930c8083d9995365eb2d44289df50131b15f376b402215ff1590325fdea87e81061b98d37e0bd0d7cfaf01d2c6a747001d841d87805a01108500df38750079154eff096838bc005ac4b8e583f5e325647afcf24419d12f96827a6b3237d8a69780426127bbcd83bc94251edc2500ee4a0b8e3e00a542569702ac2f96d4dd039d1ab82d3a6042a93903b4e8b8b5ad84a574a9601c00b4497e780a6012ba831c1051f4e5bb005eb8c30a10eb04c4394037b09f5f08303d1ebe01291abda5d9f0a040bbb8eb01747c70efbd03365f265300eb4b7075de01929af5013a537420a0b8cf7333bdcab2c7599e3dbac10b581b960754ae0c119f437a6e9b097df7441b0264f258b2a8bcca95926af9d201eb97bf01a051a85701d085ebcb89000a6bddef00bb1a230164d0a989cfcacf4afbedc30ac0a5bac1c11520d226d7194059ac8e12012c8b7a0150a6564bf6b2050c87bb7f005d82f07a23805f6a9d0172c6d89f4a9ad36277b45851b034da35d51ec8ac6e2e01a44e0b161301a2d44a7d436e28cb54b23545d87bdd3341efa53ac21153b42a43eaf27726c090baeb9ec09931d43714dd815fca9742072ebf00ca3db8b157b67e5cb68e2e01684ac1f51340f1c97443dd39cc2c216a5efb794bc2dc06a018a3cf1bc000f3cd02533c08a5173e0222d42fbbc0710bd0c62de4dd03727605f7f702ac40ef0e208d7e5e0a20614e86801cf5eb21069448cb8b4f40c58e771e026a66a51d67f0a0a5812c946707109fb658d49d62b4ea0ba0e3dead007dbc2cbf7a45f6eddf129060beddfd024aa63ace8cba2424c04d6d356db21a07e2cc1ab9c995eaf8e8540007c06900903aba2f203feeed10a0fceb77570258c088adc62fc06cd73a80eef37cf81260155be4002266828b0610a1d13ffe095097c31520a1fa7fd4a5200a29287e3a6025b5d3605b806dfad10232beb1d25f740dcffdad00b2f0b8105058d203a0203754350770db4d70b011d0299b7d01d9d921408e888b9900612747fa4bc532ffad8255a8d687254047aaaa8500be8b5920808fed9b262cc9a3181cb7022c272b5aac8c950ce81c409e89e06e2680c849ff01ea96030f36705bed25053f7d40a32c4573017aeefc14d062361d5803b55e3db746b62b303c20f3829b390126e1fa00a02c7816a7b405da578f011c400d460f026c949d5c031254c9cb2740ca2ecff114d0ddaf3e03e814a75daeb705e830c507408a517504500ac8bfb900fad854a051378c002dfa4760c3c1afc76cd7ee7d037454e568dd011b302b7e5b866c3d2fa9ed365798ad1eff04f07db29bb0058cc20920a1e75ef54a8e1d55d01e550fff47fd0e50378c761d55f472e5ba993480186deb4a4fe44a34f90b90d77afd086850bf2eee0c14dca418dc3f03069a84020af1b6db3bb68041373a01e0f90e0e6f0139bffdde031448ba7a0620574550ac05d87cbc98768060f47b0196932b7d43c3e1fe4100eda21d0074dbefd31b4046c0e203d0e286bae795525ec9bc0fd046c8c70d4041bed93120424ad53450290791a3094b5d6f32dd694a453f8f7514e10c90e854490bc8d4c815a0e4c0c3b000486c8dac2bfb858e86de7f0214d836fb16a072e6fbdc027904f44448131e948048a9b172408c2c3cd25f62bce7b79100e6db819e5040d9b93e4acab2e0e9005020d70b95434721d75f0274945dd5e2816e545a9f09a049b7cf1de002d82b01d42f134a1e70976ff0b014a0b6c7a98022bb7e000d895a0e171d6014f60450599e9f0458b30bd54569f01f0e3ac01e8e8dc2be1f74ec154c042887e5c5f74091d4676f801019744e03954a5679702aa02beaeb0e908b311060f538bee900bae58b0053bd65049529fdf2c2282c33dd4bacba642d1f553914fd73f80e281569bf2740304743cff995003550d56f91967b364dfbd5005374dc00a2967b460e01a98c55fbedc06b6cd662d5068077d4d96d6adbe9c38c7a5c0314375e8406b632c646f217a04f362d0b39f38044b5c19513c04134bc0044f82ee6fa862ee7fcac0558b43eee05e886fb2580b0e8a03e07e82ef0e1a5807cd27b00927805075301d4c0595f80269c3c019497c5ee7cdc0216e04b7d949cc381258dd80216beaf1b019cf687fa6d85dfc10e5d6d7560ac9303fd561b87871f00b96e9a9e00c66a1e09505bcbbab2b5a1398e7d7925a0d3e89f027483a539df027cf4c50aa0b4016f7aa54f90de1fed512a40a63e11604fab2a013a506729213c9007ede907a04c8bcf171da02e8f02a8d6bf8c42af4a72775c0290c871fca552705c43bf787b164dda6a1b7adb1dc7ee18a04ba8ff6e01ea97631b9661d157b0f1092051493780943c46cf7a42b6c7f04a0027f517bf2d747cf0fe454007510600a5821a960268d2aba40324481902489f143ca81c1c8809e6171d208de42b40de9e87fd0e10b4782dc0cefbe78f0092ae39042831fcb59ea8b4b1fc0f5073fce74b95ab51d02ce4cc83066160997cb780a034bb7ac2035dc670df08b4ec3798a40bcb1edf28df045004de2702ec7b7c3c0ab0bb62973f7ba018344b1ab10538fe07978081d4e26740c8dec93eb5dd1ef1df81f32980d469c1241140533a5976c0d49ed1274066829d8fda01ee4736f91156ca1ab9b157a23c477c9e3f034a85abaf05507b365380dce91f7cc3abced6c8ab7300e79183930410e2ed397b15d0e6f41b20c2e4395c0bb0ac59f29b2d2022f3790288d9cecfb20e301c96809480c3bf3e20c37335bc1540189cd5805ca79ecf045025af370254ce9d00d4c8771702889cf71650b26d6c19b9b619ba648ca4009287072fb71dc029db1320c4fbc934faa8d48585b37b409f38c7fd0e20c76eaf01ca62b5180ae098b1b34ddb002b94de137eebed398e309f0920d7f7f7004ac194ff748000bb1ca07c06c36907489af90f90b51c7761387803070dc516ad58a191c1f303802ba683590dd089d4b5b57a5c705c2ed87780812276df01219ecdf30980d3a4c1b001c8cf7ffed3016bd3bbb100b6d8e20a9060e02d96022d573d0d00197edcd15a0013f0621fa06bbcece0f816e0fb4c4e3a60bffd7706d02d886f5340892f78180364134ef551120b042faf02e896477b009da0ba340d252ed939737b6f02ac1ec5a60344217d03fa32672b800e6c6fe8a832e41bdfbf022c167f39206297f877d8016eb59f08d084a53e1a11b973f40c889506ee470057d6de0ca0e404df2aa9a2a0ed0a500f7498f659af288caf7911c0a576a757f09f06c111804d0c975239afc2e084649c56f2f3dbce4891e4ba31e7f40450518e93234063cb7cf0e9005af86e4d282505d9b4024b94bf0574d46d0e88d0f98faf3b60afd8cdb41ec472daeb1bda19f91900949864fc28804153fe09608b7dbf0194e67c5675c05ef9a7a2e7186767e30e900e4605cb598027df022df2f41450289df6a50006efc91940376e9db6020a1ab815602fa9fe5fc07128955486f7b9fe52618cd875401e28d3c0bd1a59d94daf6dad4cfc14b3262c9f00bae6bea26f4bed7a3d8d05581a2d58d00375b67b174055b0dcb61eb0a3e95e1863a516cf4b5aac4cb8b5fcac11d039be2520a5607f7a25a7f747d70284252df700f23b7c30604a1cffeed77407bf54f00d7705904d7863622b2d74dfc9b027c07232d413920e47ef8084716a9e4d0f521af9a603ac73ed18c0e1f3e07eaf03dc7e1c08b022b787805cf77a8d0428d84d29c0f29adc0b704cedba00146806ff2e05a8cbb36aabb3b3960d7807b84ffc0ac095dbc1ed97008af3cf4f07c8fef202c03de806faa8d25abdec7580c479fa8b946fbbd97a0b10e3f7650770a89e015a1dfd73022c49e7faa8d4730b24df9a440c3abb24740738e8782540c4ff240470d1977b4f0458802dd8d8035d90331e0bd095b33780321c2e5a017e5bbf0a6004941f0288f19713408403c00d003151f2635abde4987cf0a782a548cb9efea223339687750b9074682869a9c3a33d9534d76ef53140813a2b135b69e70ffa31219d75fb73df0da0a52bed1e1a3ff4491a115884fbd649c9a0bbbb0744e841767f8307316dfa580054db7add01fbade5fdda0192213f0b60563f9d0a28167f02902fe7b90564f81c7bfa462e357003e0be93e09f3eaa3b30efaf04d0722e8e05d03ea73d00f789bbe152000de5a406d4bac22feb009ac19300d5df539bd6986f7b710718c91f02982b471140b70f56830e10a37823c05a89ceef0187372ee9eca2d56dbfea4ac5e4ddd0955ea7b3daae53405fe73ceb0e90806b24c0f26af9833c1850fdde4f07ec956fbd22f5fcb82780e3ee967e2923444eaf11c07a1db602b8292f0574a1e5fbab00cbfcd59d00c6d99cce2e535cd0572a29399883b75000e1b83fec800dba5fd556679b6a7d83b521385909689b43e528147f7a0890d7e9f302a063e123867625bf76cb70a82561fed980d906f6e144b80670d5756057b3fa254bebed7303d04183e7b100f376af1260f3f1e21690e964db4040516a4b014ce2bf0d80bbf482f7b30e90ab42052bf06d55e702d2d826801aaf531508b0569e3e00b80a3da82f3a60dfb8ee9e40e40caf05f0c1be261dc0b7a58229bdd6e95907acb37b2f02c8c24fbe5176770c3d0bf0dba34680a8df3195f3b3815d1e7d43798b8bdf0e20b55b01d4d1bfb100564140e5fcb2c689a1230166c3110d54eaec3d4e480f38aab2a79226f8b65eb20e70d3e61090a2e5d841030f7430e74bbf95397bfc27c096efc36107483c3103c84a1abe0294d21f55d2035abd60c0943a10539f025a44ced2ececbc0a71753e9580127decd934c7229777b4c901da25feb28f7a7d0d1da69e0314a9b2ca0518967671a20721c688e54fde02ed34af01baf1b35a09b0d17e7100e0e6e260efa903a4c5eb01520231ee2e053046a6198004d341710dc889edb1bbf476800c54af0288beaf11a0d0d546570248a9bd50003de8ef06a08eb26b33b75f60687f7e0ad0fbff66007cc1c17808e08aa50041bf0da6e476ec464009632600c5176e68426f69616806021856f7dd13f46d55740073b6031ab87443a96b781e8a0e908fed103060359d7e0ab0023d7f081022714d0395642972e3d70ed86f7b8f00e2711d3b895b602b21369007788c2e7e04d0a516ff04f05dcc18305e1858bfb0ee7bc0a2754fdf960a6e616fde0326d04caf701acc5da881b824347854ab6b690c181fa576bc6ff40d2d8d776b0184c1b58aaef0a8426d5a7234e3f1ae03c416ab814a14f8bbb30e302c9f01c4e3baaf5a006375c6bc2da5d3ad99fb654380cca78aae9bcf57fca5d2a5ed6baa5f29fdda011fad229ca10db3b2d26afa6c8b67514b812f6cce953aac10fc3d0294b1edf51ca0f0a87902e0a2e2e0fa530061f060ab7ae9cd6aecca1f807c9fc77b00a90a7646620b70875936cf621bf4cc0ddb59076cd08d1f04d8e27cd45f949bf250af6408facb1ca0242b5fc30ee0b7bc14c0f22c4e004a83cf06c47663c4baf2e45d4029322a4097c0af14d0d13f1ba7a59ffbb69c20823dc0e479d800889772b30840c86a6069df3dd08a5cce05f090e053da4663737e8ebe2de571befb13c05d7abd0fe0ca87e05bdf5048f3e781000b4e7022805c4fcf0598627668c20322981d168e5f7f95236209d0d6d1a5ca51525bbbcf733b07f1a1383aaad4a1bcc90aa0f8424b3de0a79cd28bbfdc031497b3080468a08db569952bf8fa22019099d49d7c08b0fb766aba435570ded459ca760f141b68a1805b8047d12e0cda8e1f0a767b04887549680420e99d1bfe01b8322678ae0558b4eaee0974dc8b052097a278d501fc74b9800ed57c01487f128ce7020cfecf7f1db0df564b4049f8eded0ba062f05f3f7680788709a0a691a78702984df73472a1cb5bab0e104e580b2834617a21c07232ea9e40b7b434d6decaee61343fd0c8655f7eed91007b7c38763dc041f4b402c87f7abfdf012b7aa58fea86a98bb5805cf24b01ea82d36d1b478fd64703954487393b8cbf03a4d7ba14a072ebbe00330a75740b08b0eb0162f4a0de46000b18c9ef0131df2f7a453954efef0498629b7301e91f8cf5920b7183f7b9005681e566f040ced0033561465decf4e4f6a882b2bfbc75c03aaa27a01310f715a0c249bdcf372add8f6cd7556ed5443aea93ba780bd88683bb0690d729b8b1f5a5ce756dc4add5b62e94bcf3f70ea0246f96d66a07ac09ab3f80c22c2ef40dd5657fdc018efc5f024a798b9702ba2137ed80b5faed0aa0cd83e311a066229f1e08d095a37780ecdb837507b80c7b2380a4dbcb012d1a3d7b9e1ea0d33d1f0ac87157768033cd36a3ea924c14c16b2e802ef5b40f90f8bc0801ba27e06f2a80f8b4ab043d8874d1f9404071287b0268c16b3aaa54cf7de82f3a4b7ca78f921acbe177a84bedef970b0116bee129a0c04cf8fb12404309e897929ce5c1bfa203a4b7d0131546f3fa0650b359ff4757964adc5ba8b672223c2402fc760aa87aacc807bc5225acfb550520b23cd87b11c0f33dba0728d9cb8709d8c6ab8144eb9b08f66615c3b2bdec00bb80638024eee20ba0fddba61460eb1907735370696a60373a7a10b3ebb53eed00b7632702c8a0ba12504a997700ee63b77fd101ae27e8017417d6dda78042350602b4d855049073f8f106502a8efe0740dc78703d12a01c95fed2a0a14c54740ef7b8afbe8032511c758028826f0146d0e25680b88b239bb78d9cb2c1f7818022ed29ba5f1a3965f320c0d09e170092dd069348808f56fd0e589b161702b8e41b01f691dd63d401944d064c49e67c67376e6d010bf0bfeb0e90e66b26c0e9dae32700174ab9e10aa01c66f7aa6d86c9f3b6112018fd760ed0e5cffb2f0268d27617c516e8e4e3a500d172790c289130bd35805c04ce12086f0fcc28e98c9e68c81e6557c66c0129edeebe3ac0c610c3b2e4b65f370a04f0e55ca9f715e47bce18ab7aa8700fb4bad7934950ff23c021b41f7e5bb11206bd3d800e5b5fe70254df2e1ff0a004fcf244ad34d69617ae68bde5499a625b2cda82bd82e0ee03a0bce7370d80444f6eb211c07563d9703c60bbd6d911d5627b428633789f1d202bf13740cbebe55d07b8a6291660cdfea7722877e9bfac03b6ac3dec0124c69ffb022c8da7294037e4ce54970695f6e1b803a43e52e51aa6fac98500bebe39e5f02a2d376c8700dd32f3ef1c1022e90ee71db009b4f9ea002aed41076c02bd52f42e6eab0e04b4e1df018249072a47a2c38154aee4aee7c03d0132a92cb4ba37c509f21d0274539e65bddf02b40bbb817d0bd8f56a68f592b068b73902a85f7ef48a52a6eef700ad4224189695b29cd919ef2d609a5e3e0206f24b1d0ba02ae03df78080903f7d34528eff1b018b937697b4474582faa0a5f7ebbee2937732681b8b4d037d1f03940bbab8049010c41dea099d8eb3c3d61ee8c2a0d123a050bead9180628b0380ce157cbf02d8e20c361f024ca07f7340ad0b0c8e3b809ebc109074d04775c1c5672c8091f8f324c05af9ea3ac0858557064ae5a9f93c1440b5b6d4361e28c570dd13506ccf4c8055ece1480027c2ec00107287ddf9be00d55fd1a6a5941a4b38b503568e7f2aa9ae20b7f3fbdb2c35ba0de91a906813f45c4067f068d35251e11fae0328578b0e9051589593eb6645ab6b7bd26d860284efdffd0088817797638082c08fbe04f08f1daa2ea512c55d002af9a41963a514a35c056bd8383c55ab37ec5859d4af072de10da3a581ff9fb6f3686e64d9c1ec8fa97d06bd59ca7b438a46e2aeac48794349947efd5415ce07f67b13b39b17d1d1d1f75c56551a2412894422530ef7849f198004b1d1c102d0614adaed00b4f71a68a034e62b3f9f006dfaa5f6d9eabc18d7bd3401bafce8732380fbf8ce5e5a652724b6a70b506e5bcbd25cf92558e1e4d70e4c821ece01da8c1def02b4a3399e09b05abbe93ab05f64fb005da3b1ce1d7009823eab2355762d733599281a7b22a09454d436518a8cd99f005d799d396019f9e580a5d78100bab010d086ffa1dea193e4079f028cfdf181037635fa008eff84ef5d01acaddd3640b7ed5d0bc8d5398f00ba1cebad2380c01ceb91585946f605b88865fee4c01e490538cb130ec70e880dbc1740b40f06805409c8af05745c5f1da54b10260d80ba327d152848a94bd153b24745b78f02581753443b95b69c4d055856ef640e38a21a00ca3afbfc0de8b011f285d0a5baa0cf126f5680465ea700e22ea28b2140b12c9ff56224a9125e924ccc66b1ea0019263ebf88d5955f6d015d4db203d071865ffd826e88a61940b3d8d39d80bc0a398044e89165694eb647aace1dd073777c25218f51743717a009d174ad8444b5d13805b49435f25b0067c6cd8e03d6ea13409bd5da5d04e0f871c85f01ea86c31f01ca71fa24c042e2b410d021813180f8f5a8b11460983eabe8da8efbd567c96413be54fd18bfc3056deab12c67bf027cf6e90da0835bf30b014ca7f706206303f35defe0006a38fa7040369c9e00d3dab00f903ff97065a094751398096d9ab6b0610e26024a12b906e820ca012f4db521f3d40570b540783f166071766ba6533987b16e98db23edeab08a29fa7d07e4dc690286fce2ebd6011974bf01093eb6d12140a12bc9af00ee8eb1cd40d5e9276c876b01d69576bd7ce5a543e5ecf71c90d0f0ce8135d065d30199490b0162267e170039ffeca69a1a98a2b7eca63520c7ee17401111477b0e384d3a1360029e7e0be0ba69e81d5d6620bb1abe0274d4fd5a8024a2967fac5a45a1c6471d076c505d09b0d4b0c5590994d5ebea1830602b7e474d38d0cab370c02ef18300453fa52b13a54a7f5523eb60dfc310208bfe595dc9ea35dc1c0188d80dbb7a44e93e8aa500fa633d1240f82de97f152ec422f144e528d83c7853490b2dbd68e454e9c54f10edd473524700f64ec251009044233aea0ac8fa8c013dc6ed3d754995e1f094826d8f7522eb7ecee2670c50b0b1ddb558055928a59d7576754ccd34ee450fd0e794cd3a00e440b48b2592ea781819ecfe00095e164b70905487bff09f9e0014cbd2b814208a717703205569b030beca7fc6005a3e009a78cf2d496405e4c67e1290593c00107612ae2987a772b160b00ab09adf5c08b0573012e86843e65300493edc08d02f47bb801e2bbe13955461c0a7570238ffeebb0e48059502b44195df017444c4fcda352098a32780f975d40768497cb712a0a3e66702b49865cfae520220966b9534c16770a4baa4f4cbe80b90a161c6b100236a47fda27babedfaf00ab071787820c0573ed5a624cb8e76730144bb130158ae84c294632795897f7c2d80e0165f0238984f7e014ded672f05b4513604b08a0ed77f0eb8ede61120afd35121c059c01fda232582288c91e474c023437d56d79b24faac7cb067662975b21646cd987ec97aec9d7c997c74fd5a11bbb8b9041de5963b017429d84503a0345f9f63017925538092baafcf01baffe5e709400ea2703974601264494592ea409d157db51090d6be1060f2b4eca6554c169b1876f82ba90ed411b7f509901ff776e98088882ea047f88b45ff5400cd7f43491325befa3817209bc582cac9bf1eddea1724ab0c7f023aff52a8a43133e1f84f0007d1b303a4706f17a02bd9edcc590530bf5af4ad1b791d3d829b211cd09509e95fa3f18f40412a5b9bb3cbbe67ddb0a11c3e25bd5f0950fdefdc01fb957d8072ddcc4f01f2c38c770003d4f8e39d00e6c6ce2d2066c2398a04b0829702094b1e962bbd98eb08a3ef0d80268cce4e01098bf7cd9303b256df025279046e1c10837605d0b9b57b13a99e1ffcbcf811202ed85cf23520d8e70dd064299aae0568a09b738014caefcc8195c36e552981ece48b070144fbf448804591a52f284197c57b7e08201774747b2280c5b67e1240c6d233076cc81c00fa94c36e22a9003933ec76db0ae8b8be0aa68bf16ccba65a56691bec17a0fca78d1d07dccd712b8042394e00c4e584e7ae0075b9c8045017777a478a967a7975c0ed941f0274e558eda144d7c7df0e1840ea5b0dc233c987323db7d48439c3e352eda1d0c86fd55601767dd3b83ddff11ef6001e258fc0f86aed7e26c07cfb8d24a724310f075bc0edc797028aa69c02ba0ad28b00ca20137601035d427d0de03876381c02c8a7147e194069a6345f4b013e7bc6684873d330c1e2f9ab301dc6dc4e57001f7d8cf0678a0affb0a15e2575b7925ed823fdb84dc0d0de3d2045e8121e89b5b5f86cb5edfb81edc6400075f178e080f45abf023aa9f301d015b1a733013a2add1160463ece04e8ece7374087716bd7ff567e3cf691598af6dddd81e3ae2f6f6034515d7a0a4a1b3bc0d3abba280ffcc39f80f29faaa432f1e7e700ad2cf69f01b1ce694d04a4d83a005d737f78034831376efa0eec914bb59872c95b3adc0ae8ce83ae00e5387902e4c48fd925f6d5c600b27e629367bf340339f3be16c050fc6d39e0aef85c00e7ce376d9ab6589b5ee81decef4767f70eac5f768e058881ffa460e57a8ed903194b9566e3e05c00cdbfbe136026b4a411d551490c343b3a5c02c54cd87d49a502d67a6ec25732b6d2c2c61a79102b1fca9e800eb05b2adb1268be5d04408a256d971e26d5393e74e19100253d6f037414e16c0a28740e874712fa25ba8e012d9d797f728067f31040b2b970f22680e13cbd04e02e0de35f07a6b64e4f1db07f3b07e0640a3ffb0218138b7380ce7b9caa1c8a2e3dd557620cd6b40148748b6ad78115fde601a064fbeb1301bc0a763d6309325add4ea3d7c026e0d90a20dfc5c19f034e40e81dbab53c1b3bb0ba1c1f08108871ba0014f4fe3d1d550e0febcac76301faf62a0190092bfccd0468f5e753011d1c3f7140be8b85007add5286d480c413544e818fe1e81da075b62546ab0039a93748614a32c2b08724a73d2cc7cb5700e9e8c2ce102071b0eca6c92057b47e6662391c125016f0f50d3dfad86ecc49aaab0570636f009cd20b16395c829cf53e7efeea6a01fc85568ea1b68ea2bb67818435e144402730bf0072551cbe02ba6c1cbee7006e940ed381000af6bc03d0251937fac590debfdd08608f5d75013175192402f4dcd31f807c4a613c06e898dae1d201c9b37a02badf4395cbf15de0b71c265c8b18dee9979455636021510282d22c1b4e0598f7afa9ad3686c2e44b00ab6f72e280bbc0ff04a8cb015d99eac2d3df0cc0a576c1eee12d0141cfd1680fa04346eb89009f6d2e0570eb87a9008ebb740ee8e1e8b6dc7215c03bfa4503c9031ff6f58ba1a635d556be9cfd5d00867358ab815245bbb400199dfdae5fe4dc646469024ba09b9dec106b292e3a63b534a534cc7596c7ee5d49aa7b24acb67f3f808435b2658cad8135214ababaaec13efb67ca2076a7fdc5ad03ab3eabd7d8bdf8ab0b802cb64626a0db8f0b01f6c52e1f1c70df6b13d0a6e8bbfa6c87922e8600c21ba2bb2b01faf6b80be8ebfccb1180431361ac820df15da42301d6fb976b805c7b49cb8175a55d8151fda7ee155549159e7df8075066c157b5588a13e13111407fdcac001952f8dd1640f8cfd4409cc20a762cab4a2744cfcdd4c86ef33f0960a07d394082367c36d52145c67e75c48c6de35f01567c763eaa022cf0667a44d10c8b4301ecd36f5a3d5522b0155d598e5b42457b02a8cfef57808e219d2c04742afe1cd0c7efd0a0a35245da6f5474d91f61ee000b360568397b65e6469c692a785c0208478e4e4c3eaa118403d1acf144ce8cf0752c409284d304c03defd16603f06304b7020cf5a70cd0d111802b401793858d9024e1aed66031ce35206c7e0c50a623b69e93c4f3f5a9e892f5db5d07789d1a020cc2870740c2ca62fc01908feda4e7c0da747600d0d557b34701626a580424a5e01289702a409ce369eec0ea62377d971fc1e9161d8c05182f27f780a66ea4bf03b45823b76e1c20307c25d526467a24c00022a62649b193a3833701da74a9aff4b461d706f4a9ed4b530045bffe022881ce67d30169474cc1a631232afae9021462959c00122d23d7809c39ca521f55dda404b1cf80ae0e197d02fab8e52cd340097449971dfb2d810220d0a7156097381290c779234023db79c2126857e3e80e906bb3ed1220e7ceea4400199be8112eea095767028cb999f57eb942c693773e16203cfbb903d016c5e418a00bb54703015d867d23c025199f7d07260e9b094027b9f66280e4e360ecc0baa14f7b48b18521d54f159892ce04b0c63f0e1d709a434547f5451395748083d9eef6a9fc78582807fa4acc82d7f2e455331442d7d807e474d43edd902ae3d28ba9e0346b124174b0039041f286c064baaff11bb1cca4c6973f005d0fdde901521c113f1f0005823e9a2ecc86baefe4d71a39f3ec846faf00dd1db76b2a38f308b3031e51028c707c2ec01ae82c7360aaef3c00087a0ebb2d807cc1cd4301fc638d67405ff7e0fd00e40f9adc0262e4747fecc00a76d970805ffb0890b056ff56397484e86a4f40fbd9a9001100cf9f00797aede6c01ad8003ada01103d18a65bc078516d251f76ff5c0d306a2e0568c233d396654762182df704946d8dbaa44d65267d1040f31ffe0a10c0fd45c15265e49a1d0a50743b6f5a01a679cbc45901f64eaee70204b51eec3920d1d314a0eb5df71e01529f2bba32ed231f1f430116783f3700856a7c5c093090ed38430948101b5ebb021a407a29bb5e61ff1850b0ce5e2141196779c21a8151987878a4a4992ec53cb43197c712ba4513a0b35e0b1b84b91f73b51b946b60c26f2931133fed132c615d097af2d4e4005d7d6567bc2b80725cb40598099fb680839f7f005dffbb3802283fdde40d80f11da67a44928c07ad3a6563a381a0c53c21d95cb0136515d0d5dfc702ac3c171b8074d0aede51e01e3c37392ddfc078590d04c8a8f327409eef30da1760206f2e05988027d4d677cd2d7f720534adf504181ed72d80b6d17f0f1c906c2e15c01f74f508e8303cbe03a0cb67f7da023aecf40ce0f464f8a491cb59ccea727a21c0e9da301340f8472bc0401ae6548055f4e79300a2fd3616c05d3afa040c99d63602299f9dab723995bba17299b6d1d9792f01a6e4f72d805caed1ca5ce1c550a93a3e4cc60addab11bd640005e85ae2efd282d1defcb303c4a1710150fe314b009a5497dbd82cc6a2a8f0c44607df0065185aac0570545d9e08d0b7fb5d408a526a1c00140939115010f8d5ae00c374fd27c0fc92a91c3a75d49800c8731515fb02081d8ecc429905c3a5c969e1bb09eb478042011b430114cac39b00f607f37e21cd1f1dee0950fd19ed9172ad59749409b048bcff7540c1a84b391ab824f41da093180f4d01ade6f5592d027e7605588cecd31ea56813979303e4fc3b12d014bd7f04c830376633408ef0ef1d03741274498b650d961a76e76309d41e38328bac0b5806003e94708d58660a791f4600853645e7809484dbbb75e5d2ed99a29f7380cecf3d6c0c24ba82fc8e471235a165c3a9428e70ee7cfe00fa8a92cf05b4a0391560f6b81c0830f69b4700dd9fdd70801abfa6a4c950bef117002badd03814e02ba79100ced0660a50c2981dfd42679b36b702cad5f92bc03c77756520555211bbb4ac5acee0a59dea17f2b0169f02e8e4eb03809c6e2f1d00699cc2ec54803df18b7d017c9f975f802ee5f8d971c041d84780a2292d45680d3824101c586d2d2ea7024a997a0318508ea13e2b47c4c94a003bf937155072826b40c2deab45eb9720453ea62d03a5685b67179700ad927e286936c4bab8460a737668c29097e6b2c7766a8592562764085bb37e6926a47d0f3bbf026c0b2e3e1d709ce11ba08d65d31f55562704e67826c0679bc700e6cae855efd05440bf5487486c00350f0052287ba7009d077a5b007421eeee52009d3c5d3be05ec02e40177ddddbc8de1e2259760024350bd35d01c4f2b4eb00d14e05644b5d0374ddcbe94000addd4c00ca8277340174746f6404600f27cc68c2b487b7d8e2f94bd0677a7db913c098f86e0070a9457ffa8a94e38d5eaaf438b68a2e01a9f4a3c5bd00bb094bdab45ce032dfaafada9b4f6f01baa8e7e64a003be8470563d72b8c4db135336e400d9f6b01d26c9cec00da74d45f1ba0dd95a76301a6d7235a3d5324f5cd1b40f1eb8fc8693640e3fe206399ea72c85772bf47b30518e01fbbaea7d77235a74848bb78a49cd3b51fb59903d4b7b6f44a5b3a0a19fd1e0bd0b71fbf803ef3edc58903d3417f0dc040c1a4d700124e85eb4f80a26d4f28a9fb9468c2562a37c3ef99000db45b00944c7d140b70aae4ab09e8b023f1b912a0c5aef7005d34eed98380ee133f00789a9e2b01acbed91180bbe3829df728c140fed38900e29039a02b1b53c01059bf1a0ae011d8d14b87a40dd8341d7087ee3320464b5d9d0bf0950f3572aab0c6b900ad7e3802905e3c1c9f0a303c0e5380ae889d751db0e253131678f2eee9ecaca1bc922d01fc5276e0b23ad08d39fa7525c05726070eec2bfd6f01cd1e7465a636b523cc695b0951a3c61ac049d070f603481098dd4340cad2fc785700e7f0550e201d4c985837b42b1bc5ea321260e2bb0b00654ab35cd02550a285b1dea1f30de1c401a1b3094077724d1e1db0e2bb116064df50fd5441583bfa6c9f80a1d53d80f32fe13a1720bcf26c0c5012f3bdbe00f2717601d0ae46760648e4605e0be802948e00bb5ecb3f40a678cb99009dbdabda4af57daa1ca47f0d3bfaacd64076897d5a1d22e148372fcde400c0b46e672d74d0fe04a06dd2f59f00db1c161f5402653b79fd00c88659d262798bb9e1f81820455f9872ecc4be0830d1f66315611a03745fd2d102c0cd92617a01c87513dabe006ea8dcaadf296d36e46324403a877c00d03102bbfca802ba2efb19a06304d3428078dcd11d40bb6f58289d54973f1f4f045006e8d34eaa46bed5230a9e8cb780144cbf002dac2c2d5e25e9da9148007d64fd4ebf20e96eb851d107ba9ab527a00dcc3d80447ba5cfca2cf64774f962310568c36e792f40c126670e5867df02324d382a7aaee50abd9f35d849bc69093015d8bd5e255088e6215d99699d6de17325d081ba355fc97ab8f6e63b001dfcbca0a3326d1d65f64837eee171b6ab164aa0cb8eff0a801c3396d1af5ccb0fe4a9e117f26e448d3e4029988eac4dbb6953c171fca292d4fa91c516100cf600d072d66e0cae9cc7c4e3eebe000628c79d7701b4f67209d08d28377f0eec2bc507408bd59b4707361a667a070ea2604901aad59caccf27017c06e643a9f6ab742c9c062aff9bd1f0eb0075f10ad0d9956fda43d1946187f6c8943d3bf912d04d46fb801e8bb3773e5bce9524acfb75c0674d5df4621946bf362aab3b6468f54c806db0cd0b2066363ddd00382e17650f02d4c58e1f57809d55ca515d3b830abe04b8e72a0168251ef6053844b26e00b8d32ffa580a50dbcd0d4009eb663f0e88ffd87740d8eb9900eb97a32dc0c39a03c8b913ec76ca0ae8dcc933402ef99dbe00d10ce6b42f81f2af5fd284a942341ff40ee5d75e5f0b30c44e6920e98fd05c09d0c89f2700f93fd4c899f670bea60288c32b7d5b8a943d32ba07702955980d045815eccf0410fea78503b4d41f00ef46f8d0577a28fa5f158c840fe1e31ba0fb917ff50ea5f8fb52c174687348bfe41a2ffd2e40a97edee86c8ffd7ab246eefb0d64b7114066f17500d00dd1cac65cdf6f747cbd10602a98df002474eb8500ab138b30abbcfc88f6e7be0092fc3604b0091a59dc780d4c4e27850016dbe70b809da2e8750e50d27f0b4a2b814223af2700050adbcdc515c0fe98e9a5ba11c582282aa02c894f801c597fbb12c01eb37b354a5020eb57d436937763fd0650bf2c67001d1179d2232afaef0a2015fc4d8b655aae44670ec8f8c823a5c5c66d15970228940babfec093a963180d3cf364f3d60101eddb5f5849ed3c50697d684f7cf30a9095c332d2e382a3ef5f01ed685e03faba857917a04d9d673d3250f6b90210d31ecb95037ba9edf19580b0c670df76c02aba2340575ad051b56aa0a48b99007303eb860a70962711d064712a40abffde0132bc2c4bda3455d695d999800e7fe92bda7e3a8904f0b2d81e4e0dc81240f53365f7781d0bd00deb0300714ad1d30fc0e360ef1d70a0ee13a0408c05b5cde4623c9c0394b6686436dd40ae9b8897567773585d162d005126512305281f4ac4233a1112edc60055ce92ee56007d3ae1a50ac28a9a19a0a348b73780f64ec61b80e463d216208a60f921c03a7bff0790e1945dfc09605c5926f0d42376a3a68a9ee3425a1c38b0af9c3d0a688b53759129f9fd2cc03aea3008d0c82fd6d9c38c3b85a3d33f0196a2fba903d2363f0194b2ece610a054619b2301c6fe7a08e0887b343d07a4ec6ad82d22e9d03ddf91b569aca43391857ba455da62d20545800cb75ca329807d7a1a0b2844d3ac8b38e5f6e3e8e916a09cf68d4f00def330bd072871efc129408118573b022c123f1e1d588bd9fdea69153b6aef88f4488ca2f74714677072004839f030cb01aadc8d0aa6e3fa9654b5022ccebe1a024a316ceaa28a3f65a7b92980042d2958a6ab37d33b80f61af116c7a5598c8bf1024012e2f0be71c022710420156568bf000acc0dbb64a71c60523927b447ae5ce17f5f00ad4dc7d65149da66c3ee7a09e8a1e85729a08f33d42e3bae8056d1d700ddb1fc180386ec9c592c4b1580c81180c32701447b3202e880d06c03d0c89ee8b3042e453f2a7aa1c41333010d64f39024e58286b5e904a053369f014056c070f6e780c5ea0ad0466dd9356fd594253f1db5cdb85833744f010a16ecbf00625d7ad800a488d481f54b52b08c8c3ecc924e958922dc6400cece4696dea26cafa12e932b0448e2c54648eaeb4acb295b017c394c05a9275ab0ec84d5661c53f474cf818decb55e9a314c778f1d60e4ad0139f6e9f8dd0109745a0e6c6ee82c04b0b5d9b3f028c670fa28a0636a80ac81685fd24072ec869d4b80ee7cdc7f01c8c8c3ad9f664ad87ff20cc0471f1d517de599080f7780018eaa19dd50ea64eb86fc0210eb36f93920c52e7cdf0768f648297a2e81f9a2e8e530b501f47000c04e8ea6663a55e1843645cfcc0aaea2e5b816f105a063d0d34f4087793fd900740c7a350728234672e300f539042806ed20734046e15f017c28cf7307ecadfd009446f2b62bc0bed8c10940ae8a7102d0f9caf4518071bb3e1590a2b7719b95f26103686f1f20b7be5dce59b9cb647caf01e4528b2caa33ad42f0ec17f71f0069a9f7ae00abd7b9800ed2630864f27e85632ae7bd1fdbbc5fae6f04ec17793264293a3e0328a2fbdef4582e0f7c383a06c881389a0332acbeb91e5138d078e1002fedb5009aeee61750e0d97c683b20416c26c0cefb35e5c8141c373907b474066fe680f3c87a4497dad9a9a36a79c757524a5a9ac504d8750470859f15000e3a06bb88b6043a44d2d723ca56f06e2b9c3c6fe8645b0fa0ec1e1baa5f8e4afbec2000b4eb756d3256e8687934e902388e1dd951eab2bd3ac8ba1d754bb731469870a556a75fec2eacaa897165d9653f25909d6cb7ba5580b3b3c51e40e7092d35677507809233de0930375876a01214cc0d17d6b7e55cca2f9ece1c10563002c8ea230ea55c65a3e86f8f1ce0987902b8c6ed0094fdf63a71601d759e0a68129f006254dfb11ec1c11cd6df00197947f70e089efc00644c0516375e017ed102b82f674d57ca960a6b3a3befd01e5d5a2c971d64be9caca1d3c651f3c4807678a3cf8600e508ef007947f76340ac38b60d809dd5f07e2bc094b43b00c8f17f381160ed317d06e488d4fc10a07c39b35f03994e94dd3e019afc22ba11c0c8333743095a54ee2301b09d1f2ebf013133f26307a01398ef6307d6c86fbb801c37f6670f50a094ae7704749cf2cf40d973f6d23eb5cd75a6e82c16d0fefe1ea045c16c995002f9b5bb6b803caceb2540a76ce6b532c89a5b0bf65640e3e509c0f1c128ec01c85e19ec5695ace9e90b2e9600729647b78780365b58af1d408785f7c91ca0f1f2760d9089ffd805c4f8826f7b800413eef943004dd749019a802d2cba0439b5fd6d0af0958f1f036513b287930124daeffa85c6edf71d20c320f9b2cfb65209ddcf1e4017bf4f6f01f290e43180c0b628dc3bc0ec09000594dd8e003a67b1980352bc3df37d03995c6af38e036b314b865cfe674767355680ae62593602ccc8877a6917a1bb6c037484f9f515e01b870f006d1c7e1f08f08bfd25406d3aca014a2a62c171252818b7dfd695ad5c76324aa9046c62841d408b613a2c0092b1c10740aa6f3e04a860f31e4097fbb64602ca867364a090c6bdae6dfe6aaf8978edc60d40876aa6bf0e4c0aedc2d312e8daeef93d404ed9b7170399eac2886a67e4d68f16fa459b4d8cf733010a36790090f230bafa7060bf38c801da6847f8db6e39063dd2c7f53b881d3047a91c0a91f83c020c7164bea81c1cab0876f34605a4a5547489c3d90890d2fbb6b55802b93bde6c8e6ae7bad2f0d8810cd63d8066c2218decda721001e44fb6e09612481c3e0e00319bf5f1cc808cde30ae974d591545c0b9f90f80825aed3af56aad467bec340119cbfbe53980e47be1cfc6ed366fa0c5d197a0cd574ef58b2e1a777126a0635937008dca511f107352e73738209dc30e4097a83c3e02f04987936f016db5aa6032485e8f0152b0bf543f23a55dd4983bb05fbc5bcf7572f91c6dfba902ecaea0823bdb1dab5d8076acf62200f67a348f05346ef9acf7fef7214077c8bcef3bb05fbcd0403e15eceab39e3e499fd55d036f4f00cd40733da2dab6af0c14f28d37eb2560566d929330b705c8a85ceb0750a0716f0095bd55ffe2f703d0d1adf63380df7f7b0ee0e067f81a02864c9e4c5a5d0f8068f6008a71b64ccf2520b23cbc4f04d4a6df00f5fe8e69ed6eae8b468b1f016d403c003ae8b16203e871a8b79502e41cfeb416abf2a0d9047cdf0790e031ba9b02d8048d2c0146e591d65a6c0cc889525b34045039761767d9809ad56f8f1dd0622f02f2b26c1c58e5ee9f005d9c2af3154081079670bb04039cb22d2a97e1840cd37d01d6628b9e000b1acb5056829848c877da63db95faac4c054bfe5b828c21f6fae280adc55b805274d94d9b1560021e0e0434904de5541bcb9c48cd014aacf8f126a0408c3d8086e9dd2ea08dcab1eb914ad0e11defd702b4fae00180c9129ddc092041eb77408f33568db603534acb37074c8d318098de689e0a68f351ef5052f7094de896416ad696efce0624a89fc9d599df0ad02f0f7307d6fba763011aa8b50b20474440f56db77c8fef01ba31f8fc0ea004f51f230114ca4970c0407e02a86fedbab9ac9f3774d9cf1f405d991e007c376101402985cf4c40a7affd17320406801ef6e95c9fe5944df8d62372647e5e0154db176be42a7b147bd13940ee9fb935f2206b689b740c6853d2c5ab007376a30790bbc3827d2ac0a435bc0090b7274a02403bcd337d56c1b5761eb9329c1463f40250c625bbeaa90439a6c2f31540d7457d525b3f4472b902e0ee08fd2700a664d4ec0ab0b07ab91690013f05b459f12d7f1d58bf343f011d6569fe1640a1fcee0314ccf1722b40039daf01ec134688c3408330bafd0368cc2d63808c9aeb023054ac935e1aeba0a3c97ab53bcbf9a82940e9712eac2ec37255689aeee01040beade82e0728cd06623954ef47b73b80a1aeaa9d392030455fe15af7707b26803d76ba056c832500a20842b3006816bb3911c015fe9302725d80f20890dfe1c6e6eca10ce7f0d411a04d9ff9ac4676747e09401ca2f58d80a22a1207e41ddd07e874cbce5c007718267ea9f858789f6700553ffb02e802945f537dc3c26dba3f00fd129d360032e0dbbf002ddfeeccec89755821bae800c89416fd0e00195b58031b40b17b0377bf00e4e80e7f5380f2b05abae46ae4332535af0598d6866b079c7aee0314046e17e494408769ef9f05b4de8f1cd84b2fee0534479d00e463fbfb13d0aae001a02dac555b806c05b3730718132f00e9a077d37471ded07ef69b03566b4301b4831dbca85c3b94e3a4004807bd53b9bc8d4bde72da5700f5b92f209573de75c04b37002276c3fb4880c88cfb17011eb938040c18c8b39e006a6bb40b60120faf770272ca268098d9a340a47c55704767e76ad333e4c35705e682ce123f6810599b269972316e96006de76ff6014a303d3f022860d9ee15addc98c417dac65005b01ce77b00ede114bb02c8479e0362a4f0e74c40faa30d5058f4e415a01c44b37707367bd8ce590538546327ec6a6003e86e2480fe68e8a5f2089ca81c487274afaf2891cfdfb7005d7968432cc9fd542bb52da590f0862307ac3c7700c4f387eba903bc2c11a0c3b8b5fc8515c0dadaff74c076fe3340190fee4e04f8454167e77d2d24e8cadcb315ec39e0aa167d85554174f72780d16b99056b6042771f0004d746c55c805f34ae005c0516b5e8865cd1b6964a2e4bb4e08d2452aeb5df69b142b33adeaf6a5f1d27931946a9afa3e66d80261c84aeda1337d16e4d01ba99a5b90f50aaf4817ed143822efd175aac5e013490a71f006d0a637d6e37c93f1e1c58e592312091b5b5238031319e3ab06e389f0830133662807274e30dac00d3c908a04368b7af00ed13ce3e1c90b3eb19a07ef930cb31cd7520e66a0068628fa5870228038b51ac003e832975c95b3a159f0a6881a747da6c92df50305fcfd9e663e5e9c30eb2db7e4bd043702deb5b0d48275508483e1e017ddae3818eca15f76957915680ea1fd062b9fad64ea35780971e3601b21c8b950043ec432da630e0870b00778345672d07d896a61d4a2dc676ed3e925cb00111da14ac9076d8ed03fcc094552ed3c1cfe8ddaa9f555b21f648534027a86e01031612897e31d4bdb3030784f1658018d7cded8100d95e596a548098898e00eb6c0b062b81cecdff4e051884ece1642eeba308c0f57be12215905ffb02a0200acb5551011dd88e1c9074e6c801e78079c46ddcc727806e53b32bc82b204fef0fa08d4bbe3810a03dceda0eeca576157a05b455f2e0c05e6aa12b555d690f067256cabafde2e75b8047f27b8092ffbeac047088bc4d1da082f7017222ac047452e79d6ec8598c44733550266b6b0d20b638ba33b3272b1419da3b04788236fb45aefddb88fda8dc33601eef38607b720460ec87dd23408cef629508607f2cdb0208dd422fd5309d5c03a84bb4f3e880e88e3307f6d9c9134087266ebe014a12396e09d0fb2deb862a3283ab8d2602586c3ba903fc41a702981b76e1470974a877d974609fb5bb6c2ad1a772762f4f05106dbb5ebe5a00b2043cbc16d076ed27405ec9995eaaa33b7f39803dbee8fe1030c00170d9139052fa0128d9edc3a3006a3cbd0290cb247c7e00523cf0fb5307a6d8fec60019ce33554e86b3e5cbc9aaff66b709f990172eba3c00e8aac979df8129a5f625407e98b57e2137f6d0c64be1e780ed96cc52181420d33807f4e4dd9802fa0ca0e742407519006225bbbd11603ac16750b8fa9c4d04984d67fa4aaaabe256000551cc17008547ad8e0185d2480e1d586dcfaf04f8ac9dc12bffb3a148d9b50073f6ed1b4009b72d7b760528c7e809e0b7ba1d0af095e6830366e45400c556bc03dab43a367fe17e071c7785cb7a710fd05ec1810386fa8b8aaee9d5722056911bb4c7c148007ff2cfdc01a6c229407ddb7a0128fffa88decf753bd4a2238065f04e8b15da4d6853b0427e87f40220cbe0a30fe0defb6884046919197ef5d22182dbeb0a68b17a0d905d58d45abb8a2fa3e74e46002cd870d215905f3b00945563b41060467efb7140dee203408e0a5edf02a46067df02ace7ccbb917b804c34d90868dfe3142081b1956709109870fbeec066b1e6d80117491e0ab04333ee01707586a91e512ccbfdbe031b51ad3d405737e40e041087958a2ea16be91d3d0cb4477d56f1ebcb4280586bbbb030dfc6f6147f02b22e6e005ae0bdd095394bf3303e06482cafd5c87221bd08b05710fd24006d0df43e0c68de0fed278056af2d6a5be89e447dd6dd1d573450a11b1e86f45c21196b23302ea7c11aa859edced7bfb89a01144273fa2340848845dc956040f57fbb00c518d9d52435308572360410ea15b5f5087750457696b8041956ce267240ee527d36d3b2e91120a7dbdcdaa3598da91a6c0e05b00bedb6f012341984533da2d89edb17409b82b526808ed6849903f680bb027233e82b4af6d28e04f40b154cca71762bc03cf772ecc0bef21600f24c2c1602cc73ab3b809ca1a77a4482dbf800244444dca502cc40d32540ded16603a000fff5032067e20bbf808228b5039ab0d00132cb7a5f02e9e493430708ff354016fdc717400995db1b071813534022594770ddfe685b5d5a999c90cd85002ac7ee79af80bce707009d8e3b3b71c0a189778002fd76bf05b4bbd202e8ccea528f90a22b7ade11505ea7be0096e3eb254039bb32d385ad5c1963674d07d8966f00ddde713d7480c1da1640a42e1702f4cbb40768e192b7c8d01268cfa2f5ecc07affe84980058d1d00a900d6f87d0ae822b8470e30044e8e1ce0401c00f03a459607be02cc51b631946f83d29e54527c17d1eeb3032ba9a51caa009d7daa473047a3702c80bbc3324e5780f5dc91ca2177875d0b50017aced2b05480ea4f1207e470ff01c81bf8aabe4d596ad8e5e025d0f57b772aba0cf83f9523476bb7f40bd9da3748728edb366a493e141e657750554093e799818274a761181cb0f978e9c0be62e9b42b434193e7af805616c869d1c2e88d05da74d4375de98e997701998129225590f929346f1cd82f62ebb9b65fb86e67344b407ebaa8f50418322aed1c5fde961332fa2c0009921cb50072b81fbe0950fdd91890615c3577010542776345af02ec389b40c172dda5f7f90d68eb48e68b002d76f60ae8c8f1ffe680eda7998032933e099077f4ac01d09991eba60013cee39f80dcd8faacf205df7e3840c1de09b0127f52393c7c5f5fe9339d8cf5485f47fe3f1d60e3e60e4cb12de700b29c85e5a1006279af161b32e63e170e984e12809cf6e673ac163ca83e8bd82d81fc636dfad6d7c86af542e9f99257013dd20548f86d6551f9ad0063be52c89dde5f02fc9e807d809c4c6f0700cd2f7dbad285df0e6d96c2d09092be033409e37b9c0348731e59def31a9869bdce04107ebb36b3b27118a616dd5145a1f015cbb25a01e4b4790648b408e80850d2af13801c44f38d0393b1d33b07f8a47300c7f523bb65b7127dccaf794b80deff881d10ee4103b94fc94e0d94a0c9764b73eec08687ed7a5580f638ef3b302be74b8fb42958eb4280467ef9708079fe28a05c8c5700f23906f317d6c09a70de10c01060115001fbec5702d05cc9fcd2f1b9727320a0ad677d4586d1eb50002d353d050c2947a1cac5dab10a0eac1ce7aa1c1ec5a8f5005016cdb67e2149fe4c01d2a7af7aa95f74aeca295d72e34d001bf74905d36858f052b72d5f908f6dbcc331a08d3e7d2904f88579cfab002b8cabbb850393d336252de42deebc39b0774c2958a1bd82bb1d0756b02e62a9a88ac01cd529b85932dad907e8ce94d6a780cce26b07f6d96fd385dd4cae70f3189540c9808ebe0072311e6c00ca8efcaa5f908a213af914c070be7e05643af7da0714da4adb77601af7d1ac9cae4eea44b34b400b456f39656bc0d6c0d00182fb0ce8689aff05b80f565f51cf2dbe1d608eb61c583996bb027465bf0dc009198e6201adb35574e585cb220164fde94840f6d80430501cec858084ff0620cd7fa5ba90282efa7d03688e7a545d345e5a1d807b1500a5f073017d70605f79a2810a368543f707a0c8d016dd50280ae9e11d102b2e780590a2ff46e80a9514075157721afeac2e3df7e3b64e000a499c1780212742de6e004861140a0728a56f0017d344cd2f40a6edeb73010cd61d13fe9e87cdcfdf0172874de600b29d44f3178036638f638036633ff40877a545c58e0382397280962bc5ad00161b2bbe6da4ec640550a285d7cc014125b447ae0c21ed5d07a69377660258d29f370eec2bef0f80985179a7af681fe8e54840c6d52940f90ceca2e21ad82fded4408a945dad1c58d10fdf1db0025e38c065d202e43810cd275d03f6b4a60208eedeca01db931700694b4bca9c57c1c6cc8403070ca04740133d369908689b8392165c5a165dd1eaeecc8891c242aecec59d00d54fae1de0ddd05750e3613475c04b9175f70636f40eae9e084f7b02aa0b3de7617c3f7f0075658b36f571bb7f09c8e5cc683bc0e8d53bd4a62b5bf2f44b73141bf70ba0cf3e4c00b84ba3df3ea0602037070e70fd5acff57d1d35e62b39578145d1ab000649f4272077c73940a16f03bd54dd7072ec00a51401fa18bdbb1d076c2cff02505b91659eac805284aa608a60be391560ec37f50ee9b1c503c023100f007e39f84400756129436ac04d9baa1c41cfc1cef2d4c05e9aae00eab9130a56c84174f428c0b2e98a8215ba8feffad281bd74d10560f4068bb4af002f6d9f38b05f6c26028cdbfb7b8076024e9b02923104a6700feb9700b5fd281cd857767e003dc507751c605bbe03fa586c96b2ac06f68b7902d09cbdfe000cb10b073700c9faafbea2a9f1fc1390e2775037f898b37b8a2abdcf4b5bea067594453057228701cfb81df8e9163b96558258770b6e0009b3c7cb2f40d150772d010cf8cb31400af639000acd2f85035253a81c05def3c5be03824acc98a8a2e4597aad01528efd4780bad2f27cd7c01a68fc06501a85f18b00f3cbc3b1031c115f80be54f016587b5c7c00346ef13b5451f2a62e8a73076629656307f69544951be240b43dcf1ad0c8aa9c6cfe91aa9f2853ebbd038c1a7d1681096d3d2281494ce50c7c4a42279705c7a2fff910c091f9f3e800e7f00ca0d5ebfd81003d172f0530aef24707044e5f03fce2802300db716179e580aefc06c8fd733476c000429235e622bb00b6047eee15f92870dc85b61e91fa3c8e00f29f3eea11258c69aa810a562751c3018e4cd3a7c38cbe0de373800ed24f860eacd52d91603e544ec8306b0134809eac0987f2e287f98f00f36d93afe42d65f7781360de3f9f031440f57aee8063bf87800eb3c7c102d0a5fa67df0ed0307d809c7f777b028ab7bc05e02c0f96d6aa02ec135e53db9ca0e7e8f7dd01771d350172218dce1d58c16e3f018952b68f1c58673f1e08c861f60cc87405a8aaaf89effe1a50c86f49ab6ffddafcc287c7e90b40365d7602e850dbc59b03eb280bf2ad011e8119808566d46e3b208fe2d2813d62d9804b8087353a5f09c832f802e84694c6ad80567c3d072c4511cbd22e3409babc7680df52eda143cecba1037bc7ed00a07dc2f34240a6a4ea222d75f400c81962f1c001adde0170c839b4f71db0aeb41928ceb41ff51b0108b3881a0d80d25ab516024c6b4f2980a0b4e8532f6533257ab0eac7da6c8bd6fb025a8bed019ad8b8767d561e6f136f76005a02e60700e540645d197b80eee204d097041d03383411e6d70288b6058355a160fa6c0ba09c6e537d4571d2ad6b075617b627635fcf0d55176da4627f54072fb8be8226cc7316cd670b07f68e875d015e9a3f03140df57223c0f4dad97360a3e1f1cd01d39a0da0b8d076fef1af0356af94d42dd8625f8077dcae013a287dbb10e0b36f2307f6d2eb3e4039ba5f860272310e003225ed9eb36acb8fe59b5dc45203368668a0225604734b406bc29103fbcab7bea27e39fa00685a3b9d00d4ea0d01cf97639fad4e8460499f03e4613db7464e72ae568cda0f02644a6be780b6f6a27b0274e5eb910324e80a40ab47688724277a304a7e04740a6b21405d962a588f49cb6e502e419f737ccb630129fa2660406da38d80067206d00c64876a6ac04dbd2a69827cfc751dd84b272a9892871febb36ce84696fea402ac701e2307e8533532018751b670606aab113930c5366a0bd01e2f7d80cf736a7539659bea288515342969a12366375f00450fb6720194d2cda70386079d5d100110de8e05b46ca2a43ec41edf1d703de38903ce684e1cd83b2e13808f39faa55058d2e9d401439df628749ca17320806f6bb17440ded1d8015e273abb50b4fea97ea130beb71d8046e5e521804daec88e63974029ca4ff71cd8239f73404168d36eea8039db40750737091e6d124f75e82a7a4905a42def018ac93bea0ab008b8bd06a891edaec5bc3a2262253dfe12a01cb311408eeef3a503f22935010385233f39b077acf495588f9c02120ca37c1f4066e350e8b31a2f8377004136e1aeebc0ea328e010a8dfc7a1090e7ea02a0540cb33b0726523faa8bdfd9d676605fc978a490a980ffa3042cdf7623000ec4307b15c0b8baf75fb081399d0094a16c9509f059bb27a0048ac84c6f04646de9117cd211be9c0ad8985b7d08c870ee03e473646bc08fcc044bfa5f025fbe211fbe0dd69a030618f04f0f02d4f6e2c08135729bbe75bf65b32da08ed24b49b1135910780d509f4300cb8468b12b802f6776ef007bfdcb81bda37306908c75d4b71e12a04696042d194085b69e5f6f1d302a4dd63345a7473f1d80a6939e0d8fac0ac2336d59086027e7af00f5dceba700e5b0f43825e8f30e2cc72c5737b40e05e40bbe020cf9caf7be036be468ec80474e0024a98e6e3e1d703f720024e8f5f93740135f72e78097be038800882c6f4ff59fb819ce72404ef5ef55b91c393ddd77c0dae30250309de47f0eac3dba970e4ce366af0eb0a46d2191154ad5515c0950b0312f2d9aec48b0a5571ddde196aa4b079c1a183a607ea1b30b1d845d3d08e84aa1330758d2094087262e970212dc18a025cfed95035616270228e9ebc801b3183d57f414aefe2380e05e741c90dee2d2015dd974c030a5f74b75418c80da03a75b44507c093025970380d6a64f5f008dfda6dec1065534528be924e8a5aa2fa16bab72cadbd3ce1cf08b1420913ab906c841f49639e0f2e70b07cc0dd60d7986951359ae9b1278706d17a072f46c9594bbe14cc1f2ca4b5f83fb1bc080be6dee09d062f918a016a36f73ed37843bca219f63e8b71c60190c1d98e0ee4d1cd84bef9e003a32b33806c8d9757f2e4003cdbe1c9814e6470e706608e80ccdcd8b804eb73c0ae86c42eac0c4f2e9de014d48e50a1dbb69b51d70a8f75140a3320110fd132c854a0db802e35580f965b5ebc01e611b2cf7389416e250e8d68c6c24405de6bf0e5006af0e4c92efc60e6cae7c39017074272c1f0428183372eefaa3380574a8cbfd9e002dd641e814fe125a270e6c88d9dde81560a83fcf1ce0936e007a08bf25242b812e74788b04b44a1a0074cd6c3a11d032520d3454679f3bb0aeecad1c90926ac781152c45707d8706059b173a1ed63f126078b4ba0eec1d914a9ad2402c89fdec5b18a81cca4ed87c70c040d64b95817ba14656d299a51a59e76f3bfe0b6db649a4140dd5ed09b0c0fbd975803ff9d181c9d8dbcc810de4903960b2b8714018f0850356c03615143acd11aeaf014cd191e566c8b7a7d20ebb024acf5700e4c66eaf001d06e1eba1808cab36406724867b00c5e55ccc01ca2f75f901900bfaf25d001bc6d25b9420d6a9922640aaeff60ba0bbc12ce97f05b4f07e00a0d7a3a72db0ba1c25000f4d507b90a935f45a029a3c4da114aeb6a60f029a2bcf1db05542e50a1d84b53bc92b80fe98f41c981d94ec38b077108455142dccf3a95eda923b6c2c80d517df3ae030fe9903b4037d5be8face6670c02291462e14f49ca9e8daac5f9e3830399dec38b0778c1e0144dd84bc2b2073b4e980d130704049d5a63d9d25de75c02ffe04a461541785f210495db857a1a106d299b3eeb700026359bcf3ed01c3650310d3d9f7faac62f2f243071846570079263e8e00191a66aa6e90fdd1f45f2817f4ad03ca310290d828b41307b8182380b6af17e70eeca5cd8d03da2315c03c7f9d3b6078d4b665698b4b6bef9f1b28f5873d326802d49507770e28d80e400ef7d697032eda380370b22d6a5e0014056d47dd4aa0d3d7b70d07f60e3bfa571de747f86d3faa68e43e155c39b0f668c70e18ea1b801af9e2ce81fdc26edda9d25fe8d89e3eabc8d0decc40894cc1b6cf05e8ec8303070cf53f004bd1707f26c00cb4183ae03447ecc08647d60670a143d4fc7340d11b024430ff0318fbdf80b65cd02a87ac1cbbf1b302f2e3be001445d07c734014c18d00fa63e58f507d3b50572defb4f47a7360ed7176ed0083552fede90aae4b0186e96ced00cb402fed6bab2411903710b12c949468f52ea041f80ad05e74ec408eaa5b07f523a3b57a9ffd86d03d1150134e003a1cb88a0414a4d7708086e90374fa7ab97180299902c811119d3f384027aba41ecd80246f373106804251f25b60b3e9dd8e0312b5741cd8fc72f2e180fc5243077ca527800afe9e3bb0cf367f1c58ab2f9e1dd868f8ddbe8305dea703cc1e2f1863ffe1dc01bd6ffdd254ee8e282a00fa8aa5952807a9bc81ad06808ca0d16e1ba0cd94bb67c090a2df6d004a7a97ff08c8ca190074e1982512ac4e7af18b589f557b748f1de0aaa01c9edcc47286560039b503753560a5c5570a25139b7f08283aecc20133d00420fd119f03a41d2cceb172b832252d9f04e4203a7160bff8da38b0775c9e021472b6fa11901f770b083c183aa0a30e017e82ea5a00fb74950ba0a4e7cf0eccdb73da72606d9a3f39408f750072c9cf0e04b071e79903dcfa6a535d3975fde980a13e0568a5f5d27680c76801d03d67371f0e58795e0294b07f6f47805f3c08a48a2fec3a403bec0174e4ce0e6c5740e2f0e18005de3d20a7a3e27d07662ab40a07280375365913c2b9de213743e3c581bdb4f9e4c07abff5e1805c15db4708f1be70807cd86cdada3a886ce26b79faa4e335406279db04e80a72dbf5aa0113ce23401bcbbd3940216776796b0952dd6dfc2940c15ef559df6e1901746279d000e8aa968f9503b350ee5e05680fcbe758f801d4706753a31f408d6ce15d03eba859c38189f6d310207591ac05240e8503abcb8c062a742bf5ddaf036cba6f01a6829db9036bb1e77707d6fbc58d03dcc7d4b6d0c512761abd06d6627666b506b8a03b02ca63f4e38016f347a4e9d4405c5b355a7f0a20a7cb3d07088cbea2839ff34b01d651cbdc01cbd91380127fb7fb0e58013f3ac094549bf6d9f7b81f0b204116ae5e033efbe880ade73f8022329f8e1dd8ac1ebd3830b595abb60a90593d3bb0267c797780525a00b4d27a52677bb25b8658a9a5b8e1e1dd016e4ac66da18be0e23b07667c9fef3b20a6f7d601aa4fefd09188e6c2819563b4039053653d74605ff99d3bc0ba1839b0773c7c010a56381753018d863f07e6b8b3b8ad1a982437d60e4897bce3c046a51d72ae80bcb4fe151d2d7f7340d1670e8832f970c005065e74baa1df7440d0809783464e1b0e30aeac4dabeb4dace8c93180511959747ae1e7a223db8d2cfcf871b4d913d091cc7740ca88ba5b02748e6f153b2033c7b7030c815f80ee9cfe8804e455e017be5ab30b94aa7d22c527f71d9865c062647b1eb9dd01b474d8e9dc017baf7a29aa2fdcdd3be0a8dbd0015a7b0e90a6b3d4be15408d635db45db12db700e578ea80c5c80cd06164676b007b5aa1b32f40498b2307a69393b903abfe8a9e2b7432d6629c6b80c1ba23a091fd04e04c40e8761cd8fe8b657cac01eef43707f68e47b5874e60dafe6d05e8b9976f0798d6aacb50be9c4800ed709539e017086ea1539c4f0ee41e9c386063a809e0e6afc82e082efcac79b4afdacad5d97817902b5c32466c60786c3bc0967a06b8d73a0128eec2f2d3d5805b44b68077e8a52cce4272e68031b7ebc0fab6d171603dd75839201dccbb037aae7060e5783e7260ed313639ed64b932d69ba6ab8e74e331ba03f4a483a680a14224ae009a3dfe5e016ad3897e4126ce60f725d5c04a6ab13de59cded056c9b30346e55a80be6588757c4f2b797080fff452406bb18903d29eb51de0a951397464f7f6d681b558b60b603f3b6ab51cd8572c42b5d89ebeb643ac25d021f8d39500ed31bf73c0da74e0801b501b0e307b0a80823867a903e272160e68427f84cadd5f3a60d1dc71c0b6e0214087f2e2a100bab0fdea005df8ecc03e9b5d03fa56fdd1fac581552ef25f50fdd5a3037bc7551f20d369b5145074e90740fb1ead030758d2eaa8988eea260e30f2d44092e47bb57a4a9b36d4519e93690c5012d1c71d01bef2b874608ff83bd8068bce2f1ce0dafb75608f1c325e0ab28a864ec78169edcdd001256d39607f6e2480cab13b306b4046f29e0313cbcb1307ec9b0e1cb048fc766056ce577040e6c9a503568da70e4caf4fa70e4ce5a40f0e08f6f97160954bb62fb5cad91d98859f680f8d3ec0578d670072aa4476bd6be1a7d1c3f15c8097beb701a9ce376c00dad1b45c6a15d099c40ca00dff8fa580ae251a3a2058d064ac5b2869669e3940c60e00caddf1dc16a072cf2d00dbe8d1212575a574d77180fb87f628947367a57778c4ff0d00a75bb4090e48b4f02ca0fba22f1c9832b87b7760e2f07cef80ae5c38404bd1a6852e29cf8e1c306ebf007d2c033b4b5c03dc72fe0bc5900407d651ef6f0eacb6173980d0ea90aa1b2441737aaee082ad601bba15c0747abe74c0041c3bb077b4d41e8a307bdd75c0b660cb01fb7363072cf0f452f6c5a2a0a2278ac65e39b09ebbbd74807dfaee8045e22320957fbd09901db47a73405df4955c9bf55d01ed134e1c5867679f0eace83b126d8d978524489a6ee9bf40f3f7570eacb31b4d07146c474031025307d81f4307ec256d1f31c14d8203eb86e8ca814d389609ab06d6fbf9f691d89ab0e7801b7253073899960e727b645b304c7c1b62db3bdbec12a6cabf4af52d455709dcb3990212cd843b0ef09e3f01d451d12340fb0d96b7b8028cdbc75d070c5393d32ab100a91727002516d88c0518b7d9d2018aed0aa05c9db77b02b283560e484ab406486db52e05ace746ebc801255539940ed782056b60fd12bf39c07d4c6dcbfa5a392c35560518a6e9b703abcb691ba06db0f85e00a1cb5e1c50fd0140c7a172157d20299c392076e3ca016aab0068e73d9d0b481cd4a6ba8b82b15f02a9f15b07a8cf3f01e46379ea8077e8115d5b95aa1c4abcd99e39b04772b5694a7b34ee1d709d69d701e9b43b0eac2e6dd54547215fe60eec1753bd23e728f563268068479253658038dd38c0cac91d30bd4a82e464fa8a0568c271d701be4f89a5acadc58d038c89b903f6a29f1c58ef3f440eacb68b230718f0bb0e0626fc5e0e7aaef5ec00af75e2801b0dbe1d58d19f560eace72626da550608b6c03f00a976df560eec2b7bdb5fe0866a0274dac78e425680cad945d6c5369d03dbb5fda249eed2f6548079eef5c201f6c7ab0332926f1fb18eba7b71602a383f06683bbfe80848d6f700ca08dac9059064bb7ab306b447e600dbe10ca00dbb7c2480d16b69bd8bbeacad900f05a4c76600194676015b0dac1cd1a703ab6dd275609d1d6f1f21bfe599033c46df0005e89eaa4dfb8865113960ecef3a3073e3b1e38097de01061c67582e05e4eeb871605d99b41d704efcd6018769470ee8a86780a208a22f079c8d5c39206c3e16d000ea3be0a53f805811bb3307d8c91b01fa65f5e48039ea0fa033ab17920fe5fa65d5e85935c2de3b205542907301bae1fac501abc6c481bd6323a0dc831ff70274d4e1d40121786f0ec8b9b374c0a84c011aa6911e5186f63871c0c6d0a180c26f670e880c7d71c07540370e3833f2e4006fcf16d867d3d881d5c53283d5c054cee7ad030af62140cfe59f0e4c2c132f07626987486ac00af8cf8115fdc13fcbf088fcb3d84179cf0173d4f6b3d4c5db837e69bd3ac020c91c585d2cbf43b1cda96289af8aedc59a9646b2d8dea3d9fe04688a0e5d808eaa58bac26a370a33303902685a6bf71c9825fdfdecc05e7a65ed31a882bd6ca83f0850f4591bd054aae3b980ecd33b07e842eae2f93fec36824a7bc8dd5108e828c28303eb9778eec01ee9e81112c545972307a4f45f3ab072acf58eaef24aa602d2b8cf0eb0d8f6005c5b15b513076ca3ab1cd2c9766f756504528e7ce0806c165f0e78e40aa0eceadd7b0105b6f92fb45c797080c3ec18204f6f3275c08de30d07f82efa0e7043cd1c609fb61cd8579637005d539d9c3a40d65f1ca0727605d085d9a103a6a41307d6a6e9b103eb8663555f41f1f189034cfc5307f6c893eaa228f9fcc501f3cbd88155ffe1cb0149eef70598f72f52073844761db0dda247329d57ff7660b56d1f3be0989a8a2ee3ea7e0bfad6d90d0734d08f03abedf31b001f7df47ae680ec2f970e88b5fe7580e7fb0340faa4903c3ab071bbdf76605ff9be75c0eeec990386d8b503847fe880728c1db09eeb08e89ac85307687e2f29a2ddfe71c099d5030726748bc80109fc7a0e887679774020f99e0353f48fdbcf62b11d3a201a6afbd9cc7a6ee100afb5b5c7d0ef68b78b468b2a4d8f55bf6f8be6a1ae9a8c768e005228cd18302062e6b607e0786988830396e6fb00c4216aeb2bf21910b25a65a1b1468ee60eb808ee02a00d99ecde01abc617404be76fa70272213d0094c6c9a2e46b40399e1cb0293c7280d7690350f29bf602c001c3a8a382110b171177b14d6d839c0ea5d7439a3b20484f45975edfa5e7e4c80c962caaf05c37e1fec801e2903a60129f0030ad43632820a75be2c07c288b95032bc7cf0f408a3edf38b026fc3870800b297760829bee3bb082256a645dc0369a38e0fcfef6172674573d076c1c3e0394ab33da11b06e18adfd1792d3b1037b473702e8c8aee551ac01abc613071c53fb74c03e5006d0b57743f5be7255e46b0756d2f8c601fe20c9876e77b96d3b6002be1490b7e7d381894376e08097326e4be54028e081031b95f71d074c9e6a31d9da8d47072465f677c815ae2694b62cfc1dd684a3f585838e813307d6a676f9400de8b92de07a825f07587ddb975ac1d6530768cb770728c73b07e8421b2f554221ae53bf05a86fc76780dc9a30b25c2615d0b6f1dc01cbd90640f1416f2674b12e96882ce341e1897c225c7bb107b7588ecc629bc8078f62ec8e88fe838096913d80324fda1d761590dff21ad051cef20c205767f6eb80cdd8dc0156df254057d6ad260e88513c15d03d9a85035317c77f0eac722cefb7f983f2b9031b2fb807e3ad054bbf78e685682a405d8a370734909a90bb05c3cfc6818da8bb1f01c4e1d97f819cc60b0774f61740fb84795300f9b0fb818a6d62a386bea29c08ecbd568000dd37073608934f07ace77e1dd01eaa9cae457cd80274f2c2010d347640c1d4ea4a7cb5df7580cb64cf01057b73807c481ca4c7089e8c7d97e73677c05e92e45459349fe60e68f5dc81d5c54e5fd700d3fad2019dad926a296a573bd780344e570e18738903fa253820c4eac80149bbd70e2898d705cdbfb877c00a67e3000bc5ea927896f7df0050328fcb2140a717a21e405341fb08a097bed857129d3c882cfb4b0db00c2e0132ae3a5d808e63cf04d85d0987af00ad6f71116cb314e1634bdce768c9196b80177fe4c03e6b7772d5c0e4e3f101a0bcb49da5039c3b1d0708dd374043dd6e1ead3638991b568503568d5f0eac3d1e4e015a355adef31a98acc70f0eb00bf5590d644b81500342344f1d306e7f1ca03f5a0039cb67890326e06f07788c0e1cb0a0b975602fbd558b69777679e4c09af0e6d901ea73fb088eee1c906be7ecdd01e5b87780ed20f92848aafab07660a2fd2081517edcf1af031cbbcf0e5858250e10febe03f2177e3ba0d55f1cd867f3ed4b59136edfc1c27bea00d3493226756149456a803bfdc10151d05e39f9f9070ed063ef0ed8b2d975c0c2bbed0083b5e780eaaf1c9868471f0ed8bddfbe14594f1de076090ed8589e39b0ea0f4c8dfb9de4215a00fc8a835b00fbfbd1f701403ae8cdc67eea7bc0373b0ed8be3e039012227a4a1c70ee6417d096e53870801e1b0294f9892ddfd4c3e73e6600dd9219fe1c30907f013a3164f79dd4003fee167056f4d1017ecb0f0714ec0ba09011bb75a70288c37ae68035e1d8c1d06a7b0218e2dcd93914d08c7cec0087ea054006499109607d7e1c3a60093874803141dfbafd91361d1018fbe08094763f0e98d53b006dfac5170ef07dae1cb0289a38c02c96c0643a2272efc0cab1787060e3257a77802ed43b943ec9d2c0d58015dfbe0326f1ed2338991207a8f18e03b4e51540eb28bbb2ae02ac09a3270764e3bb7340b8d8be036b310ed5a45bc576e080263c758062eb39606af4477410e5d701058b1da0c7b6bf60d558386071367140ab771db058f5ead384d1b903d662630756d21b6b64bfb33e6a1d0386babe7300f074c95380c4e12e38b077443940d19496d9a7d866c2bab5a2670577a347af5301b9087601523976436e6514ebdabb7301edabff3a609a3f0570d0313a281cd0734d07145d4059cea24c80da92252073a564e9d66bc0765c0cd06572fd4f075c19a3774829ad0e1d105e191c304ca70ef0e57c0394f6bdfd22a03dad73078cec3f80acadbb4f072cbc5f01caef50a81c329daee85b378cecbea41a104cba748058fe394027af01baaa65111c30673f39c09535738032d838601da5afe4dad352f5730da01d076c2cef3a30094a0a074c273d80144a6bea8049ebc601367fea80a455b70eb81afecf0117f56c5f8a177fc701b643ec007190584ac32ce60e08affc75608d7c77e1c0348c657bad012be00707c4b2e40e8841db7e96844223075c1567d35a95190c877b0be0ce9d04e03b9ab1038e76fd01e8cae8eb0aa090e64b332573cfd2ccfe6d95b4caaccff4cb81b5d8df042017b45d985c788eaae85eefc086895e0e1db05b7d07d0d22b3f03c8ed12cd1c60d2be0064b214270ef84503a0b19fee39b05f744e01cabc70f0e480d1b0768071a506d2eedbfdc60123eac2813d32dc05909b21fca5028aa9d973601234fc70c010dbfe0283e41a906208c42307d8416b07a81cb598ac8bf8d141622fdd02c23d7e003979bfee2e0514d8b671c041fab1037298351d30cd2f1d60af7f3b601750b565a5153852956f17563f0e70666c1c10c39a3ac062db71c024de76c0047ce3808339af0e28e9970316898980a98b91659baf015bad5e0e49b2d74546efa103d6a6fe59add5d70e58587d3820e4fdce01b6f69b03268ba9033a7bfb526c98270728692bd836bd168e99b2451542f303f0a0c507008904a3cb810353396ca317eeed2112b2fa2ee6c6da819583e15128cf44343e71409c52d3813db2b90728f4edfaca0173e5394057713cce0478e9d5d4013b34d4a520cb5998ec3a2075ebc201e5280410fef98e032b985d5d5314dbc88c0840ae9bc86e512db6b9b2de9e1ca0a5860eaca45fbf001d67e8040175e5b10393b1e9b70322aa5280f249b72207c4393e39c0c65513f6946476e1807887d8014efbbe032cd89603ec8f570027a8a2a34f0179031b0eacc57eda0e387edc77c07c3b766073d4d1da0171d2db47881d6d3a60bcdc3aa0a423800e17dba5a93560b9b27080d973ecc0fac572a7d700a7caa103643d7380b778e6002feda503ac9c0b07e8b1b903a61346b696e6a179e18077ec3840f5bd08e870e0ad036e657a7780057be580b5e9b503d215be39e03469e180cdc799032b58efd80195cb1c308b49b4fdfe5bd53666f26cbd3860463e734066c13d07a43cec39a0a33207ec68260ea87eee80da361cb089f1eac086d84fcb0195fb7580d0a9813c739cb4944ec834960eac72eda90362148f1c10d0bee3c0c66d3377406d530756dbe71f07dcd679ea00c1bd7460d54f12079c09d873801f3738400abf1cd01edb72d01e524a29b3faa4ef00134ea352a653e3d2019ede1b07043f2d1c903deac701a7d1570e70cb751cb09a8f1ce0f8df02bc924d07982c5bc0681838c030da96837c7d1307345070c0d680541f59bd429a383015dcf874408bfd09e838e58903a2e52e1cf0d27b075839230768982f0778e02307d8a70307b4c7ae039474cb010165570ea8fe8f03564912cb9c95a7dd575003e250761c98ba086d07f69579ea800692ea93172e3971408e7f7f4431dffe59f982470e58ab470e18733307b458e100cfd59903ccc0ed2f88b65d3a40a4560e1029afade6b9c40176a12671053de70e086a6d8d1d103371ec800bd84e1cb04cf874808d7be880f1923b407d7e38401cfe1ca03f4e1da03fb6ef20c8267380875532a6add678e30013ffde41cb807f4511224b07f81caf1c1021f2ed0013ffda01d5df3e42df7ad165d16f0b8645bf7240cf79bf689a0fa37554e2b24f4bcd59ce94f59fbc1493b25665b1cb578cd60fe53ab05c0c8cd6cfa3f54bb91829d712a3f57bfd8f8fd1fab3fe5febfa3fbfea3f1f35f9aefffcd46fded4ef29bff55bbfbffcd0df68bd335aefd66fdeabff94ffd81fad0fca6eae9f2aff1c9552325a9f94cd395a9f8dd6e7a3f545fde7b26c8b72bd5b0e90fa4363fdb919ad27f5d7a7fff9f544152c7f3cabffc47561e6a5c556ffc9ea5fda4b66f5cf567af66eb45ed4f0bb7e24ad79f97863b46e8ed6add1ba5dd73da9dff65bffa0335a7747ebde68ddaf49f9fe41fd9e61fd9ea49cc34acd16a2b8aecbb47ef6517f9eca0564b9522da5b0ec5eb558f9a77ca4a8bba3aa4288ee43b42cffaeffbd0ad143fd67f5cfff5ad6df1ad7a54dff69f61ff5d46bfd8f1f75ba95bcfa65881e435416e3b9febf65e1e7a56117a2d710bd85e85d2d56febefcee47fd92f8ffef1f544c883ed57965b1f21055c52d1b2544a584ed97e3a56eac926c425496a62cdc5f887642b41ba2bd10953f38a81babfcf351b769524badcb6525137513affe69a3b4feaec1445258feac94c8af72991ea2521c6fcbb9ae5423a566ad7f7c1ea28b105d86e82a44d73519d5d219ff3fe4f2e91fb9f43aff975c66b53059affcfcf39e753d90ac4d66b55c8eff91cb50f39b108d4354fe3da99b621aa259dda9e50bcb86baade5b2fcc15d8816f5fbcb7f34eab7fdd47259ca74d9d3adff94cb6fc965fb1fb9b4160b75654febdf97c2d7a9e5af63c2578b6657ffdef2fa4f5c572dd47f5c47985c4ed5f8a944b62c5b59ec2244fd100dea461e863894f36188e31027f548f091fcbf94cbaae3e3f41fe1f8ab9bf5bbfa1367b558b4439c87b8a86b5b0fe8f83ec4cb4a8ce265882bc10af143fdc64d3da0979236ffb3a9db74a506f2ae5dfd2b97217e0cb129bf7e889fad1d43fc528b4e5af3bb10bfd67fbf551210bfd43d176b543cd50dfd56ff994a41bab25cd57fafebfebbd120fcd520b1f2b85cbed6a3d17a71522bc5273dc28f2b5188df43fc11e2cff29de5a095e2297b711de2af107f9bba2abbb67ec4e5b27a4f69d59685ac35dc54a2639f2b5fbba93b6553b7db5668ea4e39adc66dfc5b4b433554ea4ee16f0d9e715dda1be43bfeab9f5a4a0b547d61fd5b77caa616af72e4975fdca9bfbb5b77e85e88f7ebb7a5b5be2c427c10e2c3bafc730de655dd92ff23b98c8f6ae1dbb86aa99bb5ecf5e3109f94221be2b2ac67755b8c437c5ecbe5452dbe495d81cbfa1f7fd6f7b596cd25133f12beabba2df27fe5b56c8bd294296d95fa1fa5448eaabfa3b2a7cbafdc84785277f034c4654364219e87f8b6d213f15d2d978b5a2e1b75e3ba5caeeb3ef63fb18a114b2e379546afaa56d43cd49f6856caa09a225def4e6a955fd6ba551ab0e56c1be28ec655d09fb2e2dd7a06bfa8e432eed9ff0d7139a2069510c4c390844a5e93282471b93c0d491a92ac7e7f52abd5207df3f68f6eb6315c7647a6e1edaa2ea965ebb4fe93d415376d67e3c7feb6c1b3ae5bbb2ce15f6d111d96d66e2d9aa79245ef0efbc777fdbf4eed67550f264548ee43b20cc9aa9eb8ca923f84e4312436dbf82453fedff3faa3ff0bb94c9eeb32bd84e4551dfc1d92378dbc7148de43f251362bd344f259c96eb20ec957d513c9ff3d57baa2fa9108e6aa7c560ddf24af1beb27249bbaedeed5ebd5741692df9094bfd9a90bb0527f97ed528ee37648f66a2df55077957552fe8fd86df4c84a64fbefba1847d5308b4c2db5ca059d755efdf755a563ca692139301d534b585177b0957c53ff3eaa2def4d65c954a27658ca56488e42725c1bbb655f9e84e4b412cae42c24e7f5531721b9ac8a5d4dee93bae31393cb5adf9888fca75c562ad386dcf7767eafa6b5af5a5e4d9896b5a47efb9f9ad445457cb35ae92efff9816b8755b9ec363de2eab3fe93d733e15d48ae4332aa0d9815465d5276fd4d2d036e8fc6ff53b99c541548a62199d51239af9456725b8b4259be45a9bdea823642d20c49d997ed5a5b2c6c460e49a72a77d2fd4f89fcf7cf8f4cc9e5bf72c9388e6d8ad7545e7dba17927e48066549aace484afba694a1496551a521a45148e37a6cd42a2dc548959e5e79ddd4e2f93fd27955cb655a9b56f6c55a49547a22abdf705e897e35332ceb52994166d698c94a16d2b456ae95a20a6956af66eeea01bc0a695e3f58d45d35acf44d5aad54427a5f757935bcb34a83a64bad4292da1cccff199626284b4dbbffcae5b8d6dcbfffd5a4b5c5697fab8412c7ff52c3ff34c58fcc839ffffc5ff56c99ec86b4accb43481f435a56e432a4cff530de0be94b2d97c1e55236c3ff422ed3d7da949c54baaa148bf42da4e5df1f21fd0ce93aa45f212d3be0a71e3a7721dd98beacda25fd0de95f48772a794a77eb8afd6b27f954ae896fdb2eae187c2554f6f75e356ba7fb213d08e961488f427a5c97e7a4320ad35204cf427a5e0bc1456d96c5b5f5d9f8c77eddcaf73f23e1bbfe87cd036f5a90b1fc2a6d29e93f9b1067faf3f88f6b22c5d24dcbb78dca75b4ad91437a11d2b2cfae427a1dd251fd48d926e3ba2ee5ffba09e9a45ebda6219dd62f31fbd216c8e607486bbbf0492db371ed25498db5761c57ba39feacf56b2a833ba825ff634e9084fdbb9a710b3b9101e36b2919b5e9acd244e9bceee5db90967f2f42daa8d47cdaac7fb3f0759becf2ffa55c5695496b4d19956ddd0a693ba4a5662a87752fa4fd900e423a0c59085964a259b55116872c09591ab22c6479c80a1991ab7f8c21579f56f3ab7a047b7b0529c8d21ee884ec3e64cb90ad42f610b2c7903d85ec39642f217b65999fbd85ec3d64e53fca4546ab5e671cfce3b5d948c379a3ffb85c6a6d6eabec7555d36cad3e2bea1f245af498f29bd54eabcce5b2febd9536aad7d1f54451963cfb0a59f9b69f906d6a5f5bf98f4a1186ec2f643b21db0dd95e658464fbf5df07ffac7bcc440bf5f2d68de3cd3f96df46ade7d6545a2fde67924b97aa7ffffc3b47f9faf25bef5f4971847f1670b51b242e1bfc306447213b0ed949c84e437616b2f3905d84ecb29a49b22b974be9fbffb5beac24a36cdfeb908d4256cadc4dc826219b866c16b279c86e437617b245c81a216b5685cb5a216b87ac14a66ec87a21eb876c503b8f8eeaba0deb5eb4b6780a790879542d9ef238e449adbd36a66caa5e492bcf4bc8cbff9b853c0f7911f2fb902f43be0af943c81f435ebee139e42f217f0df95bc8dfab02e41f21ff0cf9ba6ed6dce432e45f21374bb77cdb4ffdda12fed63ea371c8ff2aef4965a196ffae2cd790ef867c2fe4665f6eeafebe0bf941c80feb7f1ce132cc8feb1f9fd4135c14f2d3909fd59f380ff945358af2cb905f85fc1a7d998f425e7ee226e4939097a6d16fdd08b390cfeb92df568ba4bc7c7ff9ef46c89b55376707485eb5902a5fd50a797b6b6de71dfe6fde0d79af3206f2fe76ed980f4c0a433e0c05ea3314916cebddaa5f8ab85e99fd86a29eb24b9dc292e027146928b20a1679288a50dc8762198a5528fe0f6fffb1e430ce046aa20f93fb2fe4cd52de7baf9d1c49899e14e59e7e00aad4a7ff7b67797a2a140a1605020920913e93370c1bc3d17869b818de3ff43255332618fe0f2fd7ff1dbd54102be8438c0823c6b86324180f0c05b78258fdfac1a861d4311a184d8c16461ba383d1c5e8a90dd63b677c8d4d6a05559b01c6f07792d23535d4f4c6186a3ed3f4e86f31667f963663ae99b5b1c05862ac30d6181b0cd56087b1c7c86064317218790cb54337bd344611a394daf0deea0c6094d36dd00219464521a53e6946552384996ac4a6683bb379d0ea94a9ed91985f2a7bd532ae79c6bca4bd65300dadaf98a95dda549fd46473fcb2e010f3f6b79da68da93a77313d4c5f6f98a9d5444cd526c28c31ef9809e6434b99a66aaf192be65b4b9ca63a065d2dd19a35ad519975cc8626a566532f88d9fada6e30dbe9239df4bb8bd9fb9e1c0d89a94d9898833f0dd51c7e793de62815799b98e3afc90c73a2d151462984e9ca9f3b9a659bdaee8b39ff49e46a2e0bcc25a67a442dce06738ba9064af9b899f9a9655f3964f1c3cbd3cf18fc1fd14b338b99c3cc631630d52e9630cb9815cc2a16588275c03a629db0ce58172c03cbc4b2b0aeda087f7ca4ae85bcd648ac9b3eb84a4c51bb68d958a967c27235fea9236b79588aec455f194e092efa292bd0bf5aaa7d84a5dadcb112ac07d613eb85f5c6fa60d5b0ea7ac5ad0696fa6ea526eb3d563b15409b8a0668bcb43a1a4d959c6a75350c564fdbe1b56946b5ec6b71de1afc441105d5106b942a3d2fad505b63ac89de066b8a35c39aa7c289ea536d585da397952a5ed60a6b9d7e6fb0b6583b2cd579261d228b95c3523352cd8a5825ac32d6d7cd73484fa3eaadca157d3eafc2f5c0f5a87d04d713d7f39ff87ebda412f095aba14fd7d54c554c87ab76de70bdeac68aa15f6fe9bf36d77485af8aa495529393eac14bedea26573f6d19700db9467afad798abea3335365d137d3cae0faecfb4b1fae9c5f5cdf5c3b5c655356e706d6a027f6d69c1fadafef917fe7ff072f79fe1e5b5c35581d8e3aac01d701d721d711d73554b36e53ae33ae7bae0bae4bae2aa5661c35581ab9660cf35c3359b1a14952095d3aba6b0e4aa2ef25c0b5c8b5c4b5ccb5c2b5cab29236b71839b68e5ee76d0776e476e276e676e176e0637939bc5edca4d2156859bcdcde1e672f3b8f9dc02bdbbb7905bc42de676d7964e852e47f560c2edc1edc9edc5edcdeda3a1bad5f4106a6f6e756e6ac4263705409b5b478b2eb76e6a1852fdf4b4d87aeb731b701b721b711b739b709ba67dce34bedee6dc16dc96dc56dcd6dc36dcb6dcd4106a0aea5745d467dc72dcf2dc0adc8adc4adccadcd414aad8600bf601fb887dc23e6b7b93966bb39a48db176c03dbc4b6b0153153f2cc3f8acb13fbf655f035ea28045294d5b6b11d6c17dbc3f6b103ec103bc28ef5644fea913b76a235456b80fdc056775ed86fec8fb60ddb35ec3a7623fd34355adbaacf367607bb8bddc3ee63ab0787d82345e3d325523d8c7f047ba585f2ff0ff0524b51f6047b8a3dc356702fb097d82b6c05f1067b8bbdc3de63ab15cc62e7b0f3d805ec227609bb8c5d49a5a8fd1f9ed9551c7004e78073c439e19c712e38068e8963e15c715276ecd8380e8e8be3e1f838014e8813e1c438779c04e781f3c479e1bc713e38359cba4611a781d3c469e1b471148df4343572ba294ddae3f470fa389a34e20c35a9734638639c09ce146786a31a2f7096382b9c75cae3d4e81b9c2dce0e473da586c8e2e470f25a5c760a38459c124e19a78253c50557700fb847dc13ee19f7826be09ab816ee15f7866be33ab82eae87ebe306fa60bb216e94ea3ae7d459b0d0b8e8c6b877dc4483ea3e5282a448a9f1a7bdb9eaf3d5811eb86fdc0f6e0db78edbc06de2b670dbfaac2a41d0ede80b2591bb5ddc1e6e1f77803bc4553f8d7127b853dc99c66f7514ddb996acd485b3c65de02ad856b8ea7a83bbc5dde1ee7115d151c45b8df855f5be7ae1fda7f79c7e77fe237ae9e670f3b805dc226e09b78c5bc1ade281277807bc23de09ef8c77c133f04c3c0bef8a77d338e7d91adb149e69c9af89e7e0b9781e9e8f17e08578115e8c77c74b342e1e4dbd010abdbc07de13ef85f7c6fbe0d5f0ea780d3cd5490bafad49a9d7c1ebe2f5f0fa7803bca1e62cde086f8c37c19be2cdb468e1a54e1a6fa151df53172bbc35de066f9bb6dfe1edf1d48859bc1c5e1eaf8057c42be195f12a78557cf005ff807fc43fe19ff12f5a83f10d7c13dfc2bfe2dff06d6dbdf21d7c17dfc3f7f103fc103fc28ff1eff809fe03ff89ffc27fe37ff06bf8752d73fb0dfc267e4ba3a3dfc6ef68deeaabde7af87dfc81c2aa1fa354600cb5f7cf1fa516838b3e1efe187f823fc59fe12bc054274bfc15fe1a5fb54c97c5dfe1eff133f859fc1c7e1ebf805fc42fe197f12bf8556d7209e05020108203c191e0447026b81018042681457025b81128c25cd3672370522c5ca5a2c2f56727fae2e5fee782ffbf8e97814be011f8040141481011c404778284e041a0c07a11bc093e04353df9a04ed0206812b408da041d82aedefea047d02718100c0954b331c184604a302398132c089604abb48735c186403db223d8136408b2046abdf2046abd8a042582324185a04a08a1101e088f8427c233e185d02034092dc2ab6658e18dd02674085d428fd0270c0843c2883026bc1326840fc227e14b13154502c337e187b04658276c1036095b846dc20e61571f9bb047a87a1e100e09478463c209e19450290d25c239e1827049b8225c136e08b7843bc23da17a364b9823cc13aa818a84aa7d99b04258254253e848880e4447a213d199e8a2173032343389beb107a94921b2b4633a52376f44369143e41279443e51401412454431d19d28217a103d895e446fa20f518da84ed4206a12b588da441da2ae3e218a64463da23ed180684834221a134d88a64433a239d1826849b44ae557bea6d654215bfe2f5eaeff4bbc8cd6441b8d97915a9a1d915ab50c5196284794272a68ec898a44257d28a3325185a84a0cb1101f888fc427e233f185d82036892de22bf18dd82676885d628fd8270e8843e2883826be1327c40fe227f18bf84dfc21ae11d7891bc44de216719bb843dc25ee11f78907c443e211f19878423c259e11cf8917c44be215f19a7843bc25de11ef8933c459e21c719eb8405c242e1197892bc455d4aedf0545999462713fa1b8aad2e11471ba9b287547691e4af7bfdb28c1eeee72f7b8fbdc03ee21f7887b8c6267f704c55b153951eaf3fd8de277f71af73af706f726f7164ad9bf7750eac5bdc7bdcf7dc07dc87dc47d8c521dee53ee3394eca1043845ecadd7975ea2053835fa9aa336f8a3a8e67d8b9295f54f199448aae478a52fde0bdc8ba813722f6b8ded5e4171a104122139901c494e2467920b894162ea3399582457929bd68d129bc4217149d4b54f1290842411494c722749481e24ea91d492a0e44b6db59dfccb95ffb57d7ef1f23fe2e3c99be4435223a99334489a242d92364987a44bd223e9930c488624239231c984644a322399932c4896242b9235c986644bb223d9936448b22439923c4981a448522229935448aa3ce0213c0e3c8e3c4e3cce3c2e3c0c1e260f8bc795c78d87cdc3e1e1f2f078f83c021e218f8847cce3ce23e1f1e0f1e4f1e2f1e6f1e151e351e7d1e0d1e4d1e2d1e6d1e1d1d552e3a3c7a3cf63c063c863c463cc63c263ca63c663ce63c163c963c563cd63c343b5dff1d8f3c8f0c8f2c8f1c8f328f028f228f128f3a8f0a8f284a7f03cf03cf23c7199f23cf3bcf034789a3c2d2d0b3daf3c6f3c6d9e0e4f97a7c7d3e719f00c79463c639e77cd889f09cf879685bccdd7f8cff3f9e7e67ebe78be797e78d678d67936783679b678b67976787679f678f6790e780e798e788e794e782a60663ce73c173c973cd5106b9e1b9e5b9e3b6df57bee7966786679e678e67916781679967896792ab0abbce025bc0e5a917d1d5377f12f4ce7cfcffe35e3afff4b3bd14b8d7de675e165f0327959bcaebc6ebc6c5e0e2f9797c7cbe715f00a7945bc625e775e09af07af27af17af37af0faf1aaf3aaf06af26af16af36af0eaf2eaf1eaf3eaf01af21af11af31af09af29af19af39af05af25af15af35af0daf2daf1daf3daf8cd62a5e595e395e795e055e455e255e655e155e55def016de07de47de27de67de17de066f93b7c5fbcafbc6dbe6edf076797bbc7dde01ef9077c43be67de79df07ef07ef27ef17ef3fef0aef1aef36ef06ef26ef16ef3eef0eef2eef1eef31ef01ef21ef11ef39ef09ef29ef19ef35ef05ef25ef15ef3def0def2def1def3cef0cef2cef1cef32ef02ef22ef12ef3aef0aef2818ff039f0396a295c29dad7f81baecae7a4eda6ffc4a77dce7c2e7c0c3e261ff5ef95cf8d8fcdc7e1e3f2f1f8f87c023ea1b6a87c223e319f3b9f84cf83cf93cf8bcf9bcf874f8d4f9d4f834f934f8b4f9b4f874f974f8f8f7a70c067c867c467cc67c267ca67a6f1f233e7b348431abe8ea27efa39a61ed4f97fe9eff92cf9acf8acf96cf86cf9ecf8ecf964f864f9e4f8e4f914f814f994f894f954f854a9414da81da81da99da89da95da819d44c6a16b52b87a196636a376a3635879a4bcda3e6530ba885d4226a31b53bb584da83da93da8bda9bda875a8d5a9d5a835a935a8b5a9b5a875a975a8f5a5fd3cb9aea76486d446d4c6d426d4a6d466d4e6d416d496d456d4d6d436d4b6d476d4f2d432d4b2d472d4fad40ad48ad44adacc47f6d48aa55a855a9435da81fa81fa99fa89fa95fa81bd44dea16f52bf51b759bba43dda5ee51f7a907d443ea11f598fa9d7a42fd41fd49fd45fd4dfd43bd46bd4ebd41bd49bd45bd4dbd43bd4bbd47bd4f7d407d487d447d4c7d929aaccdd40cfc1701a8e9657daa89537da6a58efa9cfa82fa92fa8afa9afa86fa96fa8efa9e7a469b90eb59ea39ea79ea05ea45ea25ea656dbaaa57a857694043681c681cb5bba471a271a671a161d030695834ae346e346c1a0e0d978647c3a711601eb50db811a681205f0fb3955effc5aafe97f1448d88464ce34e23a1f1a0a1e07ed178d3f8d0a8d1a8d368d068d268d168d3e8d0e8d2e8d1e8d318d018d250708f694c684c69cc68cc692cf44a3596345634d6343634b6347634f6343234b2347234f2340a348a344adac6d128d3a8d0a8d284a6d03cd03c6a3ede3cd13c6b2750f342d3a069d2b4685e69de68da34550397a647d3a719d00c694634639a779a09cd07cd27cd17cd37cd0fcd1acd3acd06cd26cd16cdd4dfd8ecd0ecd2ecd1ecd31cd01cd21cd11cd39cd09cd29cd19cd35cd05cd25c6965a8a920d9d0dcd254cfee69aa3b599a399a799a059a459a259a659a159a555ad0125a075a475a275a675a175a062d939645eb4aeb46cbe67a4f9dcefd6f0c252d270d1011ad86b75c5a5e6a0158d0f26905b4425a11ad98d69d5642eb41eba90dc6ad17ad37ad0fad1aad3aad06ad26ad16ad36ad0ead2ead1ead3ead810e8b690d698d688db549a835a135d5f8d79ad19ad352032d69ad68ad696d527d7c476bfb8baefa072f0f69b8c9f0bf8c0b6ea981f7b432b4b2b4d40cf3b40ab48ab44ab4cab42ab4aab4a12db40fb48fb44fb4cfb42fb40dda266d8bf695f68db64ddba1edd2f668fbb403da21ed482bdaed98f69d7642fb41fb49fb45fb4dfb43bb46bbae4dd9ed06ed26ed16ed36ed0eed2eed1eedbea613ed016dd560447b4c7b427b4a7b465bdd5fd05ed25ed15ed3ded0ded2ded1ded3ced0ced25683e6691768176997689769576857e94047e81ce81ce99ce89ce95ce818744c3a169dabc6cbce8d8e4dc7a1e3d2f1e8f874023a219d486bbb9d98ce9d4e42e741e74947dd79d3f9687ad9a9d1a9d369d069d269d169eb23d7e9d0e9d2e9d1e9d319d019d25137c774265ab7e84cb5767c5400ccfe88a5b6101d75b472674e674167496745674d6743674b6747674f27434735c8d1c9d329e870c44e914e894e994e854e952e7445bbc7ba07ba47ba27ba67ba17ba065d93ae45f74af746d7a6ebd075758280d7a1ebd1f5e9067443ba11dd18cb4d2548374597531a68f2f805d23b69f44cf13fc3cbee9d6e42f741f749f745f74df743b746b74e574dac49b745b74d57c1dda5dba3dba73ba03ba43ba23ba63ba13ba53ba33ba7bba0bba4bba2bba6bb49a7baa5bba3bba79ba19ba59ba39ba75ba05ba45ba25ba65ba15ba5073da177a077a477a277a677a167d033e959f4aef46edaf6dbb3e939f45c7a1e3d9f5e402fa417d18be9dde925f41ef49ef45ef4de5a5cee7de8d5e8d5e935e835e9b5e8b5e975e875e9f5e8f5e90de80de98db4c5a037a637d13687def41b90466f464f7d2fe8a9a157f4d6f436f454831dbd3dbd0cbd2cbd1cbd3cbd02bd22bd12bdb2f69cf52a5a98eb55b5f5a70f7da17fa07fa47fa27fa67fa16fd037e95b5aec138bfe35b50da51118295e6a0c30d2e0bafe8dbe4ddfa1efd2f7e8fbf403fa21fd887e4cff4e3fa1ffa0af5abee8bfe97fe8d7e8d7e937e837e9b7e8b7e977e877e9f7e8f7e90f340dea0fe98fe88fe94fe84fe9cfe8cfe92fe82fe9afb459adbfa6bf49430dbf114ff6bff132f5987f3352827fc7bcfe5fc5cbbe5abb1dfd3d7d056e967e8e7e9e7e817e917e897e997e857e95010c84c181c191c189c199c18581c1c0646031b832b831b019380c5c061e039f41c0206410318819dc19240c1e0c9e0c5e0cde0c3e0c6a0cea0c1a0c9a0c5a0cda0c3a0cba0c7a0cfada3a38183018321831186b4bdb60c260ca60c660ce60c1403558315833d830d832d8694bf560cf20c320cb20c720afe3ae0705064506250665061506558630148629d51c1e35f60f4f0ccf0c2f0c0d8666ea568db48437b4185e19de18da0c1d862e438fa1cf306018328c18c60cef0c13860f864f862f866f861f86358675860d864d862d866d861d865d863d867d860386438623ed159402c3b1b60d5d1a5f3efee781bc2aa8260c150c338673860b864b862b866b861b865b863b867b861986598639867986aaab22c312c3b24e8438aba72a0cab8c60248c0e8c8e8c4e8cce8c2e8c0c4626238bd195d18d91cdc861e432f218f98c0246612a5da4490a3a41e0dff472f2af7c95ff082f4711a398d19d51c2e8a11597d193d18bd19bd187518d519d51835193518b519b51875197518f519fd180d190d188d198d1449be5475346334673460b464b462b466b461b465b463b467b4619465946394679460546454625466546154655c63016c607c647c627c6671d4d32be3036189b8c2d9d6531be32be31b6193b8c5dc61e639f71a079dc69c438641c318e19df19278c1f8c9f8c5f8cd5831fc635c675c60dc64dc62d4d38c76d8dfd8a368f3b8cbbdaec3feee938ba719ff180f190b1ba33663c613c653c633c67bc60bc64bc62bc66bc61bc65bc63bc679c619c659c639cd76eb3b182bcc8b8c4585d57185799c044981c981cb59571726272d60c7172d1894413e3a7f3a671cd139389c5e4cae4c6c466a29ab94c3c263e938049c824621233b93349983c983c99bcb4c969f266f2496350864c6a4cea4c1a4c9a4c5a4cda4c3a4cba4c7a4cfa4c065a069da8662326632613265326332673260b264b4e9b3454eaab747fe5cbc9bff0f2fe5f283d3fbc9cac98ac996c986c99ec98ec9964986499e498a8c52a3029ea433629312933a930a96a1e3a452bd153617a607a647a627a667a616a3035995a4caf4c6f4c6da60e5397a9a7c9cf543d18300d99464c63a677a609d307d32753d5db9be987694d7b0b15639dd69936983699b698b6b58eaf0328774c3b4cbb4c7b4cfb4c074c874c474cc7c8533b9da713a66aa019d339d305d325d315d335d30dd32d53f5f85e472a180a8c0cd32cd31cd33cd382f65a4d8b7a3ba725a665a615a65566301366076647662766676617668ac59acc2c665766370e5b6636338799cbcc63e6330bb4fe3e0b9945cce2743f13660f664f662f666f661f66352d0a5f4f7f492087fcbf83ed355eceeacc1acc9acc5accdacc3accbacc7accfacc06cc86cc46ccc6cc26cca6cc66cce6cc16cc96cc5215eda8c05b33db3053e0ed98ed677735910cb32cb31cb33cb302b322b312b332b30ab32a73980bf383369426af9458ee7e495ddb7fc577f77f31e0ce7f8997f323f313f333f30b7383b9c9dc627e657e636e337798bbcc756428739f79c03c641e318f99df9927cc1fcc9fcc5fccdfcc3fcc6bccebcc1bcc9bcc5bccdbcc3bccbbcc7bccfbcc07cc87cc47ccc7cc27cca7cc67cce7cc17cc97cc57ccd7cc37da8131df32df31df33cf30cf32cf31cf332f70576d8acc4bcccbcc2bccab2c60212c0edfbc139defbc38b238b138b3b868996f61b03059582cae2c6e2c6c160e0b9785c7c26711b00859442c628d286a3b177716098b078b278b178b378b0f8b1a8b3a8b068b268b168b368b0e8b2e8b9e8ea76e6d59f4590c580c598c588c594c584c59cc58cc592c582c59ac58ac596c58a8c63b167b1d27a055874b1a09f13f48a99175916191659163916751605164a1e6526651615165094b617960796479627966796169b03459a6e10ace95a5fadc345e2e6d966976f5d265e9b1f459062c439611cb98e59d65c2f2c1f2c9f2c5f2cdf2c3b296c6aaee52dfe33dad1bf0ff8a978fff0c2f9775960d964d962d966d961d965d963d967d96039643962396e3bfe481e584e594e58ce59ce582e592e58ae59ae586a59aff8ee59e65866596658e659e65816591654947215c54b332cb0acb2a2b5809ab03ab23ab13ab33ab0b2b8395c9ca6295ba89573756362b8795cbca63e5b30ad2bcd802ab9055c42a6675d75ace2a49974fd7cf60f5d092c9eac94add7fb3fa6886beaab1aab36ab06ab26ae918ec83faa9cdaac3aacbaac72a8d0a9b16d3f8a3ab0e5e5c0d580d598d588d594d584d59cd58cd592d582d59ad7418f56aaddd07ab8d0ef659a9a1b7ac76acf6ac32acb2ac72acf2ac14b4455625566556155655d6b016d6873430fefdafa4b37fa3e695f591f589f599f585b5c1da646db156f76fac6dd60e6b97b5c7dae7b8661db00e5947ac63d6f734385fdd49583f583f59bf58bf7596e6fac3bac6bacebac1baa959fcbac5bacdbac3bacbbac75ab519b01eb21eb11e6b79663d4923365abf9a0b8f5fbeef3f89ffc7ff062f0f0ad629eb19eb39eb05eb25eb156b35d50deb2deb1deb7d9a84ffcd82abb0ceb0ceb2ceb1ceb32ea4a1e36a058bac4b9ae5adcbac559b2a1bd8089b830ebfb89c34195318b339b239b139b3b9b031d8986c2c3657363736361b47eb951bb5dc055d5960e3b151df019b904dc42666734f735c466c1236aa37d5f8c5e6cde6f30f52feaa416cd9d4d8d4d934d834d9b4d8b4d974d874d9f4d8f47598a3a1fa1fb019b2511d8e35314ea3a2b4937a3361336533633367b360b364b362b366b361b3e55261b363a39a65b4e674aeea840743cd37cb26c726cfa6c0a6c8a6c4a6cc4635aeb285adb03db03db23db13debf0f5ed85adf1ff87973f7ab935d95a6cd5c58dadcdd661ebb2f5d8fa6c03cd31b621db886dccf6ce3661fbd0abb4559a93f717c1ae967dfbd2cad3568df5615b635bff6659b16db06db26db16db3edb0edb2edb1edb31db01db21de9cc637574b763b6939f1ce9fc2f5ebefe37c7f0ff3a5e4a9eed545bcb64c776a63f67a590babaaec176ce7691e6d84f5208bed9526a8d966c576cd7bf08bc93c6b9ed86ed96adea64cf36c3364b18fc25852895739bd3644cc793aab55623aa3b45b66a71cb3a786c5b615bd53decd0e1d9ba0ecc839de8149ccf92dd219dbcae4ec1c96377d47ab79277772776e734536798c2a646cffd321875c00bbb8b4e30da19ec4c7616bb2bbb5b9af959fe0bd8d9d99cd2d43063feab43b44f13c42cbda93b879dcb4e8de8b30bd885e958757611bb98dd9d5df24debf9cbc5d929989fec5eecdeec3eec6aecea3a3777d760d764d762d766d761d765d763a7b8e181dde0a7431c7e55091e3f2450d00ed98dd88dd94dd84dd9cdd8cdd92dd8a93559e973bb5bb3dba4659ebe364505db1673fe4d5e63b763b7d7f902bb4cca88bf39e3a9116a97d52446697ebb1cbbbc8e29db15f4f6ed8a5a8ed731c80a4eb5c26576959fbff10b989f26cc58bfe48aff0e2f77d534a5e11b63f7cfd6c29ed45295d7a8a9ab6e58bf24ba8776e768ca74fe79ee5138979613eaa6a5a1763fdd6d9e929feaaf48c3360d86b5d84b4af69e7fe1b1a727fb03fbe32fd32f4d8fda9fd82b6131cbfec2def8c3cbbdf9af944547ad726ae4fba728d45f71a954875094e9a219a57a4a27e83cfe9577fb49b1f0f9ab9bf5cd4bfca69ea5a7c8f9d6a3fa87aba676c4bd02fb7fead828d4fc27f99afd4db35db59172666f6b07f7de61efb2f77418f5de671fb00fd947ec63f6f7bfd0a17d92c6a24f7ed6e97f2a3a3d7efa847aeac1fef99341bfd945edb450d49dbd5aa5f75f3e904e613ba4e9b626fb0fd24bd3c9559b5aea4c7afe74eacfbf9274dfffca8a3c7dd33e7515aadb334d8eede87ddf8e75feb84253e37ff0f27fb3feff23bc1cf794a4ffbff5cad0a14d274b4f4c141399e8cfbefe7b4c2dee5f1a2bfb26fb56ba6d6ded3ad38bd2494bdb5474aaf5becbbec7be9fd6bb5217039de3a69897de95ea378c4f673e2854d80fd98f74de89fb97c5cb7ecc7ea233bfd4673f4d8798e9ec7545cc343d3353a4ff16d97afc93c0ffcdeaff5696d21baf68d57ece7e91b64f93be75b7b3b404d7b70e82ea7699521185014a8dfd271779f12f869566b7a9d9edd7ff42d62f825ebf7e390589266cfb8dbede6ff5d950a05eb6ec77ec15fea909aa0396639fd756fd7d41ab56fb22fb52dacf24a50b8b9fc7b9f03ff5c60e36fb32fbcabff26e9fbf74e4bf6dd2cdf6d5bf980fb5f26a17d4a21d45a78467d02773dff93a0c7fd57e74dcdab7fa4d2aa1a5ac432f82f5abd4d520236474190532479d1b78dcfe0235fcb40acdf95f59d7ff9791f287979993ce03d496e4bf2a4d7ab6876fbae097e0a55447f1d08c66e8642e648cbf75c998698981975e8e4c5a8444ad7846b5bca54526f2646c64ae25c28c9336786abc3c65703be92475443419978ca7b3d28eaa67ff1ffaf72d7aa63f9960f65772649726c4a86e43edd23d9474090a854fea7354a2529d4c4426fe6292a6130a2f3f7332f714d5d2a96592f4a703990799678a55278d4faa1fc5b374358b2f0f7de9da496a0332afdf7e4b5a01e15bfae29a5a1c2b1a59336f455ad26ce0484f3ff321a36654ff868191511bdc24d322d326d321d325d3d361c519d5322d5297494fc8c148cb92157f542d1d51a7f63eb55d531388ecdfc1d3654e6c4df24f237d5a166e9a1eb9fe953d7afe555c5248a98bd87cf315f3fa64eac4b491fecea47c3c33d21b9419a735f1b4bf5bd3fb432dd5b59fbae7cc8b939f6a93eb6f58493aee5fedaeb464d5fb7738bff472f5afe8cc7fea4a44bfba8dffb6803effb79ed4e19ffb7aa63a36e0af1a6c9a11969659e278fccbe43fe452afe89ecce4af4166aaf72333d3944fefd0b79ae32e8dad5fa73b3dd7c92899059925991599750a99da808d5e74bdb8955f2589949865b669525848264ddc3eb6349664f66927995f86725a8eb033d379d3a27a56389a23a3f0b2f0a7a0289c0ed6ba48959475d26d46f5504c3d05518ad92147f5544937d32108a452ca864c395de55dda6105aba5b3f733d55f190c5dcd822c5a54c87e677a257bd08029912325f6648f7fc53cf489cdfcc210bf45d89e64d5e367b217b2065993ac4556f570236ba7f4583dee68afd27e963676753f598facae1e4a36cd87d4a51e5311f9f4add7e0930d53bb52462fb592a3bcf4df6c4436e636d44b915534f8271a65351b51ab9aee6c5167dc67d5106aac973eabd9f7570cd33c4d51c4ec474bed1a45fa29daa539efdf40bbcd3d1da5968eab1eaceb8cb96c03639a12b2ef706f5da527db54c89a9ef3dcafec428f6c8b6c5b93a16c876c57eb187adc539a4097d3a92f59d5a6afef6707fa5b91f9ec90ec28a5974e5a27490131578dc63f41ed98229c8269a243a9b353bc474ab40cbddc87fa5fae9342175dca6c9f1e7105f78cec9cec022fcd59d694c948a3b65e3f16734a4fe441b3393b4e215e6a792ebb22bb26bbd1673d3b26bb4d41549bf42dfdb3d76ea4ef88df8f7a507d67d304e7db5027b86433fa1c9b572de62abcccaa7e72299b16bd255f796e9beae95a45cb69412a9b275bd05b7b4bd38634b4e7f4c1e2b71c26d9925e996c5973c06c451d154da49b23dd3e5bfdd5afcaa49defd2154839462e151836477242ee404e5d9cc89dc95d52f3cd9b9c41ce24f72d9d7afa49b77972578d9df699f5fe9f2d4f7fbd90bbe924d26c4def882ea6f7d4099c0a929c9d7e1c72ae162b73df9a8c1b4d05d4236a85733eb9805c482e22176b92a1d64a4d3f77ffab1e68b85a90cb2569eda44b5ac24e97af516c87dc4333c9dc93dc4b8f9b7ba7a75afdab06aa91aba78688775a9bee45ae41ae9992a1e4aba2688ccab5fe8054df6aa1b2396d5aceb5bf898a7a473472afb59e9d1a52c8753476e5badffcf134d55f87a0b67ff432dd955cef2f412ca7d67a406e484e8d31fe5559494dd0ba46d94387c318909be842037a99a6e46629356da4f2c0574e4ab99e2eea67a7746297f63c27a7584c3305d14893f9553f4bcdbcf4ac56e4d6e436fa60e4b63a4630b723b7d7d12e39f56c969c5a5fb59d0572a99f66ae6b9d912b912bb3a9fdd1da5c855c953c1adabc280d9afc4107264e8be48fe44fe4cfe42fbaffab6a66a43586544b536f52ded2a9e56aa6f92bf99b5eebbcadb736efa4b3bba6550833291933535de192ba8f47e9a9ce924f194ede23ef930f7431aa8b433e241fa59d9c5260629d08964fc9525efdfb20fffca5d1bcffa9e8a725abcc590bee8a17eb6a1cb64e62cebfc8bfc97fb4ef5451c47ced5f15009fe4eb1a59f38d540bbcebb3946f926f916f7336c877345eea4d396896a2a4af63f8af123d1fbd92f9ae26698af4e47be922f453800769f2a0ba39fc5709a4a3ee471d2a6d0a78ffe1653e251ff931f909f9a946cd5da489427ea6f3d9f3734d59f20bdd46ad4c7ea9f9467e95ce7af37d3f415a65e05b69edffd04bf412e437e4b7e477e4d5fa6652349fff09cedfdcdcc397fea52677a5c1e4d566a855ce932f902fa6ab53fa6baf95866f0cdf877c39554ad4ccd5e256294041281cd2e08067ca61d7148e69613bf4f92e9c289c295c2818144c0a16852b851b059b8243c1a5e051f0530adad18c75d3d702a22e3137d7ff6a25433508288414220a31853b8584c283c293c28bc29bc287428d425d0356687cf51e8d67852685963e455aae5090b42974287429f47ee6a1fd0f2fff84aab436c18a421ad45d185018521851185398509852985198535850585258e90a50053559d5f396c22e65412969cf7f75ff4dbac7dfb4af6f79b094cb171490190a590a390a798d97858222543ff3c2fbafd456beae2d4785a25e738597851205355c854295e2b73c765abb4117c0cefdab50db3615520dedbf280ac58336f3158f144f14cf142f14150509289aa96523f8d1a94e2a89d57f4695b4fe56d1a278a578a368537428ba143d8a3e45f5784831a21853bc6bf81532287c2b265f18be7506eb29b6f5b5dea0435abef5c015400f8a4f8a2f8a6f8a1f8a359de1aff5955d5a44d9d26452be1544b714eb3af4a1d8a0d8a4d8a2d8a6d8a1d8fd972562960a97e8337755f0f528f6290e280e29a66069fbfc9ce258a754eb8aa033bd49d31ac509c529c51945f5eb82e292e28ae29ae286a21a574d7e4f3143314b314731afcfa542e5fd9f6f97a25ad322c592a616c532c50ac52a252809a503a523a513a533a50b25839249c9d274b4a4cb4253fa9e13d5dea6e450722979947c4a81dee6bf625a7f06da9f927e4d4b4a5f2985ba7a5129a21453ba534a283d283df564bb654a2f4a6f4a1f4a354a754a0d4a4d4a2d4a6d4a1d35f114f87f0c67e73f31aed4d5b6a1528f529fd280d290d288d238952b5a5f339f46e5db3f99378754da530f4e284d29cd28cd292d282d29ad34bf3e59bfaa99fecf50784eab1b9f581c340d2ead29a504bbb4a5b4a3b4a794a194a594fb970be0ab004569b5db437aad1ae7291528a9352c5152f3ad50aa5286b2503e503e523e513e53be5036289b945321ad7cfdcadc5fbde72bb3eb328d7fc694f28db24dd9a1ec52f628fb9403ca21e55414fb13a7522aa8486c39a67ca79c507e507e527ee9999755278a2ef6ffe40f6deafb2e4143977c29d728d72937283729b728a7a271b9f3a7faa9d3a3d89c42af7297728f729ff280f290b2ba33a63ca13ca53ca33ca7ac065a525e515e53de50de52de51de53ce6871a29cd5c4b29ca39ca75ca05ca45ca25ca65ca15ca50215a172a072a472d23054ce542e540c2aa6c6ec8a95aa1d0d2a572a372a3615878a4bc5a3e2ebec336d9f7ffeacf18fff531bad1268ee5909754e6625a21253b95349a83ca83ca9bca8bca97ca8d4a8d4a9a8964d2a2d2a0a800e952e959e5ee4e9589f528537957ecac43473a432a032a432a232a632a132a532a332a7b248b5e3772a3276538521ad2aa3c48c8bea7f4965a5e3322b6b2a6a5e5b2a3b2afbbf9091d3b760e7e4770cde7f751275711b3550864a968a1a3a4fa540a548a544a54ca5a241d255bbae3f5a1ea4f6041da447a5aaddb355a80ad503d523d513d533d50b5583aa49d5a27aa57aa36a5375a8ba543daa3ed54017c6a9865fbcd4eabaae275d8dfe8c29d598ea9d6a42f541f549f545f54df543b5f687315aa84a7977b54eb541b549b5455581d2a1daa5daa3daa73aa03afc2b85bf8bff8ad55eaa544754c754d5f06ac419d53955ad27515dfee9e9d515d535d50dd5adce51aceea8aa9b195d64ac9aa59aa39aa75aa05aa45aa25aa65aa15ad536a5548095d470a7041ae12cba969c21ba709625ba2690d21d6cd1c5405cd1351b7cd1c9fda1e874ee5874de6e223a53f3293a1d50efb4e8dcb09ae8f49f86e80c8f96e8c0fd8e3edff295674efcd593fec5a75dd5a05dd171ce7dd121ab43d1c18f63d1216e0aaa99e8a09d85e8b08b95684ff946b48f72275a47cb28ed46a94b8a35a5b8a500d32f00102de8289eaa88bc2238ea3c55759e85fe3b881c45be250652943a063f5fc64ed483721131444c114be42a7213b1451c1137a5caf35f1dd0e7bffd08a9bd5635f6447c9140241489446291bb4822f210798ad2756ea9f155e713bf1452ca9f22af86f888d444ea220d91a6484ba42dd211e98af444f1d89e6a3010198a8c44c6221391a9c84ca3817d527aeadfbb56d24a681e992fdb52139e8b2c4496222b91b5c846642ba2e6a9e41ed563463dfc5d0591ac484e242f52100d5949a42c5211a92a3958b439a9f1738de8ca8e7238c8e12887931cce72b8c8c19083a923abf51aa54b79b0e4701535b7832d07470eae1c3c39f87208e410ca2192432c87bb1c12393ce4f094c34b0e6f397ce45093435d0e0d3934e5d092435b511d3974e4d095434f0e7d390ce4a0ee8ce430968382642a87991ce67258c8612987951cd672d8c8612b0705c65eb3959d1a2b2387ac1c7272c8cba12087a21c4a72288bd618be06ea6b6a15ff3f7829876afa4e0e853007391ee57892e3598e17391a7234e568c9f12ac79b1c6d393a7274e5e8c9d1976320c7508e911c6339dee598968539b659eb32db727cc8f129c7971cdf72fcc8b126c7ba1c1b726ccab125aa597ef633abedd395d416253976e4d895634f8e7d390ee43894e3488e63394ee4a8159194d8bfff554d531b89454950c795420939cee5b890e3528e2b39aee5b891e3568e3b39eee598494be82815b6a1cbe36b14baa605c6d69c14605939e6e4989763418e453996e4589663458e55fdfa97933a4707391de57492d3594e1739197232e56489ae539c91d3edefa540a91af5d26ebd5466629395932d27474eae9c3c39f9720ae414ca2992532ca73b6ae94f5aca96d303c53a4e4f39bde4f496d3474e3551909d1a726acaa9c521359e1ffe5e8320a7b69c3a72eacaa927a7be9c06721aca69f42daf23a7b19c549ba93aff729acb6921a7a59c56725acb498db595d34e4e7bd66a020a7a05644e4e793915e4549453494e653955e454d5ab70461d3e4d2fce07391fe57c92f359ce17391b7236e56cc9f92ae79b9c6d393b7276e5ecc9d9977320e750ce919c637d76d5a0e7bb9c13393fe4fc94f34bce6f397fe45cd35af0172f0fef54deffe7653f6aacba9c1b726ecab925e7b69c3b72eecab927e73e83b99c07721eca59c13696f344ce53259fcb59dd5fc87929e7959cd77256e36eb585ceede822b4ea509d7772decb3923e7ac9c7372cecbb920e7a29c4b725693ad60a84eaa9a99de3492a48463ad69e5e52097a35c4e7239cbe52217432ea65c2cb95ce572938bfd532736294ef7e5e2485a7054f4c7974b2097502e915c62b9dce592c8e52197a75c5e725113dfcae523979a5ceada5660ab660db934e5d2924b5b2e1db974e5d2938bea762097a15c467219cb652297a95c667299cb652197a55c567251d06eb46d248d1cfde1a52296fbff533599ad1a4f7d7672d9cb252397ac5c7272c9cba52097a2a6971905a25253549bb25c2a72a98a2e8fdfd21cc338887114e324c6598c8b1846aaab6ae712a66a608a61897115e326862d862386ab0583a3a9c41d313c317c310231423122316231ee6224623cc4788af112e32dc6478c9a1875311a6234c5507db6c5e888d115a327465f8c8118433146628cc598883115b567c65c8c85184b315662acc5d888b1156327c65e8c8c1859317262e4c528885114a32446590c1daf204635addaa738e141cca3982731cf625eb4e143bece9553ea0bbdfc534f5a4c434c534c4b4c757d13d316d311d315d313d3173310331433123316f32e6622e643cca7982f31df627ec4ac895917b321663355683a8abd8b5a3ab32d6647ccae983d31fb620ec41c8a3912732ce644cca976cf6a6b91ea6aa6041631e7622ec45c8ab912732de646ccad983b31f76266c4cc8a9913339f5ab9ab7f45b51551370b62169516256649ccb2981531abe94baa94207010eb28d649acb35817b10cdc5f3ccdb525968922610a2f2d4bacab5837b16cb11cb15cb13cb17cb10214f258a1589158b15877b112b11e623dc57a89f516eb23564d9bfcbe78a9856bf7f9c3cbb4d4a762a3565d2c3546532c35645bac8e585db17a62f5151a892e24a95545b186dc5577eace58ac895853b16662cdc55a88b5146b25d69afc37284481a8da6fc5da89b5172b235656ac9c58a999e3e43050cf163421b414f425b1ca6255c4aaa6daada4727dea4ed0d2cc468b7dd7835c8fa2b0f97a1625d25d0db99a72b5e47a95eb4daeb65c1dec40aeae5c3db9fa7255d7a15c23b9c62cad6f2215ab875cef724de4aa2e9e727dc9f52d57d5b9aec424d7ba5c1b726d8a5af76b5bae1db976e5da936b5fe3a50ee1e6f74e936fb0888ee190eb40ae43b9aac7c7729dc8752ad7995ce7da72a9b6edba105db15141b592eb5aae1bb96ee5ba93eb5eae19b966e59a936b5eae05b916c9abded4f9578b50966b45aed5f4b5664a4a3cc8ed28b793dcce72bbc8cd909ba939e0cdd2cacabca8ad36ebbddcae72bbc9cd969b233757aff6cd939b2fb7406ea1dc22adde9dab3a04515ba3546fb1dcee724be4f690db536e2fb9bde5f6915b4d6e75b935e4d6945b4b6e6db975e4d6155d9fb1f5e7ea4ce9251bd5b82fb7812821ea3692db586e13b94de536c3d2114f729bcb6d21b7a5dc56725bcb6d23b7addc767253d02af8b35f5fc9df5b29b5d6a6f1f24ee65b4e4e81a5e690975b416e45b995e456965b456e55b15383a28ed0410bd0f641eca3d827b1cf625fc436c436c5b6c4be8a7dd3e865db7a3f8eba82a3d8eae38aed89ed8bc2183b143593ba7a3646618c7d173b11fb21f653ec97d86fb13fa9df480d5a4bdfa496ea06ea081dea7f72b05d17bb217653ec96d86db13b6277c5ee89dd177b20f650ec91d863b127624fc59e893d177b21f632ad27ad2e5662afc5de88bd157b27f65eec8cd859b17362e7c9a9b914c42e8aad665116bb227655bf9c4ee90cce41abfcc76fe1fe476acaf8fadf028d97ce519c93386771d4b5218e298e25ce156b9e3aa6bf063f9b6b2cce4d1c5b1c471c571c4f1c5f9c409c509c481cf5eb5d9c44dbfc9548ea3cc4798af312e72dce479c9a3875711ae234c56989d316a7234e578943e2f474d4a2524d9cbe38037186e2a89b637126e24cc5998933176721ce529c95e654f9b50ef6fbe2a5b346711847edaf7a6a2bce4e9cbd381971b2e2e4c4c98b5310a7284e499c322fd54f451394635ddbd474dc5648be2c4e55e954e22acdea20ee51dc93b867712fe21ae29adab0a8c44ad712f72aee4d5c5b5c475c575c4f5c5fbb15b5f612fdbd4d37fde87784891b7cbdece286e246e2c6e2dec54dc47d88fb14f725ee5bdc6fac94fab7266e5ddc86b84d715be2b645c9886e57dc9eb87d7107e20ec51d69f7b7d28adcb1b81371a7e2cec455fd2fc45d8abbfae66b8bbb167723ee56dc9db87b7133e266c5cd7d2dae4a18f8bd44c2f8f73b975032829b1757755e14b7246e59dc8ab855fd2e43a54a7a07f18ee29dc43b8b7711cf10cf14cf12efaab5969cf125e49aae7837f16cf11cf15cf13cf17cf1021432691ff453bc48bc58bcbb7889780fad3778cf1f5ebeb5e3ee64fd6cb42b4d123cf5798bf711af265e5dbc86784df15a18fb9f9271d6f6b2e356d12af1dae275c4eb8ad713af2fde40bca12852eda95126e24db57348ad8037136f2ede42bca5782bf1d6e26dc4db8ab7134fc19f112f2b5e4e2fe6cad75e9c8aea2a2f5e41bca27825f1cae255c4abea573c2a0ddb3f887f14ff44be996a57c65f48c0d2d5a136abb6f867f12fe21be29be25be25fc5bf896f8bef88ef8aef89ef8b1f881f8a1fa50134ea7e9c522b7571173f11ff21fe53fc97f86ff13fe2d7b4df551760520deae237c46f8adf125f8dd511bf2b7e4ffc7e0a4cc87af20f5e9ebfaa3e918263a05d584a43f487e28fc41f8b3f117f2afe4cfcb9f80bf197e2afb8a8ded7e26fc4df8abf137f2f7e46fcacf839f1f3e217c42f8a5f12bf2cbe525dd504aa4c8ffabd9781487090405d9fb4d549ed417096e022812181298125c155829b04b6048e6e70ca7c8b8669e385a6490a094c76e35491d2ef9f93c095c093c0972090209420922096e02e4122c14382a7042f09de127c24a8495097a021415382d475aba4ec6026415b828e045d097a12f42518680f821203642dc150829116d583b1c6cb405d4c2598693e7efbbab0f957dd3dfdbe0b09e6122c24584ab09240f5b09140b1aa8076e6d732c54b1dd1e8a433da4ab093602f414682ac043909f212a879152550f28c82b92c414582aa847a21253c487894f024e159c20bfd85848684a6849684d7543e794b7893d096d091d095d093d0973090309430923096f02e6122e143c2a7d638b5b327b5167ddf0150da48f8925075f291b026615dc286844d095b12b625ec48d895b027615fc28184c3f4f54e4f853069a4d253c29184630927124e259c4938975041b89470a5b508f3ade58d702da11a652be14ec2bd84ea4e56c29c0e1f9139b9cfafeebf8ed95ea5a103aefa28daa9a584302f6141c2a2842509cb125624ac6a777124121d340f8a8e129d243a4b7491c81085d39125d15522f5932d9123912b912791afc5e62890289428922896e82e5122d1e31b0321d153a297446f893e12d524aa4bd490a8a9e33f145e2ad95fbfce6821d1d7a5a1466ca73ee879ea3e1d49d491a82b514fa2be4403895487eae658a2894453896612cd25528f2f255a49b4966823d156a29d447b8932126525ca499497a8205151a2924465892aa9fb5b015695186db98b0f121f253e497c96f8f2c3cbcd0f23cfbf3aa50ed9b7c486c4a6c496c457896f12db123b69d4cf2b8d583ba5eff5d9a7ef89d26fe790d895d893d8973890389438923896f8ae559fdc56e244e287c44f895f12abc61f896bd41d89eb1237246e4adc92b82d7147e2ee97244bdc93b82ff140e2a1c42389c7124f249e4a3c93782ef142e2a5c42b89d712abc6df9815fd9210897712ef25ce489c953827715ee282c445894b129725ae485c152541dd45ee07b91f45cdc5e9a40168f99fb1ac22f7b3dc2f7237e46ecadd12a50bde6f72b74511cbbb2b774feebe281cbb87728fe41e8b3acc4a77541b9d19286aaa16f657c7faf87dc9cd927d2b8df30db4514a49664ad0542740f126b5764abfb9d7e45e977b43ee4dcca6dc5b726fcbbd23f7aedc7b72efcb7d20f7a1dc477257cf4ee43e95fb4cd257938842acfb5294a8705f8b5a384524ee3bed955122d17d2ff78cdcb372cfc93d2ff782dc8b722fc9bdaca54f3dcf6a1ac9f72b392e2f0de7a1214a0f4e4492832447494e929c25b9486248624a62497295e48622f0892d8923892b8927892f492049284924492cc95d92449287244f495e92bc25f9a4f63f1d0620494d1beb93ba246aaca6242d49da927424e9fef49ed3cf167dfed529557a9eeab627495f9281c6cb6428c94892716a2ff4d350dcdc9f676b57527829c944635232956426c95c1205f0529295565392b516af2f0a78d5602bc94e92bd241949b292a85ff3921424294a52d23a72529644097c0ad46a5a0c50e47190c7511e27799ce5719187210f531e963cae9aad3f6ef2b0e5a16876f47ba5d05b1eae3c3c79f8f208e411ca2392472c8f3b45f554228f873c9ef278c943b5fcc8a3268fba3c1af268a638f3c0e8c9a3258fb63c3af2e8ca43fddb97c7401e43798ce43196c7ffd3de79f5b6ae640bfa7d7ec67cef0445c909f3c42c8a1473d49b92e51c645b0cc0fdef5345d9fbecd3dde8c10ceec5454f1fa060d01455b5aab4b8728838c54226e79472ca38e59c0a29419d4a4e15a75ac964bfdaef0ee53f7db27e65aa8ff68e53c369c549e534e1a4719a729a71bae074c9e98a93d8d88d72b990ed9f5b68d7b41bda2ded8e764f7b4b7ba0bda3bda77da07da47da27da67da17da57da37d97c472f22185a7f648fb41fb49fb457ba26d693b5a1929432bb144fa3be4eba88c6e89680c814969755a43d1ced19f625193d6a2b5691d5a97764eebd10af07cda8076491bd246b4316d422bbe9ed1e6b4056d495bd1d6b40ded8a56a59d9c230f6835da29ed8cf682f692f64aea3ded35ed8d78a34682f7d3895173474228c396658e4387126fe9d6741b3a71b1a3db8fb2b22df172b4424bee24e3ca2674b77407ba3bba7bba07ba47ba27ba67ba17d91742f0be3b31e72bdd1bdd3bdd91ee83ee93ee8bee44d7d275743ddd40a7d3c9dc233a93cea2b3e91c3a976e4ee7d12de87cba806e4917d24574315d2255c0edaff07b01794a97d1e574055d4957d1d5740ddd8a4e8021a0d5e8a67433ba0bba4bba2bba6b495cba1b0e33a100d02bf4d0afe937f45bfa1dfd9e5edc3fd0dfd1dfd33fd03fd23fd13fd3bfd0bfd2bffd74783ff7396ecffe9ed36fed2cff14ce4eff4e7fa4ffa0ffa4ffa23fd1b7f41d7d4f3fd0ebf406bd496fd1dbf40ebd4b3fa7f7e817f43e7d40bfa40fe923fa983ea14fe933fa9cbe107a3d7d492ffed6f40dfd8a5ee862a934fff6137a8d7e4a7f8eff15905c7c07d24b385f9569ab68d7f49752401422667f452ffebd917dd10718d60c1b862dc38e61cf70cb7060b863b8677860786478627866786178657863786738327c307c327cc9e8c34972eedfc870927839b40c1d43cf3030e80cc6e8ef516506ccd88396c11c038e7ef072b0186c0687c1659833780c0bc9a7c41b750ec91e7bc4fc889bd2accde033040c4b8690216288191286544a6343c69033140c258378b2666818560ce2a30983c630659849157bb860b864b862b866b8912de275d0d7e81bf42dfa0e7d2fbd5cfa2dfa01fd0efdfeac954aed4de8b5fa03fa23fa13fa33fa0bfa2bfa1bfa3bfa11fd03fd13fd0bfd842e9eecd07bf4015d4737d04d740bdd4677d05df439ba87be40f7251fd703f4257a881ea1c7e80280143d43cfd10bf472ece1f4abef9bf44dfc13bc1c49a65ea1d7e80dfa0a5d459fa06be853f419fa05fa25fa15fa35fa0d8622099b01c61a6383e0bfc60e638f718b71c0b8c3b8c778c078c4789205528eb259cee899101f3d63bc6088f746c578c378c738627c607c8ebcef46c60449d262fc4a741c5b591ebe9b0d089e5e8b49be304e182d4687d1630c183a868161625818368683e162cc313c8c05868f11602c3142691134228c18239189c5e96cccc170658ec45ecc994abdc7c830728c42e2a551cab88d4dff13f73066214bebf44eba408c11c90c71d160ac30c4a626189aa2dd8e1ce92c8a9cfb13b7dfe2a031c598615c605c625c615c63dc602ae766cbd2c96cae3137985b45b01a7387b957b636e62de601533c708ff980f988f984f9ac2cb7982f98af98e2e177cca32268baf981f989f98579c26c313bcc1e73c0d44742d5c940ece64d11e7631a9826a685299670305d4c71d3c35c60fa9801e61233c48c3063cc0433c5cc64b896269baf61e6980566895961d6980de60a53c59c606a9853cc19e605e625e695ac9fbf1f4d66e6f56fcd02efffc0cb9f2ea27fe0a5ccf16b32cc1b2532b014e97fb7d6581bac2dd60e6b8f758b75c0bac3ba97168d9dad34e2ce03d623d613d633d60bd62bd61bd63bd611eb03eb13eb0beb34c625dc8c81fe828d4eb05aac0eabc71ab0742cb1a22919c42651d408cbfa09b9fd859abbdf927804511180d9580e968b35c7f2644083b5c0f2b102ac25568825e689b112ac142bc3cab10aac12abc2aab11aac15968a3551e20b2c0d6b8a35c3ba500e02f84bac2bac6bac1b042bb69178b9fd15ebd0ff91b9b11bf571a190da6bec0df6167b27edeaf67edcf2e74f98e6b9f3b85414b0653032f601fb0efb1efb01fb11fb095b865660bf60bf62bf61bf631fb13fb03fb1bf10fa6ffd8c7dc26eb13bec1e7bc0d6b10d6c13dbc2b6b11d6c177b2e5f7edbc35e60fbd801b69856401861c763e0523326f58a7f059c2976869d6317d82576855d6337d82b6c157b82ad614fb167d817d897d857d8d7d83732a44d328499342f388ab48138e0ac7136385b9c1dce1ee716e7807387738ff3802330f2f5bbce8c4cde2abe43357ef27ba27f8497e25f7dec3a7d83f384f38cf382f38af386f38e73c4f9c0f9c4f9c239e1b43217622d5612d0f438038e8e63e09838168e8de3e0b838731c0f6781e3ffa4aa8cbeffcd0a27c059cad80827c48970629c0427c5c97072c91c9d624c3b1c1350d6da4fd2a621f506a7c4a970c4713438622af1f00447c311b3cd702e702e9577f1d115ce35ce8dcc4d77c15de36e70b7ca83b8b3c3dde3dee21e70ef70efa5f54ac8afee03ee23ee13ee33ee0bee2bee1beebb0c11728f639cd87a0cd75fe27ee09e716e2dbdd2ee17ee09b7c5ed707bdc01571f7b341dbf3be6ca1697c7eff412c46c06ae896be1dab80eae8b3bc7f524b17417b83eae7846ac12e246b8316e829be266b8396e815be256b8356e83bbc2557127b81aee1477867ba16cc56397b857b8d7b8378ad048e68a0cee99af99cbd066f1fa31df32df31df33bf657e607ec7fc9ef903f347e64fcc9f99bf307f65fec6fc9df991f907f34fe65fcc4fcc5be69d7404ce7be603739db9c1dc646e31b7993bcc5de662518ff982b9cf3c602e1e0e6524eef1a054e266f4ab43ba183ffef17f205cfef41cce043431f38479ca3c639e332f9897cc2be635f386f98ab9fa93332e6e4e986bcca7cc67ccc56e2f995f31bf667e83a7c828276fcdf342269ac964d977192fb8bbc7dbe06df176787bbc5bbc03de1d9eb82f58ff5e79954282f4288c0aec685abf95636349df74758df788f784f78cf782f78af786f72e380bde11ef03ef13ef0bef84d7e275783dde80a7cbd01ecfc033f1c493369e83e7caad79733cef1c7385b7c0f395c30c2fc05be28578115e2ce5cbddc7a8b61fc7dc5c211d9ae74e2278095e8a97e189eb024f4c58e1d5a3281c9ccb46ca44b98df29398abe235782b3c7131c1d3f0a678b3d1c82c26b9c0bb9414d1bbc2133bbd19152da414b458b3d8b0d8b2d8b1d8b3b865716071c7e29ec5038b47164f2c9ee53bb67861f1cae28dc53b8b238b0f169f2cbe589c58c89418161d8b9ec5c0426761b03059582c6c168e22b07ce1b298b3f0582c58f82c021662ce9045c4226691b04859642c7264edcc3769265b942c2a16b57229ee372c562cc43c13652360d3cea93ba399ef38466d1ec7c0e473536e39fe8873fb7bbc1cf1d5613165316371c1e292c5158b6b163732b2c9077f8dbfc1dfe2ef7e22f9c4fd3dfe2dfe01ff4e515dfc7bfc07fc47fc27794cfe33fe8b2481b295b60c5f529a8934acf8aff86ff8eff8477cf1ef27fe17fe09bfc5eff07b99e2b31d3369644d84873135762c29f159e00ff83abe816fe25bf836be83ef4a73bd3fc7f7f017f83e7e80bfc40ff123fc183fc14ff133fc1c5f4c52e257f8357e83bfc257f127f89aa425fe147f867f817f897f852f902396de8b87e45bc015873b66368f599d3be556ecfa46be74022f0308d6041b82ed285faebe538d65b7bf318971d3cb2092604730bab903310e047704f7040fca6a4ef048f044f04cf042f04af046f04e303a81820f824f822f8213414bd011f4529b0906025d118a5d601098d2421c588afa40601338042e8198d6235810f804425ed4099604a122385b1011c4e2f52148093202b18542baaf829240c05913344a29e05911a80413028d604a3023b820184b929702a42b826b821b59366009cb35cb8d8cc07a7611b2ef7237969c4865b28aa094cbbdb28b59defe2dbdfcaddbf5fab7da099d2c6a504b1466796079c7f29ee503cb47964f2c9f59beb07ce54367f92629c1be63f92ead1ecb23cb0f969f2cbf588aefb62cc547bd74fc2c0796e27963d46465163decbe3db34b93a5c5d266e9c8df6029363067e9b11470fb2c03964b1904f532e6226e7faa08ad33f9f32c4396114bb1b78465ca3263994bc3e7b26059b2ac58d62c1b962b962a4b01a126e38e4b715853963396172c2f590af0ae59de28d71f848a8c550dd7d2451e6e08b7122fc31de15e0a8ba1b8799086024795cecc333cdbe5d89a3290c429bc23bc277c207c247c227c967819be484fb7ec223a1e97ec2eb09562dfad98ed95f08df09df0482856ff24fc92a43a143fd217614bd811f68403a14e68109a8496dc7868133a84aea482e19cd0235c10fa8401e152b9117742c288305636e281843025cc0873c282b024ac086bc24699883b2b42957042a8114e09c57e2f082f95bd98ea8af09af006410704338c205a136d88b6443ba23dd12dd181e88ee85efc46440f448fd21c113d113d13bd10bd12bd2185b1fca7a4cc59a0ccc64ec6f94ff6fdafc6ebdd998f777fc6cbcdb7de238b6d08614e2cff4e7424fa20fa24fa223a11b5441d514f3410e94486245dea1dca4cb97d2332892c220199234d4b914b3427f28816443e51a05c6cc638676facae319a73a32551481411c54409514a9411e5440551495411d5323a296a885644aadcbfc098481c934634259a49d12aba20ba24ba22ba26ba91668b589171d0f19a7843bc25de11ef896fa53d3fad890fc477c4f7c40fc48fc44fc4cfc42fc4afc46fc4efc447e20fe24fe22fe213714bdc11f7c403b14e6c109bc416b158c8217689e7c41ef182d8270e8897c4217124fdf5714c9c10a7c419714e5c1097dc85ca517cab22aed9a8c40df18a58b205e2897425c71af194788650c5e24be22be26be2b3ee7f83a0d709246b920dc9966447b227b9253990dc91dc933cc837677327b94af248f244f24cf242f24af246f24e7224f9509e4e249f245f24e2a265a7937424fd18acdd920c8afaa6a8cbb3a395447c6a90982416894de290b82473128f6421994ce29304244b9290242289491292942493a18c49fe5b5183cf1fdceb7ed49bfb3fec44bf693c9b3fe165d39c492b49216bd8b902a092a422a9491a9215894a22e0d0c664b6fd58162791e274322599915c905c925c915c93dc20de901445bc708bb111b15027e5e4b7dfdcff21235d936e48b7a43bd23de92de981f48ef49ef481f491f4497ae7d267d217d257d237d277d223a9b8f949fa457a226da56d65a29376a43de9402aae0d5293d422b5491d5297f49c0423d6f24817a43e6940ba240d4923d29834214d4905543969415a92568a387a81cd6943ba22554927a41ae99474467aa15c0869527c7a497a457a4d7a43a6c8a8ff6c4db621db92edc8f664b76407b23bb27bb207b247b227b267841c9fbd92bd91bd939d7b9bb6641f649f645f642732f16f47d6930d64b2d080b4fe66868cd2ca4c328bcc2673c85cb2399947b620f395cde5f8eb1cc902b22559a81862f5882c264bc852b24c12f82c272bc8c48415594dd6c8fc5a99c825205f91a9a39175ac20b215704ec834b229d98cec82ec92ec8aec9aec867c34175ab6cc75c8d7e41bf2ad742ce723afdbd963bd90f54ff5a5bf111d7fa1dfe66ff8f8e6cfa87916314fca5e23df93df921fc8efc8efc91fc81fc99fc89fc95fc624c9b3be7c2b6d25fb1df92bf91bf93bf991fc83fc93fc8bfc44de8ec4bcfc4ed366ffe3c78ba4209b77e43df940ae938bcd98e416b9d8a443ee92cfc93df205b94f1e902fc943f2883c264fc853f24c791147938f5c5ec05c9097e415794dde90afc855f209b9c6edb5f2762df132178bcec82fa4f6935f925f915f93df50283285a458536c28b6143b8a3dc52dc581e28ee29ee281e291e289e299e285e295e28de29de248f141f149f14571a268293a8a9e62a0d0290c0a93c2a2b0291c0a97624ee1512c287c8a8062b4d70af964bb9406874942114af1a68828620af16f4a9151e452f02d0a8a92a2a2a8291a0a714755aee7d26c594c28b41f8147d62d535621c59462467141714971a55802b06b8a1b4a19a082106cca0de5967247b9975a63797b4e2b53e2e827e9511659a13c50de51de533e4852553e2224cef299f285f295f28df29df248f9819035cb2fca13654bd98d5101bfeac66cfed1f8aefdf4cff1f2feac924becacc5023de540a9531a9426a525d47e99242fe57701ab3d46fadc4a63de8578c0a17429e7941ee582d2571cb1f9e0bbdad176a71c82dfd6ba3f0bbc944bca90525cc49409654a9951e69405e5989f558a515336942b4a957242a9514e296794179497b274d1fdf1dc4c5352faf28af29af2864a91494ad59a6a43b595c2593526ffaf35aa3dd52dd5814adcbca77aa07aa47aa27a56369562db542f54af546f54ef5447aa0faa4faa2faa13554bd551f55483341a573a954165525954e28b0e954b35a7f210027ee55305544baa902aa28aa912aa942aa3ca658a4f55509563c1889ae7a9d23c4a137d25464dd550ada854aa09d55835406633efa8a68a90edaa19d505d5a51482ab2b2ac1a00430d212274994247b32379c5a91695af59a7a43bda5de51efa96fa90fd477d4f7d40fd48fd44fd4a3165fbf28db7352f939a3edf65b69539fa95f15f1e3d66fd4ef72a7f591fae33b244fa04afd457da26ea93bea9e7a185312eea49a3bfdf82dc1f7ff052fcfa8697c9b3a9b9c5aa736a84d6a8b5a80e2c8ae8f024aed426a61d2429e29ebe45ce287daa516707bd40b6a9f3a5016e25b62ab2175341af7ff285936966f1c6d04eb3ba51187155327d42975462dd62d6440435d5257d462e6867a45ad524fa835ea29f58cfa82fa92fa4ad1f6df365121e60a49bfbea6be411c6603cd9a664373cecc6a6876dfe13ffb6bc5cc69f634b734079a3b9a7b9a079ac7b188d93bcd13cd33cd0bcd2bcd1b8db873a4f9a0f9a4f9a239d1b4341d4d4f23039969741a83c694f24363d1d8340e8d4b33a7f16816343e4d40239e0c69229a9826a14995e7934cd894f558041e983419e2d89b82a6a4a9686a1a01f68a46bcdb8f3493b14246a9ecc57735c9ca9b29cd8ce682e692e64a124b7f8c0f7cba978f0995b4b9a6b961a5b082d59ad586d556796a59ed58ed15a1f4ac6e591d6837d208b5ba1b8bfc3c9c330759c9aa69a35bbf913684d503ab47564fd21bb27a66f5c2ea553988fb6f8a786957efac8eac3e587d2aafe2c92fe920881e94cdecbb948baca7f23dfe2182fe43bc6c7f2b6a383b17e952f602e8132bb1070187587e60a52bc7737db39295c1f66124f2c3b914092b9395c5ca66e5480c5bb9ca41cc301fcd54afa32ef647e93ae55600609d437dc723f094db6b560b563eab80d512c1835611ab9855c22a1d47c62a6755b012ab5702125635ab86d56aac931bc8795a8d95385fb1aeb8982a7777ca8bc76a36968afc94c153e3299f07ab0b5697acae5889a56fc4eb3626bf3f09290e758dba41dda2ee50f7a8b7a8078492a7dea33ea03ea28ac79e515f505f51df50df518fa81fa89fa85fa827d416b543ed5107541dd54035512d541bd5417551e7c83a6f4f32494215eb3e8ca5dec4243e6a80ba440da59b448d50e311ec54b933ce9dca0507424d5133d41cb5402d512bd41ab5918caec9ce211132ab575da1aaa81329b0aa1aea1475867a817a897a857a8d7a83f3c844916d28b69e72b11e235cbbd1aff6244dc5cde5b912a2381c99093b5933d930d932d9293b537990267ae5ce65b26772cbe4c0e48ec93d9307268f32f86bf2f48d973f7e9d73b4c0ef1acfef7acf593f5fffb9b8e32fbc34ce582b99ece4591152dde485c92bb2ecd839975e3c79c1e45dd2ce75ae08045abe2b82924d8e32556af2c1e493c91793139376ac1226feed98f4a3b75eb218a58c14753da6ef48bd4cd6fbdbd84c0684fa323198984c2c26e28e984dec79cec46322cec5671230598ef11c93b1af8077eecea46c2226a18c4540ac25ae6384a0364999881f495ce7e3a188032d6434cdac9622dd412c5432a998d44c1a262b45e0a8acc53565326122b6232e664c2e14a17b4d2e99884faf99dc2016d1405ba36dd0b6683bb4bd72f788768b7640bb43bb477b4013779e6432bbf68cf682f68af686f64e28b8edcbd84579abdc8b4f8fca5a562d540475d43ed03ed1bed04e682d5a87d62beba3b245d16cb46134e90b922366d36510b766a09968169aad08bd4373a4256e678c825327b31734176d8ee6a12d943b99888ce6a3892f8a8b102d428b9185a50444ce0f0e3cca9f49f6627b1580a1a5e7cad132f5622fbe95a189850a34c1a306b46af4cd8afd0ae01bb4159a2a6881cc37baba1f6b8b8e3edbb531ea21d1b705fa6fb1f3c74ef44ff8b8102fd02667bd49be379b0b340d6d8a3613a08c45b6c46e2f94fde59818ba92cf088ea95dcac033ed0aed1aed86a9fc7199aec7b11911fd3892c9335ea64a73adacaa1f7a1931dd8e95c1de84eea6ac0b25b499ee98ee99de323d30bd637acff441119478fa3856d99c307d52d603b24ed55a39b8e36ec5c32fe7374dfa39a7af52af9abe9d9dec327666fa2e5360919538990a7896dcde289b50591e997e30fd64fa25ab891cc4d227a6e2f98e69cf54aca23335989a4c2d45b07871145301a100c6fdaea0b279930952d33953599011415aa63ed380e99269c8546c30669a304d650557cd95b51147bc940af8341bf1f25cef4f7c31675a48bfc3a3a9dc8a494aa695ac69bf9e8df57c0f231f6cbf2b57dd654c6ba6b202de58215680ba1a8fb4948ad4e45a7adba62a53715c424215f04c9587b57c3fa7828708682f466952d0e9a560358a2a23506537992a1a09b9804a3c73a9aca3efe2173b71c2574caf99de48022118fd99fbadee6595a019ccd6cc36d2e73bdb2a82abcc76e7921e3f9513ff84977f361875bfe22fffaf5a56dd7f9732fb3e9473c5d4b3bd7473ae23faf3b69d0b6f9e836ecee39799eae9b782cdc56f36d4fb11e2e36fa6abf35462b77b66b7cc0eccee9443f75dd158c68c9d57fc45f5d7bff1853f5964ff6c27ebc675d39f51fcbc9fbfd845f7fbd9fd7cf1f35c6bf85785e29fa97e551cddfc184136e70cc9bf33c3753f054b8fbf48c58f98b53e1b40bef9c6f7babf538aa79ff2a76f3fd3fef1e9cff3df75657f621ed67f549afd2e237886eaf3c7befdcbdbf7cba5b2f9bb45cf7ee9d30f6cebdf3eea7ea36bdfed7c7eeb45743ec6b3d9fcedb713fb3f8c335efee7d721feaf18ca7a29c7b694ea91e4d7fffd20fd35fe8bc6bf125efe35fe7dc6bf2a5e9e49a6a49d5224faef87e7aff19f3bfe95f0f28c85dfe38c977f31f4ff4fc7bf205efe8588ff06e35f0a2fffc2c87f9bf13fffe37ffd8fff0d0bca99ba - - - 789c7dbdd792ebca92a6795f4f71ac70573686a626606d734132b5564c353617d05a0304c0b179f776c4ef11794e55776ddacab5be0410c2ddc3dd4380fb7ffcc73fbe5f1efff11fffe3df9ad66a23e71f4e68d5fff80fb7cbb2f1fff97fffefffefdffe7d3dfb87b1fec7dc5c98ff58fcfbfff56fffdeceffe1fc439bcd66cbd96ce2ce113c9f2dc04dc9ccd7fb05f30adcfe085ec8eb43c7ccd7cf29f31a5c9b8297aafc9e999f1f35667e7e1898f9f9c663de305f0b5ec9f2ea353397773e32f3f3bb67667ebe477bd6b32dd7f7cb6cf0fd89e08dbc7ece984d7efe5df056b6b74f99f9f95e67e6fbf711b3c5edbf136cc8f2774766bebebb176cce6ce64f6697db8bfe5a8a43c1b67c7eb099f97ad70a766479bdc3ec73f92bf07cc6d7bf05bbaa3c8fd9e1eb3bc19e7c7eb801cbe747c8c39fb37ef67b669657f734f17c3e677db5a2ff743797d717e0f99ccbbf67e6f276b7cc52fe81e0a5bcdec460c28de046f05ade7fda324b7d2f152f45fb847dcd3773b697dd3bb33113e367ef33b37edb86d99db9e2ba183f7363eecce6c27ed01e73cef26b7c666f6608863c2cbabe15cf0bfb9bdb745db4a717f63b77893dd19e9ed99fa37cdcef527f713feaf7e636cadf8560ba6e89f22bc1fe6289eba3d0ef62b158435ebd286fb15cace6a2bfe757c5ab892361df0b35beda1bf0623d17f50f7be60ddabb17ed5dac1706aef7ae62f47714bc5958e8cfde12bc5d98a8af2a98ad992ff891d9467f523c6fc8f68c037861429edd2bb33d87fc03f072363745fb7be6f91cf24579e6c299dbe2fe2ff0723d17f58fc2df2d2c6a8fb87f5c313be84f6b08b6974b9417087fb37064fb7a1f4ced11f577c23f2cdc853f17fde9203f77b9983ba27ec8cba3f68af6544be605e4d50bfd2efc8587fbf71998ae8bf68cc2fec8dd2ee742bfbee8cf722efd553780a97fa2bd9a289f860f8fff56035379a27d91188f4be5bffd1333db779282e5f86daec0f40bf4af635ea0bef64bf202f75bccebb9184f43c5bc81bc76df9217a2ffe9a5e0d59cdbebb4ccdc9e36024f150a7994ccdbb9b0ff56c86fb9a6fac5f5ea8a790579b5e8cf66b95dac45fd4fcc06da5bdd319b2cff5431ec692e7901f99f0593f747fbf20d33fbbff6024ce58bf6d9c2ff2c0d797fb4024bf99e7df0d2467b32e1df96a6d48776039eb3ffaf1230f55fb4affc91bcc078df3393850b7da07e9302aeb8df877c2ca9fff29999e359fcc8ccf58535b3c7f7437f16f54ff8836ace6c437e5d207921f43d2c985df42f847dda521ed62333fbe3e88299e5e91860e9ff1bbe9fca83ff83bc9ca587faf668af43fd15e3c711e369e9caf6c790bf2be34705f9b9f41b8c4f3cefd2f3a27fae18ff4b4f8ea72066e6f6b9d0bf8a9f67d887b7f417c2dfec5d309527daebcc04fbf2feec08a6e183f8e481570bb4df17f18c3acff131aac0ca7eb6e0d56229fcedbe655e2dc4f8cb847dade652be61ccccfa753f9839dfa86cb06c5f70cdccf5f7a87f4ef2867f35c1d43fc17dac58d8dbf98279092e0e8217b23d85cb2cf57304cbf89d5acce64c8cdf50f88bd552ca3f0ac0321f892d66b6674fd8cb6a25edcdff60e6fbbd9e99c75bb003cbfe877cbf6c4f72cbeca33dd506bc32e05f3c918fae543e6aa3ff6b19df5de18f571bd9be5032df1fa0fd1b8aefa2bcd8675ecd609f6fcc5b700f796c56db25e271cc6c42de09dab795f2e91fc02b6329fc832df29f9521e5efea6039ded203b33113f6952c982db6d71cbcb297903fdaa7fc5786fe9bd25ef31933db93fbc4ccedb357cc2eca6ff7606aaff0bf39ec45f92bf70a2ce517a1bd16c94fdc5ff5cc2be477bef0872b5be67fc935b38dfe85736607f5170b6617faab06308d57e1eff25b6603f98c0b7938aa3f27669667b061667b3abf80573ec66f2ef2fb952be727e98c99e559dc8365f91af4e7527c15fab70d6613f1cf81bc3c29af6c0996edc947e62dfaebf8ccd27ee5fd6cef36e4eb51be29fc6d2cfcddca97ed8b519e4ff284bdbf32b33e6d31be2999e2fb730f2cfbe30ecc0ef4e17d8349dec27fc6229f5cabf9addf32b3fd3a7bb02c2fb198b9bfde0f33b72f2ac1d41fe44722bf59abf96fae81a5fd7a7c9dec5f3cef85cc3eda1b3c81c9fe847c929179057b496e980de4c389c9ec225fb77d669e1fa46730e58fb00fa1ef356583989f8457cc2ef4e3b5cc3ef2670ff29dd233f17c7ac1bc413eaf2d986dd4bfdb80d7dba5686f28c6c79ac211faa3dd8229bf135cbd326f901feed1bed5da588afe3533666725ea77a0bf35f92fe4873b30d527eedf19cc941189fe8a78b4de487fefdd81a57e338fd964f9cbeb3cffcaa18f0dcd57e01fd09ead8c7fde2558fafbf8034cfa12ed093c6603f3857c900c7d743578bd86bcc623b30dff6aa13f869c2f16bfe0c51cf65086cc06eb1bf66b4c19b1b08780d904070db38bf94c07fb3236b315c623fa4bd92bfa9bc03e4cd29f907787f698b2bd6dc0bc5909793535b3018e85bf5c4ffe14f3a11b66b6e7f0c4ec401e23cab748df884721b3bb827ded150b7978b07f9bc613c63bc6a34de351b437786436d11fd7677661bff9164cf920f2ff14bcb6d1fe73c1ecadc4f544c4b7b55a3ff1509ea3e2d30bb38df15342ff8e9ccf2611b3c7f35b4db1904f07ffe2507dc2ff0e73661ffd0f307e5c92a7b0ef3860b6e0bfe34f308d2f21df6ccdec23bf4884ff5d7b34fec5fdf98ed9457939fae749fbcae7cc6b8c6f6bcbcce321f7992dbe9e83e5fcda7f63dec2feac94d984fd695cfed281fc77e8bfb799af305e30be7c8a2f42df2efa47bdc1f8f26be62dda1346cc36f4ebf6609a7f8afe661be60de6131decc7277dc33e84fd907364ffed7bccbc9ee07760b9be11d5ccdcffa060667b4e968a853edd3358b6a7b1c194a009f9ec5ce625f4ef89f9c7664a77843ee257e605cbffcc2cfd4dc0ccf69f5f339b689f9333bb73610ff94ab1688f5b8169ba2cea0f43c542fef90df312f39dc460e6f9e42e0253fbc5f5ce625ead44fb6294b790eb65bec3ecc1fe7c1f2cfbe31acc2c4fef8ad9e3f635e0d51cfadceb60aa0ff30743f25adc7f5e31afd7a23c57ac3f6ca6f825383399793d275f2ac6fceb1dbc7460bf45c9ec627e5fdd82371bf8d372cbbc853e1d113f372beabf283f42793481813cdc9199fb6741ff2b9af18bfa9c37661ff3751feda30905c677de82291e8afeb45c3e4948943fce99376bf8bb1be62decafc999dd35f245e8831214d87bbc615eb0bd41df9400c09e7c8d7989f15e3e30f3fc2684fdae2903c4fa16e443e103f59d75e62dda17e33a6507c8af923d98122a713db79897180ff62733c7c3a8512cfc810ffdabf59be0cc6c41be490c96ed4bbfc1d421d1fe0ef2d850fb049fef994dc86ffc520cff00de52fe88f1fcc0ec41dff10e4c062cda6bb7cc1bf4c74b99397e043fcc3c5ee335588e47f79a99fd7faa311b0bf1bc75c7ec8247f8abedc6827d941b6607ed2fd15f83e48bfcf18ad944fdd11bb38df191ac997db42780fea6f556717f6030af391edc336fb0dee7405fc69ae7ff0ddf4ff216fadb6bcc16e41f637c4ceb5b589f82fd9814afb0de14306f609fde13338fef6cc1ec235e05d0b729d71f737e7e3583bcf213f31aeb2327f82f93e4077fc7d73736b74facb76d2cb257315ef33df316f2b4e06f2c920fe4f1c0ccf129ff552cecc35b306fa15ff792d9813f8807b0f4077ec9bcc6fa511e32dbb0ef1df46f517be1afd6cc0efc63fba058d8efb8510cff88f6d8723d37c899b7ecaf4c6693d7ef7a661ffeb240fd946d61bd31b963de62fd2bdd313be0f33378e3c11ece4bc5421f15f46b93780547229fde3864bf988f5f32f37e45fecc2ce7bb73660ff652c1bf384b9bdb97313b90670a79d3ec04d7b30fe62db89c8149bed88fe0e7a9bd587f86bc9ded6c2dfad79e99e76be477f0afaef477ce8199e379a229867fc999395e793366de5f48d07f97ec4dc8c73b312fc1d19ad983bda7184f946d633c96f0672ef547d4df54cc2eecbde5f2a97fd81f5932fb6b51bf037b99f24b515f31675e73be74c16ca3bdf133b303fb723c66d64f007bf6a4ff0875660feb9f2e9ef765be543c32b33f4876ccbc7fe2203e4ceba7e27a34301b589f6c215f9ff4857c3d649eaf311e45febf9dc97cd9b904cbf958e033f3f88ee6cc06c6b7f3c06c613c6706b30b7bf22b308d6fcccf1be62dda177f31bb4bec0f717b48fe90b790df764ef92ad6435e9879fee1a33d94cfa13dc94a31f2e913588ec7a262e6f5a7f60096f2d975ccab8d78de11f92e15b6427c289f980df4cfd6c172fd3d5c332fb13eefef9979bc15c2beb74bf2a79047c06c40bfce9299f3eff211bc64ffd7f2f3dbf506fa10e377bb92e3235c31b3ffb521df35b547c8cf5f336f505ef1c4cceba7f11db3077de435783d433e110bffb89d12588cdf0b668e9f5e0196fb25ee9199ed3bb807cbf6441b661eaf39e4bfa1f934f22111dfb6db39af1765d0d7940f88f2d239b38ff2dc2d98cac7fc70cd6c2ec5f369cf6c83cfe8ff766b6eb0dfb6562ceca340ff0cd287909777cfecc3fea2164cf323615f21dfbfb2b03e5c5d83b706c65bfbcb6c6db03fe731dbd06781f164cafae2144cfa15e5e717ccbcff6877cc06c65f017d99343fc4fc14f66352f9421fe542b1d0df4e63763698df85604a70307ea1bf295e231fc6f316d93bae7f321bc82f5af80b5bca2fc275773a5023c627c6934bfa10edeb62f0d6477d8ec84fb69e1ccfd60f98660c58bf84fe7ceaaf687f2c9e3766743ff2b93398862fe6b75fe0358d58717dab58d497f7cc5b94bfcbc1c67c23e47d92bce4fe88f61894adc03fb605d8586c311e85bf21e35ff3fec81c4ce31ff63103afeda5b09f530636d6d0872df46f2c653eb0bb061b94a10b790bff6faca87f900fea57eb8f95988f196b1a3f986fde81697a85f5b335d8a08c43e83b63f6b7a27fb1f0dfc646cad377995df80b5bf81b632bf7b772311e0d63b55c0af965a8cf90eb01271f4cf5413ec2fe0dd23ee413efc12b03feb8fc045309986ff1fde6722bc6f359f86fc3a2f2843cfa47c5425ebdc1ec6cb1fe21e28d61537cc1f912f4d7a6ebd8dfd7983d94b76b15233e41ff8edcdf74f1bcb331d0bffe08364c94e7421fd3fa15e6371e98ee17ecbc323bd06f0cfb73690284f9b1181f86b7de409fee3bb3bf427cb807cbf9af6d82b70ef2b333e4e5913e61bf688f672ea0ef9da558b427837dfa940f89eb81b03f7326e787c115b38df99527f20b732ed71bed059866c8980ffc82c903211ebe810d7323fad77b60736160fe6c312fb7c8bf3e9957d047bb625e1b187fa23f343dda409efe8299dbd7e2f969ba077bff665e403fe32ff37a2be41588f160ae483f582f7e049b1bb4a75f49467bdb7bc590e78e994282e003b381eb7b79dd84bc35615f54bb83fce63c82a93cd1bfb3c6bcc5f383ae58945f27cce616fe1beddf9816eeef45fe606e4df2e0a2bf3fcc16c64728ecd59ce6a3280ffd23f385bceb94d9c4f839d7920dc40787d93210bfceccb621e4d9ed985ddc1f8af16a4ef34de49f28dfa4fbb13e01fd99d602f78f908f45edc57a98cd6c1bf07f62fdc7a468b6c27cd007537da23c4be413e6343f417e0ff93a14a0843d78d08f4bd785bcb25b6603fad8bd804d1ff5a5c29f9b3e6540a2be4a6736e1afcf1f606b66e2bc9ed01f910ff90f1b30a5afd067c3bc30b0de21fa63cd3733f4e71483a9bd980f08fba5e9f712f3ddf31bd85a9aa2fc3a66dea0be44e8c75a4d19d4c445ce6c73be6182ad2dea4fc47cc35a9347c1799677b06518b04f53b229da3308fbb368428de7f736b381f6742fcca621f417a2ff64bda83f6cc1645e8817623c5906c57fac773d8269fc233e45607b6162bd4fd8179987097d76c27f5ab6e5a27d9d18ff9663d9dc7e61ff966b7926fc8bb047cbb3c90389f68bfcdbf2a97cacaf887864cf64bcaa85bfb2e7745ddcdfbd31d38816f213f2b5975b03f94b688269fc20df10feca266f86f81d5d820d1bf9c5ee0a4ce10ce347e427f6d65e9bc8ff843dd9d37884bda03d86c5fe2d12f1c436c9df617eae83e90eac37b4cc9685f251bf659b16e63f27b0b3b4715e42c403dbb63d0be7351f14239f17f2b25d8a2f429f03ca776ddf12fd1b178a853c4e21d89959e2fe5ae413b6677be8df5083e93ada77af18fbab03f302e5379fcc968df575618fb64ffa42fb2ec0d2dfed6ec0ce1ccfd721334d58c5fde2ba3393f12628993df8dbc107537f84ff1e4330b507eb27787e2efd757704d36f107f3792d1ffe18e7985f674c21f380bea2ff21b8f7965617fd565dee0f95cd8b3b3247d8bfafb2f303d2fea1b1e999728afbb635ee3fa98306f2cd8bb18efce14ef447db50ea6f101fda3bc15dd2fc64ffdc26c5842be1aca5f933f403ef50ca6f40ae373c5ecd9c8df21bf0dd587f5b62b669bf3ad6f30f93fd89309760c3cbf73984dc8ff1c2816ed3fdf315b906f0af96d0d0bf6da5560aa01e799d792614f3df441091efab74b99a98142be6766cbc6faa588270e7923d84f9483690062bf02f2a000c4f549b66de48f36b36323dfa9995d1bf90cecc1a2fe431f0eb38dfb879ed94179ed4eb1686f82fedbe42f11ff7f991df68f1d98ee17f21c3e985d1bf939c68343fdc3fc17f6e150bc85ff7e60f690bf9411d8f2d97e06309527f47b4a997df89be153b190e729508cf313e88f2bc7f309f5bba46f219fc16476219fea1eeccec003caf3e83af2fb9ad9b7711e03fdf3dc39ea4fc0bee970be7309a6e7e12f3330958ffc84afd3f3d087ab18e7d7b6cc4b1e3faf926df83b71bf3b73c943087f27c6833ba7ebe8df1bf30afac8c47cd0256f68c29f3e82dd05ca1b1e14235e0affee2ea93cf8af9e7985fe24c2dfbb2bd217ecbf06d3f3c887bf985736fc51c0bc41fb9a37669a5089f126fc93bb26ff28e4596560776b8bf15e2e253bf0bf683fa5279c3fdc80e5fdfd9e9946a4d0bfc76ce1fafe24d941beb765f61dec4fa3bd065dc77ebfc8075d933c96602d6436e10f43e11f5d8bf23321afbd03761dd4bf7f62f651ff19f2a30087fa0ad4e7500620caeba14f324847dc5f435e8eb774b03f26fc813bc547ac47a13faeeb39c8c71e987dc83711e3c9f56cc7c2790094ef510942ff3d5ff7e6686f2eec8d5a4b19bab86e81e9bae0e1a418f9ad606f46ed417dc25f7a53be83fdae476607f1ad7d0353fbf0feca2bd8a309b790a79087b72077057b36c0de02f7472ef312e32798339bb03f478c476f29e5e3c6606f0d7f573f4b76e0af07c9ae687ffdc4bc417f1361df1e5933f219670ba67825ee2f1a6617e3d5d2c19e0ffb8a6fc0be057945c23ebdc9deb13f7606d378877dde833d8a20425fbf8ae1cfee984dc8c3427b3794af097f70b2c05403fc4bcabc81bded6f984de64231d697ee99797c143dd89fa33c1bbca50081fd942db307790736588e8fdd07d833a1df7eab58f47fc7f7537d88ff7366dbc5fc79c3ecb9c86f21dfadbf60ff21f247928e87f89b7d82dd39e459efc0d43fc8d366b65cd1bffd1db30dfd0c33c5d80f82bd1afe0ccfa74b6603f67112f190260b5b47b457df33dbf07ffb6bc9dc7f4d31f6d723661e8fe90398e48df59405f302fa88c4f8f5ac49e2c2bfd6cc36dad3de4a7631dfe8991df88ff14932e41fc11e2cea1ff2638c379bc60fd697519f4df684fdc24f668bfb3763b65d617fc53b33fbb7d31bb387ebbb0b66df15f69bbc80a97ea1cf53a518eb6f5bc9b0874e572cead7cfcc7307fbe7df8a71fe46c4dba9f7c8ff6ae883d24b5c6ff6cc8e8bf3d409b3ebc29ff3f3d47eccdfd7923d9cc77964f6d1bee15b31d64ba05f87fa83f878609ea3fce296790bfbcf7e997df8a30ce5533682f19d32d37881bfba64b611afaa48b1d0675d323bb0cfa6938cf2ab6f6697fdc55632f4558fcc1edab77b63f6615ffd4631e6b3dc3eea2fe62f2bc9b0ffddaf62f8b31be639e4b7fb520cfbbf605ea2bfa1c7bc417bf590d9c475cb568cf5d335b30ff9db604ffaeb0af6ea517e26e465c35f927691ff643ab30179162fcc36fbcf15b30ff934f792d1bff34c31f2933bc91ec60b3f2fedbd3214633e762b19f2a84fcc73d8d778a518e3fb5231ce33707de43f20ef6bc9d0af5d30af507fc0fdf3d7a83f90e56dd1df6ec96ca07f91cdccf12de3fe92fd229ec3de7d720742de3afc994ff60bff1232dba8ff84f27dea2ff2f14be639ecadd115233fbd655ea0bed3bb62f8d75c31cedb72fd644f787ff345b28bf7a576cc2bf4df5d31733cdd7f4946fb22215f6aed1af3a7f49699e77ffe13b3877cbbfc00d37843fef4c5ec61bc247f2c9ed767cc3efc5bd94ac678191b30c903eb0905f302f6b27b552ceaeb2f14e33c9ecdbc84fcf70f92614f837c7e05fb1e3f24a3bef30d33e753a76fc990779a33cbfc6264b6a13f77c1ece0ba573373fe1bcafb5dd87b24efe7fea7c29f91b777307f4bbf985dc83ffc014b7dd88f60ca48457bd39079897ccadb30bbb04feb9a99f593be32fb9057bd07933ca10f5d31fcff5931d6d74ac9881fedb562ec57737b481fc8b7af24435e83a318fe6bc1bc82bd8f178a114f657d6be873ffaa58d88727d9803da62f8a85fcad9699e3a3a331bbd0776d29c6fd47660ff2b03ac5e2f9f0ac18e7e913c91ece9fc9f6fae84fe52bc679ac4231e2a7982f4ede0deb3d1edab3a0fc0beb691792615fed2b33e72335f4bda0118af3ec178a91df3d332ff0bc16302fe10fcedf923de4773df31afeb77e508cf9f65131e67ff2f90dda53ad158bf2ac9059ea276536797ef82519ed0f5d660be5653fcc1cef53d97ecebfb29d629c97b9560cf98af512ea1deb33359879bedcbf81495e382ff3ccbc427b4f5792793cb48ae19fbf2443fffd8d62c4af91790df977b964f8afe15d31d6332dc9185fc18199e773a70fc990c71829c6faa1ba1ffdb76d6613f6ae3bcc1cffdd9ad9c1f5c0558cf3fbb27cce07ab0fc5387f76a718f36711dfa9f71ecacfd1bfe905329cb72b99395fb202e605ecb13933af605fc333f31af654cd14633f5096b766fbbd550c7b89993790ff304a86ff1934c9c8679c8199f38531930cfb3a458a717daf18f149b6cf407bc77bc588df6f8af17d14b27f26f4a54b7958a8df5a2ac6fcfc93d9867ebc0f6697e79b9d644f3cafcbfeb3feac0fc5d83ff315e3fc412ad913f6ddfc28c6f908c877ed2e906f86e8df9ae211ce0725cc1bc41bff87d9c0f5e45532e24f143373fe54c21ed772be944ae6f59bd38f64e83f5832b3fdd4578a311f2f25b33fe99997ecffb792597fbfcc2be8bbcf14c35fc9f6ac51fee92419f26cef9837f007e99a99e747a32599e75bb78a313f79900c7bec0f8a85fef427669ebfefe5f306c67f37538cfd952bc5383fee309b90df69508cf3c726b3057b711b66b6b7c86096f154d6efc23ee30533c7279ded41e63bfab562943f578cf715df148bf6a5f78ab11e8ff1b2a1f930fc5bcdccfb2109dabb7157bcbeb60293bd61ff5863e6f527a767e67cd586fcd47a51682bc679869279c1f1e12019f120dc332f317eeba564f43f1898393f2f3b66f667278399fd93fbc6bce5fc742199edf32c19e3757c6136103fca95629c077e502ce4a1ff329be8cf984b66fffba318d76f14e3fca82e19fee124ebb3381fc91563fef1ae18e7c713661bf670be558cf713a5fc1cc86f7f548cf3783133cff73b290fcfc37a9fec1fdb9f7fa718e329528cf33d8e62ac27bd2bc6fb9d68cfd6e3fd90ac625e22df8e1ce635f2b774c3ccf615dd3273fee1603c6c7dcedfd39564f6e7ae6251bfa631b3fda45be635cf5f3be62de4515e29c6fb403ab381f19a7892399e569291bf9c778a616ff78ab13e66329bf057e34c31e2f15a31d6737e982d9eff3e28c6fb01a562ec977e33db3c7f95fdb5b9bd978a617fb78ab1be21e561a3fe76a118e7ed3f991de87fffa118f3fd0b669e2f58523f6c6f4d2119fd75f7cc3c5f488e8ab1fed22916e3554f9979fdc53e4b66ff79a518f6faaa18fef28f711ee85d31d6932cc5f0efb962ec7fcbf6f17a4e0c7d9035607e19223f988ecb60fff79699e3756e307bb0c702f9f1b4de8cf787b93c391f2cf792a15f2b625e71fcb8548cf83a938cfeb877cc1bf6df7f8c78de304bff28cb67ff383c31b37f74be98393fcece9279fed92bc6fa912719f9e5f95db1b04f47d667f1f8ac24f3fcff4931e60fae64d86739570cfb3830f3fa7e792399f577a718eb411792d1bff34231e66f0533cfa7cea162e44f8162ec1ffd32bbb0dfd35e31f6ab46660ffaf3a5bed9fe8ba36221bfaa518cf7392c66b67f5df64fe60b6f8a719efd5931e2d78b62e45b4f8a857d687fd7b15e7c548cf5ca4031e2b9b4071ffa8821cf69ff14fe09fecef42cf8a312fd31e57a9fd533f3fe473c578ce73de625ee0f336639dfbc94ccedff66de42becd2db381f6156fcc6cafd1c8ccf385932d99f341d95e0bf6d05e29c67c46decff1f7b4568cf7dd0f92e1efc637c5c25e4f09b303fba83bc5c89f65fb1df89b5a96e7421ff5a058c843339879ffc28999a57dac15e33c9da958c84773158bf6697bc5983f1c15e37dcd5631f6b37cc5d8bfbb528cf775ee14c35f7d4ae6f9d3b7629c6f467b293b427e9a219e5bd29e9c1f6617e723d237c5387f1529c6fb6188cf16f957ccb752c5a23ccb67e6f5cde25532e46167cc6c5fa52d19fd6f3f24f3fac6a762e8ab6236783dca61e6fd8bd35c32ecaffc950cf96427660bfaaa2e1563fde4ef3afc9b2ccf827f6b06c5888fcfcc36c753c568dfe95131c66fa118e7053ac5d81f5c32cbfda65c32e4d12c148bf6768962f8d78d62e413525f3c5faaa5bc79feaefd28c679cd8d62ec97be4b46ffeb1bc5c8efe78ab1ffd828c67afa4c31fccd03b3c7fb6127c538cfb3528cfd12290f1fedd77bc99caf3c28867f6e150b79e98d629cefaf14c3dfed1463ffe15e31de977c538cef43f92b0feb919f8ad1febd627c5fc6a362f8a76fc538bf7096ccfe499507f9b6aa3f3ef26bc4179abd603e10c3bf5376c9f9cf3333ef8f57ad645eff82fdd8349f44feb496ccf39f9a99d7af4a4d32e4e53e306f517ed64ae67ce39a99d7c35b4732e467e7cc26b7e75531de5ff8910c7b3b717f653ca962c5b027f9bccdf2fc950c797a47669ecf9d9e14e3fcc54c31e2db5631de27fb960c7b3e1f148beb079f99f7a70e9e6221bf3492ccfb0d67c538eff4a318f992949fcbfe5c538cfd2d591fef2fbbb23dbc3f503d28c6faee5232cf97be1523de36cc3c3f3cd58af1fe4ca718f9922b99c7df4631c6df4931e25fa658f457ff522cfaa39d1563bef9ac18f1e4af3cacef3e2816f660698a91af5a8ab1fef4573ffcf9a762c44f691f3efbb70fc558bf79578c7c43b597fdef85629c3ffd2b0fef1342ff8eb7c67a509031bb984f64b6645e2f407c71e4fe62302ac6f8ce9957d04f12306f38ffdd2946fefcab583c1ff4ccbc3e589e25c33e9284d94079d9a018fa9d33f3fea475c3ccfb27a79699e3e1de94cce3c9920cf90d2c0f9200d62773c5383fa833bba83f6b14e3bc76a618df1f79508cf52b5731ce93cafebb1ee2ef93627cdfc70f339f0fd41f15231e9d15637de35532e70f8ad1bff64931e2e349b20f7dcbfef2f8d307c5d86fbe558cf8a798f3d177c5c847b68a11ff6ac538fff6a618e34fd5cfe36f548cf5c84231c6dfbd62cc3733c5b04f4731f2bf9362e4e3be64e87bfc63bcffb1510cfbdd29863c957ca0afe64332e2a38dfbdde90ba444bc3f32f3799d70a718ef53af993d8c4f07f6e6caf557cf65e6f364d61533efaf6523f396cf6f3c311bd04f9d31f3fa77f7c1cceb95cd8d64f8f75e5d877de6926dce577f9979be73d01523bf3324a3bc66a958e8f7e030bba8ff602bc67a97a118e3a3950cffd0aafbe10fad3933cfbf354f31f6a7ef1423dead15633d61a118edff550cfdbe48463e6b5d30f379587d542cda7f7015437f5f8a317ff9540c7f70ad18e7c9d4fdd05f152ac67edd8d62f843551ec7bb4231e2f5b762ec67198af1fd874f8ab1fefda218f2e925f3fa7aaa18e77d547b797eacfac3ebf38f8a71bef44e31de87f8bb8ef7ada5bdf83ed613a17f4f9ef7d0226607f1c9bf60667f1963bcabf35859c0cce3a5d499793f339931f379d7d2508cf32ef7ccbcbee53a9279fdc5548c7ce94231e2ff2019f2d2be9879fdbf7d518cfde25bc5d8dff966e6f5daac560c7d6f15433e07668e37874031bedf4eb68fc7d31029c6fb9719b38c3f3f92793fc0568cfd745731ec45cad3e3f9d9a818fe5fdecff1e6a029c6fbe7b78af1fd3d8e62f8ef4232c647f9ae18eb07a562c4a39562d8a72a8fe353a718eb8f978af1be7ea418ebb133c5987f7c2b16f273978af1ff03f86bafb09fc8548cf59e3fc6fcec4231be5ffa4331ce6b48fbe5f158188af17ec94131ce6fdc2bc679c367c5c87f547dbcdf312ac6fc39562cdabf5b28c6f91cd57ec4c3fe5a32e2615b2986fdc2df90b7c4fb38d933b38df75f22e4d7d3fb33d8df7963e6f753127ede5d63bd3eff6636b17e147c323b989f7ab79239be06cc2e97174ac6f5ca518cefcfc5782069f3f9f55f668ecffe8679017f6457cc4b6ecfaf629c47bf528cf30ef2fe15fc9b3f63e6f3dbf65e31c65fac18fee8877983ebf11f63fdec5531f61f585ed3170a4c1cbe2886bd7b8a457961a918e5b98a31bf7424f3fca160e6f785324731d6ff4ac5f0cf8962acaf9f994d9e7fbc2bc6f9b717c5e8bfa518eb1d9f8a715e44ca8fdf8f483ac5c81f3f14637d3e550cfffdaa18df17694be6f3b8f23aefd7659962bc3fe22b4679527efcbe4472af5894e7f7cc7cfedfbe548cf364b27fecefdd9699f3cb6ca518e7b135c5384f70ad18f9632e19edc9ae14e3fdb177c5982f4af9707c08b78a713ef35d31f219d97e3e8f16b48ab1bf562946fe7aa358d4ef4b7b95f993bccefebff8510cfff2a218eb3df067be3c8fe52d15c37e7e15e3fbb2768a211f4b31f47f2f99d78f9e1523be778ab11e152946fe7c568cf3ab2c3f95ef478a315ed792517ef2a018fe33568c7cf74b31cea77d28867f6279c9f3e55a2d19fd092dc5429ec58d62e41b6bc5f0578162c4bb6bc588e73cdee57ea8f3ab18ef7bfc31f6d32cc558cf0e25f3fe7eac18dfa7f2aa18f673ab18ef6b258ab1fe5e28c6f7e7a48af17ed8dffd384f23e5c7fbb3a12199f55f2bc67e78a718efeb688a21bf99627cbf91a318e771de14c3df8f8a91afaf1443de0db33cdfee29c6f7af0f8a713e35568cf71313c568df83629ccf382ac67cfd5e31dae72816edf32ac5589fde2bc67c52d6cffbd79aad18e71f4e92797f71a618df57f9a618f1bc538cfefc31dee7fb7b1ee36d548cf943a818fade2bc6fce05131be6f23550cfbe47c449e6fd312c588ff27c538ff1529c679864a31de877e518cf6bb8af13ee54e31f60b46c588d7ef8ae1ff34c5c8374ac58847529f7cdece91f2e078eccbf6f07e57d829867fb314e33cd19562ec476e14e3fb112bc5980fdc2a86fd7f2b463ef3ab18fb851f8a61ffad62bc9f21e565f0fabbf4b79c2fd8b23f26af1f978ad1de2bc5f87eaf5831e657bd62b4d7520cff3a578cfdffbffa90ffa78a217f53329fa791f6c3f98825c7339fa7b02e1563fe7faf18f942ac18f9e39d62f8eb83627c3fa1a618dfaf172ac6faf78b62bc2ff6a918fe5dfa7b9ecffa8962b4ef4e31fc71a318edfbbb1ff9e7bd62fcff8e6ac5d87fcd15c31f9e14c3df7c2916f20ebf15c33e768ab13ef8d77e9c0f7b538cef5b93f6cefb39b6b4673e2f6e497fc1fb3b6eaa18f6952bc6fad4a762f8e39d62cc472bc5f0c77fe561fffe8f617f5bc5f83ef04431f4f5a518f2181463fe79ad18f99bad18f34d397ef8fc42affac3eb0532ffe17c52cf24431ede4a31e6e38562d8c751b1e8ff6bab18fba59f8a31fede15e3bcd79762f47fa318fecf558cf5e34a31de977b530cfffef73cc6e7dffd38effda218f291fe9cd753eab9629c6fda29c67ef3ab62acb74b7fc6f9afae29c6f986ad62e8bf568c786c29c6faf9a3628cdf4131fa9f2ac6f9de5831e62b7fcfa3ff89627c1fe05131f66fe4f8e3f76b0bd51e7e5f52f507f1a5bc538cefcf52f5f37ae0b362c42be9afe4faaaa518e7131dc5a27df68d62ccffa43df37cc153f773beee2b867daaf2591f4bc5c8af13c5582ff214c33effcac7faeb5ffdd0cfa018efc31a8a457fb54bc5783fc2548cf1faab18fb41cf8af1bed38762e453323fe1f522eda818ebc9ea79e8a750ed837ecabffb317f51fac0fa6ed92bc6ff6fa0528cf3d0d78a711ee04231cea38c8ab1fea9fa8ff5a6f2af3ebcafd12ac6fbe02bc5382fb6518cefef90fec3c77e571b2bc6fa54a97809fff3daeadafffe43572cddd61dddd53dddd703fa19ea911eeb899e12677aae177aa95774afa7d77a439f56eff8e94e3f11f7faa08fa8e7ff548ba847d3cf54c64edfd3cf837ea15fea57fa35d573a3df8a7aeef4fbffb69e076acf23fcc9bf7c3af1f9e7df3c518f6c2ac7d69fe9e783fe423d7ad5dff477fd837a73d4ef446b2e453da77fa9e793f84bffd67ffe4b3dddffa61e5bffd567fa9cca5ce84b7d4535adc56743322d444dd373b29ead7a5ed663e826d7d3fd771f4dd70d4d23f9189aa5d99a0379682efdfc9ccad33cfafb936aa9c56fb6fff2f47465a9e19cc17f5b0bd5134c2da25a422dd2622dd152faed979669b97ed20a2ab715fda8a9479f74b7f75fdba9e9a29e4ffefcb3bc645ba68fa9955aa5d55aa3b55aa79db45e4bb541cbb5513b6b3b6dafbf50df1aaac5134f1ed5b3a23c92c141bb10f59c447fffb51e8defa56bdaa57645a55f6b37daad76a7dd6b0f54d323f5ef497bd65eb457ed4d7ba5fb3cdd1323e4a89e15a569efda877614f534539f49eed41eed539bf4a669dff4f353fba1d20aed57d433d3e6da425b6a2b6d4d756eb4ad6668a6a55b9a655936dde7683659b841367e141a9ce4388d8bdc72702e554857d56379964f771b564076f6698574bf6945566c25566a65566e15566955566d35da2f5d69adce3a91dc0cabb7066bb4cef4afdd5f3d7a65edad83f527b74bf45bbfb32ee97345775f8b11b3264db7d60d95786bdd59f7d683f5683d59cfd60bddf16abd59efd68775b43e75cffab2bead1febd79a91656a24ed0cf5101df13d11423b9de863451feabbb5d02bd2f437d98e612dad95e8dfdada585bcbb04c1ab49a6d698fdaf4dd7d8e75223b187483925ecff6edc00ea9847fa9477bb723656f9af85d65c77662a742ca869dd939fd2c266f60977665d77663b776679fecde1eec91246ddb67aa259bda61efecbd7db02fec4bfb8aeba9a732ed6bfbc6bee57a3aeadb8e64d6d877f6bdfd609335d9e46d34c77e16e36f63bfd8aff69bfd6e7fd847fbd3feb2bfed1f51ffaffdabd7f68c7a33b717f6d25ed96bfb8a24f3cff56cd8bf75a29e4bfd9e7a736f6f6dc336b547471776e7e886a33996eed989369bbe038d925ecff19d404b9dd0899c9846a9615d3989933a99933b8543636daac7a9b89e3beb8bfddb34868fdaa7e8cfbd533b8dd33a1dfd7d727aaa65d03f9d91fc5ae59c9d9db3770ece8573e95c513dd7ce0d5dbb75260d58cebd75ef3cd84be7d1e948ea9fa23ff42f3b719e9c67d51f1e5776ecbc38afce9bf3ee7c58b7ced1f974be74cff9d697ce0ffdf97566cedc59384b67e59c74db59937e2ea92d1b673b7d9f9dabbb9a6b3909d9fcf734f25c92acebd89cd772a4983e9ad5382f2ee5734ee606ce871bba91e6b831f5c6d2976ee2a66ee6e66ee1966e657db9b5f5ee36bae1b66ee79edcde1ddcd13ddb9abb9b46addeba7bba76b023b2dc4b1517e0c9447fdc0bf7d2bd72afdd1bb2df4bb207cfbd75efdc7bf781ea7a749fdc67f7c57db5b7ee9bf54625d654f2bbfbe11edd4ff7cbfd767fdc5f6adbcc9dbb8be93bce260fa0619fb2529e13fd59bb9be95bc55c931cc4da13dfb0e3399aaf2f29f1bd13dfe71178a1174dcf7bb1ad7989977a99977b85577a95db6983fba6bf5896576bafd4df7715172a110fe1452bf25c0f5ee3b55ee79dbcde1bbc91fc82e59dbd1dfdbdf4f6dec1bbf02ebd2befda4e74c3bbf16ebd3befde7bf01ebd27efd97bd136f4db57efcd7bb78ede07fdfbe87d7a5fffb99ed7966c3b744aefdbfbf17ebd99379fbe4fcb5b796baa6363edbdedf47d49beee6bd3ff76ceb76c713e703ab340594de04fbd1cb41fedd53af9911feb869ff8a99ff9f93fc9ed93e363e56cfcc22ffdcaaffdc66ffdce3fd989b7f77bddf307ebcb1ffdb3bff3f7d68b7ff02ffc4bffca2bfc6bff465bf9b7cecb34b6fd3bffde5dfa0f5496e13ffa4ffe33f7e72f37993c77e7bf5883ffeabff9ef96e97ff847ffd3fff2bfedc4ffa19a7efd99d74ddfb16087d6a09bd3dbe5d31ba6b666bd50fbb6dacfb4dae49b814e56bf09b4c00a6c370db05e72a3e964e9e4a3dc65e0523c76fc8446f1adff1678811f04411844411c24411a644ee28f411e1441195401458ca009daa0b3dde014d0989e56bc28b76b8221189dc49e07e76017eced58ef90b74f994670082eacb7e0926c71af7fda336bd04ec155701ddc04b7c15d701f3c5059b59378d7c163f0143c531d2fc16bf016bc07a46d92c24370d45efc7bd2cf278ddc24f80cbe82efe027f8d5aa00f9fa143bbda93f243d239853af16f4f7325891457c04eb60136c032330c9879d6cd71f433dd4422ba48ba1eb695aec6ff5ad56f871e8511cbab476a16fbd8441188651188749983ab536609e1966e114019efc97a92dbe1116a1175cd06fe2a0b2e7611956611d36611b76f6bdff1a9ec23ea4311e8ee159fb0d77f4affda4638a86d456a70b0fe14578195e513dd7e14d784bb912d66b284a8577e1bda7f907ed317c081fa9474777a939e153f8ecbc687df842b5bd866f96a79be17bf8111ec34ffb9e62b6a56dc2aff0db8ba8af49f813fe86b3701e2ec265b8b28c701d6ec22d594ba1e33d6d8a85a119e9f63cd2b43eb2c81e6611454ae86d8a7991a35df92f1165019117f95110855114c59aa9fd464994465994474554465554474dd4465d748a7a7f1e0d1e5976344667c49fa08a76d13e3a4417d1a53df7a842cda33110511e7da2fbae8225fdbc266fb28c6ea2dbe82eba8f1e82367a8c9ea2e7e8257a8ddea2f7e8c377a263f4197d45dfd14ff41bcda27968399f5e1d2da225f21d776ae418addc3e5a479b681bde4e1a171195223959af11199119eb9317d1e2588bad98dc6dec46bbd88bfd3888c3388a63ef214ee234cee23c2ec8c59771e58f711d37711b7788db53b6119fe23e1ee2d19bc5e77817efe3437ca1adc252ebc221be8cafe2eb98729ef8d69ec7777640565bc5f7f143fc183fc5cff14bfc1abfc5eff1477c8c3fe3aff8db0fe39ff8379e459ef61bcf29cf1471215ec424196d13afe275bc89b7b1119b899e68899550304cdce825f1123fbe4a82f03b099328899dcf24d1cd244db2244f8aa44caaa44e9aa44d3aedd7de2627edd7d94c56e686c19bf6abe2b699f434eab46448c6e49cec927d72482e92cbe42ab94e6e92dbe42eb9d77afb2e79481e93a7709e3c937d16c94bf29abc25efc9476869f154aab01933a27c383952999fdaa56e275fc9b7fe98887a92dfe0359991c57e26f364912cdd3c5925eb64936c132331533dd5522bb5a39d55a64eea3a79ead9cfa99f06da47f09686da876ea6511aa74964a469704cb3348bccc84c736d47570add484b8fdfaf23aed326780b3fd336edd253da5b77e9908ee939dda5fbf4905ea497f16f7a955ea737619cded2b377e97dfa103d8743fa484f5346ef92ecf586e2dada0aade514cf69c4c7e973fa123d238fd72ed3d7a9dfe91b99529dbea71f54dfd11bc34fd2c743b04f3fd3aff43bfda1fefca6b3749e2e280bd7d2a5f691aeb423fd5c4ffa256f70242d0f229737d2cd9467a65b8ab9bf725e42ffdaa6464aa32ed3e9dfd3e7143d661afdb1dc903ccc7d664fd2c92839c9bcccb7e7599085c45116fb4196046f945dba24aeccf9c8f2acc8caf4487397534639ad6ec7755667cd544fd68ab22f33b296ec94f59a950dd9a8fdba1125452f5eac1db373b6a3a4f031db6787ec22a3f9906eda49f2965d65d7d94d769bdd65f7d943f6983d65cfd94bf69abd65efd94776cc3edd5fddf656d917d6dfe8336843f64d3334fed0bf07ca4937ce467b8c9eb39fec379b512be6d9225bc64eb6a2598199adb34db6cd8ccc748fb99e6bb995dbb913b5b99b7bb99f07799847d690c79a93275c8face599f207fad03c0d35515d799a67799e1779995779ed3de50d85e6c4d9e46ddee5a7bccf877ccccff92edfe787fc22bf4cb4fc2abfce6ff2dbf0dbde5a33ca5b3ff33bac174e23362df2fbfc417deed342bba43ae8e38fda317fd476fe983fe5cff94bfe9abfe5eff9477e4cedfc33ffcabff39ffc379fe5f37c912ff355bece37f93678cbc91e7253fba0a9bf26ecbac087ea519f89a7daa99e2a760aabb0b5c7c229dc82928e22b086acd1cd228c5ded5844455c24747b56e44551944555d445931f0bd27ad115a7a2779e0b11e764b9ff54b6fa1055c5589c8b9ded16fbe2505c14975191522dda6bf444d6732cae8a6b6f2ca2e8a538d31ff2c8c58df641564ab3dfe2b6b8b3347d833ce43fcb89f4307dfeea718a285d51fb93e2be78281e8b2767533cfbd3131fc50b8da063f056bc4e1f2afd187e51f96fc57be2151f055d8b4cfd167955f1897aa672c3af823fe117d7937aa49fe29ba4f053fc16b3625e2c8a25d5ba9afc4eb12e36c5b6308a81a4732a4e74e7a01d8a417c4ce7b9d44b8d4a11722b2dca281ccda4c8f592dae41be993dae4d15ef2e3f4296ded583ada47e9965ee99741199651199367b6e877344aa99ea14ce3ab322db3322f0ba2b2acca5a3b3a4f65a31d6d17feba6ce94a579ecabe1ccab13c97bb725f1eca8bf292e8aabc2e6fe8fa6d7957de970fe563f9543e972fe5abf3411af828dfa82f1f68cff499467c446361fa838f6e97efde27d641cb0f2ae9587e965fe577f953fe96b3724e9f45b92c57e5badc94dbd2d056a549e155abaccaae9cca753e2a8a62955f054212ea23a43de0c3eb69ab2a14eb9d11c9c025cd0c555c25d4abb14aab8c4ca1a8caaaaaeaaa99745db555579daabe1aaab13a573b374c29da547bef1d9afd2fe5a30e4f1baa4385750adbba713ee999cbfc585d91fc8ed5757553dd5677d57df5503d564f15659fb655bd4451f55abd55efe16766e9a6f3a98dd5477564cff19fcae7cf52b7a9fd95e8cfe7b4f2517d514ddfd54ff55bcdaa79b5a0abcb6a55adab4db5ad8ce8d949484a24a15aa7581cd79a882f666d69cfa8e7bfd4b1949fdaaeb1eeedd58eb86e6a43ed4e16597bb55f07755847dab18eeba44e691c3cd7595ed539699fa2bfeb505436b49172ea518ceeffa647695917905b5dda795dd535d9ca73ddd4adf35c77e5b13ed57d61d493851cebb13e4ff65bef9ca77a6f69da477da0cfc534f2a4bd71ecfa9d7c8aac77fa509627e6f5f525f5e4b7be9ab45d5f931d5c97d7f54d7d5bdfd5f7f543d9d78ff553fd5cbfd4aff55bfd5e7fd4c7fa93ae7cd5dfd4eb9ffab79e155a3d2fb44223dd8a0f6ac59ffc582f6aec2f7ed4cb691cd7ab7a5d6fea6d6dd46679a04997d6588d5d5d340e857daff19ba0099ba8899ba4499bacc99ba2bc6ecaa66aeaa669daf2b2e99a53d337433336e766d74ceded9b3dfd39e419ead1ae4bbbb9682e9babe6bab9696e9bbbe6be699b87e6b1796a9e9b97e6b5796bde9b8fe6d87c365fcd77f3d3fc36b366de2c6ab359362bfab96e36f4d9364663366d6db47aabb5564396d692bd210f691df212c7d66dbdd66f83366c366dd4c66dd2a66dd6e66dd1966dd5d66dd3b66dd79edabef96e87766ccf74dfaeddb787f6a2bd6cafda6b7ae6a6bd6dcaf68e6ebd6f1fdac7f2d03ed19fe756e8a77d2986f6b5bc6bdfdaf7f6a33db69fed57fb4da5fcb4bfedac9db78b76d9aeda75f3d16eda6d6bb4e6b488db599d4d2d37dbe7cee9dcce6b369ddf055dd8455ddc255dda6593ecbbbc2b689c1e908fe66957164357757539764dd7765dd3765977eafa2aeb866eecceddaedb7707faed45537697dd55775da574ef0d6961eca80fdd1de9a7eceebb87eeb17bea9ebb97eeb57bebdecb9ee28f877d92fc23238bee3eba63f739595bf7d57dd3d33fdd2ffd7bd6cdbb45b7ec56dd9a7eb7a1df6c3ba333a765e09375b24fcec9ad0e27efe49f8253581dcafe149de253724a4fd929a740519eaa537d1279d5a99dc6d589b2aad3a9ec280e1c4f7df550de4ce3e644a3e7349ecea7dd694fbf399d28b69c2ee8cfe5e4f5b5e3894643999daee9372491d3cde9d6d2aa35fdfe4efb38dd9f1e269f7e7a3cf13adfe969f20627ca4f4f2fd4c6576ad51bfd79a73a3e4ec7d3e7e9ab7e3f7d4f767afaa11ef7a75fba323bcdebdfa9ecc9d79f16f46789bfa7dfd2ef2957a59cefe9f438c948d8f5d3895a502f4e9bd3f6649c68ecf47a77d76bbdd59414810ebddd3bbddb7ba4ffb6f7fba00fc98e577dd4c77dd2a7ed6f4f1aeff3bee8cbdaec2b8a5c87e6aeaf9bb16f487b7ddff65d2fd60ffa53f171bae9fb7e68ca7e6cdafedcef7a8a74fd545fd25ff497fd555bf6d7fd0dfdbced9cfe8efebeef1ffa47fafba97fee5ffad7fead7fef3fda987e1efbcffeabffa6daaecbb1ffe97f27f98b7a669337286ffa79bfe897fdaabda7fad6fda6df527fa875bdd19b834e8ecaeac9e206b266faa991276807a77918dc69e457d5e00dfe100ce11095e31077df4d3f24435a922f1bb241ac230d856656eb6218caa11aeaa119daa123b51e867e188691ac2c1fcec36ed80f87e16220eb1dae066ae97043744b7fdf0df7a7fef44ae53ed09f47facdd3a4c93e3d516c199eb50fe7c97912fa390f2fc32bd5fbd62fe88ef1640ef6f04ea57d4cfa198e0359fbf0d52f866ffafb67f8a59fb3e16b980f8b6139ac86f5b0992ca1df0ddbc1a09acc7a7672477dd4c8163f466bb447272d453d5304a18830baa337faf54d3936e51894e318365e793d4663dc7814ac13f2ddc7d3fb98921233fa938f0575361dabb12e86b1a1f6bb3db9a3b11b29228ffd4899e2388e67ddac6d7d27e6f5cb71a79d4f0f34a88ef47c34eea7b8301eea5b8a0977f41b9ffebe252b2769d0ef2f86e92e1a91e3e530a3765c51a939597347bfb9a6df5f8f37c3d7785b0c14a528bbd6ccc9ca453d34c7d37ec73bed38de773351d6cd54133df7401f9f2c7d9c34313e8e4f64e7e370a8f2e1babaa82ee8df947b8dd7c34f558dcfe3cbf85a5e8e6fe2cee7f1bd4ca99f94fd368706fecd70579aa17d58da789cda4e2dfa1cbf46d2c6f83392ef1967e37c5c4c56362ec7d5b81e2cfad766dc8e4617f7ebd13ceb947d1dcedad96a36fdf96c9f9d727e76cfded93f07a7e41c3a37c8dfa6b9a9f67b8e9ce7737ca6bc6abc39a7e7acbc3ee7674ae1c71bf29e4ebf3f97e7ea5c9f9b734b9ed9eb9c73773e9dfb66731efa5df3d025e7f17c6ee3f3eebca76b07aa8f3ceef9f27c4519f1cd59f883f3cdf976eacff9ee7c7fcece0fe7c7f31359c2ebf87a7e3ebf905d7be7d7f3dbf9fdfc713e76eef9f3fc75fea6b27ecebfedd579769eb773aa6d715e9e57e7f57973de9e8db3b9d3dbf94edb59e5b8b3fbb6fee5793079bb6abd7376eecedbf9c36e17ecc2e183ee891a7bb8dac5bb649752f4daec328a35ce149b3a6797ef8a5db9ab7635d5d3ee9a5dbbebda7877da9181efc6dd79b7dbed7787dd4579dddacd88b8ddcf7697d56a77b5bbdedd34e5ee7677b7bbefee760fbbc71d699ee879f7521e76aff4e76df7befba0bf8fe457b4c95b74f7bbcfdd17d5f4bdfbd9fdee66bbf96eb15bee56f4dc7ab729fbddb6209b13fee075f23bc5b03376e6f8b6d7f75ad3eeadbddd257ba729f7eededbfbfba0dbecc37db48ff749794db258ecd37db6cff7948beccb7db5aff7cdbedd77fbd3be6f1ff7c37edc9ff7bbfdbe18f607cabf9fa51fad8331db5fec2f1bad7d3c9714b3eff657e57cb2b1fdf540fe7e7fb3bfa59f77fb7b1af9fde419f7d3a8fda0bf1fe9cfd3feb9ecf72ffbd7fddb5e8cb3fdc7feb8ffdc7f691ffb6f99f7ee7fb48fc4a39146a36eff4b31b31f9ff7d3bfe73462c7f2bad029963c0d2fc5479969c7fd624f59d87e550ce4459ef6e417eb80e63da25efab9a9fdfd034549bab39fedb71ac5c2b2473dd32aaf76b95f6b876915457bb2a3694f7a9c72e1efbdd11c1ccae2f569df837caffee31e745b2bf6a666e6495de47779d61ca64c9066891fd3df0dc969fa4cb3ddec3bfb4e8beaf7807de7953ead92ffb8ee94b3ea5de01ca8ca83153874e5e740b339dd089cf2bd3c15831d4567cacdbb3dc9dc730e96e615f6de986e9f325e97fea3fb2fff35f39579efffa11e0df5d08cfea80df66de0501e7bb4a3ec4bb7f4eea03b4f548fa6792409632a7f2abbb00bfbe0fc978c9efec87aa67bb89ed5548f3e1edca91e7a823cb9fee37d799f94a19ca67a34ffaf9efc4e370ff654be28fb47ffc9efec68faa8fdfad5c13bc87301aa1eead7548f3bd5e37d520b68e643d9f85df2837af4cefbf41ccd3b04da91ea716d9a0b1e9ca97cb1cb49e5ab73012b7c02c7beb5dc7fffffffe7bffd2fce1433bd - - - - - pbnInputFile - clicked() - QgsWorldMapImporterGuiBase - pbnInputFile_clicked() - - - pbnOutputFile - clicked() - QgsWorldMapImporterGuiBase - pbnOutputFile_clicked() - - - pbnOK - clicked() - QgsWorldMapImporterGuiBase - pbnOK_clicked() - - - - qgsworldmapimporterguibase.ui.h - - - pbnInputFile_clicked() - pbnOutputFile_clicked() - pbnOK_clicked() - - - diff --git a/plugins/worldmap/qgsworldmapimporterguibase.ui.h b/plugins/worldmap/qgsworldmapimporterguibase.ui.h deleted file mode 100644 index c448cf3a1bda..000000000000 --- a/plugins/worldmap/qgsworldmapimporterguibase.ui.h +++ /dev/null @@ -1,32 +0,0 @@ -/**************************************************************************** -** ui.h extension file, included from the uic-generated form implementation. -** -** If you wish to add, delete or rename functions or slots use -** Qt Designer which will update this file, preserving your code. Create an -** init() function in place of a constructor, and a destroy() function in -** place of a destructor. -*****************************************************************************/ - - - - - - - - -void QgsWorldMapImporterGuiBase::pbnInputFile_clicked() -{ - -} - - -void QgsWorldMapImporterGuiBase::pbnOutputFile_clicked() -{ - -} - - -void QgsWorldMapImporterGuiBase::pbnOK_clicked() -{ - -} diff --git a/plugins/worldmap/sample_data/BDW.OUT b/plugins/worldmap/sample_data/BDW.OUT deleted file mode 100644 index cc0fc16da818..000000000000 --- a/plugins/worldmap/sample_data/BDW.OUT +++ /dev/null @@ -1,59 +0,0 @@ - Database: BDWORLD. -=============================================================================== - - - PRIORITY-AREAS ANALYSIS: Near-minimum-area set re-ordered by richness - (all subgroups, data level 1 and above) in 2.9 seconds, - 0 within-set redundant areas rejected. - - Representation summary by area sequence - - Choices Taxon richness - step area abs inc cum inc % cum % - - 1 14461 159 159 159 41.09 41.09 - 2 16661 106 63 222 16.28 57.36 - 3 10847 79 37 259 9.56 66.93 - 4 14473 61 16 275 4.13 71.06 - 5 17378 77 15 290 3.88 74.94 - 6 9042 62 11 301 2.84 77.78 - 7 14106 125 10 311 2.58 80.36 - 8 14484 98 7 318 1.81 82.17 - 9 14460 119 6 324 1.55 83.72 - 10 14457 78 6 330 1.55 85.27 - 11 13378 72 5 335 1.29 86.56 - 12 14481 90 4 339 1.03 87.60 - 13 11218 28 4 343 1.03 88.63 - 14 15235 45 4 347 1.03 89.66 - 15 7964 46 3 350 0.78 90.44 - 16 14470 90 3 353 0.78 91.21 - 17 17019 87 3 356 0.78 91.99 - 18 15944 93 3 359 0.78 92.76 - 19 11578 72 2 361 0.52 93.28 - 20 14124 89 2 363 0.52 93.80 - 21 14119 91 2 365 0.52 94.32 - 22 11215 42 2 367 0.52 94.83 - 23 7626 20 2 369 0.52 95.35 - 24 9764 40 1 370 0.26 95.61 - 25 14463 97 1 371 0.26 95.87 - 26 11224 29 1 372 0.26 96.12 - 27 14464 86 1 373 0.26 96.38 - 28 10122 53 1 374 0.26 96.64 - 29 17018 77 1 375 0.26 96.90 - 30 15946 79 1 376 0.26 97.16 - 31 14107 49 1 377 0.26 97.42 - 32 13383 73 1 378 0.26 97.67 - 33 11940 53 1 379 0.26 97.93 - 34 13017 29 1 380 0.26 98.19 - 35 14099 114 1 381 0.26 98.45 - 36 13738 38 1 382 0.26 98.71 - 37 14462 74 1 383 0.26 98.97 - 38 13018 29 1 384 0.26 99.22 - 39 12298 14 1 385 0.26 99.48 - 40 13394 74 1 386 0.26 99.74 - 41 19401 1 1 387 0.26 100.00 - - Upper bound to number of alternative flexible sets: 1872 - _________________________________________________ - - diff --git a/tools/spit/AUTHORS b/tools/spit/AUTHORS deleted file mode 100644 index 3da322635eea..000000000000 --- a/tools/spit/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Denis Antipov -Gary E. Sherman diff --git a/tools/spit/COPYING b/tools/spit/COPYING deleted file mode 100644 index 5b6e7c66c276..000000000000 --- a/tools/spit/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey 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 2 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, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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 Library General -Public License instead of this License. diff --git a/tools/spit/ChangeLog b/tools/spit/ChangeLog deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tools/spit/INSTALL b/tools/spit/INSTALL deleted file mode 100644 index 02a4a0740aac..000000000000 --- a/tools/spit/INSTALL +++ /dev/null @@ -1,167 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes a while. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Type `make install' to install the programs and any data files and - documentation. - - 4. You can remove the program binaries and object files from the - source code directory by typing `make clean'. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. - diff --git a/tools/spit/Makefile.am b/tools/spit/Makefile.am deleted file mode 100644 index c5752ed36d67..000000000000 --- a/tools/spit/Makefile.am +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (C) 2003 Gary Sherman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -bin_PROGRAMS = spit -%.moc.cpp: %.h - $(MOC) -o $@ $< - -%.h: %.ui - $(UIC) -o $@ $< - -%.cpp: %.ui - $(UIC) -o $@ -impl $*.h $< - -spit_SOURCES = main.cpp \ - qgsspit.cpp \ - qgsconnectiondialog.cpp \ - qgsshapefile.cpp \ - qgsmessageviewer.cpp \ - $(spit_UI)\ - $(spit_MOC) -spit_MOC = qgsconnectiondialogbase.moc.cpp \ - qgsshapefile.moc.cpp \ - qgsmessageviewerbase.moc.cpp \ - qgsspitbase.moc.cpp - -spit_UI = qgsconnectiondialogbase.h \ - qgsconnectiondialogbase.cpp \ - qgsspitbase.h \ - qgsspitbase.cpp \ - qgsmessageviewerbase.h \ - qgsmessageviewerbase.cpp - -# UI dependencies -qgsconnectiondialogbase.h: qgsconnectiondialogbase.ui -qgsconnectiondialogbase.cpp: qgsconnectiondialogbase.ui qgsconnectiondialogbase.h -qgsspitbase.h: qgsspitbase.ui -qgsspitbase.cpp: qgsspitbase.h qgsspitbase.ui -qgsmessageviewerbase.h: qgsmessageviewerbase.ui -qgsmessageviewerbase.cpp: qgsmessageviewerbase.h qgsmessageviewerbase.ui - -# add required defines for compiling PostgreSQL -PGDB = -DPOSTGRESQL -DHAVE_NAMESPACE_STD -DHAVE_CXX_STRING_HEADER -DDLLIMPORT="" - -BUILT_SOURCES = $(spit_MOC) $(spit_UI) -spit_LDADD := $(LDADD) $(QT_LDADD) $(GDAL_LIB) $(PG_LIB) -AM_CXXFLAGS := $(PGDB) $(CXXFLAGS) $(EXTRA_CXXFLAGS) -I../include $(QT_CXXFLAGS) -I$(PG_INC) -g -CLEANFILES = $(BUILT_SOURCES) diff --git a/tools/spit/NEWS b/tools/spit/NEWS deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/tools/spit/README b/tools/spit/README deleted file mode 100644 index a66852203463..000000000000 --- a/tools/spit/README +++ /dev/null @@ -1,3 +0,0 @@ -SPIT - Shapefile to PostgreSQL Import Tool - -SPIT is a GUI tool for importing Shapefiles into PostgreSQL databse. It resembles the functionality of shp2pgsql command line tool. \ No newline at end of file diff --git a/tools/spit/TODO b/tools/spit/TODO deleted file mode 100644 index e7e9fddf3adb..000000000000 --- a/tools/spit/TODO +++ /dev/null @@ -1,5 +0,0 @@ --chage the focus policy on the main SPIT dialog --chage the focus policy on the new connection dialog --file list sorting by feature size works as for string and not int (fix it) - - diff --git a/tools/spit/acinclude.m4 b/tools/spit/acinclude.m4 deleted file mode 100644 index 5fde20117b2d..000000000000 --- a/tools/spit/acinclude.m4 +++ /dev/null @@ -1,228 +0,0 @@ -# Check for Qt compiler flags, linker flags, and binary packages -AC_DEFUN([gw_CHECK_QT], -[ -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PATH_X]) - -AC_MSG_CHECKING([QTDIR]) -AC_ARG_WITH([qtdir], [ --with-qtdir=DIR Qt installation directory [default=$QTDIR]], QTDIR=$withval) -# Check that QTDIR is defined or that --with-qtdir given -if test x"$QTDIR" = x ; then - QT_SEARCH="/usr/lib/qt31 /usr/local/qt31 /usr/lib/qt3 /usr/local/qt3 /usr/lib/qt2 /usr/local/qt2 /usr/lib/qt /usr/local/qt" - for i in $QT_SEARCH; do - if test -f $i/include/qglobal.h -a x$QTDIR = x; then QTDIR=$i; fi - done -fi -if test x"$QTDIR" = x ; then - AC_MSG_ERROR([*** QTDIR must be defined, or --with-qtdir option given]) -fi -AC_MSG_RESULT([$QTDIR]) - -# Change backslashes in QTDIR to forward slashes to prevent escaping -# problems later on in the build process, mainly for Cygwin build -# environment using MSVC as the compiler -# TODO: Use sed instead of perl -QTDIR=`echo $QTDIR | perl -p -e 's/\\\\/\\//g'` - -# Figure out which version of Qt we are using -AC_MSG_CHECKING([Qt version]) -QT_VER=`grep 'define.*QT_VERSION_STR\W' $QTDIR/include/qglobal.h | perl -p -e 's/\D//g'` -case "${QT_VER}" in - 33*) - QT_MAJOR="3" - ;; - 32*) - QT_MAJOR="3" - ;; - 31*) - QT_MAJOR="3" - ;; - *) - AC_MSG_ERROR([*** Qt version 3.1.x or higher is required]) - ;; -esac -AC_MSG_RESULT([$QT_VER ($QT_MAJOR)]) - -# Check that moc is in path -AC_CHECK_PROG(MOC, moc, moc) -if test x$MOC = x ; then - AC_MSG_ERROR([*** moc must be in path]) -fi - -# uic is the Qt user interface compiler -AC_CHECK_PROG(UIC, uic, uic) -if test x$UIC = x ; then - AC_MSG_ERROR([*** uic must be in path]) -fi - -# qembed is the Qt data embedding utility. -# It is located in $QTDIR/tools/qembed, and must be compiled and installed -# manually, we'll let it slide if it isn't present -AC_CHECK_PROG(QEMBED, qembed, qembed) - - -# Calculate Qt include path -QT_CXXFLAGS="-I$QTDIR/include" - -QT_IS_EMBEDDED="no" -# On unix, figure out if we're doing a static or dynamic link - -case "${host}" in - *-cygwin) - AC_DEFINE_UNQUOTED(WIN32, "", Defined if on Win32 platform) - echo "$QTDIR/lib/qt-mt$QT_VER.lib" - if test -f "$QTDIR/lib/qt-mt$QT_VER.lib" ; then - QT_LIB="qt-mt$QT_VER.lib" - QT_IS_STATIC="no" - QT_IS_MT="yes" - - elif test -f "$QTDIR/lib/qt$QT_VER.lib" ; then - QT_LIB="qt$QT_VER.lib" - QT_IS_STATIC="no" - QT_IS_MT="no" - elif test -f "$QTDIR/lib/qt.lib" ; then - QT_LIB="qt.lib" - QT_IS_STATIC="yes" - QT_IS_MT="no" - elif test -f "$QTDIR/lib/qt-mt.lib" ; then - QT_LIB="qt-mt.lib" - QT_IS_STATIC="yes" - QT_IS_MT="yes" - fi - ;; - - *) - QT_IS_DYNAMIC=`ls $QTDIR/lib/libqt*.so 2> /dev/null` - - if test "x$QT_IS_DYNAMIC" = x; then - QT_IS_STATIC=`ls $QTDIR/lib/libqt*.a 2> /dev/null` - if test "x$QT_IS_STATIC" = x; then - QT_IS_STATIC="no" - AC_MSG_ERROR([*** Couldn't find any Qt libraries]) - else - QT_IS_STATIC="yes" - fi - else - QT_IS_STATIC="no" - fi -QT_IS_MT="unknown" - if test "x`ls $QTDIR/lib/libqt.a* 2> /dev/null`" != x ; then - QT_LIB="-lqt" - QT_IS_MT="no" - elif test "x`ls $QTDIR/lib/libqt-mt.so* 2> /dev/null`" != x ; then - QT_LIB="-lqt-mt" - QT_IS_MT="yes" - elif test "x`ls $QTDIR/lib/libqt.so* 2> /dev/null`" != x ; then - QT_LIB="-lqt" - QT_IS_MT="no" - elif test "x`ls $QTDIR/lib/libqte.* 2> /dev/null`" != x ; then - QT_LIB="-lqte" - QT_IS_MT="no" - QT_IS_EMBEDDED="yes" - elif test "x`ls $QTDIR/lib/libqte-mt.* 2> /dev/null`" != x ; then - QT_LIB="-lqte-mt" - QT_IS_MT="yes" - QT_IS_EMBEDDED="yes" - fi - ;; -esac -#echo "QT_LIB is $QT_LIB" -AC_MSG_CHECKING([if Qt is static]) -AC_MSG_RESULT([$QT_IS_STATIC]) -AC_MSG_CHECKING([if Qt is multithreaded]) -AC_MSG_RESULT([$QT_IS_MT]) -AC_MSG_CHECKING([if Qt is embedded]) -AC_MSG_RESULT([$QT_IS_EMBEDDED]) - -QT_GUILINK="" -QASSISTANTCLIENT_LDADD="-lqassistantclient" -#echo "host is ${host}" -case "${host}" in - *irix*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE" - fi - ;; - - *linux*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes && test $QT_IS_EMBEDDED = no; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -ldl -ljpeg" - fi - ;; - - - *osf*) - # Digital Unix (aka DGUX aka Tru64) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE" - fi - ;; - - *solaris*) - QT_LIBS="$QT_LIB" - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -lresolv -lsocket -lnsl" - fi - ;; - - - *win*) - # linker flag to suppress console when linking a GUI app on Win32 - QT_GUILINK="/subsystem:windows" - - if test $QT_MAJOR = "3" ; then - if test $QT_IS_MT = yes ; then - QT_LIBS="/nodefaultlib:libcmt" - else - QT_LIBS="/nodefaultlib:libc" - fi - fi - - if test $QT_IS_STATIC = yes ; then - QT_LIBS="$QT_LIBS $QT_LIB kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib shell32.lib imm32.lib advapi32.lib wsock32.lib winspool.lib winmm.lib netapi32.lib" - if test $QT_MAJOR = "3" ; then - QT_LIBS="$QT_LIBS qtmain.lib" - fi - else - QT_LIBS="$QT_LIBS $QT_LIB" - if test $QT_MAJOR = "3" ; then - QT_CXXFLAGS="$QT_CXXFLAGS -DQT_DLL" - QT_LIBS="$QT_LIBS qtmain.lib qui.lib user32.lib netapi32.lib" - fi - fi - QASSISTANTCLIENT_LDADD="qassistantclient.lib" - ;; - -esac - -if test x"$QT_IS_EMBEDDED" = "xyes" ; then - QT_CXXFLAGS="-DQWS $QT_CXXFLAGS" -fi - -if test x"$QT_IS_MT" = "xyes" ; then - QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -DQT_THREAD_SUPPORT" -fi - -QT_LDADD="-L$QTDIR/lib $QT_LIBS" - -if test x$QT_IS_STATIC = xyes ; then - OLDLIBS="$LIBS" - LIBS="$QT_LDADD" - AC_CHECK_LIB(Xft, XftFontOpen, QT_LDADD="$QT_LDADD -lXft") - LIBS="$LIBS" -fi - -AC_MSG_CHECKING([QT_CXXFLAGS]) -AC_MSG_RESULT([$QT_CXXFLAGS]) -AC_MSG_CHECKING([QT_LDADD]) -AC_MSG_RESULT([$QT_LDADD]) - -AC_SUBST(QT_CXXFLAGS) -AC_SUBST(QT_LDADD) -AC_SUBST(QT_GUILINK) -AC_SUBST(QASSISTANTCLIENT_LDADD) - -]) diff --git a/tools/spit/aclocal.m4 b/tools/spit/aclocal.m4 deleted file mode 100644 index f67a1d00ce19..000000000000 --- a/tools/spit/aclocal.m4 +++ /dev/null @@ -1,6766 +0,0 @@ -# generated automatically by aclocal 1.8.2 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - -# serial 47 AC_PROG_LIBTOOL - - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If this macro is not defined by Autoconf, define it here. -m4_ifdef([AC_PROVIDE_IFELSE], - [], - [m4_define([AC_PROVIDE_IFELSE], - [m4_ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) - - -# AC_PROG_LIBTOOL -# --------------- -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. - AC_PROVIDE_IFELSE([AC_PROG_CXX], - [AC_LIBTOOL_CXX], - [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX - ])]) -dnl And a similar setup for Fortran 77 support - AC_PROVIDE_IFELSE([AC_PROG_F77], - [AC_LIBTOOL_F77], - [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -])]) - -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. - AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [ifdef([AC_PROG_GCJ], - [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([A][M_PROG_GCJ], - [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([LT_AC_PROG_GCJ], - [define([LT_AC_PROG_GCJ], - defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -])])# AC_PROG_LIBTOOL - - -# _AC_PROG_LIBTOOL -# ---------------- -AC_DEFUN([_AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -])# _AC_PROG_LIBTOOL - - -# AC_LIBTOOL_SETUP -# ---------------- -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl - -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl - -AC_LIBTOOL_SYS_MAX_CMD_LEN -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -AC_CHECK_TOOL(AR, ar, false) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -AC_ARG_WITH([pic], - [AC_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -AC_LIBTOOL_LANG_C_CONFIG -_LT_AC_TAGCONFIG -])# AC_LIBTOOL_SETUP - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -AC_DEFUN([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -])])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - ]) -esac - -need_locks="$enable_libtool_lock" - -])# _LT_AC_LOCK - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - ifelse([$5], , :, [$5]) -else - ifelse([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - else - $2=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - testring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \ - = "XX$testring") >/dev/null 2>&1 && - new_result=`expr "X$testring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - testring=$testring$testring - done - testring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h)dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - # According to Tom Tromey, Ian Lance Taylor reported there are C compilers - # that will create temporary files in the current directory regardless of - # the output directory. Thus, making CWD read-only will cause this test - # to fail, enabling locking or at least warning the user not to do parallel - # builds. - chmod -w . - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . - $rm conftest* out/* - rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_ARG_WITH([tags], - [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], - [include additional configurations @<:@automatic@:>@])], - [tagnames="$withval"]) - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - AC_MSG_WARN([output file `$ofile' does not exist]) - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) - else - AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) - fi - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in - "") ;; - *) AC_MSG_ERROR([invalid tag name: $tagname]) - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - AC_MSG_ERROR([tag name \"$tagname\" already exists]) - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then - AC_LIBTOOL_LANG_CXX_CONFIG - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - AC_LIBTOOL_LANG_F77_CONFIG - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - AC_LIBTOOL_LANG_GCJ_CONFIG - else - tagname="" - fi - ;; - - RC) - AC_LIBTOOL_LANG_RC_CONFIG - ;; - - *) - AC_MSG_ERROR([Unsupported tag name: $tagname]) - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - AC_MSG_ERROR([unable to update list of available tagged configurations.]) - fi -fi -])# _LT_AC_TAGCONFIG - - -# AC_LIBTOOL_DLOPEN -# ----------------- -# enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_DLOPEN - - -# AC_LIBTOOL_WIN32_DLL -# -------------------- -# declare package support for building win32 dll's -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_WIN32_DLL - - -# AC_ENABLE_SHARED([DEFAULT]) -# --------------------------- -# implement the --enable-shared flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([shared], - [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -])# AC_ENABLE_SHARED - - -# AC_DISABLE_SHARED -# ----------------- -#- set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no) -])# AC_DISABLE_SHARED - - -# AC_ENABLE_STATIC([DEFAULT]) -# --------------------------- -# implement the --enable-static flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([static], - [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]AC_ENABLE_STATIC_DEFAULT) -])# AC_ENABLE_STATIC - - -# AC_DISABLE_STATIC -# ----------------- -# set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no) -])# AC_DISABLE_STATIC - - -# AC_ENABLE_FAST_INSTALL([DEFAULT]) -# --------------------------------- -# implement the --enable-fast-install flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([fast-install], - [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -])# AC_ENABLE_FAST_INSTALL - - -# AC_DISABLE_FAST_INSTALL -# ----------------------- -# set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no) -])# AC_DISABLE_FAST_INSTALL - - -# AC_LIBTOOL_PICMODE([MODE]) -# -------------------------- -# implement the --with-pic flag -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default) -])# AC_LIBTOOL_PICMODE - - -# AC_PROG_EGREP -# ------------- -# This is predefined starting with Autoconf 2.54, so this conditional -# definition can be removed once we require Autoconf 2.54 or later. -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -])]) - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the path to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AC_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no]) -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - irix5* | nonstopux*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - case $host_cpu in - alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' - else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' - fi - ;; - -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the path to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -])# AC_PROG_NM - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_CXX -# -------------- -# enable support for C++ libraries -AC_DEFUN([AC_LIBTOOL_CXX], -[AC_REQUIRE([_LT_AC_LANG_CXX]) -])# AC_LIBTOOL_CXX - - -# _LT_AC_LANG_CXX -# --------------- -AC_DEFUN([_LT_AC_LANG_CXX], -[AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`]) -])# _LT_AC_LANG_CXX - - -# AC_LIBTOOL_F77 -# -------------- -# enable support for Fortran 77 libraries -AC_DEFUN([AC_LIBTOOL_F77], -[AC_REQUIRE([_LT_AC_LANG_F77]) -])# AC_LIBTOOL_F77 - - -# _LT_AC_LANG_F77 -# --------------- -AC_DEFUN([_LT_AC_LANG_F77], -[AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,F77" | sed 's/^,//'`]) -])# _LT_AC_LANG_F77 - - -# AC_LIBTOOL_GCJ -# -------------- -# enable support for GCJ libraries -AC_DEFUN([AC_LIBTOOL_GCJ], -[AC_REQUIRE([_LT_AC_LANG_GCJ]) -])# AC_LIBTOOL_GCJ - - -# _LT_AC_LANG_GCJ -# --------------- -AC_DEFUN([_LT_AC_LANG_GCJ], -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], - [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], - [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], - [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,GCJ" | sed 's/^,//'`]) -])# _LT_AC_LANG_GCJ - - -# AC_LIBTOOL_RC -# -------------- -# enable support for Windows resource files -AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,RC" | sed 's/^,//'`]) -])# AC_LIBTOOL_RC - - -# AC_LIBTOOL_LANG_C_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -AC_DEFUN([_LT_AC_LANG_C_CONFIG], -[lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - -_LT_AC_SYS_COMPILER - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - - -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_DLOPEN_SELF($1) - -# Report which librarie types wil actually be built -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_C_CONFIG - - -# AC_LIBTOOL_LANG_CXX_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -_LT_AC_TAGVAR(ld_shlibs, $1)=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; - - dgux*) - case $cc_basename in - ec++) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - linux*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc) - # Intel C++ - with_gnu_ld=yes - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - cxx) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - osf3*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$GXX" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_POSTDEP_PREDEP($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# AC_LIBTOOL_LANG_CXX_CONFIG - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" -ifelse([$1], [], -[#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 1996 -# -# 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG], -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) - -# Is the compiler the GNU C compiler? -with_gcc=$_LT_AC_TAGVAR(GCC, $1) - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_[]_LT_AC_TAGVAR(LD, $1) - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext='$shrext' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) - -# Commands used to build and install a shared archive. -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" - -# Set to yes if exported symbols are required. -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) - -# The commands to list exported symbols. -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) - -# Symbols that must always be exported. -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) - -ifelse([$1],[], -[# ### END LIBTOOL CONFIG], -[# ### END LIBTOOL TAG CONFIG: $tagname]) - -__EOF__ - -ifelse([$1],[], [ - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -]) -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - test -f Makefile && make "$ltmain" -fi -])# AC_LIBTOOL_CONFIG - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGISTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) - ifelse([$1],[CXX],[ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux*) - case $CC in - icc|ecc) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - ccc) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" - ;; -esac -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -ifelse([$1],[CXX],[ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -],[ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi4*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - fi - ;; - - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_AC_FILE_LTDLL_C -# ------------------- -# Be careful that the start marker always follows a newline. -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ -])# _LT_AC_FILE_LTDLL_C - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) - - -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) - -AC_DEFUN([LT_AC_PROG_GCJ], -[AC_CHECK_TOOL(GCJ, gcj, no) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS) -]) - -AC_DEFUN([LT_AC_PROG_RC], -[AC_CHECK_TOOL(RC, windres, no) -]) - -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -SED=$lt_cv_path_SED -]) -AC_MSG_RESULT([$SED]) -]) - -# -*- Autoconf -*- -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. -# Generated from amversion.in; do not edit by hand. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.8.2])]) - -# AM_AUX_DIR_EXPAND - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 6 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]) -fi])]) - -# serial 6 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - : > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # (even with -Werror). So we grep stderr for any message - # that says an option was ignored. - if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue - # Extract the definition of DEP_FILES from the Makefile without - # running `make'. - DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` - test -z "$DEPDIR" && continue - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n -e '/^U = / s///p' < "$mf"` - test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" - # We invoke sed twice because it is the simplest approach to - # changing $(DEPDIR) to its actual value in the expansion. - for file in `sed -n -e ' - /^DEP_FILES = .*\\\\$/ { - s/^DEP_FILES = // - :loop - s/\\\\$// - p - n - /\\\\$/ b loop - p - } - /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 11 - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_MISSING_PROG(AMTAR, tar) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl - -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# -*- Autoconf -*- -# Copyright (C) 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# -*- Autoconf -*- - - -# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_PROG_MKDIR_P -# --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. - -# Copyright (C) 2003, 2004 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p -- . 2>/dev/null; then - # Keeping the `.' argument allows $(mkdir_p) to be used without - # argument. Indeed, we sometimes output rules like - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. - # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more - # expensive solution, as it forces Make to start a sub-shell.) - mkdir_p='mkdir -p -- .' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -m4_include([acinclude.m4]) diff --git a/tools/spit/config.guess b/tools/spit/config.guess deleted file mode 100755 index cc726cd15a93..000000000000 --- a/tools/spit/config.guess +++ /dev/null @@ -1,1388 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2003-02-22' - -# This file 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - *:UNICOS/mp:*:*) - echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:3*) - echo i586-pc-interix3 - exit 0 ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit 0 ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - case `uname -p` in - *86) UNAME_PROCESSOR=i686 ;; - powerpc) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/tools/spit/config.sub b/tools/spit/config.sub deleted file mode 100755 index 9772e87d2418..000000000000 --- a/tools/spit/config.sub +++ /dev/null @@ -1,1489 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2003-02-22' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | msp430 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* \ - | m32r-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i686-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic4x | c4x*) - basic_machine=tic4x-unknown - os=-coff - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/tools/spit/configure.in b/tools/spit/configure.in deleted file mode 100644 index 18a6314480e8..000000000000 --- a/tools/spit/configure.in +++ /dev/null @@ -1,91 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_INIT(configure.in) -AM_INIT_AUTOMAKE(spit, 0.0.1) -AC_PROG_LIBTOOL() -#AC_CONFIG_HEADERS() -AM_MAINTAINER_MODE() -gw_CHECK_QT -dnl --------------------------------------------------------------------------- -dnl GDAL/OGR -dnl --------------------------------------------------------------------------- -AC_ARG_WITH(gdal, - [ --with-gdal=path/gdal-config Full path to 'gdal-config' script, - e.g. '--with-gdal=/usr/local/bin/gdal-config' - ], - [ if test -f "$with_gdal" ; then - GDAL_CONFIG="$with_gdal" - else - AC_MSG_ERROR("Cannot find $with_gdal") - fi - ], - [ - GDAL_CONFIG=`which gdal-config` - if test ! -f "$GDAL_CONFIG" ; then - AC_MSG_ERROR(["Cannot find gdal-config, try to use --with-gdal option"]) - fi - ] -) - -AC_MSG_CHECKING([for GDAL/OGR]) -if test ! -x "$GDAL_CONFIG" ; then - AC_MSG_ERROR([Cannot execute gdal-config, check permissions]) -fi - -if test `$GDAL_CONFIG --ogr-enabled` = "no" ; then - AC_MSG_ERROR([GDAL is compiled without OGR support.]) -fi -AC_MSG_RESULT(yes) -AC_MSG_CHECKING([for GDAL libs]) -GDAL_LIB="`$GDAL_CONFIG --libs`" -AC_MSG_RESULT([$GDAL_LIB]) -GDAL_CFLAGS="`$GDAL_CONFIG --prefix`/include" - - -AC_SUBST(GDAL_LIB) -AC_SUBST(GDAL_CFLAGS) - -dnl --------------------------------------------------------------------------- -dnl PostgreSQL -dnl --------------------------------------------------------------------------- -PG_CONFIG=no - -AC_ARG_WITH(pg,[ --with-pg=path/pg_config PostgreSQL (PostGIS) Support - (full path to pg_config)],,) - -if test "$with_pg" = "yes" -o "$with_pg" = "" ; then - AC_PATH_PROG(PG_CONFIG, pg_config, no) -else - PG_CONFIG=$with_pg -fi - -AC_MSG_CHECKING([for PostgreSQL]) - -if test "$PG_CONFIG" = "no" ; then - PG_LIB= - PG_INC= - - AC_MSG_RESULT([no]) -else - HAVE_PG=1 - PG_LIB="-L`$PG_CONFIG --libdir` -lpq" - PG_INC="`$PG_CONFIG --includedir`" - AC_MSG_RESULT([yes]) - AC_MSG_CHECKING([for postgreSQL libs]) - AC_MSG_RESULT([$PG_LIB]) -fi - -AC_SUBST(HAVE_PG) -AC_SUBST(PG_INC) -AC_SUBST(PG_LIB) - -AM_CONDITIONAL(POSTGRESDB, test x$HAVE_PG = x1) -dnl *** Autoconf output ***************************** -AC_CONFIG_FILES([ - Makefile -]) -AC_OUTPUT -#AC_OUTPUT([ -#src/platform.pro -#]) - diff --git a/tools/spit/depcomp b/tools/spit/depcomp deleted file mode 100755 index 807b991f4a89..000000000000 --- a/tools/spit/depcomp +++ /dev/null @@ -1,423 +0,0 @@ -#! /bin/sh - -# depcomp - compile a program generating dependencies as side-effects -# Copyright 1999, 2000 Free Software Foundation, Inc. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi -# `libtool' can also be set to `yes' or `no'. - -if test -z "$depfile"; then - base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` - dir=`echo "$object" | sed 's,/.*$,/,'` - if test "$dir" = "$object"; then - dir= - fi - # FIXME: should be _deps on DOS. - depfile="$dir.deps/$base" -fi - -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. This file always lives in the current directory. - # Also, the AIX compiler puts `$object:' at the start of each line; - # $object doesn't have directory information. - stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - outname="$stripped.o" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - tmpdepfile1="$dir.libs/$base.lo.d" - tmpdepfile2="$dir.libs/$base.d" - "$@" -Wc,-MD - else - tmpdepfile1="$dir$base.o.d" - tmpdepfile2="$dir$base.d" - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - else - tmpdepfile="$tmpdepfile2" - fi - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a space and a tab in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. We will use -o /dev/null later, - # however we can't do the remplacement now because - # `-o $object' might simply not be used - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - -*) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 diff --git a/tools/spit/install-sh b/tools/spit/install-sh deleted file mode 100755 index e9de23842dcd..000000000000 --- a/tools/spit/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/tools/spit/libtool b/tools/spit/libtool deleted file mode 100755 index 45a614ea8e76..000000000000 --- a/tools/spit/libtool +++ /dev/null @@ -1,7222 +0,0 @@ -#! /bin/sh - -# libtoolT - Provide generalized library-building support services. -# Generated automatically by (GNU spit 0.0.1) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 1996 -# -# 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED="/bin/sed" - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="/bin/sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -# The names of the tagged configurations supported by this script. -available_tags=" CXX F77" - -# ### BEGIN LIBTOOL CONFIG - -# Libtool was configured on host localhost.localdomain: - -# Shell to use when invoking shell scripts. -SHELL="/bin/sh" - -# Whether or not to build shared libraries. -build_libtool_libs=yes - -# Whether or not to build static libraries. -build_old_libs=yes - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=no - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=no - -# Whether or not to optimize for fast installation. -fast_install=yes - -# The host system. -host_alias= -host=i686-pc-linux-gnu - -# An echo program that does not interpret backslashes. -echo="echo" - -# The archiver. -AR="ar" -AR_FLAGS="cru" - -# A C compiler. -LTCC="gcc" - -# A language-specific compiler. -CC="gcc" - -# Is the compiler the GNU C compiler? -with_gcc=yes - -# An ERE matcher. -EGREP="grep -E" - -# The linker used to build libraries. -LD="/usr/bin/ld" - -# Whether we need hard or soft links. -LN_S="ln -s" - -# A BSD-compatible nm program. -NM="/usr/bin/nm -B" - -# A symbol stripping program -STRIP=strip - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=file - -# Used on cygwin: DLL creation program. -DLLTOOL="dlltool" - -# Used on cygwin: object dumper. -OBJDUMP="objdump" - -# Used on cygwin: assembler. -AS="as" - -# The name of the directory that contains temporary libtool files. -objdir=.libs - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Object file suffix (normally "o"). -objext="o" - -# Old archive suffix (normally "a"). -libext="a" - -# Shared library suffix (normally ".so"). -shrext='.so' - -# Executable file suffix (normally ""). -exeext="" - -# Additional compiler flags for building library objects. -pic_flag=" -fPIC -DPIC" -pic_mode=default - -# What is the maximum length of a command? -max_cmd_len=32768 - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Must we lock files when doing compilation ? -need_locks="no" - -# Do we need the lib prefix for modules? -need_lib_prefix=no - -# Do we need a version for libraries? -need_version=no - -# Whether dlopen is supported. -dlopen_support=unknown - -# Whether dlopen of programs is supported. -dlopen_self=unknown - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=unknown - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin" - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\${wl}--export-dynamic" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec="" - -# Library versioning type. -version_type=linux - -# Format of library name prefix. -libname_spec="lib\$name" - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" - -# The coded name of the library, if different from the real name. -soname_spec="\${libname}\${release}\${shared_ext}\$major" - -# Commands used to build and install an old-style archive. -RANLIB="ranlib" -old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" -old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" -old_postuninstall_cmds="" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build and install a shared archive. -archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" -archive_expsym_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" -postinstall_cmds="" -postuninstall_cmds="" - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds="" -module_expsym_cmds="" - -# Commands to strip libraries. -old_striplib="strip --strip-debug" -striplib="strip --strip-unneeded" - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects="" - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects="" - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps="" - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps="" - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path="" - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method="pass_all" - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd="\$MAGIC_CMD" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="" - -# Flag that forces no undefined symbols. -no_undefined_flag="" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval="" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGISTW][ABCDGISTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" - -# This is the shared library runtime path variable. -runpath_var=LD_RUN_PATH - -# This is the shared library path variable. -shlibpath_var=LD_LIBRARY_PATH - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=no - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=yes - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist. -hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" - -# If ld is used when linking, flag to hardcode $libdir into -# a binary during linking. This must work even if $libdir does -# not exist. -hardcode_libdir_flag_spec_ld="" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="" - -# Set to yes if using DIR/libNAME during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=no - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=no - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=unsupported - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=no - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=unknown - -# Compile-time system search path for libraries -sys_lib_search_path_spec=" /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/ /usr/lib/gcc/i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../../i386-redhat-linux/lib/i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../ /lib/i386-redhat-linux/3.3.2/ /lib/ /usr/lib/i386-redhat-linux/3.3.2/ /usr/lib/" - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec="/lib /usr/lib" - -# Fix the shell variable $srcfile for the compiler. -fix_srcfile_path="" - -# Set to yes if exported symbols are required. -always_export_symbols=no - -# The commands to list exported symbols. -export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds="" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" - -# Symbols that must always be exported. -include_expsyms="" - -# ### END LIBTOOL CONFIG - -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -win32_libid () { - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` - if test "X$win32_nmres" = "Ximport" ; then - win32_libid_type="x86 archive import" - else - win32_libid_type="x86 archive static" - fi - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $echo $win32_libid_type -} - -# End of Shell function definitions -##################################### - -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift - - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit 1 - ;; - esac - - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi - ;; - esac - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; - - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo - $echo "Copyright (C) 2003 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit 0 - ;; - - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" - done - exit 0 - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x - ;; - - --dry-run | -n) - run=: - ;; - - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit 0 - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - ;; - - --tag) prevopt="--tag" prev=tag ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 -fi - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_output= - arg_mode=normal - libobj= - - for arg - do - case "$arg_mode" in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit 1 - fi - arg_mode=target - continue - ;; - - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" - done - IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` - - # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" - continue - ;; - - * ) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" - done # for arg - - case $arg_mode in - arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit 1 - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit 1 - ;; - *) - # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - *.java) xform=java ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit 1 - ;; - esac - - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base compile - # command doesn't match the default compiler. - if test -n "$available_tags" && test -z "$tagname"; then - case $base_compile in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" - case "$base_compile " in - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit 1 -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi - - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi - lobj=${xdir}$objdir/$objname - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit 1" 1 2 15 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit 1" 1 2 15 - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $run ln "$0" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - $echo $srcfile > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - - $run $rm "$libobj" "${libobj}T" - - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - base_compile="$base_compile $arg" - shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit 1 - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat $save_arg` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit 1 - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit 1 - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - done - else - $echo "$modename: link input file \`$save_arg' does not exist" - exit 1 - fi - arg=$save_arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit 1 - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; - esac - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit 1 - fi - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-mingw* | *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" - continue - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # gcc -m* arguments should be passed to the linker via $compiler_flags - # in order to pass architecture information to the linker - # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo - # but this is not reliable with gcc because gcc may use -mfoo to - # select a different linker, different libraries, etc, while - # -Wl,-mfoo simply passes -mfoo to the linker. - -m*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - if test "$with_gcc" = "yes" ; then - compiler_flags="$compiler_flags $arg" - fi - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # The PATH hackery in wrapper scripts is required on Windows - # in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit 1 - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit 1 - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done # argument parsing loop - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base link - # command doesn't match the default compiler. - if test -n "$available_tags" && test -z "$tagname"; then - case $base_compile in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" - case $base_compile in - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) - # The compiler in $compile_command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit 1 -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test "$status" -ne 0 && test ! -d "$output_objdir"; then - exit $status - fi - fi - - # Determine the type of output - case $output in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplcations in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) - duplicate_compiler_generated_deps=$duplicate_deps - ;; - esac - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit 1 - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - for pass in $passes; do - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - for deplib in $libs; do - lib= - found=no - case $deplib in - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - # Search the libtool library - lib="$searchdir/lib${name}.la" - if test -f "$lib"; then - found=yes - break - fi - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - library_names= - old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - if test "$deplibs_check_method" != pass_all; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 - exit 1 - fi - - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - - # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit 1 - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit 1 - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit 1 - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit 1 - fi - if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - abs_ladir="$ladir" - fi - ;; - esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit 1 - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - # This is a shared library - - # Warn about portability, can't link against -module's on some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi - $echo "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - eval cmds=\"$extract_expsyms_cmds\" - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - eval cmds=\"$old_archive_from_expsyms_cmds\" - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5* ) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a module then we can not link against it, someone - # is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="-L$inst_prefix_dir$libdir $add_dir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit 1 - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="-L$inst_prefix_dir$libdir $add_dir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - case $deplib in - -L*) path="$deplib" ;; - *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - fi - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit 1 - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) - # we do not want to link against static libs, but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - fi - newlib_search_path="$newlib_search_path $path" - path="" - fi - ;; - *) - path="-L$path" - ;; - esac - - ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$deplibs $depdepl" ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$deplibs $path" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext\" - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit 1 - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$2" - number_minor="$3" - number_revision="$4" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows) - current=`expr $number_major + $number_minor` - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - current=`expr $number_major + $number_minor - 1` - age="$number_minor" - revision="$number_minor" - ;; - esac - ;; - no) - current="$2" - revision="$3" - age="$4" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case $revision in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case $age in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - irix | nonstopux) - major=`expr $current - $age + 1` - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - major=`expr $current - $age` - versuffix="-$major" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - fi - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - removelist="$removelist $p" - ;; - *) ;; - esac - done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - for path in $notinst_path; do - lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` - deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` - dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` - done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name="`expr $a_deplib : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` - done - fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo - if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." - else - $echo "*** Warning: inter-library dependencies are not known to be supported." - fi - $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - eval cmds=\"$export_symbols_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false - else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval cmds=\"$module_expsym_cmds\" - else - eval cmds=\"$module_cmds\" - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - fi - - if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - delfiles= - last_robj= - k=1 - output=$output_objdir/$save_output-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" - fi - last_robj=$output_objdir/$save_output-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$save_output-${k}.$objext - objlist=$obj - len=1 - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - - # Set up a command to remove the reloadale object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - exit 0 - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case $output in - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - eval cmds=\"$reload_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? - exit 0 - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - eval cmds=\"$reload_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - ;; - - prog) - case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; - esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; - esac - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$output.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" - - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $run $rm $output - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? - exit 0 - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case $0 in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; - *) qecho="$SHELL `pwd`/$0 --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - cwrappersource=`$echo ${objdir}/lt-${output}.c` - cwrapper=`$echo ${output}.exe` - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#include -#include -#include -#include -#include -#include - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -#define DIR_SEPARATOR '/' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -#define HAVE_DOS_BASED_FILE_SYSTEM -#ifndef DIR_SEPARATOR_2 -#define DIR_SEPARATOR_2 '\\' -#endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -char * basename (const char *name); -char * fnqualify(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup ((char *) basename (argv[0])); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = fnqualify(argv[0]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -char * -basename (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha (name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return (char *) base; -} - -char * -fnqualify(const char *path) -{ - size_t size; - char *p; - char tmp[LT_PATHMAX + 1]; - - assert(path != NULL); - - /* Is it qualified already? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha (path[0]) && path[1] == ':') - return xstrdup (path); -#endif - if (IS_DIR_SEPARATOR (path[0])) - return xstrdup (path); - - /* prepend the current directory */ - /* doesn't handle '~' */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ - p = XMALLOC(char, size); - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); - return p; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit 1" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit 1 - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - exec \$progdir/\$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" - chmod +x $output - fi - exit 0 - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" - else - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - # GNU ar 2.10+ was changed to match POSIX; thus no paths are - # encoded into archives. This makes 'ar r' malfunction in - # this piecewise linking case whenever conflicting object - # names appear in distinct ar calls; check, warn and compensate. - if (for obj in $save_oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 - $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 - AR_FLAGS=cq - fi - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~$old_archive_cmds\" - fi - fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit 1 - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 - fi - newdlfiles="$newdlfiles $libdir/$name" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - fi - $rm $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ -relink_command=\"$relink_command\"" - fi - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac - exit 0 - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; - - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit 1 - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit 1 - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit 1 - fi - fi - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit 0 - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; - esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : - else - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyways - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; - esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - if test -n "$stripme" && test -n "$striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $0 --finish$current_libdirs' - else - exit 0 - fi - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - eval cmds=\"$finish_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit 0 - - $echo "----------------------------------------------------------------------" - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" - done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "----------------------------------------------------------------------" - exit 0 - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit 1 - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit 0 - fi - ;; - - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - - if test "$mode" = uninstall; then - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - # FIXME: should reinstall the best remaining shared library. - fi - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - - # Read the .lo file - . $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 - fi - done - - exit $exit_status - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - fi -fi # test -z "$show_help" - -if test -n "$exec_cmd"; then - eval exec $exec_cmd - exit 1 -fi - -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to ." - exit 0 - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit 0 - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# Libtool was configured on host localhost.localdomain: - -# Shell to use when invoking shell scripts. -SHELL="/bin/sh" - -# Whether or not to build shared libraries. -build_libtool_libs=yes - -# Whether or not to build static libraries. -build_old_libs=yes - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=no - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=no - -# Whether or not to optimize for fast installation. -fast_install=yes - -# The host system. -host_alias= -host=i686-pc-linux-gnu - -# An echo program that does not interpret backslashes. -echo="echo" - -# The archiver. -AR="ar" -AR_FLAGS="cru" - -# A C compiler. -LTCC="gcc" - -# A language-specific compiler. -CC="g++" - -# Is the compiler the GNU C compiler? -with_gcc=yes - -# An ERE matcher. -EGREP="grep -E" - -# The linker used to build libraries. -LD="/usr/bin/ld" - -# Whether we need hard or soft links. -LN_S="ln -s" - -# A BSD-compatible nm program. -NM="/usr/bin/nm -B" - -# A symbol stripping program -STRIP=strip - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=file - -# Used on cygwin: DLL creation program. -DLLTOOL="dlltool" - -# Used on cygwin: object dumper. -OBJDUMP="objdump" - -# Used on cygwin: assembler. -AS="as" - -# The name of the directory that contains temporary libtool files. -objdir=.libs - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Object file suffix (normally "o"). -objext="o" - -# Old archive suffix (normally "a"). -libext="a" - -# Shared library suffix (normally ".so"). -shrext='.so' - -# Executable file suffix (normally ""). -exeext="" - -# Additional compiler flags for building library objects. -pic_flag=" -fPIC -DPIC" -pic_mode=default - -# What is the maximum length of a command? -max_cmd_len=32768 - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Must we lock files when doing compilation ? -need_locks="no" - -# Do we need the lib prefix for modules? -need_lib_prefix=no - -# Do we need a version for libraries? -need_version=no - -# Whether dlopen is supported. -dlopen_support=unknown - -# Whether dlopen of programs is supported. -dlopen_self=unknown - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=unknown - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Compiler flag to turn off builtin functions. -no_builtin_flag=" -fno-builtin" - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\${wl}--export-dynamic" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec="" - -# Library versioning type. -version_type=linux - -# Format of library name prefix. -libname_spec="lib\$name" - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" - -# The coded name of the library, if different from the real name. -soname_spec="\${libname}\${release}\${shared_ext}\$major" - -# Commands used to build and install an old-style archive. -RANLIB="ranlib" -old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" -old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" -old_postuninstall_cmds="" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build and install a shared archive. -archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" -archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" -postinstall_cmds="" -postuninstall_cmds="" - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds="" -module_expsym_cmds="" - -# Commands to strip libraries. -old_striplib="strip --strip-debug" -striplib="strip --strip-unneeded" - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects="/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crti.o /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbeginS.o" - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects="/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtendS.o /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crtn.o" - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps="" - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path="-L/usr/lib/gcc-lib/i386-redhat-linux/3.3.2 -L/usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../.." - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method="pass_all" - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd="\$MAGIC_CMD" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="" - -# Flag that forces no undefined symbols. -no_undefined_flag="" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval="" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGISTW][ABCDGISTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" - -# This is the shared library runtime path variable. -runpath_var=LD_RUN_PATH - -# This is the shared library path variable. -shlibpath_var=LD_LIBRARY_PATH - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=no - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=yes - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist. -hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" - -# If ld is used when linking, flag to hardcode $libdir into -# a binary during linking. This must work even if $libdir does -# not exist. -hardcode_libdir_flag_spec_ld="" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="" - -# Set to yes if using DIR/libNAME during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=no - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=no - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var= - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=no - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=unknown - -# Compile-time system search path for libraries -sys_lib_search_path_spec=" /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/ /usr/lib/gcc/i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../../i386-redhat-linux/lib/i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../ /lib/i386-redhat-linux/3.3.2/ /lib/ /usr/lib/i386-redhat-linux/3.3.2/ /usr/lib/" - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec="/lib /usr/lib" - -# Fix the shell variable $srcfile for the compiler. -fix_srcfile_path="" - -# Set to yes if exported symbols are required. -always_export_symbols=no - -# The commands to list exported symbols. -export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds="" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="" - -# Symbols that must always be exported. -include_expsyms="" - -# ### END LIBTOOL TAG CONFIG: CXX - -# ### BEGIN LIBTOOL TAG CONFIG: F77 - -# Libtool was configured on host localhost.localdomain: - -# Shell to use when invoking shell scripts. -SHELL="/bin/sh" - -# Whether or not to build shared libraries. -build_libtool_libs=yes - -# Whether or not to build static libraries. -build_old_libs=yes - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=no - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=no - -# Whether or not to optimize for fast installation. -fast_install=yes - -# The host system. -host_alias= -host=i686-pc-linux-gnu - -# An echo program that does not interpret backslashes. -echo="echo" - -# The archiver. -AR="ar" -AR_FLAGS="cru" - -# A C compiler. -LTCC="gcc" - -# A language-specific compiler. -CC="g77" - -# Is the compiler the GNU C compiler? -with_gcc=yes - -# An ERE matcher. -EGREP="grep -E" - -# The linker used to build libraries. -LD="/usr/bin/ld" - -# Whether we need hard or soft links. -LN_S="ln -s" - -# A BSD-compatible nm program. -NM="/usr/bin/nm -B" - -# A symbol stripping program -STRIP=strip - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=file - -# Used on cygwin: DLL creation program. -DLLTOOL="dlltool" - -# Used on cygwin: object dumper. -OBJDUMP="objdump" - -# Used on cygwin: assembler. -AS="as" - -# The name of the directory that contains temporary libtool files. -objdir=.libs - -# How to create reloadable object files. -reload_flag=" -r" -reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" - -# How to pass a linker flag through the compiler. -wl="-Wl," - -# Object file suffix (normally "o"). -objext="o" - -# Old archive suffix (normally "a"). -libext="a" - -# Shared library suffix (normally ".so"). -shrext='.so' - -# Executable file suffix (normally ""). -exeext="" - -# Additional compiler flags for building library objects. -pic_flag=" -fPIC" -pic_mode=default - -# What is the maximum length of a command? -max_cmd_len=32768 - -# Does compiler simultaneously support -c and -o options? -compiler_c_o="yes" - -# Must we lock files when doing compilation ? -need_locks="no" - -# Do we need the lib prefix for modules? -need_lib_prefix=no - -# Do we need a version for libraries? -need_version=no - -# Whether dlopen is supported. -dlopen_support=unknown - -# Whether dlopen of programs is supported. -dlopen_self=unknown - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=unknown - -# Compiler flag to prevent dynamic linking. -link_static_flag="-static" - -# Compiler flag to turn off builtin functions. -no_builtin_flag="" - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="\${wl}--export-dynamic" - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec="" - -# Library versioning type. -version_type=linux - -# Format of library name prefix. -libname_spec="lib\$name" - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" - -# The coded name of the library, if different from the real name. -soname_spec="\${libname}\${release}\${shared_ext}\$major" - -# Commands used to build and install an old-style archive. -RANLIB="ranlib" -old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" -old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" -old_postuninstall_cmds="" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="" - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds="" - -# Commands used to build and install a shared archive. -archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" -archive_expsym_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" -postinstall_cmds="" -postuninstall_cmds="" - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds="" -module_expsym_cmds="" - -# Commands to strip libraries. -old_striplib="strip --strip-debug" -striplib="strip --strip-unneeded" - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects="" - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects="" - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps="" - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps="" - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path="" - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method="pass_all" - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd="\$MAGIC_CMD" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="" - -# Flag that forces no undefined symbols. -no_undefined_flag="" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval="" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGISTW][ABCDGISTW]*\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" - -# This is the shared library runtime path variable. -runpath_var=LD_RUN_PATH - -# This is the shared library path variable. -shlibpath_var=LD_LIBRARY_PATH - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=no - -# How to hardcode a shared library path into an executable. -hardcode_action=immediate - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=yes - -# Flag to hardcode $libdir into a binary during linking. -# This must work even if $libdir does not exist. -hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" - -# If ld is used when linking, flag to hardcode $libdir into -# a binary during linking. This must work even if $libdir does -# not exist. -hardcode_libdir_flag_spec_ld="" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="" - -# Set to yes if using DIR/libNAME during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=no - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=no - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=unsupported - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=no - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=unknown - -# Compile-time system search path for libraries -sys_lib_search_path_spec=" /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/ /usr/lib/gcc/i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../../i386-redhat-linux/lib/i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../../i386-redhat-linux/lib/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../i386-redhat-linux/3.3.2/ /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../ /lib/i386-redhat-linux/3.3.2/ /lib/ /usr/lib/i386-redhat-linux/3.3.2/ /usr/lib/" - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec="/lib /usr/lib" - -# Fix the shell variable $srcfile for the compiler. -fix_srcfile_path="" - -# Set to yes if exported symbols are required. -always_export_symbols=no - -# The commands to list exported symbols. -export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds="" - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" - -# Symbols that must always be exported. -include_expsyms="" - -# ### END LIBTOOL TAG CONFIG: F77 - diff --git a/tools/spit/ltmain.sh b/tools/spit/ltmain.sh deleted file mode 100644 index fe83ff4fb744..000000000000 --- a/tools/spit/ltmain.sh +++ /dev/null @@ -1,6290 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# 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 2 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -win32_libid () { - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` - if test "X$win32_nmres" = "Ximport" ; then - win32_libid_type="x86 archive import" - else - win32_libid_type="x86 archive static" - fi - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $echo $win32_libid_type -} - -# End of Shell function definitions -##################################### - -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift - - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit 1 - ;; - esac - - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi - ;; - esac - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; - - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo - $echo "Copyright (C) 2003 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit 0 - ;; - - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" - done - exit 0 - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x - ;; - - --dry-run | -n) - run=: - ;; - - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit 0 - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - ;; - - --tag) prevopt="--tag" prev=tag ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 -fi - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_output= - arg_mode=normal - libobj= - - for arg - do - case "$arg_mode" in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit 1 - fi - arg_mode=target - continue - ;; - - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" - done - IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` - - # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" - continue - ;; - - * ) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" - done # for arg - - case $arg_mode in - arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit 1 - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit 1 - ;; - *) - # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - *.java) xform=java ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit 1 - ;; - esac - - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base compile - # command doesn't match the default compiler. - if test -n "$available_tags" && test -z "$tagname"; then - case $base_compile in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" - case "$base_compile " in - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit 1 -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi - - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi - lobj=${xdir}$objdir/$objname - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit 1" 1 2 15 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit 1" 1 2 15 - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $run ln "$0" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - $echo $srcfile > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - - $run $rm "$libobj" "${libobj}T" - - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit 1 - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - base_compile="$base_compile $arg" - shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit 1 - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat $save_arg` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit 1 - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit 1 - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - done - else - $echo "$modename: link input file \`$save_arg' does not exist" - exit 1 - fi - arg=$save_arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit 1 - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; - esac - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit 1 - fi - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-mingw* | *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" - continue - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # gcc -m* arguments should be passed to the linker via $compiler_flags - # in order to pass architecture information to the linker - # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo - # but this is not reliable with gcc because gcc may use -mfoo to - # select a different linker, different libraries, etc, while - # -Wl,-mfoo simply passes -mfoo to the linker. - -m*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - if test "$with_gcc" = "yes" ; then - compiler_flags="$compiler_flags $arg" - fi - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # The PATH hackery in wrapper scripts is required on Windows - # in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit 1 - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit 1 - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit 1 - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done # argument parsing loop - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Infer tagged configuration to use if any are available and - # if one wasn't chosen via the "--tag" command line option. - # Only attempt this if the compiler in the base link - # command doesn't match the default compiler. - if test -n "$available_tags" && test -z "$tagname"; then - case $base_compile in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" - case $base_compile in - "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) - # The compiler in $compile_command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit 1 -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test "$status" -ne 0 && test ! -d "$output_objdir"; then - exit $status - fi - fi - - # Determine the type of output - case $output in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplcations in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) - duplicate_compiler_generated_deps=$duplicate_deps - ;; - esac - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit 1 - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - for pass in $passes; do - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - for deplib in $libs; do - lib= - found=no - case $deplib in - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - # Search the libtool library - lib="$searchdir/lib${name}.la" - if test -f "$lib"; then - found=yes - break - fi - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - library_names= - old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - if test "$deplibs_check_method" != pass_all; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 - exit 1 - fi - - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - - # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit 1 - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit 1 - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit 1 - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit 1 - fi - if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - abs_ladir="$ladir" - fi - ;; - esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit 1 - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - # This is a shared library - - # Warn about portability, can't link against -module's on some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi - $echo "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - eval cmds=\"$extract_expsyms_cmds\" - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - eval cmds=\"$old_archive_from_expsyms_cmds\" - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5* ) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a module then we can not link against it, someone - # is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="-L$inst_prefix_dir$libdir $add_dir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit 1 - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="-L$inst_prefix_dir$libdir $add_dir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - case $deplib in - -L*) path="$deplib" ;; - *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - fi - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit 1 - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) - # we do not want to link against static libs, but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - fi - newlib_search_path="$newlib_search_path $path" - path="" - fi - ;; - *) - path="-L$path" - ;; - esac - - ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$deplibs $depdepl" ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$deplibs $path" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext\" - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit 1 - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$2" - number_minor="$3" - number_revision="$4" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows) - current=`expr $number_major + $number_minor` - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - current=`expr $number_major + $number_minor - 1` - age="$number_minor" - revision="$number_minor" - ;; - esac - ;; - no) - current="$2" - revision="$3" - age="$4" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case $revision in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case $age in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - irix | nonstopux) - major=`expr $current - $age + 1` - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - major=`expr $current - $age` - versuffix="-$major" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - fi - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - removelist="$removelist $p" - ;; - *) ;; - esac - done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - for path in $notinst_path; do - lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` - deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` - dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` - done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name="`expr $a_deplib : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` - done - fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo - if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." - else - $echo "*** Warning: inter-library dependencies are not known to be supported." - fi - $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - eval cmds=\"$export_symbols_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false - else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval cmds=\"$module_expsym_cmds\" - else - eval cmds=\"$module_cmds\" - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - fi - - if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - delfiles= - last_robj= - k=1 - output=$output_objdir/$save_output-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" - fi - last_robj=$output_objdir/$save_output-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$save_output-${k}.$objext - objlist=$obj - len=1 - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - - # Set up a command to remove the reloadale object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval cmds=\"$archive_expsym_cmds\" - else - eval cmds=\"$archive_cmds\" - fi - - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - exit 0 - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case $output in - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - eval cmds=\"$reload_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? - exit 0 - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - eval cmds=\"$reload_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit 0 - ;; - - prog) - case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; - esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; - esac - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$output.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" - - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $run $rm $output - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? - exit 0 - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $0 --fallback-echo"; then - case $0 in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; - *) qecho="$SHELL `pwd`/$0 --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - cwrappersource=`$echo ${objdir}/lt-${output}.c` - cwrapper=`$echo ${output}.exe` - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#include -#include -#include -#include -#include -#include - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -#define DIR_SEPARATOR '/' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -#define HAVE_DOS_BASED_FILE_SYSTEM -#ifndef DIR_SEPARATOR_2 -#define DIR_SEPARATOR_2 '\\' -#endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -char * basename (const char *name); -char * fnqualify(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup ((char *) basename (argv[0])); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = fnqualify(argv[0]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -char * -basename (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha (name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return (char *) base; -} - -char * -fnqualify(const char *path) -{ - size_t size; - char *p; - char tmp[LT_PATHMAX + 1]; - - assert(path != NULL); - - /* Is it qualified already? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha (path[0]) && path[1] == ':') - return xstrdup (path); -#endif - if (IS_DIR_SEPARATOR (path[0])) - return xstrdup (path); - - /* prepend the current directory */ - /* doesn't handle '~' */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ - p = XMALLOC(char, size); - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); - return p; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit 1" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit 1 - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - exec \$progdir/\$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" - chmod +x $output - fi - exit 0 - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" - else - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - # GNU ar 2.10+ was changed to match POSIX; thus no paths are - # encoded into archives. This makes 'ar r' malfunction in - # this piecewise linking case whenever conflicting object - # names appear in distinct ar calls; check, warn and compensate. - if (for obj in $save_oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 - $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 - AR_FLAGS=cq - fi - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~$old_archive_cmds\" - fi - fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit 1 - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 - fi - newdlfiles="$newdlfiles $libdir/$name" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit 1 - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - fi - $rm $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ -relink_command=\"$relink_command\"" - fi - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac - exit 0 - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; - - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit 1 - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit 1 - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit 1 - fi - fi - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit 0 - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; - esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : - else - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyways - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; - esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - if test -n "$stripme" && test -n "$striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $0 --finish$current_libdirs' - else - exit 0 - fi - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - eval cmds=\"$finish_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit 0 - - $echo "----------------------------------------------------------------------" - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" - done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "----------------------------------------------------------------------" - exit 0 - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit 1 - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit 0 - fi - ;; - - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - - if test "$mode" = uninstall; then - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - # FIXME: should reinstall the best remaining shared library. - fi - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - - # Read the .lo file - . $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 - fi - done - - exit $exit_status - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - fi -fi # test -z "$show_help" - -if test -n "$exec_cmd"; then - eval exec $exec_cmd - exit 1 -fi - -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to ." - exit 0 - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit 0 - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/tools/spit/main.cpp b/tools/spit/main.cpp deleted file mode 100644 index 12bb128b9508..000000000000 --- a/tools/spit/main.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include "qgsspit.h" - -int main( int argc, char ** argv ) -{ - QApplication a( argc, argv ); - QgsSpit w; - w.show(); - w.getSchema(); - a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); - return a.exec(); -} diff --git a/tools/spit/missing b/tools/spit/missing deleted file mode 100755 index 6a37006e8f0a..000000000000 --- a/tools/spit/missing +++ /dev/null @@ -1,336 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. - You can get \`$1Help2man' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/tools/spit/mkinstalldirs b/tools/spit/mkinstalldirs deleted file mode 100755 index 6b3b5fc5d4d3..000000000000 --- a/tools/spit/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id$ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/tools/spit/qgsconnectiondialog.cpp b/tools/spit/qgsconnectiondialog.cpp deleted file mode 100644 index 6b6968381a4f..000000000000 --- a/tools/spit/qgsconnectiondialog.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/*************************************************************************** - qgsconnectiondialog.cpp - description - ------------------- - begin : Thu Dec 10 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#include -#include -#include -#include -#include -extern "C" -{ - #include -} - -#include "qgsconnectiondialog.h" -#include "qgsmessageviewer.h" - -QgsConnectionDialog::QgsConnectionDialog (QWidget* parent, QString connName, bool modal, WFlags fl) - : QgsConnectionDialogBase(parent,(const char *)connName,modal,fl) -{ - if (!connName.isEmpty()) { - QSettings settings; - QString key = "/Qgis/connections/" + connName; - txtHost->setText(settings.readEntry(key + "/host")); - txtDatabase->setText(settings.readEntry(key + "/database")); - if(settings.readEntry(key + "/port").length() ==0){ - txtPort->setText("5432"); - } - else { - txtPort->setText(settings.readEntry(key + "/port")); - } - txtUsername->setText(settings.readEntry(key + "/username")); - if(settings.readEntry(key + "/save") == "true"){ - txtPassword->setText(settings.readEntry(key + "/password")); - chkStorePassword->setChecked(true); - } - txtName->setText(connName); - } - - QWidget::setTabOrder(txtName, txtHost); - QWidget::setTabOrder(txtHost, txtDatabase); - QWidget::setTabOrder(txtDatabase, txtPort); - QWidget::setTabOrder(txtPort, txtUsername); - QWidget::setTabOrder(txtUsername, txtPassword); - QWidget::setTabOrder(txtPassword, chkStorePassword); - QWidget::setTabOrder(chkStorePassword, (QWidget*)btnConnect); - QWidget::setTabOrder((QWidget*)btnConnect, (QWidget*)btnOk); - QWidget::setTabOrder((QWidget*)btnOk, (QWidget*)btnCancel); - QWidget::setTabOrder((QWidget*)btnCancel, (QWidget*)btnHelp); - QWidget::setTabOrder((QWidget*)btnHelp, txtName); -} - -QgsConnectionDialog::~QgsConnectionDialog() -{ - -} - - -void QgsConnectionDialog::testConnection() -{ - QString connInfo = "host=" + txtHost->text() + " dbname=" + txtDatabase->text() + - " port=" + txtPort->text() + " user=" + txtUsername->text() + " password=" + txtPassword->text(); - PGconn *pd = PQconnectdb((const char *) connInfo); - - if (PQstatus(pd) == CONNECTION_OK) { - // Database successfully opened; we can now issue SQL commands. - QMessageBox::information(this, "Test connection", "Connection to " + txtDatabase->text() + " was successfull"); - } else { - QMessageBox::information(this, "Test connection", "Connection failed - Check settings and try again "); - } - - PQfinish(pd); -} - -void QgsConnectionDialog::saveConnection() -{ - QSettings settings; - QString baseKey = "/Qgis/connections/"; - baseKey += txtName->text(); - settings.writeEntry(baseKey + "/host", txtHost->text()); - settings.writeEntry(baseKey + "/database", txtDatabase->text()); - settings.writeEntry(baseKey + "/port", txtPort->text()); - settings.writeEntry(baseKey + "/username", txtUsername->text()); - settings.writeEntry(baseKey + "/password", txtPassword->text()); - if(chkStorePassword->isChecked()) settings.writeEntry(baseKey + "/save", "true"); - else settings.writeEntry(baseKey + "/save", "false"); - accept(); -} - -void QgsConnectionDialog::helpInfo(){ - QString message = "General Interface Help:\n\n"; - QgsMessageViewer * e = new QgsMessageViewer(this, "HelpMessage"); - e->setMessage(message); - e->exec(); -} diff --git a/tools/spit/qgsconnectiondialog.h b/tools/spit/qgsconnectiondialog.h deleted file mode 100644 index ecc8d2551a11..000000000000 --- a/tools/spit/qgsconnectiondialog.h +++ /dev/null @@ -1,34 +0,0 @@ -/*************************************************************************** - qgsconnectiondialog.h - description - ------------------- - begin : Thu Dec 10 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#ifndef QGSCONNECTIONDIALOG_H -#define QGSCONNECTIONDIALOG_H - -#include "qgsconnectiondialogbase.h" - -class QgsConnectionDialog : public QgsConnectionDialogBase -{ - public: - - QgsConnectionDialog(QWidget* parent = 0, QString connName=QString::null, bool modal = true, WFlags fl = 0); - ~QgsConnectionDialog(); - void testConnection(); - void saveConnection(); - void helpInfo(); -}; - -#endif diff --git a/tools/spit/qgsconnectiondialogbase.ui b/tools/spit/qgsconnectiondialogbase.ui deleted file mode 100644 index 4c7fcdc57e4a..000000000000 --- a/tools/spit/qgsconnectiondialogbase.ui +++ /dev/null @@ -1,378 +0,0 @@ - -QgsConnectionDialogBase - - - QgsConnectionDialogBase - - - - 0 - 0 - 394 - 251 - - - - Create a New PostGIS connection - - - true - - - - unnamed - - - 11 - - - 6 - - - - Layout5 - - - - unnamed - - - 0 - - - 6 - - - - btnOk - - - - - - - OK - - - - - - true - - - true - - - - - btnCancel - - - - - - - Cancel - - - - - - true - - - - - btnHelp - - - - - - - Help - - - F1 - - - true - - - - - Spacer1 - - - Vertical - - - Expanding - - - - 0 - 20 - - - - - - - - GroupBox1 - - - - Helvetica [Urw] - - - - Connection Information - - - - unnamed - - - 11 - - - 6 - - - - layout13 - - - - unnamed - - - - layout12 - - - - unnamed - - - - TextLabel1_2 - - - - Helvetica - 11 - - - - Name - - - - - TextLabel1 - - - - Helvetica - 11 - - - - Host - - - - - TextLabel2 - - - - helvetica - 11 - - - - Database - - - - - TextLabel2_2 - - - - helvetica - 11 - - - - Port - - - - - TextLabel3 - - - - Helvetica - 11 - - - - Username - - - - - TextLabel3_2 - - - - helvetica - 11 - - - - Password - - - - - - - layout11 - - - - unnamed - - - - txtName - - - Name of the new connection - - - - - txtHost - - - - - txtDatabase - - - - - txtPort - - - 5432 - - - - - txtUsername - - - - - txtPassword - - - Password - - - - - - - - - layout14 - - - - unnamed - - - - chkStorePassword - - - - - - - Save Password - - - - - btnConnect - - - - - - - Test Connect - - - - - - - - - - - btnCancel - clicked() - QgsConnectionDialogBase - reject() - - - btnConnect - clicked() - QgsConnectionDialogBase - testConnection() - - - btnOk - clicked() - QgsConnectionDialogBase - saveConnection() - - - btnHelp - clicked() - QgsConnectionDialogBase - helpInfo() - - - - txtName - txtHost - txtDatabase - txtUsername - txtPassword - chkStorePassword - btnConnect - btnOk - btnCancel - btnHelp - - - saveConnection() - testConnection() - helpInfo() - - - diff --git a/tools/spit/qgsdbfbase.h b/tools/spit/qgsdbfbase.h deleted file mode 100644 index b014d5edc972..000000000000 --- a/tools/spit/qgsdbfbase.h +++ /dev/null @@ -1,80 +0,0 @@ -/*************************************************************************** - qgsbdfbase.h - Dbase IV Header - -------------------------------------- - Date : 25-Dec-2003 - Copyright : (C) 2003 by Gary E.Sherman - email : sherman at mrcc.com - *************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -// Dbase header structure - -struct DbaseHeader { - unsigned char valid_dbf; - char year; - char month; - char day; - long num_recs; - short size_hdr; - short size_rec; - char reserved[3]; - char lan[13]; - char reserved2[4]; -}; -// Field descriptor array - defines a field and its attributes (type, -// length, etc. -struct FieldDescriptorArray { - char field_name[11]; - char field_type; - long field_addr; /* used only in memory */ - unsigned char field_length; - unsigned char field_decimal; - char reserved[2]; - char work_area; - char lan[2]; - char set_fields; - char reserved2[8]; -}; -// Typedefs -typedef struct FieldDescriptorArray Fda; -typedef struct DbaseHeader DbH; - -// Field Array class -class DbaseFieldArray { -public: - DbaseFieldArray(int numberOfFields); - void addField(char *name, char type, unsigned char length, - unsigned char decimal); - int getNumFields(); - Fda *getField(int index); -private: - struct FieldDescriptorArray *fda; - unsigned int fieldCount; - int numFields; - -}; - -// Dbase file class (incomplete implementation) -class DbaseFile { -public: - DbaseFile(char *fileName, int numRecords, int recordSize, DbaseFieldArray &fda); - void writeHeader(); - void writeFieldDescriptors(); - void writeRecord(const char *data); - void closeFile(); - struct DbaseHeader header; -private: - char * fileName; - int numRecords; - int recordSize; - DbaseFieldArray fieldArray; - long pos; - bool firstRecord; -}; diff --git a/tools/spit/qgsmessageviewer.cpp b/tools/spit/qgsmessageviewer.cpp deleted file mode 100644 index f9cc2944cc1a..000000000000 --- a/tools/spit/qgsmessageviewer.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/*************************************************************************** - qgsmessageviewer.cpp - description - ------------------- - begin : Tue Dec 23 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#include "qgsmessageviewer.h" - -QgsMessageViewer::QgsMessageViewer(QWidget *parent, const char *name): QgsMessageViewerBase(parent, name){} -QgsMessageViewer::~QgsMessageViewer(){} -void QgsMessageViewer::setMessage(QString message){ - txtMessage->setText(message); -} diff --git a/tools/spit/qgsmessageviewer.h b/tools/spit/qgsmessageviewer.h deleted file mode 100644 index aab6470b9f0d..000000000000 --- a/tools/spit/qgsmessageviewer.h +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************** - qgsmessageviewer.h - description - ------------------- - begin : Tue Dec 23 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#include -#include -#include -#include "qgsmessageviewerbase.h" - -class QgsMessageViewer: public QgsMessageViewerBase{ - public: - QgsMessageViewer(QWidget *parent=0, const char *name=0); - ~QgsMessageViewer(); - void setMessage(QString message); -}; diff --git a/tools/spit/qgsmessageviewerbase.ui b/tools/spit/qgsmessageviewerbase.ui deleted file mode 100644 index a859037ed831..000000000000 --- a/tools/spit/qgsmessageviewerbase.ui +++ /dev/null @@ -1,89 +0,0 @@ - -QgsMessageViewerBase - - - QgsMessageViewerBase - - - - 0 - 0 - 499 - 283 - - - - SPIT Message - - - false - - - - unnamed - - - - txtMessage - - - true - - - - - btnClose - - - Close - - - - - spacer1 - - - Horizontal - - - Expanding - - - - 191 - 31 - - - - - - spacer1_2 - - - Horizontal - - - Expanding - - - - 191 - 31 - - - - - - - - btnClose - clicked() - QgsMessageViewerBase - reject() - - - - setMessage( QString msg ) - - - diff --git a/tools/spit/qgsshapefile.cpp b/tools/spit/qgsshapefile.cpp deleted file mode 100644 index 96a6f1879208..000000000000 --- a/tools/spit/qgsshapefile.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/*************************************************************************** - qgsshapefile.cpp - description - ------------------- - begin : Fri Dec 19 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "qgsdbfbase.h" -#include "cpl_error.h" -#include "qgsshapefile.h" - - -QgsShapeFile::QgsShapeFile(QString name){ - filename = name; - features = 0; - OGRRegisterAll(); - ogrDataSource = OGRSFDriverRegistrar::Open((const char *) filename); - if (ogrDataSource != NULL){ - valid = true; - ogrLayer = ogrDataSource->GetLayer(0); - features = ogrLayer->GetFeatureCount(); - } - else - valid = false; - setDefaultTable(); -} - -QgsShapeFile::~QgsShapeFile(){ - delete ogrLayer; - delete ogrDataSource; - delete filename; - delete geom_type; -} - -int QgsShapeFile::getFeatureCount(){ - return features; -} - -QString QgsShapeFile::getFeatureClass(){ - OGRFeature *feat = ogrLayer->GetNextFeature(); - if(feat){ - OGRGeometry *geom = feat->GetGeometryRef(); - if(geom){ - geom_type = QString(geom->getGeometryName()); - char * esc_str = new char[geom_type.length()*2+1]; - PQescapeString(esc_str, (const char *)geom_type, geom_type.length()); - geom_type = QString(esc_str); - - delete[] esc_str; - - QString file(filename); - file.replace(file.length()-3, 3, "dbf"); - // open the dbf file - std::ifstream dbf((const char*)file, std::ios::in | std::ios::binary); - // read header - DbaseHeader dbh; - dbf.read((char *)&dbh, sizeof(dbh)); - - Fda fda; - QString str_type = "varchar("; - for(int field_count = 0, bytes_read = sizeof(dbh); bytes_read < dbh.size_hdr-1; field_count++, bytes_read +=sizeof(fda)){ - dbf.read((char *)&fda, sizeof(fda)); - switch(fda.field_type){ - case 'N': if((int)fda.field_decimal>0) - column_types.push_back("float"); - else - column_types.push_back("int"); - break; - case 'F': column_types.push_back("float"); - break; - case 'D': column_types.push_back("date"); - break; - case 'C': - str_type= QString("varchar(%1)").arg(fda.field_length); - column_types.push_back(str_type); - break; - case 'L': column_types.push_back("boolean"); - break; - default: - column_types.push_back("varchar(256)"); - break; - } - } - dbf.close(); - int numFields = feat->GetFieldCount(); - for(int n=0; nGetFieldDefnRef(n)->GetNameRef()); - - }else valid = false; - delete feat; - }else valid = false; - - ogrLayer->ResetReading(); - return valid?geom_type:NULL; -} - -bool QgsShapeFile::is_valid(){ - return valid; -} - -QString QgsShapeFile::getName(){ - return filename; -} - -QString QgsShapeFile::getTable(){ - return table_name; -} - -void QgsShapeFile::setTable(QString new_table){ - new_table.replace("\'","\\'"); - new_table.replace("\\","\\\\"); - table_name = new_table; -} - -void QgsShapeFile::setDefaultTable(){ - QString name(filename); - name = name.section('/', -1); - table_name = name.section('.', 0, 0); -} - -bool QgsShapeFile::insertLayer(QString dbname, QString schema, QString geom_col, QString srid, PGconn * conn, QProgressDialog * pro, bool &fin){ - connect(pro, SIGNAL(cancelled()), this, SLOT(cancelImport())); - import_cancelled = false; - bool result = true; - - QString query = "CREATE TABLE "+schema+"."+table_name+"(gid int4 PRIMARY KEY, "; - for(int n=0; nGetNextFeature(); - if(feat){ - OGRGeometry *geom = feat->GetGeometryRef(); - if(geom){ - query = "INSERT INTO "+schema+"."+table_name+QString(" VALUES( %1, ").arg(m); - - int num = geom->WkbSize(); - char * geo_temp = new char[num*3]; - geom->exportToWkt(&geo_temp); - QString geometry(geo_temp); - - QString quotes; - for(int n=0; nGetFieldAsString(n); - char * esc_str = new char[val.length()*2+1]; - PQescapeString(esc_str, (const char *)val.lower(), val.length()); - - // add escaped value to the query - query += esc_str; - query += QString(quotes + ", "); - - delete[] esc_str; - } - query += QString("GeometryFromText(\'")+geometry+QString("\', ")+srid+QString("))"); - - if(result) - res = PQexec(conn, (const char *)query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - // flag error and send query and error message to stdout on debug - result = false; - qWarning(PQresultErrorMessage(res)); - } - else { - PQclear(res); - } - - pro->setProgress(pro->progress()+1); - qApp->processEvents(); - delete[] geo_temp; - } - delete feat; - } - } - ogrLayer->ResetReading(); - return result; -} - -void QgsShapeFile::cancelImport(){ - import_cancelled = true; -} diff --git a/tools/spit/qgsshapefile.h b/tools/spit/qgsshapefile.h deleted file mode 100644 index 04ef2336cbea..000000000000 --- a/tools/spit/qgsshapefile.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************** - qgsshapefile.h - description - ------------------- - begin : Fri Dec 19 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -/* $Id$ */ - -#ifndef QGSSHAPEFILE_H -#define QGSSHAPEFILE_H - -#include -#include -#include -#include -#include - -class OGRLayer; -class OGRDataSource; -extern "C" -{ - #include -} - - -class QgsShapeFile : public QObject -{ - Q_OBJECT - public: - - QgsShapeFile(QString filename); - ~QgsShapeFile(); - int getFeatureCount(); - QString getFeatureClass(); - bool insertLayer(QString dbname, QString schema, QString geom_col, QString srid, PGconn * conn, QProgressDialog * pro, bool &fin); - - bool is_valid(); - QString getName(); - QString getTable(); - void setTable(QString new_table); - void setDefaultTable(); - std::vector column_names; - std::vector column_types; - - - private: - QString table_name; - OGRDataSource *ogrDataSource; - OGRLayer * ogrLayer; - bool import_cancelled; - bool valid; - int features; - QString filename; - QString geom_type; - - public slots: - void cancelImport(); -}; - -#endif diff --git a/tools/spit/qgsspit.cpp b/tools/spit/qgsspit.cpp deleted file mode 100644 index 308fa45fcd75..000000000000 --- a/tools/spit/qgsspit.cpp +++ /dev/null @@ -1,592 +0,0 @@ -/*************************************************************************** - qgsspit.cpp - description - ------------------- - begin : Fri Dec 19 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "qgsspit.h" -#include "qgsconnectiondialog.h" -#include "qgsmessageviewer.h" -#include "spiticon.xpm" - -// Qt implementation of alignment() + changed the numeric types to be shown on the left as well -int QTableItem::alignment() const -{ - bool num; - bool ok1 = FALSE, ok2 = FALSE; - (void)txt.toInt( &ok1 ); - if ( !ok1 ) - (void)txt.toDouble( &ok2 ); - num = ok1 || ok2; - - return ( num ? AlignLeft : AlignLeft ) | AlignVCenter; -} - -QgsSpit::QgsSpit(QWidget *parent, const char *name) : QgsSpitBase(parent, name){ - QPixmap icon; - icon = QPixmap(spitIcon); - setIcon(icon); - - populateConnectionList(); - defSrid = -1; - defGeom = "the_geom"; - total_features = 0; - setFixedSize(QSize(605, 612)); - - tblShapefiles->verticalHeader()->hide(); - tblShapefiles->adjustColumn(3); - tblShapefiles->setLeftMargin(0); - - tblShapefiles->setColumnReadOnly(0, true); - tblShapefiles->setColumnReadOnly(1, true); - tblShapefiles->setColumnReadOnly(2, true); - - chkUseDefaultSrid->setChecked(true); - chkUseDefaultGeom->setChecked(true); - useDefaultSrid(); - useDefaultGeom(); - - schema_list << "public"; - gl_key = "/Qgis/connections/"; -} - -QgsSpit::~QgsSpit(){ -} - -void QgsSpit::populateConnectionList(){ - QSettings settings; - QStringList keys = settings.subkeyList("/Qgis/connections"); - QStringList::Iterator it = keys.begin(); - cmbConnections->clear(); - while (it != keys.end()) { - cmbConnections->insertItem(*it); - ++it; - } -} - -void QgsSpit::newConnection() -{ - QgsConnectionDialog *con = new QgsConnectionDialog(this, "New Connection"); - - if (con->exec()) { - populateConnectionList(); - getSchema(); - } -} - -void QgsSpit::editConnection() -{ - QgsConnectionDialog *con = new QgsConnectionDialog(this, cmbConnections->currentText()); - if (con->exec()) { - con->saveConnection(); - getSchema(); - } -} - -void QgsSpit::removeConnection() -{ - QSettings settings; - QString key = "/Qgis/connections/" + cmbConnections->currentText(); - QString msg = "Are you sure you want to remove the [" + cmbConnections->currentText() + "] connection and all associated settings?"; - int result = QMessageBox::information(this, "Confirm Delete", msg, "Yes", "No"); - if(result == 0){ - settings.removeEntry(key + "/host"); - settings.removeEntry(key + "/database"); - settings.removeEntry(key + "/port"); - settings.removeEntry(key + "/username"); - settings.removeEntry(key + "/password"); - settings.removeEntry(key + "/save"); - - cmbConnections->removeItem(cmbConnections->currentItem()); - } -} - -void QgsSpit::addFile() -{ - QString error1 = ""; - QString error2 = ""; - bool exist; - bool is_error = false; - - QStringList files = QFileDialog::getOpenFileNames( - "Shapefiles (*.shp)", "", this, "add file dialog", "Add Shapefiles" ); - - for ( QStringList::Iterator it = files.begin(); it != files.end(); ++it){ - exist = false; - is_error = false; - for(int n=0; nnumRows(); n++){ - if(tblShapefiles->text(n,0)==*it){ - exist = true; - break; - } - } - - if(!exist){ - // check other files: file.dbf and file.shx - QString name = *it; - if(!QFile::exists(name.left(name.length()-3)+"dbf")) - is_error = true; - else if(!QFile::exists(name.left(name.length()-3)+"shx")) - is_error = true; - - if(!is_error){ - QgsShapeFile * file = new QgsShapeFile(name); - if(file->is_valid()){ - int row = tblShapefiles->numRows(); - fileList.push_back(file); - tblShapefiles->insertRows(row); - tblShapefiles->setText(row, 0, name); - tblShapefiles->setText(row, 1, file->getFeatureClass()); - tblShapefiles->setText(row, 2, QString("%1").arg(file->getFeatureCount())); - tblShapefiles->setText(row, 3, file->getTable()); - QComboTableItem* schema = new QComboTableItem(tblShapefiles, schema_list); - schema->setCurrentItem(cmbSchema->currentText()); - tblShapefiles->setItem(row, 4, schema); - total_features += file->getFeatureCount(); - } - else{ - error1 += name + "\n"; - is_error = true; - delete file; - } - } - else{ - error2 += name + "\n"; - } - } - } - - if(error1!="" || error2!=""){ - QString message = "The following Shapefile(s) could not be loaded:\n\n"; - if(error1!=""){ - error1 += "----------------------------------------------------------------------------------------"; - error1 += "\nREASON: File cannot be opened\n\n"; - } - if(error2!=""){ - error2 += "----------------------------------------------------------------------------------------"; - error2 += "\nREASON: One or both of the Shapefile files (*.dbf, *.shx) missing\n\n"; - } - QgsMessageViewer * e = new QgsMessageViewer(this, "error"); - e->setMessage(message+error1+error2); - e->exec(); - } - - tblShapefiles->adjustColumn(0); - tblShapefiles->adjustColumn(1); - tblShapefiles->adjustColumn(2); - tblShapefiles->adjustColumn(3); - tblShapefiles->adjustColumn(4); - tblShapefiles->setCurrentCell(-1, 0); -} - -void QgsSpit::removeFile() -{ - std::vector temp; - for(int n=0; nnumRows(); n++) - if (tblShapefiles->isRowSelected(n)){ - for(std::vector::iterator vit = fileList.begin(); vit!=fileList.end(); vit++){ - if((*vit)->getName()==tblShapefiles->text(n,0)){ - total_features -= (*vit)->getFeatureCount(); - fileList.erase(vit); - break; - } - } - temp.push_back(n); - } - QMemArray array(temp.size()); - for(int i=0; iremoveRows(array); - tblShapefiles->setCurrentCell(-1, 0); -} - -void QgsSpit::removeAllFiles(){ - QMemArray array(tblShapefiles->numRows()); - for(int n=0; nnumRows(); n++) - array[n] = n; - - fileList.clear(); - total_features = 0; - tblShapefiles->removeRows(array); -} - -void QgsSpit::useDefaultSrid(){ - if(chkUseDefaultSrid->isChecked()) { - defaultSridValue = spinSrid->value(); - spinSrid->setValue(defSrid); - spinSrid->setEnabled(false); - } - else { - spinSrid->setEnabled(true); - spinSrid->setValue(defaultSridValue); - } -} - -void QgsSpit::useDefaultGeom(){ - if(chkUseDefaultGeom->isChecked()) { - defaultGeomValue = txtGeomName->text(); - txtGeomName->setText(defGeom); - txtGeomName->setEnabled(false); - } - else { - txtGeomName->setEnabled(true); - txtGeomName->setText(defaultGeomValue); - } -} - -void QgsSpit::helpInfo(){ - QString message = "General Interface Help:\n\n"; - message += QString( - "PostgreSQL Connections:\n")+QString( - "----------------------------------------------------------------------------------------\n")+QString( - "[New ...] - create a new connection\n")+QString( - "[Edit ...] - edit the currently selected connection\n")+QString( - "[Remove] - remove the currently selected connection\n")+QString( - "-you need to select a connection that works (connects properly) in order to import files\n")+QString( - "-when changing connections Global Schema also changes accordingly\n\n")+QString( - "Shapefile List:\n")+QString( - "----------------------------------------------------------------------------------------\n")+QString( - "[Add ...] - open a File dialog and browse to the desired file(s) to import\n")+QString( - "[Remove] - remove the currently selected file(s) from the list\n")+QString( - "[Remove All] - remove all the files in the list\n")+QString( - "[SRID] - Reference ID for the shapefiles to be imported\n")+QString( - "[Use Default (SRID)] - set SRID to -1\n")+QString( - "[Geometry Column Name] - name of the geometry column in the database\n")+QString( - "[Use Default (Geometry Column Name)] - set column name to \'the_geom\'\n")+QString( - "[Glogal Schema] - set the schema for all files to be imported into\n\n")+QString( - "----------------------------------------------------------------------------------------\n")+QString( - "[Import] - import the current shapefiles in the list\n")+QString( - "[Quit] - quit the program\n")+QString( - "[Help] - display this help dialog\n\n"); - QgsMessageViewer * e = new QgsMessageViewer(this, "HelpMessage"); - e->setMessage(message); - e->exec(); -} - -PGconn* QgsSpit::checkConnection(){ - QSettings settings; - PGconn * pd; - bool result = true; - QString connName = cmbConnections->currentText(); - if (connName.isEmpty()){ - QMessageBox::warning(this, "Import Shapefiles", "You need to specify a Connection first"); - result = false; - } - else{ - QString connInfo = "host=" + settings.readEntry(gl_key +connName+ "/host") + - " dbname=" + settings.readEntry(gl_key+connName+"/database") + - " port=" + settings.readEntry(gl_key+connName+ "/port") + - " user=" + settings.readEntry(gl_key+connName+ "/username") + - " password=" + settings.readEntry(gl_key+connName+ "/password"); - pd = PQconnectdb((const char *) connInfo); - - if (PQstatus(pd) != CONNECTION_OK) { - QMessageBox::warning(this, "Import Shapefiles", "Connection failed - Check settings and try again"); - result = false; - } - } - if(result) - return pd; - else - return NULL; -} - -void QgsSpit::getSchema(){ - QSettings settings; - schema_list.clear(); - schema_list<<"public"; - PGconn* pd = checkConnection(); - if(pd!=NULL){ - QString connName = cmbConnections->currentText(); - QString user = settings.readEntry(gl_key+connName+"/username"); - QString schemaSql = QString("select nspname from pg_namespace,pg_user where nspowner = usesysid and usename = '%1'").arg(user); - PGresult *schemas = PQexec(pd, (const char *) schemaSql); - // get the schema names - if (PQresultStatus(schemas) == PGRES_TUPLES_OK) { - for (int i = 0; i < PQntuples(schemas); i++) { - if(QString(PQgetvalue(schemas, i, 0))!="public") - schema_list << QString(PQgetvalue(schemas, i, 0)); - } - } - PQclear(schemas); - } - - // update the schemas in the combo of all the shapefiles - for(int i=0; inumRows(); i++){ - tblShapefiles->clearCell(i,4); - QComboTableItem* temp_schemas = new QComboTableItem(tblShapefiles, schema_list); - temp_schemas->setCurrentItem("public"); - tblShapefiles->setItem(i,4, temp_schemas); - - } - - cmbSchema->clear(); - cmbSchema->insertStringList(schema_list); - cmbSchema->setCurrentText("public"); -} - -void QgsSpit::updateSchema(){ - for(int i=0; inumRows(); i++){ - tblShapefiles->clearCell(i,4); - QComboTableItem* temp_schemas = new QComboTableItem(tblShapefiles, schema_list); - temp_schemas->setCurrentItem(cmbSchema->currentText()); - tblShapefiles->setItem(i,4, temp_schemas); - - } -} - -void QgsSpit::import(){ - tblShapefiles->setCurrentCell(-1, 0); - - QString connName = cmbConnections->currentText(); - QSettings settings; - bool cancelled = false; - PGconn* pd = checkConnection(); - QString query; - - if(total_features==0){ - QMessageBox::warning(this, "Import Shapefiles", "You need to add shapefiles to the list first"); - } - else if(pd!=NULL){ - PGresult *res; - QProgressDialog * pro = new QProgressDialog("Importing files", "Cancel", total_features, this, "Progress", true); - pro->setProgress(0); - pro->setAutoClose(true); - pro->show(); - qApp->processEvents(); - - for(int i=0; itext(i,0); - // if a name starts with invalid character - if(!(tblShapefiles->text(i,3))[0].isLetter()){ - QMessageBox::warning(pro, "Import Shapefiles", error+"\nInvalid table name."); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - - // if no fields detected - if((fileList[i]->column_names).size()==0){ - QMessageBox::warning(pro, "Import Shapefiles", error+"\nNo fields detected."); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - - // duplicate field check - std::vector names_copy = fileList[i]->column_names; - QString dupl = ""; - std::sort(names_copy.begin(), names_copy.end()); - for(int k=1; ksetProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - - fileList[i]->setTable(tblShapefiles->text(i, 3)); - pro->setLabelText("Importing files\n"+tblShapefiles->text(i,0)); - bool rel_exists1 = false; - bool rel_exists2 = false; - query = "SELECT f_table_name FROM geometry_columns WHERE f_table_name=\'"+tblShapefiles->text(i,3)+ - "\' AND f_table_schema=\'"+tblShapefiles->text(i,4)+"\'"; - res = PQexec(pd, (const char *)query); - rel_exists1 = (PQntuples(res)>0); - if(PQresultStatus(res)!=PGRES_TUPLES_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - else { - PQclear(res); - } - - query = "SELECT tablename FROM pg_tables WHERE tablename=\'"+tblShapefiles->text(i,3)+"\' AND schemaname=\'"+ - tblShapefiles->text(i,4)+"\'"; - res = PQexec(pd, (const char *)query); - qWarning(query); - rel_exists2 = (PQntuples(res)>0); - if(PQresultStatus(res)!=PGRES_TUPLES_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - else { - PQclear(res); - } - - // begin session - query = "BEGIN"; - res = PQexec(pd, query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - else { - PQclear(res); - } - - query = "SET SEARCH_PATH TO \'"; - if(tblShapefiles->text(i,4)=="public") - query+="public\'"; - else - query+=tblShapefiles->text(i,4)+"\', \'public\'"; - res = PQexec(pd, query); - qWarning(query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - qWarning(PQresStatus(PQresultStatus(res))); - QMessageBox::warning(pro, "Import Shapefiles", error); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - else { - PQclear(res); - } - - QMessageBox *del_confirm; - if(rel_exists1 || rel_exists2){ - del_confirm = new QMessageBox("Import Shapefiles - Relation Exists", - "The Shapefile:\n"+tblShapefiles->text(i,0)+"\nwill use ["+ - tblShapefiles->text(i,3)+"] relation for its data,\nwhich already exists and possibly contains data.\n"+ - "To avoid data loss change the \"DB Relation Name\" \nfor this Shapefile in the main dialog file list.\n\n"+ - "Do you want to overwrite the ["+tblShapefiles->text(i,3)+"] relation?", - QMessageBox::Warning, - QMessageBox::Yes | QMessageBox::Default, - QMessageBox::No | QMessageBox::Escape, - QMessageBox::NoButton, this, "Relation Exists"); - - if(del_confirm->exec() == QMessageBox::Yes){ - if (rel_exists2){ - query = "DROP TABLE " + tblShapefiles->text(i,3); - qWarning(query); - res = PQexec(pd, (const char *)query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - else { - PQclear(res); - } - } - - if(rel_exists1){ - /*query = "SELECT DropGeometryColumn(\'"+QString(settings.readEntry(key + "/database"))+"\', \'"+ - fileList[i]->getTable()+"\', \'"+txtGeomName->text()+"')";*/ - query = "DELETE FROM geometry_columns WHERE f_table_schema=\'"+tblShapefiles->text(i,4)+"\' AND "+ - "f_table_name=\'"+tblShapefiles->text(i,3)+"\'"; - qWarning(query); - res = PQexec(pd, (const char *)query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - else { - PQclear(res); - } - } - } - else { - query = "ROLLBACK"; - res = PQexec(pd, query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - } - else { - PQclear(res); - } - pro->setProgress(pro->progress()+(tblShapefiles->text(i,2)).toInt()); - continue; - } - } - - // importing file here - int temp_progress = pro->progress(); - cancelled = false; - if(fileList[i]->insertLayer(settings.readEntry(gl_key+connName+"/database"), tblShapefiles->text(i,4), - txtGeomName->text(), QString("%1").arg(spinSrid->value()), pd, pro, cancelled) && !cancelled) - { // if file has been imported successfully - query = "COMMIT"; - res = PQexec(pd, query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - continue; - } - else { - PQclear(res); - } - - // remove file - for(int j=0; jnumRows(); j++){ - if(tblShapefiles->text(j,0)==QString(fileList[i]->getName())){ - tblShapefiles->selectRow(j); - removeFile(); - i--; - break; - } - } - - } - else if(!cancelled){ // if problem importing file occured - pro->setProgress(temp_progress+(tblShapefiles->text(i,2)).toInt()); - QMessageBox::warning(this, "Import Shapefiles", error); - query = "ROLLBACK"; - res = PQexec(pd, query); - if(PQresultStatus(res)!=PGRES_COMMAND_OK){ - qWarning(PQresultErrorMessage(res)); - QMessageBox::warning(pro, "Import Shapefiles", error); - } - else { - PQclear(res); - } - } - else{ // if import was actually cancelled - delete pro; - break; - } - } - delete pro; - } - PQfinish(pd); -} diff --git a/tools/spit/qgsspit.h b/tools/spit/qgsspit.h deleted file mode 100644 index 31d5523c5381..000000000000 --- a/tools/spit/qgsspit.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************** - qgsspit.h - description - ------------------- - begin : Fri Dec 19 2003 - copyright : (C) 2003 by Denis Antipov - email : - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#include -#include -#include -#include -#include "qgsspitbase.h" -#include "qgsshapefile.h" -extern "C" -{ - #include -} - -class QgsSpit :public QgsSpitBase{ - public: - QgsSpit(QWidget *parent=0, const char *name=0); - ~QgsSpit(); - void populateConnectionList(); - void dbConnect(); - QStringList selectedTables(); - QString connInfo(); - void newConnection(); - void editConnection(); - void removeConnection(); - void addFile(); - void removeFile(); - void removeAllFiles(); - void useDefaultSrid(); - void useDefaultGeom(); - void helpInfo(); - void getSchema(); - void updateSchema(); - void import(); - - private: - PGconn* checkConnection(); - QStringList schema_list; - int total_features; - std::vector fileList; - int defSrid; - QString defGeom; - int defaultSridValue; - QString defaultGeomValue; - QString gl_key; -}; diff --git a/tools/spit/qgsspitbase.ui b/tools/spit/qgsspitbase.ui deleted file mode 100644 index 92e68d7188fb..000000000000 --- a/tools/spit/qgsspitbase.ui +++ /dev/null @@ -1,559 +0,0 @@ - -QgsSpitBase - - - QgsSpitBase - - - - 0 - 0 - 605 - 614 - - - - - 605 - 612 - - - - SPIT - Shapefile to PostGIS Import Tool - - - false - - - - unnamed - - - - groupBox8 - - - PostgreSQL Connections - - - - unnamed - - - - cmbConnections - - - - 200 - 0 - - - - - - spacer4 - - - Horizontal - - - Expanding - - - - 90 - 21 - - - - - - btnRemove - - - Remove - - - - - btnEdit - - - Edit ... - - - - - btnNew - - - New ... - - - - - spacer5 - - - Horizontal - - - Expanding - - - - 231 - 21 - - - - - - textLabel1 - - - Connection - - - - - - - btnImport - - - Import - - - - - btnQuit - - - Quit - - - - - btnHelp - - - Help - - - - - spacer1_2_2 - - - Horizontal - - - Expanding - - - - 110 - 31 - - - - - - spacer1_2 - - - Horizontal - - - Expanding - - - - 110 - 31 - - - - - - spacer11 - - - Horizontal - - - Expanding - - - - 41 - 30 - - - - - - groupBox1 - - - Shapefile List - - - - unnamed - - - - btnAddFile - - - Add ... - - - - - btnRemoveFile - - - Remove - - - - - btnRemoveAll - - - Remove All - - - - - spacer7 - - - Horizontal - - - Expanding - - - - 270 - 31 - - - - - - line1 - - - HLine - - - Sunken - - - Horizontal - - - - - line3 - - - HLine - - - Sunken - - - Horizontal - - - - - spinSrid - - - 1000000 - - - -1 - - - -1 - - - - - - File Name - - - - - Feature Class - - - - - Features - - - - - DB Relation Name - - - - - Schema - - - - tblShapefiles - - - 0 - - - 5 - - - false - - - false - - - MultiRow - - - FollowStyle - - - - - chkUseDefaultSrid - - - Use Default - - - - - spacer15 - - - Horizontal - - - Expanding - - - - 96 - 30 - - - - - - textLabel1_2 - - - SRID - - - - - txtGeomName - - - - - chkUseDefaultGeom - - - Use Default - - - - - spacer17 - - - Horizontal - - - Expanding - - - - 121 - 31 - - - - - - spacer18 - - - Horizontal - - - Expanding - - - - 231 - 31 - - - - - - textLabel1_3 - - - Geometry Column Name - - - - - spacer19 - - - Horizontal - - - Expanding - - - - 241 - 31 - - - - - - textLabel1_4 - - - Global Schema - - - - - cmbSchema - - - false - - - - - - - - - chkUseDefaultSrid - clicked() - QgsSpitBase - useDefaultSrid() - - - btnRemoveAll - clicked() - QgsSpitBase - removeAllFiles() - - - btnRemove - clicked() - QgsSpitBase - removeConnection() - - - btnAddFile - clicked() - QgsSpitBase - addFile() - - - btnRemoveFile - clicked() - QgsSpitBase - removeFile() - - - btnEdit - clicked() - QgsSpitBase - editConnection() - - - btnQuit - clicked() - QgsSpitBase - close() - - - btnImport - clicked() - QgsSpitBase - import() - - - btnNew - clicked() - QgsSpitBase - newConnection() - - - btnHelp - clicked() - QgsSpitBase - helpInfo() - - - chkUseDefaultGeom - clicked() - QgsSpitBase - useDefaultGeom() - - - cmbConnections - activated(const QString&) - QgsSpitBase - getSchema() - - - cmbSchema - activated(const QString&) - QgsSpitBase - updateSchema() - - - - import() - newConnection() - editConnection() - removeConnection() - addFile() - removeFile() - removeAllFiles() - useDefaultSrid() - helpInfo() - aboutInfo() - useDefaultGeom() - getSchema() - updateSchema() - - - diff --git a/tools/spit/spit.kdevprj b/tools/spit/spit.kdevprj deleted file mode 100644 index cdbc89470ffc..000000000000 --- a/tools/spit/spit.kdevprj +++ /dev/null @@ -1,297 +0,0 @@ -[AUTHORS] -dist=true -install=false -install_location= -type=DATA - -[COPYING] -dist=true -install=false -install_location= -type=DATA - -[ChangeLog] -dist=true -install=false -install_location= -type=DATA - -[Config for BinMakefileAm] -bin_program=spit -cxxflags=-O0 -g3 -Wall -ldflags=\s - -[General] -AMChanged=false -author=Denis Antipov -configure_args= -email= -kdevprj_version=1.3 -lfv_open_groups= -make_options=-j1 -makefiles=Makefile.am,spit/Makefile.am,spit/docs/Makefile.am,spit/docs/en/Makefile.am,src/Makefile.am -project_name=Spit -project_type=normal_empty -showNonProjectFiles=true -sub_dir=spit/ -version=0.1 -version_control=None -workspace=1 - -[INSTALL] -dist=true -install=false -install_location= -type=DATA - -[LFV Groups] -GNU=AUTHORS,COPYING,ChangeLog,INSTALL,README,TODO,NEWS -Headers=*.h,*.hh,*.hxx,*.hpp,*.H -Others=* -Sources=*.cpp,*.c,*.cc,*.C,*.cxx,*.ec,*.ecpp,*.lxx,*.l++,*.ll,*.l -User Interface=*.kdevdlg,*.ui,*.rc,*.dlg -groups=Headers,Sources,User Interface,GNU,Others - -[Makefile] -dist=true -install=false -install_location= -type=DATA - -[Makefile.am] -dist=true -files=spit.kdevprj,AUTHORS,COPYING,ChangeLog,INSTALL,README,TODO,main.cpp,qgsconnectiondialogbase.cpp,qgsconnectiondialogbase.h,qgsspitbase.cpp,qgsspitbase.h,qgsspit.cpp,qgsspit.h,qgsconnectiondialog.h,qgsconnectiondialog.cpp,Makefile,Makefile.am,moc_qgsconnectiondialogbase.cpp,moc_qgsspitbase.cpp,qgsconnectiondialogbase.ui,qgsspitbase.ui,spit.kdevses,spit.pro,qgsshapefile.cpp,qgsshapefile.h,qgsmessageviewer.cpp,qgsmessageviewer.h,qgsdbfbase.h -install=false -install_location= -sub_dirs=spit,src -type=static_library - -[README] -dist=true -install=false -install_location= -type=DATA - -[TODO] -dist=true -install=false -install_location= -type=DATA - -[main.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[moc_qgsconnectiondialogbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[moc_qgsspitbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsconnectiondialog.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsconnectiondialog.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsconnectiondialogbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsconnectiondialogbase.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsconnectiondialogbase.ui] -dist=true -install=false -install_location= -type=SOURCE - -[qgsdbfbase.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsmessageviewer.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsmessageviewer.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsshapefile.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsshapefile.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsspit.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsspit.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsspitbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[qgsspitbase.h] -dist=true -install=false -install_location= -type=HEADER - -[qgsspitbase.ui] -dist=true -install=false -install_location= -type=SOURCE - -[spit.kdevprj] -dist=true -install=false -install_location= -type=DATA - -[spit.kdevses] -dist=true -install=false -install_location= -type=DATA - -[spit.pro] -dist=true -install=false -install_location= -type=DATA - -[spit/Makefile.am] -files=spit/qgsshapefile.cpp,spit/qgsshapefile.h -sub_dirs= -type=prog_main - -[spit/docs/Makefile.am] -sub_dirs= -type=normal - -[spit/docs/en/Makefile.am] -sub_dirs= -type=normal - -[spit/qgsshapefile.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[spit/qgsshapefile.h] -dist=true -install=false -install_location= -type=HEADER - -[src/Makefile] -dist=true -install=false -install_location= -type=DATA - -[src/Makefile.am] -files=src/main.cpp,src/Makefile,src/moc_qgsspitbase.cpp,src/moc_spitbase.cpp,src/qgsspitbase.cpp,src/qgsspitbase.h,src/qgsspitbase.ui,src/qgsspit.cpp,src/qgsspit.h,src/spit.pro -sharedlib_LDFLAGS=-version-info 0:0:0 -sharedlib_rootname=src -sub_dirs= -type=static_library - -[src/main.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[src/moc_qgsspitbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[src/moc_spitbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[src/qgsspit.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[src/qgsspit.h] -dist=true -install=false -install_location= -type=HEADER - -[src/qgsspitbase.cpp] -dist=true -install=false -install_location= -type=SOURCE - -[src/qgsspitbase.h] -dist=true -install=false -install_location= -type=HEADER - -[src/qgsspitbase.ui] -dist=true -install=false -install_location= -type=SOURCE - -[src/spit.pro] -dist=true -install=false -install_location= -type=DATA diff --git a/tools/spit/spit.kdevses b/tools/spit/spit.kdevses deleted file mode 100644 index 7a2a0a63a868..000000000000 --- a/tools/spit/spit.kdevses +++ /dev/null @@ -1,48 +0,0 @@ - - - - (Default) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/spit/spiticon.xpm b/tools/spit/spiticon.xpm deleted file mode 100644 index f315082dea93..000000000000 --- a/tools/spit/spiticon.xpm +++ /dev/null @@ -1,318 +0,0 @@ -/* XPM */ -static const char *spitIcon[]={ -"22 22 293 2", -"Qt c None", -".i c None", -".A c #000000", -".# c #0031e0", -"cd c #000000", -"ch c #001bab", -".B c #0039e4", -"#d c #000000", -".j c #002ee0", -"#M c #000000", -".h c #0017ab", -"bX c #000000", -".U c #000d28", -"bE c #0015c6", -"bD c #000000", -"bi c #0019ad", -"bY c #001dcf", -"bh c #000000", -"bz c #000000", -".g c #002acb", -"cv c #000000", -"#0 c #000104", -"co c #000000", -"#x c #000000", -".f c #0027cc", -".V c #0027d8", -"b6 c #000000", -"cD c #000414", -".k c #0024d8", -"cx c #000001", -".z c #062bbc", -"b7 c #000000", -"cw c #00020b", -".e c #0015c6", -".a c #0b35de", -"cc c #000000", -"b5 c #000000", -"aY c #01247e", -"cH c #000000", -".l c #0947e5", -"cI c #000000", -"aX c #000000", -"cp c #0032bc", -"ae c #000b4b", -".d c #1a3fc2", -"bT c #000000", -"#e c #023ce2", -"cy c #0d287d", -"cg c #000823", -"#L c #000831", -"bd c #001065", -"bW c #010a27", -"bC c #000721", -".m c #1856e7", -"by c #000105", -".T c #0331b5", -".y c #2955d4", -"cE c #001153", -"ci c #1949c8", -"cG c #090b14", -"#c c #0d379c", -"#y c #0f53e7", -"bg c #010a22", -"ce c #0642c9", -"bc c #000629", -".C c #094be8", -"cC c #0a1a40", -"ay c #00168b", -"cF c #020f58", -".n c #175de7", -".b c #4969e3", -"cu c #051540", -"#N c #1465ec", -"aW c #03173b", -".c c #7a8be8", -"aC c #011858", -"aS c #001363", -".x c #3c6be0", -"#Z c #000f88", -"bK c #10257b", -".o c #1560e9", -"cn c #073384", -"bM c #142984", -"b8 c #0039d4", -"bL c #152d90", -"bF c #2d6bea", -"b4 c #093586", -"aD c #0943a9", -"#1 c #1668ee", -"ax c #00177b", -"bj c #2669e6", -"cb c #183e87", -"bZ c #3874ec", -"cz c #4378cc", -"ad c #00119b", -"cf c #0434bb", -"bJ c #083797", -".w c #497be4", -"cq c #0745ce", -"cB c #1a54ab", -"aT c #0019b8", -"#w c #3469c7", -"af c #196aec", -".S c #4d88e9", -"bS c #2c60b3", -"cA c #4b92cd", -"bU c #1366e8", -".W c #2b7ef2", -"aZ c #287de9", -"bN c #0831c1", -".D c #3a8bf2", -".v c #4e8ae9", -"ct c #2260c1", -".p c #2879f2", -"aB c #115ac2", -"cj c #5888e1", -"az c #196fec", -".u c #5091ed", -"bB c #1664cf", -"#b c #5896e9", -"bV c #125ed4", -".t c #488ded", -".E c #3c99f5", -"bx c #4079d3", -"#f c #3799f7", -"bf c #196fd7", -"aU c #197bf0", -".s c #6a9dee", -"bA c #1777ef", -"#K c #598fe2", -"cr c #1573e9", -"be c #187ff3", -"ai c #2084e6", -"#z c #3ba4f8", -"bb c #5896e6", -".F c #3b9ef7", -".R c #86bef5", -"cs c #1f85ed", -"aj c #238ef2", -"aV c #1f88ee", -".q c #4998fa", -"aR c #6cb2ef", -"bo c #4a8eef", -"cm c #2594ef", -"aE c #2d99f7", -"#O c #37a8fa", -"b3 c #2293f3", -".r c #91b9fa", -"aw c #78c1f6", -"bI c #1d8ff5", -"ac c #7cc4f6", -"b9 c #0d7dfc", -"ca c #379ef6", -"bp c #76abf5", -"#Y c #79c0f7", -"bG c #89d9fc", -"ah c #2da7fa", -"bk c #69c8fc", -"bs c #7eadf6", -".G c #36a5f9", -"b0 c #a6e5fd", -"bO c #036afb", -"ck c #91dffc", -"br c #8eb9f9", -"#a c #ace3fd", -"bn c #309dfd", -".Q c #9bdcfc", -"#2 c #35adfd", -"a0 c #4ebdfe", -"cl c #5ecafe", -".X c #66cefe", -"bq c #8abbfb", -".4 c #0c80ff", -"bP c #0d83ff", -".J c #118aff", -"#n c #128bff", -"#E c #1893ff", -"c. c #1b98ff", -"bv c #1b99ff", -".3 c #1e99ff", -"bQ c #1e9aff", -"#V c #1e9bff", -"bu c #2394ff", -"#8 c #25a2ff", -"#m c #25a3ff", -"c# c #25a6ff", -".I c #27a4ff", -".2 c #28a7ff", -"al c #28a8ff", -"bm c #29a8ff", -"#U c #29a9ff", -"am c #29abff", -"#6 c #29acff", -"#7 c #2aabff", -"#t c #2ab0ff", -"#l c #2badff", -"#q c #2bb0ff", -"ak c #2caaff", -".7 c #2cb0ff", -"#T c #2daeff", -"#s c #2db1ff", -".K c #2e86ff", -"#5 c #2eadff", -"#9 c #2eaeff", -"#D c #2eafff", -"#H c #2eb2ff", -"an c #2fb0ff", -"#k c #2fb1ff", -"#r c #2fb2ff", -".1 c #30afff", -"#C c #30b2ff", -"#I c #30b3ff", -".H c #31a9fe", -"aA c #31b0ff", -".8 c #31b2ff", -"#j c #31b3ff", -"a1 c #33b0ff", -"#Q c #33b2ff", -"#S c #33b3ff", -"a. c #33b4ff", -"ao c #34b2ff", -"ag c #34b3ff", -"#R c #34b4ff", -"#3 c #34b6ff", -"a# c #35b4ff", -"aF c #36b2ff", -"#i c #36b4ff", -".9 c #36b5ff", -"#W c #37acff", -"aa c #37b5ff", -"#B c #37b6ff", -".0 c #38b7ff", -"ap c #39b5ff", -"#P c #39b6ff", -"aG c #3ab5ff", -"a2 c #3bb2ff", -"#4 c #3bb9ff", -"#G c #3dbaff", -".6 c #3ebaff", -"aq c #3fb9ff", -"#h c #3fbaff", -"b# c #40b5ff", -"aQ c #40bcff", -"ba c #41b9ff", -"aH c #43b9ff", -"b2 c #43baff", -".Z c #43bdff", -"bl c #44baff", -"ar c #44bbff", -"#A c #44bdff", -"#F c #46aaff", -"bw c #47b9ff", -"bR c #48b3fe", -"as c #48beff", -"#p c #4ac1ff", -"ab c #4ac2ff", -"at c #4cc0ff", -"#. c #4cc1ff", -"aI c #4dbdff", -"au c #50c2ff", -"av c #51c2ff", -"bt c #53a8fe", -"#g c #53c5ff", -".Y c #54c5ff", -".M c #58cbff", -"aJ c #59c3ff", -"#o c #5aaeff", -"#u c #60c9ff", -"#X c #60ccff", -"a3 c #61c2ff", -"aK c #61c7ff", -"bH c #62caff", -"aP c #66cdff", -"aL c #6acdff", -".N c #6dd4ff", -"aM c #72d1ff", -"aN c #7ad6ff", -"a4 c #7bd0ff", -"aO c #7fd9ff", -"## c #81dbff", -".O c #82ddff", -"b1 c #83dcff", -".5 c #86c1ff", -"#J c #8ee1ff", -"a5 c #94dcff", -"b. c #96e2ff", -".P c #96e4ff", -"a6 c #a2e4ff", -"#v c #a4defc", -"a7 c #b0ebff", -".L c #b2e2ff", -"a8 c #baf2ff", -"a9 c #bcf4ff", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQt.#.a.b.c.d.e.f.g.h.iQtQtQtQtQtQt", -"Qt.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.AQtQtQt", -".B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.UQtQt", -".V.W.X.Y.Z.0.1.2.3.4.5.6.7.8.9#.###a#b#c#dQt", -"#e#f#g#h#i#j#k#l#m#n#o#p#q#r#r#s#t#u#v#w#x.A", -"#y#z#A#B#j#r#C#D.2#E#F#G#s#r#r#r#H#I#J#K#L#M", -"#N#O#P#Q.8#R#S#T#U#V#W#r#r#C#C#C#C#s#X#Y#Z#0", -"#1#2#R#3#4#P#5#6#7#8#9#ja.a#aa#B#B.8abacadae", -"afagahaiajakalamanaoapaqarasatauavas.Zawaxay", -"azaAaBaCaDaEaF#DaGaHaIaJaKaLaMaNaOaPaQaRaSaT", -"aUaVaWaXaYaZa0a1a2a3a4a5a6a7a8a9b.b#babbbcbd", -"bebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybz", -"bAbBbCbDbEbFbGbHa1bIbJbKbLbMbNbObPbQbRbSbT#M", -"bUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9c.c#cacbcccd", -"cecfcgbXchcicjckclcmcnco.A.AcpcqcrcsctcucvQt", -"#Mcwcx#dQt#McyczcAcBcCbzQtQtcdcDcEcFcGcH#dQt", -"QtcdcdQtQtQt#d#xcIaXb7#dQtQtQt.AbXbhbh#dQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", -"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};