import CS php-8.4.24-1.module_el9+1397+c2ba2f62

This commit is contained in:
AlmaLinux RelEng Bot 2026-09-03 06:22:56 -04:00
parent 3e68679d8e
commit bd0d010441
37 changed files with 3265 additions and 1536 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/php-7.2.24.tar.xz
SOURCES/php-8.4.24.tar.xz

View File

@ -1 +1 @@
d31628bdc89a724a2a0950c2ed7d79b40cf489a7 SOURCES/php-7.2.24.tar.xz
487710711182ab94c04c15c8254efe2cc02f77e4 SOURCES/php-8.4.24.tar.xz

View File

@ -5,17 +5,17 @@ zend_extension=opcache
opcache.enable=1
; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0
opcache.enable_cli=1
; The OPcache shared memory storage size.
opcache.memory_consumption=128
;opcache.memory_consumption=128
; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=8
;opcache.interned_strings_buffer=8
; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 1000000 are allowed.
opcache.max_accelerated_files=4000
;opcache.max_accelerated_files=10000
; The maximum percentage of "wasted" memory until a restart is scheduled.
;opcache.max_wasted_percentage=5
@ -42,18 +42,20 @@ opcache.max_accelerated_files=4000
; size of the optimized code.
;opcache.save_comments=1
; If enabled, a fast shutdown sequence is used for the accelerated code
; Depending on the used Memory Manager this may cause some incompatibilities.
;opcache.fast_shutdown=0
; If enabled, compilation warnings (including notices and deprecations) will
; be recorded and replayed each time a file is included. Otherwise, compilation
; warnings will only be emitted when the file is first cached.
;opcache.record_warnings=0
; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0
; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
;opcache.optimization_level=0xffffffff
;opcache.optimization_level=0x7FFFBFFF
;opcache.inherited_hack=1
; This hack should only be enabled to work around "Cannot redeclare class"
; errors.
;opcache.dups_fix=0
; The location of the OPcache blacklist file (wildcards allowed).
@ -65,10 +67,6 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
; are cached.
;opcache.max_file_size=0
; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.
;opcache.consistency_checks=0
; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
;opcache.force_restart_timeout=180
@ -112,6 +110,15 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
; cache is required.
;opcache.file_cache_fallback=1
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; Under certain circumstances (if only a single global PHP process is
; started from which all others fork), this can increase performance
; by a tiny amount because TLB misses are reduced. On the other hand, this
; delays PHP startup, increases memory usage and degrades performance
; under memory pressure - use with care.
; Requires appropriate OS configuration.
opcache.huge_code_pages=0
; Validate cached file permissions.
; Leads OPcache to check file readability on each access to cached file.
; This directive should be enabled in shared hosting environment, when few
@ -124,7 +131,24 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
; different "chroot" environments.
;opcache.validate_root=0
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; This should improve performance, but requires appropriate OS configuration.
opcache.huge_code_pages=0
; If specified, it produces opcode dumps for debugging different stages of
; optimizations.
;opcache.opt_debug_level=0
; Specifies a PHP script that is going to be compiled and executed at server
; start-up.
; https://php.net/opcache.preload
;opcache.preload=
; Preloading code as root is not allowed for security reasons. This directive
; facilitates to let the preloading to be run as another user.
; https://php.net/opcache.preload_user
;opcache.preload_user=
; Prevents caching files that are less than this number of seconds old. It
; protects from caching of incompletely updated files. In case all file updates
; on your site are atomic, you may increase performance by setting it to "0".
;opcache.file_update_protection=2
; Absolute path used to store shared lockfiles (for *nix only).
;opcache.lockfile_path=/tmp

13
SOURCES/20-ffi.ini Normal file
View File

@ -0,0 +1,13 @@
; Enable ffi extension module
extension=ffi
; FFI API restriction. Possibe values:
; "preload" - enabled in CLI scripts and preloaded files (default)
; "false" - always disabled
; "true" - always enabled
;ffi.enable=preload
; List of headers files to preload, wildcard patterns allowed.
; /usr/share/php/preload used by for RPM packages
; /usr/local/share/php/preload may be used for local files
ffi.preload=/usr/share/php/preload/*.h:/usr/local/share/php/preload/*.h

View File

@ -18,4 +18,10 @@
%__php %{_bindir}/php
%__ztsphp %{_bindir}/zts-php
%__phpize %{_bindir}/phpize
%__ztsphpize %{_bindir}/zts-phpize
%__phpconfig %{_bindir}/php-config
%__ztsphpconfig %{_bindir}/zts-php-config
%pecl_xmldir %{_sharedstatedir}/php/peclxml

View File

@ -1,17 +0,0 @@
diff -up php-5.3.0beta1/ext/recode/config9.m4.recode php-5.3.0beta1/ext/recode/config9.m4
--- php-5.3.0beta1/ext/recode/config9.m4.recode 2008-12-02 00:30:21.000000000 +0100
+++ php-5.3.0beta1/ext/recode/config9.m4 2009-02-28 09:46:50.000000000 +0100
@@ -4,13 +4,6 @@ dnl
dnl Check for extensions with which Recode can not work
if test "$PHP_RECODE" != "no"; then
- test "$PHP_IMAP" != "no" && recode_conflict="$recode_conflict imap"
-
- if test -n "$MYSQL_LIBNAME"; then
- PHP_CHECK_LIBRARY($MYSQL_LIBNAME, hash_insert, [
- recode_conflict="$recode_conflict mysql"
- ])
- fi
if test -n "$recode_conflict"; then
AC_MSG_ERROR([recode extension can not be configured together with:$recode_conflict])

View File

@ -1,23 +0,0 @@
--- a/ext/date/tests/bug66985.phpt 2014-10-30 07:32:03.297693403 +0100
+++ b/ext/date/tests/bug66985.phpt 2014-10-30 07:32:45.138877977 +0100
@@ -3,7 +3,7 @@
--FILE--
<?php
$zones = array(
- "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "Factory", "GB-Eire",
+ "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "GB-Eire",
"GMT0", "Greenwich", "Hongkong", "Iceland", "Iran", "Israel", "Jamaica",
"Japan", "Kwajalein", "Libya", "MST7MDT", "Navajo", "NZ-CHAT", "Poland",
"Portugal", "PST8PDT", "Singapore", "Turkey", "Universal", "W-SU",
@@ -45,11 +45,6 @@
)
DateTimeZone Object
(
- [timezone_type] => 3
- [timezone] => Factory
-)
-DateTimeZone Object
-(
[timezone_type] => 3
[timezone] => GB-Eire
)

View File

@ -1,24 +0,0 @@
--- php-5.6.3/sapi/embed/config.m4.embed
+++ php-5.6.3/sapi/embed/config.m4
@@ -12,7 +12,8 @@ if test "$PHP_EMBED" != "no"; then
case "$PHP_EMBED" in
yes|shared)
PHP_EMBED_TYPE=shared
- INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(prefix)/lib; \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(prefix)/lib"
+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS -release \$(PHP_MAJOR_VERSION).\$(PHP_MINOR_VERSION)"
+ INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(libdir); \$(LIBTOOL) --mode=install \$(INSTALL) -m 0755 \$(OVERALL_TARGET) \$(INSTALL_ROOT)\$(libdir)"
;;
static)
PHP_EMBED_TYPE=static
diff -up php-5.5.30/scripts/php-config.in.old php-5.5.30/scripts/php-config.in
--- php-5.5.30/scripts/php-config.in.old 2015-10-19 15:17:31.944747715 +0200
+++ php-5.5.30/scripts/php-config.in 2015-10-19 15:17:58.278858083 +0200
@@ -18,7 +18,7 @@ exe_extension="@EXEEXT@"
php_cli_binary=NONE
php_cgi_binary=NONE
configure_options="@CONFIGURE_OPTIONS@"
-php_sapis="@PHP_INSTALLED_SAPIS@"
+php_sapis="apache2handler embed fpm @PHP_INSTALLED_SAPIS@"
# Set php_cli_binary and php_cgi_binary if available
for sapi in $php_sapis; do

View File

@ -1,27 +0,0 @@
Drop "Configure Command" from phpinfo as it doesn't
provide any useful information.
The available extensions are not related to this command.
--- php-5.4.9/ext/standard/info.c.orig 2012-12-11 10:43:02.450578276 +0100
+++ php-5.4.9/ext/standard/info.c 2012-12-11 10:44:12.530820821 +0100
@@ -743,9 +743,6 @@
#ifdef ARCHITECTURE
php_info_print_table_row(2, "Architecture", ARCHITECTURE);
#endif
-#ifdef CONFIGURE_COMMAND
- php_info_print_table_row(2, "Configure Command", CONFIGURE_COMMAND );
-#endif
if (sapi_module.pretty_name) {
php_info_print_table_row(2, "Server API", sapi_module.pretty_name );
--- php-5.4.9/ext/standard/tests/general_functions/phpinfo.phpt.orig 2012-12-11 11:07:26.959156091 +0100
+++ php-5.4.9/ext/standard/tests/general_functions/phpinfo.phpt 2012-12-11 11:07:30.899170970 +0100
@@ -20,7 +20,6 @@
System => %s
Build Date => %s%a
-Configure Command => %s
Server API => Command Line Interface
Virtual Directory Support => %s
Configuration File (php.ini) Path => %s

View File

@ -1,28 +0,0 @@
Disable MPM detection
mod_php is build twice
- as NTS without option
- as ZTS using --enable-maintainer-zts
diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4
index 2e64b21..ec4799f 100644
--- a/sapi/apache2handler/config.m4
+++ b/sapi/apache2handler/config.m4
@@ -116,17 +116,6 @@ if test "$PHP_APXS2" != "no"; then
;;
esac
- if test "$APACHE_VERSION" -lt 2004001; then
- APXS_MPM=`$APXS -q MPM_NAME`
- if test "$APXS_MPM" != "prefork" && test "$APXS_MPM" != "peruser" && test "$APXS_MPM" != "itk"; then
- PHP_BUILD_THREAD_SAFE
- fi
- else
- APACHE_THREADED_MPM=`$APXS_HTTPD -V | grep 'threaded:.*yes'`
- if test -n "$APACHE_THREADED_MPM"; then
- PHP_BUILD_THREAD_SAFE
- fi
- fi
AC_MSG_RESULT(yes)
PHP_SUBST(APXS)
else

View File

@ -1,11 +0,0 @@
--- php-7.2.0/configure.ac.includedir
+++ php-7.2.0/configure.ac
@@ -1230,7 +1230,7 @@
EXPANDED_DATADIR=$datadir
EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"`
-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR
+INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR:${EXPANDED_DATADIR}/php
exec_prefix=$old_exec_prefix
libdir=$old_libdir

View File

@ -1,19 +0,0 @@
Use -lldap_r by default.
diff -up php-7.2.3RC1/ext/ldap/config.m4.ldap_r php-7.2.3RC1/ext/ldap/config.m4
--- php-7.2.3RC1/ext/ldap/config.m4.ldap_r 2018-02-14 06:05:11.553142812 +0100
+++ php-7.2.3RC1/ext/ldap/config.m4 2018-02-14 06:07:31.179816122 +0100
@@ -119,7 +119,11 @@ if test "$PHP_LDAP" != "no"; then
MACHINE_INCLUDES=$($CC -dumpmachine)
- if test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then
+ if test -f $LDAP_LIBDIR/libldap_r.$SHLIB_SUFFIX_NAME; then
+ PHP_ADD_LIBRARY_WITH_PATH(lber, $LDAP_LIBDIR, LDAP_SHARED_LIBADD)
+ PHP_ADD_LIBRARY_WITH_PATH(ldap_r, $LDAP_LIBDIR, LDAP_SHARED_LIBADD)
+
+ elif test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then
PHP_ADD_LIBRARY_WITH_PATH(lber, $LDAP_LIBDIR, LDAP_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(ldap, $LDAP_LIBDIR, LDAP_SHARED_LIBADD)

View File

@ -1,30 +0,0 @@
diff -up php-7.2.4RC1/sapi/litespeed/lsapilib.c.dlopen php-7.2.4RC1/sapi/litespeed/lsapilib.c
--- php-7.2.4RC1/sapi/litespeed/lsapilib.c.dlopen 2018-03-13 12:40:25.330885880 +0100
+++ php-7.2.4RC1/sapi/litespeed/lsapilib.c 2018-03-13 12:41:35.797251042 +0100
@@ -755,7 +755,7 @@ static int (*fp_lve_leave)(struct liblve
static int (*fp_lve_jail)( struct passwd *, char *) = NULL;
static int lsapi_load_lve_lib(void)
{
- s_liblve = dlopen("liblve.so.0", RTLD_LAZY);
+ s_liblve = dlopen("liblve.so.0", RTLD_NOW);
if (s_liblve)
{
fp_lve_is_available = dlsym(s_liblve, "lve_is_available");
diff -up php-7.2.4RC1/Zend/zend_portability.h.dlopen php-7.2.4RC1/Zend/zend_portability.h
--- php-7.2.4RC1/Zend/zend_portability.h.dlopen 2018-03-13 12:33:38.000000000 +0100
+++ php-7.2.4RC1/Zend/zend_portability.h 2018-03-13 12:40:25.330885880 +0100
@@ -144,11 +144,11 @@
# endif
# if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT)
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
+# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
# elif defined(RTLD_DEEPBIND) && !defined(__SANITIZE_ADDRESS__)
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND)
+# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_DEEPBIND)
# else
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL)
+# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL)
# endif
# define DL_UNLOAD dlclose
# if defined(DLSYM_NEEDS_UNDERSCORE)

View File

@ -1,12 +0,0 @@
diff -up php-7.2.4RC1/configure.ac.fixheader php-7.2.4RC1/configure.ac
--- php-7.2.4RC1/configure.ac.fixheader 2018-03-13 12:42:47.594623100 +0100
+++ php-7.2.4RC1/configure.ac 2018-03-13 12:43:35.591871825 +0100
@@ -1275,7 +1275,7 @@ PHP_BUILD_DATE=`date -u +%Y-%m-%d`
fi
AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date])
-PHP_UNAME=`uname -a | xargs`
+PHP_UNAME=`uname | xargs`
AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output])
PHP_OS=`uname | xargs`
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output])

View File

@ -1,280 +0,0 @@
Adapted for 7.2.7 from 7.3 by remi
From 0ea4013f101d64fbeb9221260b36e98f10ed1ddd Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Wed, 4 Jul 2018 08:48:38 +0200
Subject: [PATCH] Fixed bug #62596 add getallheaders (apache_request_headers)
missing function in FPM add sapi_add_request_header in public API (was
add_request_header) fix arginfo for fastcgi_finish_request fucntion
---
main/SAPI.c | 50 +++++++++++++++++++++++++++++
main/SAPI.h | 1 +
sapi/cgi/cgi_main.c | 51 +----------------------------
sapi/fpm/fpm/fpm_main.c | 25 ++++++++++++++-
sapi/fpm/tests/getallheaders.phpt | 67 +++++++++++++++++++++++++++++++++++++++
5 files changed, 143 insertions(+), 51 deletions(-)
create mode 100644 sapi/fpm/tests/getallheaders.phpt
diff --git a/main/SAPI.c b/main/SAPI.c
index b6c3329..7e0c7c8 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -1104,6 +1104,56 @@ SAPI_API void sapi_terminate_process(void) {
}
}
+SAPI_API void sapi_add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg) /* {{{ */
+{
+ zval *return_value = (zval*)arg;
+ char *str = NULL;
+
+ ALLOCA_FLAG(use_heap)
+
+ if (var_len > 5 &&
+ var[0] == 'H' &&
+ var[1] == 'T' &&
+ var[2] == 'T' &&
+ var[3] == 'P' &&
+ var[4] == '_') {
+
+ char *p;
+
+ var_len -= 5;
+ p = var + 5;
+ var = str = do_alloca(var_len + 1, use_heap);
+ *str++ = *p++;
+ while (*p) {
+ if (*p == '_') {
+ *str++ = '-';
+ p++;
+ if (*p) {
+ *str++ = *p++;
+ }
+ } else if (*p >= 'A' && *p <= 'Z') {
+ *str++ = (*p++ - 'A' + 'a');
+ } else {
+ *str++ = *p++;
+ }
+ }
+ *str = 0;
+ } else if (var_len == sizeof("CONTENT_TYPE")-1 &&
+ memcmp(var, "CONTENT_TYPE", sizeof("CONTENT_TYPE")-1) == 0) {
+ var = "Content-Type";
+ } else if (var_len == sizeof("CONTENT_LENGTH")-1 &&
+ memcmp(var, "CONTENT_LENGTH", sizeof("CONTENT_LENGTH")-1) == 0) {
+ var = "Content-Length";
+ } else {
+ return;
+ }
+ add_assoc_stringl_ex(return_value, var, var_len, val, val_len);
+ if (str) {
+ free_alloca(var, use_heap);
+ }
+}
+/* }}} */
+
/*
* Local variables:
* tab-width: 4
diff --git a/main/SAPI.h b/main/SAPI.h
index f829fd7..4b8e223 100644
--- a/main/SAPI.h
+++ b/main/SAPI.h
@@ -151,6 +151,7 @@ SAPI_API void sapi_shutdown(void);
SAPI_API void sapi_activate(void);
SAPI_API void sapi_deactivate(void);
SAPI_API void sapi_initialize_empty_request(void);
+SAPI_API void sapi_add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg);
END_EXTERN_C()
/*
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c
index 2e9cefe..350846d 100644
--- a/sapi/cgi/cgi_main.c
+++ b/sapi/cgi/cgi_main.c
@@ -1591,54 +1591,6 @@ PHP_FUNCTION(apache_child_terminate) /*
}
/* }}} */
-static void add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg) /* {{{ */
-{
- zval *return_value = (zval*)arg;
- char *str = NULL;
- char *p;
- ALLOCA_FLAG(use_heap)
-
- if (var_len > 5 &&
- var[0] == 'H' &&
- var[1] == 'T' &&
- var[2] == 'T' &&
- var[3] == 'P' &&
- var[4] == '_') {
-
- var_len -= 5;
- p = var + 5;
- var = str = do_alloca(var_len + 1, use_heap);
- *str++ = *p++;
- while (*p) {
- if (*p == '_') {
- *str++ = '-';
- p++;
- if (*p) {
- *str++ = *p++;
- }
- } else if (*p >= 'A' && *p <= 'Z') {
- *str++ = (*p++ - 'A' + 'a');
- } else {
- *str++ = *p++;
- }
- }
- *str = 0;
- } else if (var_len == sizeof("CONTENT_TYPE")-1 &&
- memcmp(var, "CONTENT_TYPE", sizeof("CONTENT_TYPE")-1) == 0) {
- var = "Content-Type";
- } else if (var_len == sizeof("CONTENT_LENGTH")-1 &&
- memcmp(var, "CONTENT_LENGTH", sizeof("CONTENT_LENGTH")-1) == 0) {
- var = "Content-Length";
- } else {
- return;
- }
- add_assoc_stringl_ex(return_value, var, var_len, val, val_len);
- if (str) {
- free_alloca(var, use_heap);
- }
-}
-/* }}} */
-
PHP_FUNCTION(apache_request_headers) /* {{{ */
{
if (zend_parse_parameters_none()) {
@@ -1648,7 +1600,7 @@ PHP_FUNCTION(apache_request_headers) /*
if (fcgi_is_fastcgi()) {
fcgi_request *request = (fcgi_request*) SG(server_context);
- fcgi_loadenv(request, add_request_header, return_value);
+ fcgi_loadenv(request, sapi_add_request_header, return_value);
} else {
char buf[128];
char **env, *p, *q, *var, *val, *t = buf;
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 3256660..e815be4 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -1533,6 +1533,10 @@ PHP_FUNCTION(fastcgi_finish_request) /* {{{ */
{
fcgi_request *request = (fcgi_request*) SG(server_context);
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+
if (!fcgi_is_closed(request)) {
php_output_end_all();
php_header();
@@ -1547,8 +1551,27 @@ PHP_FUNCTION(fastcgi_finish_request) /* {{{ */
}
/* }}} */
+ZEND_BEGIN_ARG_INFO(cgi_fcgi_sapi_no_arginfo, 0)
+ZEND_END_ARG_INFO()
+
+PHP_FUNCTION(apache_request_headers) /* {{{ */
+{
+ fcgi_request *request;
+
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+
+ array_init(return_value);
+ if ((request = (fcgi_request*) SG(server_context))) {
+ fcgi_loadenv(request, sapi_add_request_header, return_value);
+ }
+} /* }}} */
+
static const zend_function_entry cgi_fcgi_sapi_functions[] = {
- PHP_FE(fastcgi_finish_request, NULL)
+ PHP_FE(fastcgi_finish_request, cgi_fcgi_sapi_no_arginfo)
+ PHP_FE(apache_request_headers, cgi_fcgi_sapi_no_arginfo)
+ PHP_FALIAS(getallheaders, apache_request_headers, cgi_fcgi_sapi_no_arginfo)
PHP_FE_END
};
diff --git a/sapi/fpm/tests/getallheaders.phpt b/sapi/fpm/tests/getallheaders.phpt
new file mode 100644
index 0000000..b41f1c6
--- /dev/null
+++ b/sapi/fpm/tests/getallheaders.phpt
@@ -0,0 +1,67 @@
+--TEST--
+FPM: Function getallheaders basic test
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+require_once "tester.inc";
+
+$cfg = <<<EOT
+[global]
+error_log = {{FILE:LOG}}
+[unconfined]
+listen = {{ADDR}}
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 1
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+EOT;
+
+$code = <<<EOT
+<?php
+echo "Test Start\n";
+var_dump(getallheaders());
+echo "Test End\n";
+EOT;
+
+$headers = [];
+$tester = new FPM\Tester($cfg, $code);
+$tester->start();
+$tester->expectLogStartNotices();
+$tester->request(
+ '',
+ [
+ 'HTTP_X_FOO' => 'BAR',
+ 'HTTP_FOO' => 'foo'
+ ]
+ )->expectBody(
+ [
+ 'Test Start',
+ 'array(4) {',
+ ' ["Foo"]=>',
+ ' string(3) "foo"',
+ ' ["X-Foo"]=>',
+ ' string(3) "BAR"',
+ ' ["Content-Length"]=>',
+ ' string(1) "0"',
+ ' ["Content-Type"]=>',
+ ' string(0) ""',
+ '}',
+ 'Test End',
+ ]
+ );
+$tester->terminate();
+$tester->expectLogTerminatingNotices();
+$tester->close();
+
+?>
+Done
+--EXPECT--
+Done
+--CLEAN--
+<?php
+require_once "tester.inc";
+FPM\Tester::clean();
+?>
--
2.1.4

View File

@ -0,0 +1,98 @@
diff -up ./ext/date/tests/bug33414-2.phpt.datetests ./ext/date/tests/bug33414-2.phpt
--- ./ext/date/tests/bug33414-2.phpt.datetests 2020-04-09 14:06:11.000000000 +0200
+++ ./ext/date/tests/bug33414-2.phpt 2020-04-09 14:40:00.809433489 +0200
@@ -74,10 +74,10 @@ $strtotime_tstamp = strtotime("next Frid
print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n";
print "wanted=Friday 00:00:00\n\n";
?>
---EXPECT--
+--EXPECTF--
TZ=Pacific/Rarotonga - wrong day.
-tStamp=Thursday 1970-01-01 17:17:17 -1030 0
-result=Tuesday 1970-01-06 00:00:00 -1030 0
+tStamp=Thursday 1970-01-01 17:17:17 %s
+result=Tuesday 1970-01-06 00:00:00 %s
wanted=Tuesday 00:00:00
TZ=Atlantic/South_Georgia - wrong day.
@@ -91,13 +91,13 @@ result=Monday 2005-04-04 00:00:00 EDT 1
wanted=Monday 00:00:00
TZ=Pacific/Enderbury - wrong day, off by 2 days.
-tStamp=Thursday 1970-01-01 17:17:17 -12 0
-result=Monday 1970-01-05 00:00:00 -12 0
+tStamp=Thursday 1970-01-01 17:17:17 %s
+result=Monday 1970-01-05 00:00:00 %s
wanted=Monday 00:00:00
TZ=Pacific/Kiritimati - wrong day, off by 2 days.
-tStamp=Thursday 1970-01-01 17:17:17 -1040 0
-result=Monday 1970-01-05 00:00:00 -1040 0
+tStamp=Thursday 1970-01-01 17:17:17 %s
+result=Monday 1970-01-05 00:00:00 %s
wanted=Monday 00:00:00
TZ=America/Managua - wrong day.
@@ -106,13 +106,13 @@ result=Tuesday 2005-04-12 00:00:00 CDT 1
wanted=Tuesday 00:00:00
TZ=Pacific/Pitcairn - wrong day.
-tStamp=Thursday 1970-01-01 17:17:17 -0830 0
-result=Wednesday 1970-01-07 00:00:00 -0830 0
+tStamp=Thursday 1970-01-01 17:17:17 %s
+result=Wednesday 1970-01-07 00:00:00 %s
wanted=Wednesday 00:00:00
TZ=Pacific/Fakaofo - wrong day.
-tStamp=Thursday 1970-01-01 17:17:17 -11 0
-result=Saturday 1970-01-03 00:00:00 -11 0
+tStamp=Thursday 1970-01-01 17:17:17 %s
+result=Saturday 1970-01-03 00:00:00 %s
wanted=Saturday 00:00:00
TZ=Pacific/Johnston - wrong day.
diff -up ./ext/date/tests/bug66985.phpt.datetests ./ext/date/tests/bug66985.phpt
--- ./ext/date/tests/bug66985.phpt.datetests 2020-04-09 14:06:11.000000000 +0200
+++ ./ext/date/tests/bug66985.phpt 2020-04-09 14:40:37.099288185 +0200
@@ -3,7 +3,7 @@ Bug #66985 (Some timezones are no longer
--FILE--
<?php
$zones = array(
- "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "Factory", "GB-Eire",
+ "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "GB-Eire",
"GMT0", "Greenwich", "Hongkong", "Iceland", "Iran", "Israel", "Jamaica",
"Japan", "Kwajalein", "Libya", "MST7MDT", "Navajo", "NZ-CHAT", "Poland",
"Portugal", "PST8PDT", "Singapore", "Turkey", "Universal", "W-SU",
@@ -45,11 +45,6 @@ DateTimeZone Object
)
DateTimeZone Object
(
- [timezone_type] => 3
- [timezone] => Factory
-)
-DateTimeZone Object
-(
[timezone_type] => 3
[timezone] => GB-Eire
)
diff -up ./ext/date/tests/strtotime3-64bit.phpt.datetests ./ext/date/tests/strtotime3-64bit.phpt
--- ./ext/date/tests/strtotime3-64bit.phpt.datetests 2020-04-09 14:06:11.000000000 +0200
+++ ./ext/date/tests/strtotime3-64bit.phpt 2020-04-09 14:40:00.809433489 +0200
@@ -44,7 +44,7 @@ foreach ($strs as $str) {
}
?>
---EXPECT--
+--EXPECTF--
bool(false)
bool(false)
string(31) "Thu, 15 Jun 2006 00:00:00 +0100"
@@ -53,7 +53,7 @@ bool(false)
string(31) "Fri, 16 Jun 2006 23:49:12 +0100"
bool(false)
string(31) "Fri, 16 Jun 2006 02:22:00 +0100"
-string(31) "Sun, 16 Jun 0222 02:22:00 -0036"
+string(31) "Sun, 16 Jun 0222 02:22:00 %s"
string(31) "Fri, 16 Jun 2006 02:22:33 +0100"
bool(false)
string(31) "Tue, 02 Mar 2004 00:00:00 +0000"

View File

@ -0,0 +1,47 @@
From 21f9d16e130b412b6839494dcf30a2f1d7dcee0f Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
Date: Mon, 24 Jul 2023 10:54:49 +0200
Subject: [PATCH] Always warn about missing curve_name
Both Fedora and RHEL do not support arbitrary EC parameters
See https://bugzilla.redhat.com/2223953
---
ext/openssl/openssl.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 33f51bfa4d..340b0467d3 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -4299,13 +4299,8 @@ static bool php_openssl_pkey_init_legacy_ec(EC_KEY *eckey, zval *data, bool *is_
OPENSSL_PKEY_SET_BN(data, b);
OPENSSL_PKEY_SET_BN(data, order);
+ php_error_docref(NULL, E_WARNING, "Missing params: curve_name (params only is not supported by OpenSSL)");
if (!(p && a && b && order)) {
- if (!p && !a && !b && !order) {
- php_error_docref(NULL, E_WARNING, "Missing params: curve_name");
- } else {
- php_error_docref(
- NULL, E_WARNING, "Missing params: curve_name or p, a, b, order");
- }
goto clean_exit;
}
@@ -4455,12 +4450,8 @@ static EVP_PKEY *php_openssl_pkey_init_ec(zval *data, bool *is_private) {
OPENSSL_PKEY_SET_BN(data, b);
OPENSSL_PKEY_SET_BN(data, order);
+ php_error_docref(NULL, E_WARNING, "Missing params: curve_name");
if (!(p && a && b && order)) {
- if (!p && !a && !b && !order) {
- php_error_docref(NULL, E_WARNING, "Missing params: curve_name");
- } else {
- php_error_docref(NULL, E_WARNING, "Missing params: curve_name or p, a, b, order");
- }
goto cleanup;
}
--
2.41.0

View File

@ -0,0 +1,16 @@
diff -up ./build/gen_stub.php.syslib ./build/gen_stub.php
--- ./build/gen_stub.php.syslib 2020-06-25 08:11:51.782046813 +0200
+++ ./build/gen_stub.php 2020-06-25 08:13:11.188860368 +0200
@@ -3265,6 +3265,12 @@ function initPhpParser() {
}
$isInitialized = true;
+
+ if (file_exists('/usr/share/php/PhpParser5/autoload.php')) {
+ require_once '/usr/share/php/PhpParser5/autoload.php';
+ return;
+ }
+
$version = "5.0.0";
$phpParserDir = __DIR__ . "/PHP-Parser-$version";
if (!is_dir($phpParserDir)) {

View File

@ -0,0 +1,30 @@
Disable MPM detection
mod_php is always build as NTS for prefork
Disable httpd.conf change
diff -up ./sapi/apache2handler/config.m4.mpmcheck ./sapi/apache2handler/config.m4
--- ./sapi/apache2handler/config.m4.mpmcheck 2025-05-06 14:31:58.000000000 +0200
+++ ./sapi/apache2handler/config.m4 2025-05-19 15:14:27.710935097 +0200
@@ -78,8 +78,7 @@ if test "$PHP_APXS2" != "no"; then
INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
\$(mkinstalldirs) '$APXS_SYSCONFDIR' && \
$APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
- -S SYSCONFDIR='$APXS_SYSCONFDIR' \
- -i -a -n php"
+ -i -n php"
fi
LIBPHP_CFLAGS="-shared"
@@ -120,11 +119,6 @@ if test "$PHP_APXS2" != "no"; then
-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1
])
- AS_IF([$APXS_HTTPD -V 2>/dev/null | grep 'threaded:.*yes' >/dev/null 2>&1], [
- APACHE_THREADED_MPM=yes
- enable_zts=yes
- ], [APACHE_THREADED_MPM=no])
-
AC_CONFIG_COMMANDS([apache2handler], [AS_VAR_IF([enable_zts], [yes],,
[AS_VAR_IF([APACHE_THREADED_MPM], [no],
[AC_MSG_WARN([

View File

@ -0,0 +1,11 @@
--- ./configure.ac.includedir
+++ ./configure.ac
@@ -1368,7 +1368,7 @@
EXPANDED_DATADIR=$datadir
EXPANDED_PHP_CONFIG_FILE_PATH=$(eval echo "$PHP_CONFIG_FILE_PATH")
EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=$(eval echo "$PHP_CONFIG_FILE_SCAN_DIR")
-INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR
+INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR:${EXPANDED_DATADIR}/php
exec_prefix=$old_exec_prefix
libdir=$old_libdir

View File

@ -0,0 +1,19 @@
Use -lldap_r by default.
diff -up php-8.4.0beta1/ext/ldap/config.m4.ldap_r php-8.4.0beta1/ext/ldap/config.m4
--- php-8.4.0beta1/ext/ldap/config.m4.ldap_r 2024-08-13 15:48:12.000000000 +0200
+++ php-8.4.0beta1/ext/ldap/config.m4 2024-08-13 16:23:24.744311776 +0200
@@ -72,7 +72,11 @@ if test "$PHP_LDAP" != "no"; then
AH_TEMPLATE([HAVE_ORALDAP],
[Define to 1 if the ldap extension uses the Oracle Instant Client.])
- if test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then
+ if test -f $LDAP_LIBDIR/libldap_r.$SHLIB_SUFFIX_NAME; then
+ PHP_ADD_LIBRARY_WITH_PATH(lber, [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
+ PHP_ADD_LIBRARY_WITH_PATH(ldap_r, [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
+
+ elif test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then
PHP_ADD_LIBRARY_WITH_PATH([lber], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])
PHP_ADD_LIBRARY_WITH_PATH([ldap], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD])

View File

@ -1,10 +1,10 @@
diff -up php-7.2.0alpha0/ext/dba/config.m4.libdb php-7.2.0alpha0/ext/dba/config.m4
--- php-7.2.0alpha0/ext/dba/config.m4.libdb 2017-05-29 08:56:06.000000000 +0200
+++ php-7.2.0alpha0/ext/dba/config.m4 2017-05-29 09:13:52.014823282 +0200
@@ -346,61 +346,13 @@ if test "$PHP_DB4" != "no"; then
dbdp4="/usr/local/BerkeleyDB.4."
dbdp5="/usr/local/BerkeleyDB.5."
for i in $PHP_DB4 ${dbdp5}1 ${dbdp5}0 ${dbdp4}8 ${dbdp4}7 ${dbdp4}6 ${dbdp4}5 ${dbdp4}4 ${dbdp4}3 ${dbdp4}2 ${dbdp4}1 ${dbdp}0 /usr/local /usr; do
diff -up ./ext/dba/config.m4.libdb ./ext/dba/config.m4
--- ./ext/dba/config.m4.libdb 2020-04-09 14:06:11.000000000 +0200
+++ ./ext/dba/config.m4 2020-04-09 14:35:08.208605065 +0200
@@ -421,55 +421,7 @@ if test "$PHP_DB4" != "no"; then
/usr/local \
/usr \
; do
- if test -f "$i/db5/db.h"; then
- THIS_PREFIX=$i
- THIS_INCLUDE=$i/db5/db.h
@ -58,31 +58,45 @@ diff -up php-7.2.0alpha0/ext/dba/config.m4.libdb php-7.2.0alpha0/ext/dba/config.
THIS_PREFIX=$i
THIS_INCLUDE=$i/include/db.h
break
fi
@@ -477,20 +429,6 @@ if test "$PHP_DB4" != "no"; then
done
- PHP_DBA_DB_CHECK(4, db-5.3 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
+ PHP_DBA_DB_CHECK(4, db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)])
fi
PHP_DBA_STD_RESULT(db4,Berkeley DB4)
diff -up php-7.2.0alpha0/ext/dba/dba.c.libdb php-7.2.0alpha0/ext/dba/dba.c
--- php-7.2.0alpha0/ext/dba/dba.c.libdb 2017-05-29 09:16:15.736628202 +0200
+++ php-7.2.0alpha0/ext/dba/dba.c 2017-05-29 09:16:20.494654746 +0200
@@ -53,6 +53,10 @@
#include "php_tcadb.h"
PHP_DBA_DB_CHECK([4],
[
- db-5.3
- db-5.1
- db-5.0
- db-4.8
- db-4.7
- db-4.6
- db-4.5
- db-4.4
- db-4.3
- db-4.2
- db-4.1
- db-4.0
- db-4
- db4
db
],
[(void)db_create((DB**)0, (DB_ENV*)0, 0)])
diff -up ./ext/dba/dba.c.libdb ./ext/dba/dba.c
--- ./ext/dba/dba.c.libdb 2020-04-09 14:06:11.000000000 +0200
+++ ./ext/dba/dba.c 2020-04-09 14:36:30.593275190 +0200
@@ -49,6 +49,10 @@
#include "php_lmdb.h"
#include "dba_arginfo.h"
+#ifdef DB4_INCLUDE_FILE
+#include DB4_INCLUDE_FILE
+#endif
+
/* {{{ arginfo */
ZEND_BEGIN_ARG_INFO_EX(arginfo_dba_popen, 0, 0, 2)
ZEND_ARG_INFO(0, path)
@@ -558,6 +562,10 @@ PHP_MINFO_FUNCTION(dba)
PHP_MINIT_FUNCTION(dba);
PHP_MSHUTDOWN_FUNCTION(dba);
PHP_MINFO_FUNCTION(dba);
@@ -444,6 +448,10 @@ PHP_MINFO_FUNCTION(dba)
php_info_print_table_start();
php_info_print_table_row(2, "DBA support", "enabled");
php_info_print_table_row(2, "DBA support", "enabled");
+#ifdef DB_VERSION_STRING
+ php_info_print_table_row(2, "libdb header version", DB_VERSION_STRING);
+ php_info_print_table_row(2, "libdb library version", db_version(NULL, NULL, NULL));

View File

@ -0,0 +1,44 @@
Drop "Configure Command" from phpinfo as it doesn't
provide any useful information.
The available extensions are not related to this command.
Replace full GCC name by gcc in php -v output
diff -up ./ext/standard/info.c.phpinfo ./ext/standard/info.c
--- ./ext/standard/info.c.phpinfo 2024-10-08 15:57:40.000000000 +0200
+++ ./ext/standard/info.c 2024-10-08 16:10:11.330510009 +0200
@@ -814,9 +814,6 @@ PHPAPI ZEND_COLD void php_print_info(int
#ifdef PHP_BUILD_ARCH
php_info_print_table_row(2, "Architecture", PHP_BUILD_ARCH);
#endif
-#ifdef CONFIGURE_COMMAND
- php_info_print_table_row(2, "Configure Command", CONFIGURE_COMMAND );
-#endif
if (sapi_module.pretty_name) {
php_info_print_table_row(2, "Server API", sapi_module.pretty_name );
diff -up ./ext/standard/tests/general_functions/phpinfo.phpt.phpinfo ./ext/standard/tests/general_functions/phpinfo.phpt
--- ./ext/standard/tests/general_functions/phpinfo.phpt.phpinfo 2024-10-08 16:12:47.009579597 +0200
+++ ./ext/standard/tests/general_functions/phpinfo.phpt 2024-10-08 16:12:52.273784836 +0200
@@ -17,7 +17,6 @@ PHP Version => %s
System => %s
Build Date => %r(.+?)%r
-Configure Command => %s
Server API => Command Line Interface
Virtual Directory Support => %s
Configuration File (php.ini) Path => %s
diff -up ./main/main.c.phpinfo ./main/main.c
--- ./main/main.c.phpinfo 2024-10-08 15:57:40.000000000 +0200
+++ ./main/main.c 2024-10-08 16:10:11.331510049 +0200
@@ -118,7 +118,7 @@ PHPAPI char *php_get_version(sapi_module
"NTS"
#endif
#ifdef PHP_BUILD_COMPILER
- " " PHP_BUILD_COMPILER
+ " gcc"
#endif
#ifdef PHP_BUILD_ARCH
" " PHP_BUILD_ARCH

View File

@ -1,7 +1,7 @@
diff -up php-7.2.12RC1/scripts/phpize.in.headers php-7.2.12RC1/scripts/phpize.in
--- php-7.2.12RC1/scripts/phpize.in.headers 2018-10-23 11:47:43.000000000 +0200
+++ php-7.2.12RC1/scripts/phpize.in 2018-10-23 11:49:51.651818777 +0200
@@ -162,6 +162,15 @@ phpize_autotools()
diff -up ./scripts/phpize.in.headers ./scripts/phpize.in
--- ./scripts/phpize.in.headers 2019-07-23 10:05:11.000000000 +0200
+++ ./scripts/phpize.in 2019-07-23 10:18:13.648098089 +0200
@@ -166,6 +166,15 @@ phpize_autotools()
$PHP_AUTOHEADER || exit 1
}
@ -17,7 +17,7 @@ diff -up php-7.2.12RC1/scripts/phpize.in.headers php-7.2.12RC1/scripts/phpize.in
# Main script
case "$1" in
@@ -180,12 +189,15 @@ case "$1" in
@@ -184,12 +193,15 @@ case "$1" in
# Version
--version|-v)

View File

@ -5,7 +5,14 @@ Add support for use of the system timezone database, rather
than embedding a copy. Discussed upstream but was not desired.
History:
r17: adapt for autotool change in 7.2.16RC1
r24: add internal UTC if tzdata is missing
r23: fix possible buffer overflow
r22: retrieve tzdata version from /usr/share/zoneinfo/tzdata.zi
r21: adapt for timelib 2021.03 (in 8.1.0)
r20: adapt for timelib 2020.03 (in 8.0.10RC1)
r19: adapt for timelib 2020.02 (in 8.0.0beta2)
r18: adapt for autotool change in 7.3.3RC1
r17: adapt for timelib 2018.01 (in 7.3.2RC1)
r16: adapt for timelib 2017.06 (in 7.2.3RC1)
r15: adapt for timelib 2017.05beta7 (in 7.2.0RC1)
r14: improve check for valid tz file
@ -28,16 +35,16 @@ r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert)
r2: add filesystem trawl to set up name alias index
r1: initial revision
diff -up php-7.2.16RC1/ext/date/config0.m4.systzdata php-7.2.16RC1/ext/date/config0.m4
--- php-7.2.16RC1/ext/date/config0.m4.systzdata 2019-02-19 11:22:22.223741585 +0100
+++ php-7.2.16RC1/ext/date/config0.m4 2019-02-19 11:23:05.089111556 +0100
@@ -10,6 +10,19 @@ io.h
dnl Check for strtoll, atoll
AC_CHECK_FUNCS(strtoll atoll)
diff -up ./ext/date/config0.m4.systzdata ./ext/date/config0.m4
--- ./ext/date/config0.m4.systzdata 2026-05-19 17:02:38.000000000 +0200
+++ ./ext/date/config0.m4 2026-05-20 07:34:14.360175792 +0200
@@ -8,6 +8,18 @@ AX_CHECK_COMPILE_FLAG([-Wno-implicit-fal
[PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -Wno-implicit-fallthrough"],,
[-Werror])
+PHP_ARG_WITH(system-tzdata, for use of system timezone data,
+[ --with-system-tzdata[=DIR] to specify use of system timezone data],
+no, no)
+ [AS_HELP_STRING([--with-system-tzdata[=DIR]],[to specify use of system timezone data])], no, no)
+
+if test "$PHP_SYSTEM_TZDATA" != "no"; then
+ AC_DEFINE(HAVE_SYSTEM_TZDATA, 1, [Define if system timezone data is used])
@ -48,13 +55,13 @@ diff -up php-7.2.16RC1/ext/date/config0.m4.systzdata php-7.2.16RC1/ext/date/conf
+ fi
+fi
+
PHP_DATE_CFLAGS="-I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1"
timelib_sources="lib/astro.c lib/dow.c lib/parse_date.c lib/parse_tz.c
lib/timelib.c lib/tm2unixtime.c lib/unixtime2tm.c lib/parse_iso_intervals.c lib/interval.c"
diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/lib/parse_tz.c
--- php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata 2019-02-19 11:13:22.000000000 +0100
+++ php-7.2.16RC1/ext/date/lib/parse_tz.c 2019-02-19 11:19:40.245313535 +0100
@@ -25,8 +25,21 @@
PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1"
AX_CHECK_COMPILE_FLAG([-fwrapv],
diff -up ./ext/date/lib/parse_tz.c.systzdata ./ext/date/lib/parse_tz.c
--- ./ext/date/lib/parse_tz.c.systzdata 2026-05-19 17:02:38.000000000 +0200
+++ ./ext/date/lib/parse_tz.c 2026-05-20 07:33:10.301120979 +0200
@@ -26,9 +26,33 @@
#include "timelib.h"
#include "timelib_private.h"
@ -67,8 +74,20 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+
+#include "php_scandir.h"
+
+static const unsigned char internal_utc[] = {
+ 0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x0a, 0x55, 0x54, 0x43,
+ 0x30, 0x0a
+};
+
+#else
#define TIMELIB_SUPPORTS_V2DATA
#define TIMELIB_SUPPORT_SLIM_FILE
#include "timezonedb.h"
+#endif
+
@ -76,7 +95,7 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
# if defined(__LITTLE_ENDIAN__)
@@ -67,6 +80,11 @@ static int read_php_preamble(const unsig
@@ -95,6 +119,11 @@ static int read_php_preamble(const unsig
{
uint32_t version;
@ -88,11 +107,11 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
/* read ID */
version = (*tzf)[3] - '0';
*tzf += 4;
@@ -374,7 +392,429 @@ void timelib_dump_tzinfo(timelib_tzinfo
@@ -577,7 +606,475 @@ void timelib_dump_tzinfo(timelib_tzinfo
}
}
-static int seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb)
-static int seek_to_tz_position(const unsigned char **tzf, const char *timezone, const timelib_tzdb *tzdb)
+#ifdef HAVE_SYSTEM_TZDATA
+
+#ifdef HAVE_SYSTEM_TZDATA_PREFIX
@ -318,6 +337,44 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+ return timelib_strcasecmp(alpha->id, beta->id);
+}
+
+/* Retrieve tzdata version. */
+static void retrieve_zone_version(timelib_tzdb *db)
+{
+ static char buf[30];
+ char path[PATH_MAX];
+ FILE *fp;
+
+ strncpy(path, ZONEINFO_PREFIX "/tzdata.zi", sizeof(path));
+
+ fp = fopen(path, "r");
+ if (fp) {
+ if (fgets(buf, sizeof(buf), fp)) {
+ if (!memcmp(buf, "# version ", 10) &&
+ isdigit(buf[10]) &&
+ isdigit(buf[11]) &&
+ isdigit(buf[12]) &&
+ isdigit(buf[13]) &&
+ islower(buf[14])) {
+ if (buf[14] >= 't') { /* 2022t = 2022.20 */
+ buf[17] = 0;
+ buf[16] = buf[14] - 't' + '0';
+ buf[15] = '2';
+ } else if (buf[14] >= 'j') { /* 2022j = 2022.10 */
+ buf[17] = 0;
+ buf[16] = buf[14] - 'j' + '0';
+ buf[15] = '1';
+ } else { /* 2022a = 2022.1 */
+ buf[16] = 0;
+ buf[15] = buf[14] - 'a' + '1';
+ }
+ buf[14] = '.';
+ db->version = buf+10;
+ }
+ }
+ fclose(fp);
+ }
+}
+
+
+/* Create the zone identifier index by trawling the filesystem. */
+static void create_zone_index(timelib_tzdb *db)
@ -394,6 +451,9 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+
+ qsort(db_index, index_next, sizeof *db_index, sysdbcmp);
+
+ if (!index_next) {
+ db_index[index_next++].id = strdup("UTC");
+ }
+ db->index = db_index;
+ db->index_size = index_next;
+
@ -410,7 +470,7 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+ size_t n;
+ char *data, *p;
+
+ data = malloc(3 * sysdb->index_size + 7);
+ data = malloc(3 * sysdb->index_size + sizeof(FAKE_HEADER) - 1);
+
+ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1);
+
@ -500,7 +560,12 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+
+ fd = open(fname, O_RDONLY);
+ if (fd == -1) {
+ return NULL;
+ if (strcmp(timezone, "UTC")) {
+ return NULL;
+ } else {
+ *length = sizeof(internal_utc);
+ return internal_utc;
+ }
+ } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st, fd)) {
+ close(fd);
+ return NULL;
@ -515,15 +580,15 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+
+#endif
+
+static int inmem_seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb)
+static int inmem_seek_to_tz_position(const unsigned char **tzf, const char *timezone, const timelib_tzdb *tzdb)
{
int left = 0, right = tzdb->index_size - 1;
@@ -400,9 +840,48 @@ static int seek_to_tz_position(const uns
@@ -603,9 +1100,49 @@ static int seek_to_tz_position(const uns
return 0;
}
+static int seek_to_tz_position(const unsigned char **tzf, char *timezone,
+static int seek_to_tz_position(const unsigned char **tzf, const char *timezone,
+ char **map, size_t *maplen,
+ const timelib_tzdb *tzdb)
+{
@ -553,9 +618,10 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+ if (timezonedb_system == NULL) {
+ timelib_tzdb *tmp = malloc(sizeof *tmp);
+
+ tmp->version = "0.system";
+ tmp->version = "0";
+ tmp->data = NULL;
+ create_zone_index(tmp);
+ retrieve_zone_version(tmp);
+ system_location_table = create_location_table();
+ fake_data_segment(tmp, system_location_table);
+ timezonedb_system = tmp;
@ -568,8 +634,8 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
}
const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count)
@@ -414,7 +893,30 @@ const timelib_tzdb_index_entry *timelib_
int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb)
@@ -617,7 +1154,32 @@ const timelib_tzdb_index_entry *timelib_
int timelib_timezone_id_is_valid(const char *timezone, const timelib_tzdb *tzdb)
{
const unsigned char *tzf;
- return (seek_to_tz_position(&tzf, timezone, tzdb));
@ -582,7 +648,9 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
+ return 0;
+ }
+
+ if (!strcmp(timezone, "UTC")) {
+ return 1;
+ }
+ if (system_location_table) {
+ if (find_zone_info(system_location_table, timezone) != NULL) {
+ /* found in cache */
@ -600,8 +668,8 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
}
static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
@@ -456,12 +958,14 @@ static timelib_tzinfo* timelib_tzinfo_ct
timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb, int *error_code)
@@ -662,6 +1224,8 @@ static timelib_tzinfo* timelib_tzinfo_ct
timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code)
{
const unsigned char *tzf;
+ char *memmap = NULL;
@ -609,18 +677,19 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
timelib_tzinfo *tmp;
int version;
int transitions_result, types_result;
unsigned int type; /* TIMELIB_TZINFO_PHP or TIMELIB_TZINFO_ZONEINFO */
@@ -669,7 +1233,7 @@ timelib_tzinfo *timelib_parse_tzfile(con
*error_code = TIMELIB_ERROR_NO_ERROR;
- if (seek_to_tz_position(&tzf, timezone, tzdb)) {
+ if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
tmp = timelib_tzinfo_ctor(timezone);
version = read_preamble(&tzf, tmp, &type);
@@ -484,6 +988,29 @@ timelib_tzinfo *timelib_parse_tzfile(cha
timelib_tzinfo_dtor(tmp);
@@ -712,11 +1276,38 @@ timelib_tzinfo *timelib_parse_tzfile(con
return NULL;
}
+
+#ifdef HAVE_SYSTEM_TZDATA
+ if (memmap) {
+ const struct location_info *li;
@ -640,13 +709,13 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
+ }
+
+ /* Now done with the mmap segment - discard it. */
+ munmap(memmap, maplen);
+ if (memmap != internal_utc) {
+ munmap(memmap, maplen);
+ }
+ } else {
+#endif
if (version == 2 || version == 3) {
if (!skip_64bit_preamble(&tzf, tmp)) {
/* 64 bit preamble is not in place */
@@ -501,6 +1028,9 @@ timelib_tzinfo *timelib_parse_tzfile(cha
if (type == TIMELIB_TZINFO_PHP) {
read_location(&tzf, tmp);
} else {
set_default_location_and_comments(&tzf, tmp);
}
@ -656,3 +725,18 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
} else {
*error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
tmp = NULL;
diff -up ./ext/date/php_date.c.systzdata ./ext/date/php_date.c
--- ./ext/date/php_date.c.systzdata 2026-05-19 17:02:38.000000000 +0200
+++ ./ext/date/php_date.c 2026-05-20 07:33:10.301467311 +0200
@@ -483,7 +483,11 @@ PHP_MINFO_FUNCTION(date)
php_info_print_table_row(2, "date/time support", "enabled");
php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION);
php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version);
+#ifdef HAVE_SYSTEM_TZDATA
+ php_info_print_table_row(2, "Timezone Database", "system");
+#else
php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal");
+#endif
php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb));
php_info_print_table_end();

View File

@ -0,0 +1,8 @@
-----BEGIN PGP SIGNATURE-----
iJEEABYKADkWIQSdf5mgy48FyKaVjWJWqXr3YAo5pgUCammWmBsUgAAAAAAEAA5t
YW51MiwyLjUrMS4xMiwwLDMACgkQVql692AKOaYjxQEA4JM91wpTjDXkfFFmE/4C
BTe60xD1D1g9dpnNHEnJ0+MA/RkY5jNIdCTzjB3xinvrqB8xVx6tJYyigcfxNfZn
SqgG
=Lrrc
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,43 @@
diff -up ./sapi/embed/config.m4.embed ./sapi/embed/config.m4
--- ./sapi/embed/config.m4.embed 2025-06-03 18:29:26.000000000 +0200
+++ ./sapi/embed/config.m4 2025-06-05 07:18:33.662824247 +0200
@@ -10,12 +10,12 @@ AC_MSG_CHECKING([for embedded SAPI libra
if test "$PHP_EMBED" != "no"; then
AS_CASE([$PHP_EMBED],
[yes|shared], [
- LIBPHP_CFLAGS="-shared"
+ LIBPHP_CFLAGS="-shared -release \$(PHP_MAJOR_VERSION).\$(PHP_MINOR_VERSION)"
AS_CASE(["$host_alias"], [*darwin*], [
SAPI_SHARED="libs/libphp.dylib"
PHP_EMBED_TYPE=shared-dylib
], [PHP_EMBED_TYPE=shared])
- INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(orig_libdir); \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(orig_libdir)"
+ INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(orig_libdir); \$(LIBTOOL) --mode=install \$(INSTALL) -m 0755 \$(OVERALL_TARGET) \$(INSTALL_ROOT)\$(orig_libdir)"
],
[static], [
LIBPHP_CFLAGS="-static"
diff -up ./scripts/php-config.in.embed ./scripts/php-config.in
--- ./scripts/php-config.in.embed 2025-03-25 19:59:01.000000000 +0100
+++ ./scripts/php-config.in 2025-03-26 07:14:03.223870699 +0100
@@ -19,7 +19,7 @@ exe_extension="@EXEEXT@"
php_cli_binary=NONE
php_cgi_binary=NONE
configure_options="@CONFIGURE_OPTIONS@"
-php_sapis="@PHP_INSTALLED_SAPIS@"
+php_sapis="apache2handler litespeed phpdbg @PHP_INSTALLED_SAPIS@"
ini_dir="@EXPANDED_PHP_CONFIG_FILE_SCAN_DIR@"
ini_path="@EXPANDED_PHP_CONFIG_FILE_PATH@"
php_embed_type="@PHP_EMBED_TYPE@"
diff --git a/configure.ac b/configure.ac
index 6dc1e45b34f..895c5153a2d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1306,7 +1306,7 @@ AS_VAR_IF([program_suffix], [NONE], [program_suffix=])
orig_libdir=$libdir
AS_CASE([$libdir],
- ['${exec_prefix}/lib'], [libdir=$libdir/php])
+ [${prefix}/${PHP_LIBDIR}], [libdir=$libdir/php])
AS_CASE([$(eval echo $datadir)],
['${prefix}/share'], [datadir=$datadir/php])

View File

@ -1,5 +1,5 @@
; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]
@ -128,7 +128,7 @@ pm.min_spare_servers = 5
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35
; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
@ -238,7 +238,7 @@ pm.max_spare_servers = 35
; may conflict with a real PHP file.
; Default Value: not set
;pm.status_path = /status
; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
@ -255,7 +255,7 @@ pm.max_spare_servers = 35
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
;ping.response = pong
; The access log file
; Default: not set
;access.log = log/$pool.access.log
@ -330,22 +330,26 @@ slowlog = /var/log/php-fpm/www-slow.log
; Default Value: 0
;request_slowlog_timeout = 0
; Depth of slow log stack trace.
; Default Value: 20
;request_slowlog_trace_depth = 20
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0
; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
@ -355,20 +359,20 @@ slowlog = /var/log/php-fpm/www-slow.log
; possible. However, all PHP paths will be relative to the chroot
; (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =
;chroot =
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
;chdir = /var/www
; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
;catch_workers_output = yes
; Clear environment in FPM workers
; Prevents arbitrary environment variables from reaching FPM worker processes
; by clearing the environment in workers before env vars specified in this
@ -381,7 +385,7 @@ slowlog = /var/log/php-fpm/www-slow.log
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7
@ -399,7 +403,7 @@ slowlog = /var/log/php-fpm/www-slow.log
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

View File

@ -5,11 +5,6 @@
; All relative paths in this configuration file are relative to PHP's install
; prefix.
; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
include=/etc/php-fpm.d/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
@ -43,6 +38,24 @@ error_log = /var/log/php-fpm/error.log
; Default Value: notice
;log_level = notice
; Log limit on number of characters in the single line (log entry). If the
; line is over the limit, it is wrapped on multiple lines. The limit is for
; all logged characters including message prefix and suffix if present. However
; the new line character does not count into it as it is present only when
; logging to a file descriptor. It means the new line character is not present
; when logging to syslog.
; Default Value: 1024
;log_limit = 4096
; Log buffering specifies if the log line is buffered which means that the
; line is written in a single write operation. If the value is false, then the
; data is written directly into the file descriptor. It is an experimental
; option that can potentionaly improve logging performance and memory usage
; for some heavy logging scenarios. This option is ignored if logging to syslog
; as it has to be always buffered.
; Default value: yes
;log_buffering = no
; If this number of child processes exit with SIGSEGV or SIGBUS within the time
; interval set by emergency_restart_interval then FPM will restart. A value
; of '0' means 'Off'.
@ -115,5 +128,8 @@ daemonize = yes
; used in logs and stats. There is no limitation on the number of pools which
; FPM can handle. Your system will tell you anyway :)
; See /etc/php-fpm.d/*.conf
; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
include=/etc/php-fpm.d/*.conf

View File

@ -4,7 +4,7 @@
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
After=network.target
[Service]
Type=notify

770
SOURCES/php-keyring.gpg Normal file
View File

@ -0,0 +1,770 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGBlJjMBEAC2wbO/PIAzVSAp2kk7MXmzoXVRSPyEbnjN6qm77nrzvugh/beP
ZucG6lbXMxRsCj4GS9xLcGZoSQZhT/2GJdy+aUt7zf6sympJUTcgPdEVmf5uTxWn
QkBg0Bdm6h8xwvgTZVrdfwy7f7jfAsGSXKzEmJfJ2L6LHmAMI3I+csdPqKBHSzj6
hYjZYcwXSp2TAISkpKKmV9kpkY3ZKDoJCdDb5Q6bzy4xK+BI7XFbIMLWCEkfpUas
GXlPoV/9qvWWr3SGtnKjE5VjoVgA5iqgMUymyd2L9z3Bqy8+mKtmdxXyXg3O0o68
xG9o7pcjoavVbRWiqE9TqZcwar+42KoL6BchWYlMveZ9RO6X+umq9wGJjR3G99PE
cHtF6WomMXGieLqbUz/WW0GioL37vkqKMZYZ0tyITiJZf7am2J4Tigyq8kk1HG6r
mSbXSSOBcIXWv+aVnnTM14HKjsbf6jx91Vd/54yD7hyozwEutb4+Cz/O3R9Z3V6p
/OfcnATLXCdDg1hYNjWoz6TZclxGTpZJp7TevqEBhqQ8ua/QXHJyF6za3VFYXI4C
2XtaV6X6c7H2SvRphsnnVZEMWSBsZecW+u931eamQizz5dmWW7jCtQqD/rcybqo+
PetszW+Drsxg3zF9dPM3H+G1Xc4RIL1K4PhRrrpl+HwZtsOgUiJLMgrXPwARAQAB
tDJQaWVycmljayBDaGFycm9uIChQaWVycmljayBQSFApIDxwaWVycmlja0BwaHAu
bmV0PokCTgQTAQoAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBBGYwBF1
k0l6XsXBmShq8fmJdGncBQJic0zgAAoJEChq8fmJdGncIWwP/RFhFn+2/X+dhZGy
0SDwdvPA+dGXGiAEMC9BloT/CjZbVcMQ3tlA5A9Zytuyi1FBe09AJbLHO4ba4XMZ
mNCxd2WISLPC1zjgemjWz5bryYFfRxA8Z1iqQn4z+kHlcLMpNeFsmuYWPx/aW5mV
1STdGv9pUHv98u3cOWNg56qRhoD0ktZ0lBoQjqxdcJpfObTC1VKD+B+NMl3QkBlz
XRwmNk5Q5qlmxG+38EHU3hPPAxHhP+UupuW+M7OTFuW2WGAx0zp4D7eI++5ViM4u
W2ZNQYeKhLbAoSVO8PvPgCIx/n++pSOenO1HbYkk5oNU1ypF1JSg5eKeKPMmmB3d
EaII3ImJ0c8zJ+rg75gqxIzm7yi8kPRZeE7mLX6IpDuMvfuhn+DUqS6RCRuOT7Q/
0AxIaivUnBrVl+0P9MAH7h+dsz28DJ0SeBHeOQailbPE+Dm8QroDQYUNhjlmkVwd
es8f6IUhal9X20zxVkEAzw5qkN9twh+tvEvich/m9idrhExVLeUKTOjgxOe17OQk
Js45pdqmKt3otzNJTBgEOeMYHFMSsd7pewDONjxACo0jj6/QipNK1mad7RTR96ne
rqCYSKqP5HDpq4FYUU/bLKxyt771Ir0jULSUfqkclwlsvIYvuQlnZmpSUYS04vIH
6SDqEMMr4S/0+kNRme4V3v8+80kXtCNQaWVycmljayBDaGFycm9uIDxwaWVycmlj
a0BwaHAubmV0PokCTgQTAQgAOBYhBBGYwBF1k0l6XsXBmShq8fmJdGncBQJicJ29
AhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJEChq8fmJdGnchjkP/iYwps3x
V3I/KJKSBNUHdm7obMuXW1qnDZ/OXNh5L28T0Py8XTdSyF0T2EpBvSq0yiRuVpTV
wE8aspZY+q/HSwltIBnHr1gp9kCIlZ8exWC8BPB8yByqWl0YepGcQSfx8q1rT5Uv
cYrBdb9ocCd0noktPmonaqoyhrxWqFPkJwejtMncJ8xcPDt0jlOIT8w4g+5FQTDL
DYleozYZOpKlfV3P88w8/9QczYEyBPXtNJIvqDr0mEc1Vyu5jKlAc3EU4FaqDmU/
yJe62pL9InoUkRZ8pfuAvJ90D9mPTnW22rITWL+WJV8u2LxDh5lff7+1tCfrxPeO
1CJjJL9OOr3/y3nS3UHvgVcJ7z/CVJwGlNrOeAlPGQMVj2Q1JxiBoJ/B1r39kX1O
aEn+saiqmP4gfWdYfJTqS8vKWeCuvn+A2qDCZzSDj+fa3BhxtYGCxNfwBMtKjF1E
Xz2Er1+clIVLqlenctEysyuSIeD+wW4OSISIrwC3ezR4wWnIGACYMm6Iai020k+8
14wjqAASM0qUx/TxBdvKCqGHM7UEVg8deDxDBxQi1eJ5faF2QzJJeZUuAFD8hpJY
BAjHiI724ogySUaXNsTtmRIwsytTumdYFck67s31piygsLHutz/0Lx16yjyxtC+T
PC7nmszKJN7Xgm8fq0U5VCumMswHJeeHMVqruQINBGBlJjMBEADtm6XiVTQIq5Up
NUXpaudyuuMEjkE1hI7hy/j4OL+dv8XbjJv3tKNOHncJUd+dixXBHBriWZUlNYrc
xtEMJbxPs4jw9CuZafK6Tnt7n6cbKGG/RTnPwvDL+jOGp+1n3aBHupCaC69RBclP
0evYNT9rzqAy4NIc9AFLECHy4pbdBQKEz9A66TNUlbV6RijhIWCju9vvVrQgwE9M
2XWXT/RukJkmnwwWilGTCk2/Z9BRczZyUS6edD1gp66FBqlpEF582PnL+7oAtjww
Y8NBYgXkQmTEwvvTj4hj1VTsf/ygZc8N2TNi2sX6ffYFaSJFd4xxfKT0DIdUckI2
0m+zxLMweVZOvb6kFV53/wKDD/9LfKCp8mvvfrSUjlrkKtNtJvbxQjRAhhRTpGaF
0jDOmREXPlHn5r/BPsFylX24FJt2WsFna2ORt3gosm2PkXy3p5r/W1VdqwgRVFxA
iV6zzEPAUppY/UeXwGVrbXMsIb1oFtpPgbT0Cu4tj3pPVse87cW9bUlBcTl7XW3K
hlXuEwOho6jcUIzqno6s45tPOKt3tL9epIFWEN5X+Y5Bx4Pt4pecwYxPevqu99yT
JYOls0uqdee9TzPIudIbcLysZvQH8J8EfM5urqUQcCOmXPJjeaSmteTdOlCn124f
eXd6m50dZOee4DpoaZLOxxERUJjG5wARAQABiQI2BBgBCAAgAhsMFiEEEZjAEXWT
SXpexcGZKGrx+Yl0adwFAmJv7usACgkQKGrx+Yl0adx3Ew/9FGoms1QQzlGD/xla
QCswyEDNlmFls7ft44ss9RgfMEJCZTb+5e/niDXGHFikZqX2YjebIo2zF0iRN7g9
9El57gobnxFPoxJTHz+9aNM0Mk0+6yhEWekJrzOePDoxt7Zkk/NGaQQ+tvQJ3nB4
ZOqz8M6HaLj0Ssf0gQTwOp6CXZ/JsnNxY9QVCQxeQgSGi+kgUq3kdJ1xbIae4ZrG
HOOgda4YIo9HO2IhTZY1qKWV2FHAunq1WlhVbGbFPuXXkzOKBZe5iK5Lh4bQBO5A
dTGzg8mMvUr6DaS5vEfniGFjc5pdPaiWHhgtak9yplrSnSVc9GJRdvql8l0lTDGk
bGdSpw++0De2S0zrs7A1OLabATxYoYoUjcMe2Q0bfLmGf864eG95PJK7gMUAQW+W
APAkCGs9NHi4y7MHSEJwAibzYSmK1XTtoPWzzNnQMiu4ehnZJZVU1MGV+t4E/50C
AgblTkdF0FQc9LiZRAEIeaa5qF7ggc+1CL/o0eDKlb2+WIN3pMUYjqON7iCTRf/S
O0mKkSRf0F4VNBcPjoOdRCnnnmDaV8NN/jXmWflV8QaGRa9LsrT25Dj3818Q0r6s
sbrDylaLrWEKuZ19TQ1TpNAEH9lPCmtNHWKsBPU1GFH+T2CUy4kM43jWJ5LZli/n
wpxdIIyaoaS8NSuPIrV1g4SUXYuZAg0EYIdBNgEQALohT1pcSlW4sk0DNfAvur1W
3U+TEkevuQnKdSD/chKs50nLYRuiVrsZsR28tnr2j41uwvm+Y6ZPYAPSkQZ8yAT0
pYnXbaIR83iGtZOHP6wdxV39Mpf0T3yD4dOmgka1hynqNjEbRhE/t2fXNKf0JrBU
mkyyhLYbQlkH+raUgQug9EsyOJxEMER9qZM+Le/JiK5/i+8JxhjPcAQxiKu3l/us
GtU6zcVUGjMSqs3Z89Fa8WBOeGxDwwSKrn8MyyfEWrbCCF4Ao8gBeFmIkWgoeyum
IAA0SYZkFjaltbTmsFjVmYmmLXIKtKTnzZx0+jYJr42s0Q8n2ymgSKcC0Cmn+iuK
slhuMpWJaqaHuZhjK/80BArAYETW6ne1IZWPSsobd/2x4u9iwCkd/SWERA3/KnML
6lgOVJfNbFxDxuJ+LFvpe6VoSAHlc4fC6+lMroeg011kzjgWX4H94Bdp5svpWHQ/
UQ3/YMGvgUY1vy+Vd28bGzuslsnz5o2Zh40h2Dmpti5s2w7Z9TvLD2RMM1N6PrdC
XVrQx3bB9nN7x1nLosn+0v/8gfck93SO9PXLQtUgqhhWsh+/TrOiVWmWqLvbN95z
WSnDRVHp1P8vKEGXI26aokxEd1mVfilQKnHv2k6ieMc1M26GM48uXNqLSihYG2Wg
Nl80agVFU00m/+Ea9Uz7ABEBAAG0G0JlbiBSYW1zZXkgPHJhbXNleUBwaHAubmV0
PokCVAQTAQgAPgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBDm2QTQ9jBBL
KxRtw/nDncC5aYVEBQJihlmDBQkInT24AAoJEPnDncC5aYVE9GUP/R/QmyOxYIXh
jOJGkF7wsKznajRWu00xRbbTofNroJcjcActcdd4KZjBTQukQLe+ywDq9q0yGs8q
dvNVdoREnwkK7sfIc/umJhTmWdboljw07x+NPzn71xLsi8xDT113KlSegPSL6tfk
SDqnv4KrHQJb4HYJex9whcnzW/KR015biH6DifHQfTRw4XqhecneiNCfdaNMTRb1
DP4USrJAFIlIK8zwguJP0iYnKSeInWBAHgroUcrLucUAdBfoQdARHQonlklQ2y1q
xh1m4qitH0MeUK6zXoTYAEgVMYJIN26gFaMoBRd19/1WH8p2h2IcecsaCFBPWpI1
jbvz9h876cLC6N9hhZPZFfsZ4BBe4Iw53eEhlgBdm5aa6SRobthKI8q89DoKuw5o
k/tEK/WY9QFzkTDhiQHdyfubopjVVpakaNYmJMF6SNlu7BfLv5yc/pHr7z5BA64W
KUd4AJKWEtN7nu2LAl4jthv23UnJ8x1y0e/ZM1m5r9/leRQz4uFqXEBa8Y0/Ipp8
OBnQWNajmOHqO44E4/BOXr09FYm12iC5L2V8TxL6HgU+nLRetgssFIWRr9NXhelI
TdfKOii6qrbLP6uQrjFXnLnLqgKB72gSXCYdHLEnwtskkqKXtB4jzYm2OPh0Tstf
NRdjaS3wepurzSp4UmP42igZx4cGzNp8uQINBGCHQTYBEADY0/Oat2b8EDcNSKPJ
NdyrQlDQ+N2fyTbq1XPThTe5f3nRT1jepYqfsi/i4/6rza2AMvyxPO7AQSsHYlBY
HxccqCH2Q90jCTu7iUJyU65Kx3aZC3U7VE4+jl81W5/b5qqjvZNRxLgDZDnvO7hB
Fh7b+jj7x1ABsHdwq+zXjmg2mJCBsD4ba5jQaPr+nirvhr/Y744mGpaVWRlg7d/L
hL73GRy546DgCVejgd56vMsi2HBy2BKtjxIr2nd2yJn12+A5yenuagOVpye8F5Dy
7ULFJ6iYe1/NpoVnyipv3m0hE4C0x1vIw8tiXR85cb0aGuYgjOgEyLCE9INmMQ0Z
Zd1JqZwK2IyWiy0nDNVJXqkzc3YjYZcrYiBb8dV7kvAf0E+UniIYTYtBU2rOWBM3
aTT47Jh6ftss/tQ4e0HLeHZpvpWwJtkPHb1jGD/08icZH4XyVxIlEMhziuAZdBDT
r7v7xSmqPrw49afWiXfROV01j94tFdvF48wDOIb3qIBBbsNddqMvHPTShq2wMHln
ylVFM/0CJn/yxezBcuQfRVWeHg7lbzSt0HD29fBz7MlxoOSesmJCN+swoSy4nZ1n
hWNHEaRh32Vn2H2q4ya0rZFEHk2fS6WWBMTh7cjinmklQVxAhB99d+EYCZ4SHu74
Ats4LvAsdJwe5I9blOIrYecwNwARAQABiQI8BBgBCAAmAhsMFiEEObZBND2MEEsr
FG3D+cOdwLlphUQFAmKGWbwFCQidq28ACgkQ+cOdwLlphURJshAAkIdJ2xM7MV8P
Gs+eN2O0/BYpiCfOOc42fwAiqYQzr9WT3FtB6oSh6ybaN+RRgIke1WC9HxIvjxXW
atJnbs1U3iyjBmyHvMBxOCxsIm7hyyLI/QB7wB7sdRb4ZeObUeyXOoAKWilj3r2v
OTuC+K9+W+uW5Hj2H2tnUKOva9F8RjokSkMiCpCVoGT1YWsWwKALcnQBio/GCyzA
RTCQ2uXHpHyAOdNrohJBJWD2qT30Fk/jnOGCbw0FVb+eX5854zosi8xPWFUHrUmz
QzFwoeq1ysg95Fp5LwCtorI0ilZlCngFL1ij0OA7IkpZWZfCRYrne26JeMmTXSA9
CEy8U8Yhh8Z36JPoiff9sE08Dd3vmZAxhijjp0p7H0YpCu5qCG6ACIUKgoqwHV7b
jkQ6+Znqs02Qi8wG+gMVOE6gmiw/SpIHE8EJMrtp3AOqC8hWdnqtJ8Mv1aTlfkLn
7fXmeWy0Q+uzJXLAqnB3hZINXT5lI1jxjjydU7YlQiPHKGnJ/biBq+EwMcVQ3Uir
tjK2RvnFIdqcoChlufsPyEo99VrB6yL+tEbxbSgNOwTNWEuVZ03LVPH+Wr1sjp/A
o/TexcLJuPgvjVkHxqMNnJL2kUnMvYnexp1vmocSL/bqr0Ghg5kqMl+rq/hwl/6J
liC5ruBIp41Fg7D0Hwt0DeJiahaJT/6ZAg0EXP+o8QEQAOt/faLOy1ltLfFcIRJo
0o/tS9eEcofNUDxDNeT9Q61F2oMXi7uxRpnnJu69/9AgN5urM4aSL/amfIn5NSmT
2JCkFHhcSb367UX3Hw3sNWJ6eGp7JePowEb9OhnTsJBuxIslZLUj8n9IRqi2snkI
Zqg5dnMTybjzvCTkgyEoJN961PeP0AVgNkUS0ibQdzGbqWPWekb2DLMMkW3GClkJ
amdPYmeCA6nnjqZf2LiFhApf/fW6RBKKhQ/bTZaWmPpg8tooU+kVnvuLnn20lnxR
I8aRnfsdXHAiiqlYmIIBJdG8PkutEWkvucRDhvcJ7ka1UZ1XvRG02MNvsTHQ7AWh
ZdKryz2P+ugX3g/omaQP3Tdga7Diy1pOwifcgoKB8S9fORjC20DcuvO2wnlVBgyA
ReejisxgQO2yYlumfl1ZFV9epYvdPEwZy8ugyLWCKmBZkoBggGL4gJrKtb/3VTnX
aXQMw1uEXx+RawTaKWDPdhbMBfDbQzflbLcFgFEANiA1932MD4piFfsRvHm4FQC8
u51pAHbBRj6GZFCWvseS5/FlDhd+5DGzbYXf7gXpcng2djFOvxG/s+eBjloo58Np
e255U8rGrSfPJdHXs5jdDkPGJ90mg4zCjVbPpIn6lZQIUoqd/3iAOP9z9waf0VrW
pMzfZ1f31FVoHOobuhczOqM3ABEBAAG0JURlcmljayBSZXRoYW5zIDxncGdAZGVy
aWNrcmV0aGFucy5ubD6JAlQEEwEKAD4WIQRaUogHgfdVYIv4FfyRDetG9T6jEgUC
XP+peQIbAwUJEswDAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCRDetG9T6j
EjUFD/9pntL8QAV66p/blK/9PQs/h1oqO1t2/dNWpQ9WpiCkuFvHCrNbzXuahxEC
h+TXfy5WCrsirmoCliq3yxu3YLjQBFQsmt81KhYk+9coewQ/Er71FE6oKU3reHx1
vLK/qyGIL611FT62+FOQ781XzDgQTtUARTNWUuiewPBHlZpssrGHN+gj6GG/wges
jHuxtaZxPbaqKAOIYh8H6297fU3ksyiGyk3Lh7RoGsSKLKf3t/3hWVItMz1QECiw
QNa51B3o1W/XAEWUEiBaSwW1GhhgSUozbmpaEDlj5xwrk8vchevvgeE6C1iwea/Z
0Lu9HHaHdtbS7adgTKa8iopKTejiKuSqY+trgBg7uW/5YYW0FebaeYMWm4SMn6Ap
ywuiTB8FbKaSBtV7A7XDOCGhZd25eTpdPhtL7ja7ttXvcnRjB0ded4T5eX7M1gpF
kIR18O9vPryGV+CiN7i26SSwx1mPEBq8BqajzHKjm3HqZLJHo6SmV9ibcnKIjpZ7
bjFnyy5i+0vjpmJxZDsvBtE3LQ+OcC5X1rSQ80a9qe0w2HEN6B39DkDBwEOKlCVy
2MsZT42uD1ojFceSPYS7V3yeJKyivxSUA3HBXoAUfL4UFaENFhaLf1c6NaruPPH9
MNLQCQ39evsPFhYWJyG8H53RjIH7v55AGfzQJA/2wLpfTRigXLQlRGVyaWNrIFJl
dGhhbnMgKFBIUCkgPGRlcmlja0BwaHAubmV0PokCVAQTAQoAPhYhBFpSiAeB91Vg
i/gV/JEN60b1PqMSBQJc/6lpAhsDBQkSzAMABQsJCAcCBhUKCQgLAgQWAgMBAh4B
AheAAAoJEJEN60b1PqMScc4QAMfExi/iGk2BMxCAlJNsAUyEqEjLqBeXmVOMd2b4
gOslhtTi5/fLi3ghoxgjBadfzhRmXwnv0AFY+/3gWcz571Y+yZFKz7eBKVNFzqVW
p/XFYfWM3bOth0NfVkSTpzGDu8c2XHpqZlLGeaABor0bCeNlIbx4uNPU/2aUXcjr
Yll5nQVyESvRtzriwYXIbxSIQG432GxQ/oFc3Rk4VOsR1wH5y6Bbss2CKV84Kw2H
Zn5LJC5k3eJniqBVcHAZz1l8VCc9RzcTwiP3WPA1Jlo6p2+KgVPiZy6telJrxBtk
3caSor3KCR+ZWiFZwBGtgN2p7MO1lOche5+W/Tx/cRbDyaXFHO/q3Nhdw+nmPFmP
rUks8isbkWBe4RXkYn8EkozjA6edJIFEdn/+YBkQ/Kw0ik7RqvaVQ17SD7dsRJ2P
0h+jvDJrrJpPP20utbehz4xGQRjjvS62G1QXBwmQB0c1rhUyGncofqt99H15QmB2
hwGYjeeUxA6HI9V8ZYYi3MkRsA7TJ3NiDoyVI8sQF8BcFalThghbaKd97Y+Ewipj
A/jUni1pgpgy4/NbeK/fjtgNgPAIRDAQgu5vTeg5Q3RjHjss3Q01E6fXHW5y0XNq
iTZPENwuPxSPNkqCbThNG7rwPSX8+RhFPlf2RLjI/mGEQs+rd4hSEgo8VpVEyB+R
sOQNtChEZXJpY2sgUmV0aGFucyA8ZGVyaWNrQGRlcmlja3JldGhhbnMubmw+iQJU
BBMBCgA+FiEEWlKIB4H3VWCL+BX8kQ3rRvU+oxIFAlz/qPECGwMFCRLMAwAFCwkI
BwIGFQoJCAsCBBYCAwECHgECF4AACgkQkQ3rRvU+oxKNsg//TzbKTSo4hqtLuwgc
WOF6xV2DcxlVCVEMZwmZOaPitc6VOVQlfF41wa3ocEnv9e4QGpJfuY/qhbf6azkT
x3Vz8isiPkjPzprnPtQIzlNzjwKcK6V9ALGDHQ4uQbaV4ifERgTRLCiTfoQopKTZ
FF1ZW5br3MrQl/43uE25yXURRUiQnT9WFwM61W1wlRVoE1OYOUsDxKQ8bPUM74IN
+Txv1OUIhUkwjQqJE9R3X/ktmvoeZ8Up6ptlZ/NDcjQcvcuJAQQpFNfDc0fenFsY
nHLIUfKkvu04NRCARRZ4XmZEdjELpH8Qh5Yl+NKRoqchxOSn/IbmIDUYh7H3WCH8
2EMfJX78ETat/EKzIoSH3AWX5es9PeiegI+l4gOVanCg3Q9IFcO+ygpEcswbRrep
EqkrRfSWBPUYwW9++aj7LwlYVv2paUnJ0bSc1crQ0/cXqnuRdFevxoTb55YAaNyN
qft94A2+U0DhcKInVeOpV5QGKNLAG1yT8PWWaxxOutR0PU+Qi7SfnGnSE19+t/En
Ol3LHWw/rqVNldaYkPYFL4AjXWBo3GDF033uJe8fuqbYRNJW+7vqv58s06M3s9Ma
AlsoDCZRE0Fyp7OhJ4TIt6YQLlJ4bKN31gL8LToB1vUGi/q8eZ6Wnd8BskaPcak5
qxPxJfBYAC12Nl34IB/80ISMDSG0MURlcmljayBSZXRoYW5zIChHaXRIdWIpIDxn
aXRodWJAZGVyaWNrcmV0aGFucy5ubD6JAlQEEwEKAD4WIQRaUogHgfdVYIv4FfyR
DetG9T6jEgUCXP+pVgIbAwUJEswDAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK
CRCRDetG9T6jEo1lEACxljQIWJ7k0wCKCrcD7A2m+pCVd03AWog+Xs112F9VhRCj
Li3p2JAiM0bljhZGUfEa/IiY+74gj1leW54onLCjauAH/GCF6vEJ2pt9IEpB6Pox
qc2WJw3RQ2o2Gse8FSjMVJj7AukYXxJNCQBV4aKqxTq7LlMPmwQuCzrxc3bn5kvJ
JSauJK6WH9ZKeQluvwy9/GEa5oauXY8orgPIiT7cpcXEfrV0pshrYJbQoh0uBHTj
shtITrH5Bz6iCneU2+yfqTBopgqf/WFdTSDWxaViBt6RerKKTC1OWB4dFqu0oHw1
ZpLj8VGhAoU1c0vcupNw8IVu2UaXEsfYQ0cGhxcP3k7knTR/+wqVyq9KP/s7r6vo
KQB2zx9Rn4pKDQfO5UnX1HTPeUE73kI0vuiBW0Ef+aQhAK2mfexD9NgNqOOZ59m1
f4Dr2Uaqj7iWUPKydK8qn8UVo/3ESq7bfpP59HSkFybf9IObPiFYCBx6HuYbc7F8
o78X6Ui/r7rfGH7a/JcgsxqhVGWl+c6bIMKcuBTH/d7bT2IkLhv6VQ+HUsXN+O8S
9N6wftBemCL+kgyrgPWMvW49sUbiW+VpgJW+u6sBO7qxr4AJDF7N3XlTFidaB+Sg
dbdeZjlNxrp3f6t1jttRkI+5XgC5eHFfqA1yPt89YnSDBFkFmqGNqU+z51MOa7kC
DQRc/6jxARAAsFh2uyrRLcdiioIXpfci8C8eOC0Z7ili4xjax6oyMukUlgXDilVJ
3sLZc6/LoAABN6jF7Rnd7wi6RLagyeEYIQa1fWFSwK6/W2uHJZkoK9YgymROMY0e
9a5MBHK0APSKmn2jkJk84/zCaBK2DjWreewnwK0LPkneEmCci02fuh3UmVcjObQ6
KKKJE6GWqvxR0NYCrUFbiJDO9tvSWlaPuMUJ/Dfp0ArCr25f/QE8V6Mc7H9lMQ7D
jlvjIvagJkg3Q6RiLFpBZr2Z0Tz5y10ZEIgnKu9N2bfwOWpHuCTy1d2Vb784bwN+
0M/GBPD7nfo0y272eniof1912JFBo7Ww1D32OtR024iynA2JhG7Q/Wz2vYHj4TT1
1XKVSnfq/VECQPjrJLec2zZzsdSQjSByifLNpZethuAXEu+gZz0swrRrg51tNcT4
/EOahB8AXKSr1o+LEceg0sYYnnjJtxWdknAmq89rzWN7JgyUnNpTlmJRYEMMM6gL
MagOy2+VZmLkkSihFgfF50Nq3KAGlLgpvKlP832v8p/e3mWvVSjDF/V+7XDALmEQ
9HxJkvc43l+uIf/rWXUJ1KtibbYc+KiJzbP5UkmIQkwuR/RWfYRXuV+y4mJ08LOa
Ok13o7V8SLWmBf+C7XbKv20+YCPzzaj/vok0BYyw1FKBuUt1PP+t9fkAEQEAAYkC
PAQYAQoAJhYhBFpSiAeB91Vgi/gV/JEN60b1PqMSBQJc/6jxAhsMBQkSzAMAAAoJ
EJEN60b1PqMSFpoP/Ahxle+KKiqzX9K7lGh1n5tS5PvvwgKerkmXjDpCUk/+DZeX
9jt2jwO11ZOHWr7xwNyK0tOdyzO8VFG9BZ2qyjJSoP/93+ibb2r3oHus3xt6o/7O
n0v/BIKGZEt7MsBh2M8tvfbIGSse3hf6ZFY/6JYA0PzKZDObHKQ4WNax474XEfLC
zPDuQ5Dn8k2hIkbqYTERfRttabt5CD3+Av+LTDdE5jQc3fvS+p+IkKKFbMcwKIY5
SEJeg45xjOVOyKN7n0KgrhjoSTXTD27mh/2bS8YZ67tZGYh06D6BkQwFvGHYwZ2C
JY1u90Sj4DKZCIi+eg10rG/O6igS2d2gZI2TtjcU9xlD2wgGEP2+SUNDnrtsG32A
2fJa/qwExA//Wepq5jz4JlYPhJl6V928gZXy71rpJ2UIBBcmRIkFDVrD19TC/lV1
EvVZB2J4Gejw0j0RD/qzf18LDWgioO+g8d1XMavtDY/XOqhD6IguHkBmu4knO8pR
7GJUPai68EgV5jqBkpxZKU6MhIt90gNhamaiyLxtfs+7Kok4lm03Y2fBkoQMGQw5
7GzVMbnvWImBTVMBJCYXMZAKWsBoTbVpGw7U670UQB2efAjAzEb6WinxnKRfkZck
bpk5RAoaYvrzV91MqK9q2g9dmKJSFBm41XY972EZMHb6EN3GSaWWSx8k/Zw1mQIN
BGBd5LkBEADOcegzhSUO+DqPpQSTRyVE5mHE9dAhpexUvAmyT3b5rJoOgUXpI+/V
zKa2t40gkcdkg/uHZbMGTQg43fvtsY1eD32uveJK0rMntBINnOaf7jDRa9QdKqXW
yQIbOSM/yyyItc6n2mFC4rZHaNU1QwZCPGEYt4PTgTmOiFj6NHfyWMIUzITYa/7E
kuFcV3tiqeu8Gm2cGllFgaQ09/3dhLzblstggd4f1A7z75aoGmMy6xvwFzc3ZAy1
rxXdF5QCpds+uvWXkrpNJpRGZJ4eR8O42LODJEpgRGk4LA+jvZunW0gtJOIKmAGf
X2ISk28arCR129dxahHHKefUS8Qc2zTK6/I/Bp/ZMVc/NC3os6JurQJD/Kff4amh
NaBYRWD+Nn7fR+itZ3HPBH2yf0nzL0cgwGt37GbQXGqRvHcwmoABY9m3WZVC1Imd
OS6T3zMrUC4ATyD/qtUs6NuxyV22C1jLRtGqu2YMdAw+s1G6V6Q3Y0SrlRqw0Nb4
Ug0gMwKZdVCU+22qGmVJ44D7fSr7AyIZmSrC4i6IoF9I0pcpZYdIImgOBnmSmwOI
in5/k0Oqg3gZWZAn2YV6qpVn3RjVz/GkFkml31TneDi+aZJSvmypbvTjkaH/zALw
KpcSIdVZYlmlWfWprG8UY3Wc3XJq6zRYjG9YAdgZLzH+7B7yr/VR8wARAQABtCFT
ZXJnZXkgUGFudGVsZWV2IDxzZXJnZXlAcGhwLm5ldD6JAlcEEwEIAEECGwMFCwkI
BwIGFQoJCAsCBBYCAwECHgECF4ACGQEWIQTmCRPk3yCZB9jjDZZlmpfJzyp5WgUC
YmuyVgUJEO1yXAAKCRBlmpfJzyp5WoQ2EACCVGtdOTFMQWF7cpnAbNFSGzMv9dff
E7aOacVahEcRMuu5O5ONhZMlKweXjXJjmXJga4XxZifcopnoJEiiAmd6eb1odeHf
rXAarKig/HqCHXtTFBc0ADEgIew9ErHjKCipg3uBAxvR8ndCV/xDmAIDdZGM7uhk
lYvtk68jgzK3tzYyDzes+eQKhjQdXfHgp2MqV+aeuuy8csFWvJV/DJDTXFMeDwAm
9tB8fMqHZDOlF1jpl+FbXS3NdN/Oee8Ltja+x5iTMMI5lVmnHpemx62W+O2yCHUd
d4TXxI6afvpKXnHDjsXZoZoLU1iYwVtA7XGIZTCzfzWMvFsXtXp+3GsfOFFZteXY
k4XgoF+3m+VRUDXckyd33Hc2WZDIe4PKYU+SjxV9Gn/Ltq9XzwPb9UgLoi6uFRnJ
o9r4zATKeU4e0mK9mZyy5Ndl57tHXsEd+r2Saih0kv0bX3LxWI8ab6JWpOCFWY+3
nVUXJq5aH3Gtsdv/XUqk+M7616LIsdDZbLZ789QrE9mOEvADns9wIjt8XFcd//5k
7/OM/5f/GK0+p9dv51uSnuyqtX21StG5/Y+ixu0MuK7jK2gSmQ0HwoU2uzlUXvFy
IWgEH/+QUgM1QoflovBjp+5cwIb7CIl0sqPDoRbaWWAqtgiRIFeI/UcIss2WqHUY
+bIZbtipSA+Tv7QoU2VyZ2V5IFBhbnRlbGVldiA8c2VyZ2V5QHMtcGFudGVsZWV2
LnJ1PokCVAQTAQgAPgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBOYJE+Tf
IJkH2OMNlmWal8nPKnlaBQJia7JWBQkQ7XJcAAoJEGWal8nPKnlaeLQP/3dEYpCN
YxSx6itLIkMnVifdWi7Oe7ATqIGfIO5Z4uZ9E0JCv0CDHy4AMQ78NG67zK5XSngo
CGHdsXUw9h857dtXTqVKpG7wDABSJQC+g6hu4sK67tpFlu8Zc+IGtGc2eNjTFSci
MdlCaocY+ehWVVuuEew7KvdVfEMxJILRk3grhqzsXo0PaePqjRK/lx/wYHDW7255
ALibJ8Q3yf9h+LOdEa0qH1xsdSP7G55t1kBCoGsFbT8sPLNzFMtqzuiTgQgsTMNO
eiwOrPRUIw4yVQOO5svZ0+agjOGf0iklG0heQMC7LGKFAzKIFtxVrV6hSgwHt7y2
fA5RvRBR0zZG6L5bUkP0/9txF6c6HsSVihAOpX2Mypel5uHDgnqq6eGbMzG40MoO
mnaWcFrICNr+uZLY1FfAlr1Nl4syiqXF36+rA2e53QVcPp2nlv9IR+ijWtUVIO+x
cpAFKZ5NwWERO+oQoGNkquW7UK4x8jO8ezkYs/nC6Y+cJ3AiuPS76avnP47/SAvb
yVLDamyzyt8mSMsnyqgghz6ivqqWE810i103AfFCjDokNTd0uzpCcL74VN5pFsve
I563xWinbIoAtgPvFHd18NfYgkyLbk69V4s/h0onD8pEid23ExDKXKOXBZzn1Bw5
7z/ZFCxySlULQs59BMFTdY9VXTqX8l2pahmLtC1TZXJnZXkgUGFudGVsZWV2IDxz
ZXJnZXlAc2VyZ2V5cGFudGVsZWV2LmNvbT6JAlQEEwEIAD4CGwMFCwkIBwIGFQoJ
CAsCBBYCAwECHgECF4AWIQTmCRPk3yCZB9jjDZZlmpfJzyp5WgUCYmuyVgUJEO1y
XAAKCRBlmpfJzyp5WlRDEACcPD/Dra0f0HW4qqu0ZYeorsmRqyI2+pb1tsXU5qLn
7VUZebyRaLkt3kq/E3emnxB2Mftn3OW9YzHDWQcjczHtkKPrfeU82Ja13TF5vuty
HUSTn9RqzL5ftx+O4OZ0H5cqssnypgdnkBA5ca2G2s3DqnpthZP7e2Yh3vPEEHg5
HvE7GsH1cyN73Efp4xAJltFSdFVtNDrZ8xIjw9iUnnl0Pa6YxFKuy5AsLTv9T6yh
AP882o5fW1jqiTUpKq4l/GCjKZWIjBgUQaUPDdWISNhG0qoK/GUNpR/WfaJMdyYF
t9bG+NGSx+g0RXYOWmn3OEVga5J7f1pkXgciOdHY4FMRGWGGhDDcfaWBTXVak/iM
lWbrPNwUeu371W4pMkZaDHq0RqFbzkX5ePCcUqeOHZPz5qrjASkOrDrp75D5Zho6
UcMEaOmA3E883LZQCY+zh9H9n34UUIqla2js7pnq9Ab0uYOVe5F+TirH3qAzIrpf
bralGnED6lgLbJaxU3eUTu13L/xgUfH2jqa4mvDBS4g+rBqj4J2Qcbc/fjnUEint
u2HN8QGJEpkNSFAjuWXQ0Dmjidl710DzcVZy+WMcHmANeXZ7MSXXvGwUV+RC5Kr/
PzVATkCwJUY+cemU3E/+vp+oUOF1OxvISKKEF1QH9p64kyE0ezPJ5SsVz4nzi6CE
+ZkCDQRYOKuGARAA+dBziwwFaVvPK1B51/02Ewi6aphzClz47n9Zd2RJGNz1xesK
pqmlljD3liRbIpN3DHm7S0M7IFx5eMQ1AUITjrXX2sdmSgR0JqFJJ8NnSpKnZFS4
fF6bvLcNNEpnE4gBVQgNvhzqkPg66vTVKZzHiaSWYmbvOHmWyQRM4Gm4tLOI3+uz
R+xNxDRW/A0YpXDNWjU9Kw9cVSkdbKTCpgZjqCf6Y+TpVjR9+P6nXqiK7ygeOv6R
RCx/EkYqK2Ew4UE2ktD5U9y8UalVqPPiZYJxSHveqdneyRdQNQ8EFCXq0WOO/PYD
WM41uH4dbXOo7UxNqKWy1X26rox7MaxxSqATuAjwXD7c3+k1D8Q3r7wYfaJrHfle
RVu5P1RSIlhUL9EX0HvJ8JDY5gNFN0zl98Sq1PufUVOsPrjrkMueuI8YOvdWu6Xo
kNmPdBaiFVJRC/Rrn/FPXs6dQxqP1IZ0TSXD5ksIWEXCjFFed5g6lkFvKe1140qp
1VRd3D/W3PeFDQH9vJF75yQTBjmcKdfXag+8LPtuVjOqkO7u6kKBmc0iOFp9GWl5
xa18EF32OPkdtF0g7d6MRj/IdPFUs9PV3dwu11fBIPtEa00l1bWa7gHXDiBPwFiu
GgaTe8nxpTE3zjqGGWubTxWH/dOshOer7R3HybbSewjvpEDCFuT4EVTABP0AEQEA
AbQeRXJpYyBBIE1hbm4gPGVyaWNAc2l4dGhyZWUubWU+iQJRBBMBCgA7AhsDBQsJ
CAcDBRUKCQgLBRYCAwEAAh4BAheAFiEEr9hpH9rt8DvfbkYFY/Fam3FTdsoFAltN
8esCGQEACgkQY/Fam3FTdsr0GRAAkDOYWbbmW9e4yiI+JEMCjWpG92gyAsH6uTR5
lCfou3nRsVn7qIxGUuKU0EsVcNbS4hg7TW1Omwi2YjVXYuddo+M6lOG9w1AQHXhP
7lSZ8kY+5FBP8KygYF7AHQDYMJEmLseHFX0TH/fP/gRNyvYWKk7yx44gvwM4pGo0
5r7Yf0Slgj2ATfuUo99TUq0W0z2AeJAfYyROxdAd7RBAdier2fCfSBBfKqOoTac+
bz8aXpXkhvJot5XQCwOH7nOoNwaq5M63XBtPUI8387OWiHk2kv+Xwyk1tgUtl/M5
e2IxGrS/ER9Yw7mPoZ5hA5gPfG9HdVS4HIrXdcxhrazjcsd43Kl4dMUCTbsn5tkP
lOC0JhIJUVPFoerM1lb/DnSQOt3BNEkLbjDfU83hL11nnTkzHf7FWzCyu+eqiCSV
2SO3zWaE7bj20qoWPXMeKOzRd1AJO8QeZ2y2LibDoy9v5maaonFiSE17RVz9vVSK
Nil08GOym0t7Bb8X8944PSYRrsEDYElXbH+yWzIRJXBaJ/uBVPveJ081Ar3ctDIx
51GFG4ynG/Vf/J+hG0axd6kg7+hU3GZ7z9O9clqgUPMipHURGSRhVUoddZA20OHE
h9fvKcpdmWkm8/ltisPIHNCbTbMI6pmYj6za5kwJ7pXena2INTsX5QJxIjGiJMEm
kqTGPim0GUVyaWMgQSBNYW5uIDxlcmljQGVhbS5tZT6JAk4EEwEKACEFAlg4rFwC
GwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AAIQkQY/Fam3FTdsoWIQSv2Gkf2u3w
O99uRgVj8VqbcVN2yv9KEADE4OZqLfahMTZXZ+a19+GYyJD7nIejt0V8b6rPHuwp
Okki9tFahja8xSU2Ov5zOblA66ANm7ati89qORBj2o7ol5f/LvSkv6sgVRHvcuS3
R0frQQNUFQGJFRoWviCCKOMXBwaIW19XYYTpSpzAosvn90xGdA69dwMBWZb7n6Lx
Hl9cnb8Rg5CtcNowEuWWT9C7kHAJL1rXG3zDSXcGmJiWVnNjlK9F3d0h+60q9FMx
Ot00xqwPKtgbs6ovBEPutbguBPxB7Ra4cIdFdPLdMlATPYXmzxOF1dSCiLYabypQ
Cf6yrMrMTl1aP4Ccn0P6uvNHF/8zPzF71nhlfssl9YAMpc73FQIalqgT9qNj8tC+
eqB2XUmZIry/LbsqIPJZF1gPv01MRJF9WBS5FlqZ5WLz8nIshSuQH8GOL3x8BfzL
zn2ZsVuFK7/JvViVRHhhL89TZCKynwfBBQ9KMk0X3NP0MGape119XvXdivL7HAfe
V62LJ3zUPk3ODEka/eUypPK6xP0060eh/VbMNAWBFrKZrxnBqZnqh0pucWIDxplC
IkWCeIlgwgKQR9t8yvBrOCcn+0sOwWTdR0cLUs09DiC+RbigLYfKexFcShhv1vss
/CxvUetZgj5Kl0ETNbwNmrVsruGJS8xYj+59BKiqs8gJDGtTXit1vlVD8roaqCL+
u7QdRXJpYyBBIE1hbm4gPGVyaWNAZWFtYW5uLmNvbT6JAk4EEwEKACEFAlg4q4YC
GwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AAIQkQY/Fam3FTdsoWIQSv2Gkf2u3w
O99uRgVj8VqbcVN2yhRNEACDZgMmSZCUpF2bS706Hahj57XpQj5x45pnSCvJ8KzA
z+s2J6qyOIkk/k3QJhN7I6D9GQdA4BS5V+3rluONZKlMdjotL1dhxiDma3hK1MKJ
vmr0+FbvyA6eQTe2bpCXmeOlxSGKjk72oIbPYWBclbTuk4VKs549MvgEfejFCdvQ
/I1NZdAtaj1JrleUHCoeAEVq7KrsnvkeV8Pu7IptAhvgS78Fr7m4A96zJ54Fa3QP
2kD+/Lf1RdxeDMHzRHyZW+oVH/GkOR6jxx78nYbQElM1IDQaqqKp0oqXBtiF3evg
vHOJZQxbeG8j48W2rFmUEsjXvA7gYhWpC3ony0Oj172BuM/ARW2g0MG37fKY52qg
Zm2Uwbrr9US+u2ZAw8FjxVWMoM++6lVeGhvImOePY0uPRr3GFG4k2FfxYaThN35T
+fWP5K46aFVA310OF1yiuxfa+4HpaPuyTbYnFWE+72N9mohZQRHqA7qUlM6E/kzY
DbEolzYKbBHBns5cRzbrkwk1juoTM0zR+ejjLwkw8mfr4JWKaMoeiUU9Nlb1huEr
CBobnrhejKlbUYBt6yLKGx0gTxF7yZeXr/UEaNdWCNn/HNNTWCusOhtY1fuxuHj7
cR0SJQNADO5RG9beXJbRSV+LPHg59zTp6OaA0OVxQgurcQpq6gucP7+OM/EIpl+x
SLQcRXJpYyBNYW5uIDxlcmljbWFubkBwaHAubmV0PokCTgQTAQoAOBYhBK/YaR/a
7fA7325GBWPxWptxU3bKBQJkY5zYAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA
AAoJEGPxWptxU3bKr9wQAIQ2O/3d6Mbd2Mw+RxnSYai9CI+qagTKVvxmxddnisZ5
5s9FYrU+5c2sg+1B81M00/GcEm6zmh9kiFBTJf/74C+D1u2lKWIEpdNJqML2s6dQ
httPOQfB/Dda1ySoFGLkH3ZnKPKn4WtIiOmFh+uQkgTbqZeZmggcF5OnF9wtl1Sd
wD+q8+G51SS6IXPPD0MEl994VhB2MUIdpidBG+NEEwfqUtolNltvjIXd968gBqwi
GaHe+rgpDYHvr4qLIQzpSsQwNY++7SYgDtxSZIsdSzjNd0kJmqXqj+x5xn5DT2Uj
WmYjnDsTOqzwBpNbAVGUn5LZw7uIHVu+MgvyHAqskGVcl1dzlb2rZAVx8/dMo3uc
wumCj9yFPwlFOFzHVq/Sn2KZ34uNiRdSk/RvCL99x26TIpICaybR4FMaCl0NK86E
94IeI1CvKuDj2gkQVQhNzKlcMnOCaI9P/e1+Px6mu/KX/O+MSjUWOStfDQzPrLt1
sGH6e5JBKXNmDBw481Hp0GSUShziCV4MCtKYm0jONaJDGRRN6PRvA3TFDEEangjP
3G6Yr35pwgFahpOVRS2HFsULKtG+p5ak7/ZPn6h91rSQEtTQ819WsaydLT3yj0JW
U7wQGSKeig3ztTL6L51TttXqxt95SNqPtH6J195OoD7kCm1zWRuEHGkkwFfVlKdB
tBxFcmljIEEgTWFubiA8ZXJpY0B0b3pueS5jb20+iQI2BDABCgAgFiEEr9hpH9rt
8DvfbkYFY/Fam3FTdsoFAls+4UoCHQAACgkQY/Fam3FTdsrSHhAAvax25u2qqLS6
e8reG/rmtrrCF487bEiOY0/QVuwSxT82oyiKpkEhlnt+yJZrUK8FNWM0mq09KQ3d
/0fe5vAJdz3gq5UoYv96Oqcvtj2pKh89pwMAuwSiOfFtlYXZA54nS0hm6W/1+pXj
yBM1oikd/Luw2dK52VvyhHBJJfnAqYdEeQteU4IzBZzZtrfg6z7cL8WfErdCl1MC
oWCVBwf4ZDrkEZ4Xsi0RRxpGPpMVLlrxkmr012TD32R80qTx/Pg5ONliQIwFDHcD
cJDDECLSjPuXqWas12rezf92TTXlen8Fk7DE3DmhZq0YjZ5PSkwbTTXd58v59GbM
HLo40zkFvh48ekMfpFq9ufGdbPTbw6DSQLWQWAChq0HuwpEPYersKGNXGdow+gcz
6GFrfJB8odhXFScilXBuxrqctX+I+GBLFIx1F7qNRqq45upE4RmmumF2xu4dIOgq
F7+3KVoOe4q9R/56F7Xa/NV1z68mzgxCkLB1UQH0K1dIG+4utGGFec7C/hT3gklO
mvOVNKCEfU7C/st4fIwhig+OBAxvmc0c4uHCMg3RYuXF/IHDBBbDH0RgY0GXBO7y
NiaQoL+jyIR/nQlqHdsikHv4R8L0Js7ZXvuJYd9RfEg0qo9H0MzpnW2nMC4j6C4R
fMghJFfugQ1WyRsIdUeU/eJ4m3LyM7y0IEVyaWMgTWFubiA8ZXJpYy5tYW5uQHZh
Y2FzYS5jb20+iQJDBDABCgAtFiEEr9hpH9rt8DvfbkYFY/Fam3FTdsoFAmRjnTEP
HSBMZWZ0IHRoZSB0ZWFtAAoJEGPxWptxU3bKFQIQAOePdz1WCT+hwMdXlM+e2xJM
cM1OzY/V+Wb2luJ5T5I6Yq/TzKeCmUB36BvqTv+UO49HVG7+tNbsWNJ2cgim/b3N
mwwvQTsUMBrajy2ag9HYH9yOWG5/hImBfT7D3Zm89Y8MaxxIMbJPqhIkyL+ExDxZ
Tx186D3NPb8J1IUTZAMboYSNzaKHH/IoKRdaNWguFX2Kltz+lgg+PMaHr2HfgeEr
5dTWSsKFKfhn9m+50TYz/FcscsSv8cIOhEG0m82RflyyFTv6tZX5CjeSPyZN9u2o
kpvcKpIdB+RYMy1z+KcJxixsNzlPdgZbhhFogbkooE4RLHvNfofy7RDOOnt3zbDU
+GxFBL70KyQBY9l2iLOMxtS8b775MnIxlzuFc3a006W8IsPt10PIcI3TflvOpK8i
YZhqa8jv01kRMFp08SKJLad24LVI386RY/84mJshDJFtVPFrXP/NPLz98Oax8SJg
K2HmMQ3asTv2ZiSmHIzkl+QSE3qvAvf3qCnAAYZ69HI+lPQWQVHE9RIEQvbiutOm
7Z9tVPy/gZQLDRNTG719uKfJiwD3f0CPzrUm6IwZ3NzFcOEExka55/zHe/Ly2eFJ
1B6BMXqjhhkZhq6FY+pDmZOrMGnw8kgOJsqxs0qowrlysZMinAtNADq4xt4A3wus
5RzP+fWGGPS1NpYbDDNzuQINBFg4rTsBEAC0LZQbSZfQPbDsXD3njmzMA893LMNC
OelYFH754C0h06IqtiBFXeE0hUCm/vxbDL07FBLSSH/tBNi882fYdYWvkqlCuD7E
IX+XK9k4yGFNoTz9n6mHSXdq9BoI2rytDn3FuYHlLQ7v2FAQHzKpuUgpGJUXU6kX
i9PWLiDUWsqoA3X7CvIuI5bQTJ03kv77aBp/k+r9MPmieWipe1TT5lWLOqRa89xC
o/KleVhPllWeSrpGmixjI68YiLTejld1ezwGsb0wfG/imllO+g4m8PT5tWNKlIoH
oV9zoEtesXR8MKoPWZVj6BQnHreK7FS1crjr3QWU/jB74c0XOn1VJx6HCnaOAyJ7
Vgk8ogL3npfwUK5cxPxssJNtAWOiUDuPnHnk8EVCP+iMAHxmLqbPqjDyLJ1lkJdU
uY1yftW2vY5x7K4Y4X6Ei7ad2G/tRRNRjDc2OlS/kwHJC164SvWtIKDjScKoSw+G
SiT4Yv3qYnloPANbuXTscgsYed3tVByjA/p7aeEj1DLYT3SUOxniWJQScSw2pARd
r+3/dcpzYDdL4+u5WqvruQkc0Mfp1uwttpiK9qXryKJo0KctNZ5lQ4XUhCXLXjqY
6DyQUYmOODN4xKuQRpColNV55QR1f6iva1ydoF0+LkZEVRpEruevmYtDk8CAsJJF
7phcY2sNlZ8Z3wARAQABiQI2BBgBCgAJBQJYOK07AhsgACEJEGPxWptxU3bKFiEE
r9hpH9rt8DvfbkYFY/Fam3FTdsqysQ//UIBWZr3rD5bJq+xHB1gzgIaYvgyWMM6/
QAwtVROvW10P+YpQgaDo9s/cYbK5vwpgjTEVvZsIBYxMQshISW1Hy1HB9G1XXuX0
eN2aD4YvLX9lmYiyU8uefQKW+m6MIjljJxRnAXYcZkzngkmE75rr3EikHJCR38pA
90fHlCGkqDdqiSY0WdBesTCVybVYOvqDXx0OlnaxTtFC8AzeCcsLWTLWJ9t4facb
wfdceStKr7bRxmdxTgc1VWJrykFUYpig0wPSqcVVC5YeI658Lm/rQCSEKqWii3cJ
WAgqyUOKPAkhj+ca4Xy5HR8KS8Yxnj42+fMaeJvv4CXawQoZNjecZZP150509WDn
jOwrKKBGt0kDle2MLOcN27kVWSEqrUm4vYxWRhiqtVsSus36eXli86JJbDjuGf/C
Yt2x2dXCccOArt6O1CQXN+sb9eXWhgNH1MZGGq0bDkLQcRo9ymeb21gVUmbxlAFa
dIBTlBFpyGgya3NjM7eAqBcf32fJyzsSktAZn0c14E/Si5aHSgMFOsvlX/f3/UOj
XET6slnaWB89IUM+Pjhd8hmVinNrwvpd9X+vh8ohOZ+RsgSxLYf5HZoCUQ5ckKpI
IfQlL+ZfPXradvOv9xHspYcLo591ODTKpF8c+3RVGErnhnswTPhjshhS++AnbeZq
EMmY68WlRrK5Ag0EWDitHQEQAMW49+DpWQNZIhI6JchxlXEhK374TcZqKjpf7D9Z
dr7zDB2iRD8cKxvMyr566RHpoD/6otd0f267kRVjHTL11TKutSKlwT27+nJcoFRR
F1ShBU2gPj9u1tasUsDPuRXlW/BA8yPePWXdxaizTY7kGxwCo7M2QkSGhHh4m+1A
uYhsZYdCudaNuKSNFD6CtxBwKE4Now3svD3TzZJ2L2IxGOUOUw7mq6WJygYIXeYy
cVUggEbHpYcL35vmbYNbWqd1Cw0bcjzQ32Yi89u1t9YOtatPgAcMT9LLLgRkD0Fg
6YOQuobhsosH2fRy332nuL6QFdk4Zf1WlKF1PjiYRg3km+QgOipIjK3RfKiA74Rr
bvUr+zUWW3fN0qzxrF2ub8MyoECPzRjfo8x58gl45SV1pXBYlFJpdA0aS+T7upVO
Y6g6fvFB7n4xl/3aK5uXsH2klKa7TwRtLCAVttGV2dkCPHZxqTNKc0/UvO2rjGKt
EMYgpvzoHwtSM6FiWphcgWGiRS7qHBZYcgL7wV9Lkm2ZNRyhtIkoUDvkaEZXc3Al
Iis4cUEJjpGwIeSnViU8Fep9M26zhSwmHYjFD+lburOZAMpCK+wsU214MlbnQZZh
JcTyCnORHnvDUZTwM3XYVLdhfqP8a0sfdg6VkGJo0kht30CMHJzp0EyGt8mOPLyC
3LIPABEBAAGJAjYEGAEKAAkFAlg4rR0CGwwAIQkQY/Fam3FTdsoWIQSv2Gkf2u3w
O99uRgVj8VqbcVN2ylVlD/49gOcib5GxCuYJLYlpYJRKBpptFvfgBsiq2D03w0U7
Y+POi+jrHqa2LSeW6DFLGEKgL+1xJCFGKFJ/Cm2eCt4fpGitfaOFgLO/gdjjgPFQ
suFm3840sKcXSql4w9W9Z+oPg/9duL4xDqevuv3mOQO+R1Bt/4V+9vNk01kX1ftM
RyMXhlqjPRUUp+tSQTT5KM5uxD3tLCWxcBxEiOjZ94ngiRuFuiNSnZ16GMckEh9M
um1Y+R4wJsRaZeulrmA02aML41IkZTHALRhKyxbDfjVeMURHM5gBhPYUVw9joxnX
CzC+BRCDFw7bVL853LwgSq2gXZC0Rfdu2aBtLXWliGdmtv9FwKCLFrECygxbUu2f
GB5/aMQ0otV2rgjaigPfhZoEQY0QasAQ4W+CR8fOGURWosoAKpLbeUGd9/zOf253
g3XoN13wwTKyjhXKENUPw8ZqvjdPO+tgNnOLUnPO6K10ePbW4vaZdFCdixumxqZP
okeBPkBPZq8oeAswkgWahKwQ7ZfgU4HTLMte3NEn/2WZQsLUo68IMaTCKt3AHvGo
Yi86wtd6/3DbNMxNsWamr8SWzia/1DGM5F1o3ClrZetD+eZN13duF3gI/1x+++5L
hWP+qxPPOzBhXZG5zJ2P3+eRwWuS79ZGfoh6w7uF4A3rkjkKfpAIwrNI2WlAKXWd
BbkCDQRYOK0AARAAzShopuyFAevGCfWGPBE2YJA6JxZW0tN++/oj6bG+QCx2+ehO
+5eVlxP8cNzu6mBUAA15sPRoKq1+JUM+l0dJHvpMgO5DnRMUBUYK4FrSbzsSFnDk
gh1G9LD8vbidY/4pez6MQTw2ei25jzBYDnmlwBdXN0pCHFMIBawLv+GFO95HCZd9
f9NIZ4TAj6IgLKo8rMdjzLNCICAmBWPwflc1NrJ34TXCNLf+zAjx/8ahqdVyXnVv
erzpfLKYI3WamTRITbqyWo4qqqqPjPlZpXIQ6DyNH+2z6ogG/+no3iJape5fC6Tp
EZiKJMYcO53ya+byxhyBgzJnVqLRiOIddUTXDbqAQywMQ9XTYka+d6s6IEiO70VG
TrV+aZffO9yKoqL1mB9ZqdELunkjkHzFYuFQ0zYdCwwKVwpLDD9A24gdYq9Y21co
9BPaowWNrjz2Zc4Syr38vg35ZvZy4TxcTFl707VkUeAqaxPrm5KEwAUeCvWcejQn
AgsN3roJ24qIjI9k1We/kV5LeAw92pCHsCOLDXPnky54fGlSbVkE3iY2DeFC3l6j
uMvVMzw2VTbTfstyxve7gVKhcFz0+tHASIWIQD3ekrUJBHCOB78l5Q861D7QPM6v
pBAg/BtVqtxKNR4Qax+Fm1rKEm2TyWrATzUmWv3p3MUbrnYmFTFUHjTVqPEAEQEA
AYkEVQQYAQoACQUCWDitAAIbAgJACRBj8VqbcVN2ysFdIAQZAQoABgUCWDitAAAK
CRC+xVXiKhQ1U+QED/wLMjiI8WIVYNZvGDmTcL4IBuPIMCh/2XzxT0nN43fhY0B/
xtWjPYlgCBardZEJE11VtTQjUe8DGaK93eaq8ngU5Ekbti03AZbJgrGHSPL4LsWu
I4wFQaln2E/DAX2IhMEgs7xDUi9oTHltwpNqGa0siH0SfVJV02vUzQrkcKnIHzjM
ea2yTJZpQYZcczGbPbFP13Ur5fngYlLTEvKt5j36HFgwQVk/dWjTBOEZIsIJ/bqg
xsCCztnxpewGqqjB3bdZD4emOqsZoVfco9wuFvwlZdgFZEkVeis2otn940OQO3b9
+qaTgKoVexGQcodEsntyh/QBAYlMgDWUMyWljxvDHDJaqIwiUdZRdchoDxopdu8+
toOaNy4nJY5QYgZL8nMqesElYGJ4DzpE0vxjrkEaSN4x1vErxPOdmPrDhyePTxfa
6FAbvf8NM5GOv3GrIDiZ+6RVK04R+sKz/hj9le1dPQwDFe4Ko+W3Wa7sEWi8IxUX
eT3vBAai1sfJ7XIVCqevDcuwc79E3V8/cmmqPWv8NqkG+tV3SsKJZJJH5bFcefhX
rCx5Ov0m+5SmWh6eYO9iMQL+kfOEh5/qx2jz6hi2khomVAhjtqQvM2cGjQ+utiqg
Ik0a7JL2Al8CVw1zrr4/xivQA5/rz+f5nSYgCOyTgfWpttlCZIwT+f6bSi4nGBYh
BK/YaR/a7fA7325GBWPxWptxU3bKBq0QAJWYvb9uXldS7D+iZAwEpv2xFoLaP2v8
0AWmWcJetMvDH6WYoQVOAtNYysltStF0Ndxxuav8+cNTnCvtGrAqpCvxyX/oGfFN
BOKLC1iQaeAsA8OqQ66LWcKAJgE1cMzj1fXLsCYOk9wIGsKaGUIA5d5CRuezq7hY
awITsWBQZB1P5XnzoLmPg91RCGYTeP+DY6SuCTnXlFwVzsHBkYe3N4oySXqn8JMQ
mEea9bJLGN8yPiLe+KNGlf7rUNSKTyMCETppX57NCgsV3JVRjT0rYNy2c0vMd8Jl
xg1QRuc3jKpJQtfxKq35Lyz1li2U0Hx1orSkngAxmhcOaqjH8M3M8jqM9hjCBTat
c8AbBdFdXpxSqih/K4rQAJvpVBbvkv9Af7S/uEjRRz9ajAPgNh2/b47vxjvhfdPV
zhatWpX5COZbuBSre6gl9ukMB0rGnz7p+v5r60IfqWvw8cBfBKbi70YOb4pR79lc
Gxc/D6I4kbIle/EgwaULmAQiJBt9F3lrcWI0ef5Zw4LrdW/sVWjtQxTKyO7kdkhq
2bkMx67cqFDn6Y6LykXO8U1Bll2LVXUMRJo/TVgUoURIQArsaibSiZ/lw+RD0j9k
AKjXjW2pLCaTHEl7pyorYOGTjphjH86nVEAwk4cshEJAKOXSKajNnRTSviPyf/EK
l6L4QaAk5QWlmDMEYHHgIBYJKwYBBAHaRw8BAQdAOm0RDYTmM6omlqoTx6Wy65ag
VJ4q8EPGczNnYOrHyo20HUpha3ViIFplbGVua2EgPGJ1a2thQHBocC5uZXQ+iJME
ExYIADsCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQTCjZN1dWA+tKu3JYYc
B3ncXAqd5AUCYHHi+QIZAQAKCRAcB3ncXAqd5MZdAP0eAbdHgjHqKYol3QaXRhEr
AvvLHPSEXN5cAImF3zIICgD+NJZZMQDXd1OOKDt+YLiIqIq2ibRhOP5mZryPCGkq
9QG0J0pha3ViIFplbGVua2EgPGpha3ViLm9wZW5zc2xAZ21haWwuY29tPoiQBBMW
CAA4FiEEwo2TdXVgPrSrtyWGHAd53FwKneQFAmBx4owCGwMFCwkIBwIGFQoJCAsC
BBYCAwECHgECF4AACgkQHAd53FwKneS0NwEAt0IRpoCN/JNwg1TIseybpmC65nSz
YVyX10xe4Ji50dcBAI6TYA+47z6F4IVRg2c8Vtg1xktot7b/tKn6hgdv59sLtCdK
YWt1YiBaZWxlbmthIDxqYWt1Yi56ZWxlbmthQGdtYWlsLmNvbT6IkAQTFggAOBYh
BMKNk3V1YD60q7clhhwHedxcCp3kBQJgceAgAhsDBQsJCAcCBhUKCQgLAgQWAgMB
Ah4BAheAAAoJEBwHedxcCp3k+3MBAKuK15XyHw+sdFATFuW9vN+lXqHnYid2jRzQ
Uoh5wG/FAQDcBXQgXRfe72XRoxY4AE3E4onGMfzW3kbDKDVF7o4zDrg4BGBx4CAS
CisGAQQBl1UBBQEBB0Bm2FjWsSDUwL5nbAhtl+rwnGLKbWiVYrwHQocgKFj6GwMB
CAeIeAQYFggAIBYhBMKNk3V1YD60q7clhhwHedxcCp3kBQJgceAgAhsMAAoJEBwH
edxcCp3k8ZwA/jLRHUBKIeRAxeGJhoqJRr2oTxrP887FuX9/ikSX21bcAQD90AB2
fu6dpAkOFyZzX9UdE7QxtBhHVWRx3DRr4P/cDpkCDQRgZaKdARAAxAnpFCqutmBg
npIh/Mk+wLfMV3TQL9TEtChpqIBAcQ+cRCCOcA+qS+ylITsymbICiFtTNdWcM77J
zHOciQvPTJiOz+bWpUHqFMzD8+UPXQQugDqbeib/YTW9BAjvxTfDd68GBWUYvMEh
dYotftmwFKbjGg+YP2aaKwywzTGGpDNW4abQjzWC8qQiVYc8H5OpRYGm8PCYh0JG
4aKzvzXQ4EpoyZND+t2GDVNhkidk9+N65b6hnwuqzjDdx+bK4NtspA3xvVB3Z32U
nCS50joqEjIfu5TQXUZ4ciCL2FklllyeUOKq1wdnlhgRQcTMPqs8AvQuhQWlLp0/
gMVyHxHigGlbxdOODYHN/BlEK/Ui4iB3oeERRy5aPlAYyLqG4IX/ZZUMSgaz8rfY
rKH7UmDg446m4s/T9iq+xE4Axt1jzTGmlHbIwy2lMk+GzloLKRnx98coSyHhUa+L
7EUjC44YSWpegAsU9qzw34PmNeclBHX/bN6R6L1iIzqMNemzRIgKEEvq8bTly5rp
fkr7vVgceUOhS5tv62OIgfIVi3MR7U88yIuXpe0B2qWUupRC/L4xweB2o04hT4XF
tYNaMO1nmGUN1n6wiXPd6wbCX/NBAx1F1OyNw24SU52XakyYuUDwK+Ekz4iQdWwg
emicu0Go3QhuvD5KHWRfSwRyOR+sNIkAEQEAAbQoUGF0cmljayBBbGxhZXJ0IDxw
YXRyaWNrYWxsYWVydEBwaHAubmV0PokCZQQTAQgAOBYhBPH2kiOPvBZm5aXM1Bmf
nf72/7r9BQJgZaKdAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAACEJEBmfnf72
/7r9FiEE8faSI4+8FmblpczUGZ+d/vb/uv3C6BAAm4xcCydOTabgSx1rVHroho7H
eGazj2FO2gnddOQ4/TP9jz3rqYnRmn+2OGh/viNHA34Sj1HRVzham5d0vplo6bpq
VziFixP7Xds7WE0RcU/vQ4XeyK2EdpzzBKF1660F1cZb8NxHybsJc6w1Z1ACVtic
JveC3bNOngNOvGZhU/him0GxAFC1pOoeU7QrRQagcSSqTk9ts565S+8EDJ5IS+Ky
U7F5IJBqQFcVVE4qiN33RBuLpcWU29lbM+AEeytVEq6imCI2p80ArP+fmu6Flwjh
Ip2eLvOa/0IuIE7w/+qrO1r1a/nbPrr0yA9Ex84MmvtD2kboBkICb32goJRK1f9p
0oYGd+7SbH+/RsjIrthJan/yXiKiK6UGzTjF5nVL1PqcwQavLyTaqUStwYjn0MBH
Txo4Bsqz/jZbvQSjF6nHynBLwpLIJ9MK4XvxsN3Fe/e661hv4DUCIeym756yMmxy
Bxc1E9iu5AUENRDRpTNWuext49fqLVldiQ9RNJGzoe70rywlD6avl1MRp7byzMPF
832Y+qU0ZuwpzbUKxfA4mFQiBTprfaC1nvGriD8D0NgdjWNI+EqLarkkxtyRDarO
uXXvNeFUhIRw9N5tDRBy7dhLbj6T+YCogYKuVKcW0s5/ow9O0vwml5b1+K7Kzayl
v+keGqaUJ69t1rwJS0u5Ag0EYGWinQEQAMtkmceUjt18RD62FYost0ul3QxkE66A
KpaNh1R8vz05jrRbYLcuvOB97COI0vEHPC+qaARjJBRG2VXujTgslW3I7UHZvtlB
hCgLqC74pXnP7zDUQ6zob4wg11r9DJ2NCTzKYKGCAZ0e1a0bNNnkrWOz57zAmCQX
TSf1gLGSTP6MkIrUvvDve+1i9LSph5rVRXGYYb5wGx9D0ZvB5GXpO9KOWYu2Xubq
HVykYNCufLKn/Kt840tvLW1DfaUyF8fT1cA8eklYJ+G/12i+Ace1vgquhqPzZQBn
PYl7ZGftImIAIu97NYQVNkxYKWe2UeochW2Zqye3OHPOAroTUgfrsOBZHebzaegu
mZtiUcA4uY0Gw5hEZ185Abbwvbk/cetZX0A+KTB08eDj/S0ouA3OEHrI7p2Pkez9
hGwkPQmf1f5wI1qw/lVMs4WxkPgnWLyNPxuuV/9/fruo617doUA9Crs4Vg++kVj9
zQnQPp5vcUcLF96NVAvhhXhuDcc5QbKdR4EbAeDJAnD8tjQt0J6OiTKVBmvsOPwf
iXdvrHzlSElIpGgiKf5zxpeIjv/YIlsUMAi/eyi/IywCFL4bKe3EiliagCXSOupE
KvoJYJoWXVOOHfGsn6lEJKRNWr04BIdSoBvnfYHdO34MnPCuV/iq1AMXPujuU8Zc
yfFgtb8oRrtBABEBAAGJAk0EGAEIACAWIQTx9pIjj7wWZuWlzNQZn53+9v+6/QUC
YGWinQIbDAAhCRAZn53+9v+6/RYhBPH2kiOPvBZm5aXM1Bmfnf72/7r9xy8P/RFd
vt2gtzpiKV6RlwSq2+8KuCj9kNt1rW2NFulAbIvL0n3CEh0PsbuVKgYgtJ3xTXyA
Ivs9mr3q0arvkIPLz27S8j4hDVZ6ZGV+sFlvmqRI4Y7Ziv9VhXHGNlu1iIzjhonK
t6GEDcwK/DPI/buJyUfs3RexeAk4XWncBUR+5ceEBVJtHe2Qs97uixcrINSBQK68
kg8tKCUKo8eyb3ldyHw+lRclF6Y+kWew8iWoMq7+98isMxm2cQUGiD9p+MDqyqYL
xfYFMoXpOK/worLR2K+TCyZ0Cr5Z7S+SQgyrU8xzZSQMu/wO6OkXhNcy8Fc7cBag
o8M23ovvMxR3Ka2jlMggD1awhuf5oZN9t9J+UmWGXMnnefLOX/H26QVpvCnuOMXp
XKHspgxATqhvXolZOj4Bljea8qhRfDqPAaidoGM2S5H0Sb8jKNcPHS2Iopo091WH
xODylwY23eyyugQpaoutSNaWuyj/5A94fYaXn42NBhIhxA5xij8wa6KKQD0Ym7Tz
z4iAnxuZOIWAy6r9ksC5DqCSlkFBcA3aFUiRXofkgnCnyVvJ/wYbSoEKT1VrTf49
mOFku799v0TNWaHJf3lwQ1g1QTtBdCmWwlmpyGwFuOBATfwNaJkpPu7JGFlQJQPe
H1kixijrc2tA2gD7GTP225v7hxdBXqImL8ap4FNymQINBFjxRtoBEADkS6+Q7afw
YDPFnqJXuyF2ZIvXysDBrpr/xbre4jVeiC/HIELaQedOJqO1V+BgnTRkfhor+Yq3
mZ1un+6zJIiFcm5Kp7sPZjh15JF96PsA4e2Eh5eCeJzjXHj1nAKXfn5+CgpYEyL3
0r1/ACkmo9TKIiUxIDZRkZvxjY4UKeo+EoJo0ViutV8mvSTgxaz9gzPhZ5OJR8zE
CT8j3T8d+tBD8wWxxmGZ0veOu/MBew1C/BDr8RqTCXDywUbyNuSsdb3a5aLuIuLe
kSJVSCcFwPIje1WrX4FyC42+elOp0SXpjWzdb08NXX4DEY8zVyVXI1ScSpTbslff
cFkY60NJhjpP7t856L9vTLRfHIM9BIdSYH/ar5mEQ0vyJbiNfkx5tIMnEmnIYbmn
jjmcPZDKZ4PyQEUEWF3DqNOOAWhk9HUMFEkANkd1vEcNNQxgD2eOJM6egfUv9Ktu
AEcRX2iDu3gIyE+55x92VVoEJDu5M+Q6PYGUIMh7nz2gS3lnlpG2vquQpqDS9Uog
sZ8L4NsukdP2ixRFnD9qaTOemqRYwIptOX6wvrtR7PmWOnnRZ5OcpK5/qyK9iCLY
7bbHDViBoV0uLEHNPTDHjrALJrqS+dH1glYid/82OvKE3KREjRpMOW83nNfQcqkM
i9fhH8WUkz6OD6JemvB/s/CwBS2w3+9LAQARAQABtB5TYXJhIEdvbGVtb24gPHBv
bGxpdGFAcGhwLm5ldD6JAj4EEwECACgCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4B
AheABQJY/TOeBQkNNFUtAAoJENvbOXRw0SFy1xYP/jQeNv4WUPK3M0Hl3EvEnOeO
DxePysU0khvgnw/mRtQu7BOwRdbB0HWv8Kx0HXL7XI4l2myHRZbd9PrBlG4YFYjZ
qWmqQ9WGlLBxDpSJNeROpTgKjhxA2hOl1xH2Et5kbRcZzpJJ9zuD3rqkq80S3u/U
AB/QzYfJWKnQBTXi/3psZNAVTRp3/4sEn1kCfEnlNUYPih/NqdXE0frlKeITOAma
tD2cjYcJlc/ETLil8Sq1nIgiE/++KZalbcXcRSHVZSd/L+fNlMDIh6k9pjcE562o
iyyMHKed/pAX7o1BqlKqSwxjQoNskpICVFkyMv+P7cIPyOxJa8kaGyyHND+8i1Gz
vwcPhLYeOWDwmiXBs4Ea8Z7KWxhi19zlxMrEfAcfFIomcRoxfzcnSY3FVJYIoEyS
K/IBiivqeunyeDA2JG1vLSZIV5hNicUihp4hnhX4Z1gElN+C68P49SZseFzxvzwM
q5RIUbWVwIh2+Wj51/UrULgoM4qNkgejDLYFyTxbLfXq+Tk91UXdpepBHvE9KFVq
h4MbIlyx9TAzOizqLdZlnPRwLb3rWBLsv7XbCTeYtp4jVU8Q35hnvGFy+GsSROJv
04mJW+whyz+zxOEMPiVbVA5um3ZbSj5oou87M9LiJtrUOqNfyyqddLC8L5LgwwlY
KqP+W6Q4LMf/Whoj3FFCmQINBFklYukBEAC9tCSjnoNs3ucOA9RPfKcuK87JD9jd
et2UUsw4DHd/Hwmrt3T7WKoH1GwRp+ue5+vzXqdFRZ4gG+7tgvUsOtNb5rh22bTB
sUIeGsvm/omJntXCFQhYcfjtk04p3qtgJ5PGjZahCRYg4aQ2tGp2Mb8auFuFPsHt
OHLWQCL7vQShsN9mEkEzAQZnn9QYL+IvTQVSKsRy8XcHYZVk2uT2xQY2LvkAucWF
0TrjU2LJ2IFdepc0+jz1xasBR0afT9YccHpQH5w8yOW+9o/n7BiMHfgT0sBMdKCf
KVoQrQe0CsFnqc/+V4NsnHkyUrbfKiIFm+NOupIMpL6/A+Iky5YpjIIUHPuVL6VA
Y6wm463WI8FPk+NtGekm9jqISxirkYWsIEoZtCrycC8N0iUbGq8eLYdC9ewU5dag
CdLGwnDvYjOvzH156LTiE/Svrq2q0kBDAa7CTGRlT+2sgD89ol73QtAVUJst99lV
HMmIL1cV4HUpvOlTJHRdsN6VhlPrw6ue+2vmYsF86bYni6vMH6KJnmiWa1wijYO0
wiSphtTXAa0HE/HTV+hSb9bCRbyipwdqkEeaj8sKcx9+XyNxVOlUfo8pQZnLRTd6
1Fvj+sSTSEbo95a5gi0WDnyNtiafKEvLxal7VyatbAcCEcLDYAVHffNLg4fm4H35
HN0YQpUt+SuVwQARAQABtBpSZW1pIENvbGxldCA8cmVtaUBwaHAubmV0PokCPgQT
AQIAKAUCWSVi6QIbAwUJDShogAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ
3J/40+5a8n9OJQ/9HtuZ4BMPMDFGVPUZ9DP0d74DF/QcT0V101TrdIZ92R4up56D
v40djjQZc2W9BmpPVFr/v6qdjapdPH5vvmatnQDz/nIOfo1iwPWGzvmKnbDBQ4qJ
X7Jd6PdD/YorcD+0tOQNKLIGE9ZFQnS80iz9iaTGzvQKEQKEMugQSf3kG3NBEGqK
QBsTTrBQOUJ3g8w6id2/qJtrDRbL9TuCU77Dpx9HUAnjj/Ixlvd4RQDa/BCYzGYJ
lCyTsaVW3qc7DIh/pRadqtswghSETtl6SSo9yHtoYOGTxXO6UikLEE8miOlaOPQr
C9hCD+LSGc5QhNLBEKes0l79w9kw9qZ9Xfh4pw/hf1N4O3kPHyUg0q9QaX1XKtig
jTUcpdf2Kq8LtlB60p40eZE2dV3T11X+rcn33pFSXMeTJeaNKHXoeGcva/gyZVtv
i8iJhqtw9QOUkxRDvGB+FEUId3Z1yAu7ZAz6qiUCgxK/VJ6/kBb+YYR8K4FHLmNO
d5KoiTerKQu423uuMYlYfBHpVZ9YuEJQnTEpizFEeOgaixx5RDLnoPsd/x59VS9e
aaKotTPbW/rEp7SvbKj0dR5WMfGyd/OJrcWVZy8/Kh5Mc/4KOHD+JGAp0bE113Tk
EEoTZ8gNHFdLdv52V9eXUkeT5IxyThZBkUy6palDM8A5vaf6Eet8xOLy9XGZAg0E
WxcHQgEQAJrYyC/KKIzplzkKtuc6jCpUT2LMovFvUHp+OdCMN+K1SgveBhxsHgK1
0fx9Ki1Uvo2WjhUAw1reQk/g06wiusJW0bZ2W5rKQKUPJH2JLEJcVdJAVdq2vGTd
sVNkvia8O0XXzN0tGb2juyjX1HPXUJ5jRBsiPrppeK6+NEizQmj4WYBF6wfsEalJ
dQ8g7nSR4p9sHdotI+6ug6hxStcjK/wwFLRqpYwZQLDbRJVVMDAXIVLmmg8CP4Va
rIsF+PEv9ioCEaT2yynFVYShmbU2XmUJSlatXaHhS3/C6IkKtOWZdU2Z2Yg0OyAU
ssikXYDV8bNOdlSq+0gz+xwmglKGYwMxs1S+CtSnSwbuwmLvN2VMRWDCN4CLYRez
mkNW03U2OXRxrME6qlk82VNcLjpJnc1AVWBF/Wi4K+sG32e+uoTa7vZD4p5YmfgM
Rwe3sa6KCNgbufin5idIttHB/ZOZdyIMvxMqEBkjgCOHArLDFLMeMe364uBt7c2M
LCPH6+v584RdrOz+Yl8AvKg3+izX6lwXE2VrC/6fkXlW7Z0+gES8YmNd++si5JOj
DGqQhJ6h/r9uZVGLYk1LpgExgHxGhG1WXISIrGBd0kqFdkHYAIgTZ929grdv4tFp
z4+rSBxTBlwdPCKselkX3b0S5hSqAGsyFL/UT+l7h5vlLvTJe6W5ABEBAAG0IUNo
cmlzdG9waCBNLiBCZWNrZXIgPGNtYkBwaHAubmV0PokCVAQTAQgAPhYhBMuvafFz
oP6ktTf0cNZslZMRi8y2BQJbFwdCAhsDBQkHhM4ABQsJCAcDBRUKCQgLBRYCAwEA
Ah4BAheAAAoJENZslZMRi8y2o4MP/14vXeLNCNNtnhpbknRUVXrORcKZsDTyTHLx
4BJvae9DsB0GlzGI4xlkWFXRW9o1/3xG/sHpg1hQ2o5qAKPN8IAJBRm+O/cbyYxX
5Jowy1l+vipt93ZS9h+L2nEWk+hBT6hnf23u5po5JKPCEWgAqZxCnFivP5/STND9
CZ5fXlTMXGYRmehI/uGQ1k8qXMLVCG75mMxIbtXVnl0NIoq/mnT8kNWs2y17EKrb
hX6tKVdOzsQISZ1CN0+SJeYrfCjvlVnCFQS/wG3OfmfsXIMtXR02sLffhai54jIM
/DndaGrsNxayGqScMVMnhkU8Tk1M92fwph3JaMlT7mik+fndWkQZtKAuu9j7CNmF
hd19UKPbx+FpLIEccYyn0jh0Rngc8Js3ZhIAjaCNpSjJTIuWcNwRdks0hHSuvsK3
2C+YpakF1G7OWWFSSy/p7VGXNR6R/sZgn7oC0qd954BGyaMhxmM7fezhcFYCSNG5
D+jG2Ri5KtcFJcuw4tKXDxT1wg0pmk0tLH+ZNPw307Wdzrjqpz5TrYzLTiycxbl+
uo4btKe742rluSXVaqx5bVpx6o1i42lGevCjq/n6oBbM78n8gTc4vPrdPjRYONvi
TplNipLol47hrPG2yakoe0PqYKFLm7CzHbL64a3ZCK9K/XWth8OUJbDUGWRHnVZ5
tpxQqYR2mQMuBE9mqaARCACFSqcGmNunkjQQu3X+yXnTmFeEkvM4JXZTOBdR8aEe
vNGmmFEfyvjaDjWi9hcwp4E/lYtC+P7VsVjM1OSX9eq0jC/lGL0ZyRXek+mNy0n5
H1NSuTpf9Y18LMqhc4G+RU+LcNiZ9K0DJuOOvNLPxW7OHZguxb3wdKPXNVa2jyRf
JAKm2uaJJMT1mTmFT9a0Q8SKr+mUrrJkuG0H2o6SzrKt8Wwoint1eh67zVsJaJtQ
FchnEZnlawIcqP2yC4nLGR3MkubowxoEBYCZet18aHVVRbvpG2Qtob8Lu5xrsGbm
XymTkHTdpvkfcJFADa8MzOL90zOxXwbGfbIZOlh5En8jAQCXlfnx2eQL3BSW/6XA
Na51dbWiEp1d1BAkpGKtZvlk0Qf+M9WAi+9aXMe3xP5krxtgnRNUf2WN6Zdy2MxL
1RRJCFbytLhl0ronC49BsGYVGshdEH8xhBbiIOJKuVZ/DTl9bEm7P9c7CC7iJyVC
khUAhouH6xzZQNLR+RU+QebYzXypVfl99Qk7EdMmr/WAZCHLuvanyqepC5EBsa3V
nAfQemSNoBeGBKWWLiOsPjvS72+y1z4RUMAfXHn4l/sFMt8zt7/74AmJPwZquV41
p4mPO12V4+xPyc6RsB84sfsk2QVivU8w8AkvGQeYjXoz7Iwao95+fWteVzZ36KRQ
vUckP8pGjHlDXnHxJ0HI1I/kOBZSjwRwUf0dd73y6erPhbLk+gf+NdI3H9KGJBzG
5/rVyWKwUeQ9d5ud4jTJRkQGvAP5pg76vEa9dogbpe4W5Z+0BfbiJSnQmQWSHiZd
dj/t33ptbup44Ck6ZTgdlmFYMLF1hR47PIZTDKEREuKYGci/vq8snZvEJP9YCw/T
tiHcMdrMKcY/+Lp8lQO0GHLPB9glVhnC0db6l1Xpg1CMI8/RozBMcij30EgATggC
/y2zbiqAFoS9FN9nXPbe4phStqABEyeZ+nXudt7PUYTjVgcrqo8bHZCisBobWC7O
nKyUzxVxzUeuPkIfmZuzkLaMw2McQdvwwsNvQ0DzaLP30c1Xsm/7EIYJcOWpzlVJ
5QrdmE0/BbQyU3RhbmlzbGF2IE1hbHlzaGV2IChQSFAga2V5KSA8c21hbHlzaGV2
QGdtYWlsLmNvbT6IegQTEQgAIgUCT2aqtAIbAwYLCQgHAwIGFQgCCQoLBBYCAwEC
HgECF4AACgkQL3lWvF2gS12XMwD9HuRIolSwIK77u8EY461y2u6sbX36n5/uo/LD
Quxoi3sA/0MvpnvzOhv9IufvvsZEj3E7i3h+iD5648YMwfTFCij+tCtTdGFuaXNs
YXYgTWFseXNoZXYgKFBIUCBrZXkpIDxzdGFzQHBocC5uZXQ+iHoEExEIACIFAk9m
qaACGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEC95VrxdoEtdhdsA/1qQ
b5RZbh6PlIVeHCFFC3fMvy56wJ1KC0knhphyZdcGAP9bQFhWGbxylFn7xmnbJ2bp
a+0YfzRWwbgmeISoZItQ1bQ1U3RhbmlzbGF2IE1hbHlzaGV2IChQSFAga2V5KSA8
c21hbHlzaGV2QHN1Z2FyY3JtLmNvbT6IegQTEQgAIgUCT2aqnQIbAwYLCQgHAwIG
FQgCCQoLBBYCAwECHgECF4AACgkQL3lWvF2gS11roQD/S/f3M7YgChaM8SAt79iA
PvLieplUBgYguOJjHc16QA0A/Am0mjKmNq3W5P0uA/vB+liCEcMLdcZiOIsNI44e
Hj5PuQINBE9mqaAQCADfZPMpjZkkGZj3BY/7ApoLq4mwqzbh+CpLXwNn20tFNvSX
fb8RdeXvVEb7Scx+W9qYpiaun2iXJgCVH8fgpZpR856ulT1q6uCG++CXubEvip/e
JkZl93/84h04KQJwsgOrAh0Om3OePRn8Pr+++0LNS0EL8uX/YHeTOGOnnmTqYTey
SBVFdov6L4mepddfjekicKQqhL7mZh/xuq29JijT0uNNX8v4vDWQDu5dlAcdd+uB
3gcXMD/PginD11zp+6wtrWCm/+yBqpvDwXQX5PGUnwvbRfl7Ay3MmwmoXiecZMg0
dwTSc7e0lhB4HGRHZdBMJB4rHUVGdzqujK/ctOvrAAMFB/0Utb76Qe6sCMlHxVAm
eE/fbo7Pi05btZ/x01r67dHfaMSP0riCKJ7M0OW+jAXtu9+z/BVnYisW67WWfxl2
cS5tZDgiHgJARXWUOO72+sScHP8KQmTl1z16gyKbwY3SmyBkwcpOL35nhUWNLy93
syPoY6sZUTikr2bZYukHDQ33XBPs4e6MbWKfsa9qaVmnlOF3k5UqChjutfHaEa4Q
7VP4wBIpphHBi9MI16oJIzzBPbGl2uoedjwiZ6QeQZnSuOVYZxU2d3lRA8PrtfFN
1VSlpEm/VcAvtieHUYWHN0wOu+cp3Slr5XJVNjTjJhl28SlinMME54mKAGf2Ldr/
dRwXiGEEGBEIAAkFAk9mqaACGwwACgkQL3lWvF2gS126EQD/VVd3FgjLKglClRQP
zdfU847tqDK4zJjbmRv5vLLwoE0A+wbrQs7jVGU3NrS0AIl5vUmewpp2BKzSkepy
23nWmejwmQENBFhJm64BCAC/9u6NdeqwFuJT5TNbKVrlVnmHihg96XSYGwl8UPii
YuO3JxXZaduBw0955FOc6X2cAoOJrRYv1zZO10nWS3n5CfjUn9rLZ1dnmL87+gZc
OUfejBo2EmLIVM1yTsLZvigxIhjCUdiQDsUNhN0h1QMwprKAugyhtS4UI9DepsEt
9KaqVQ4Jw1M6N0b/enkQYs+PHk5TbWUqwdvuGDVeZI2poBo2SL5igUfe2EAOZLZo
0CY+tCsge1hu+fYxckEF4C8SltQqiXnk5Z/SvqhuRV0lvOYBshwun+6qgC5UJ8qH
sfW7pK+QewfxnsAsW6gbuKorluCiRg2hCIwK3fAJ0SLHABEBAAG0HUpvZSBXYXRr
aW5zIDxrcmFram9lQHBocC5uZXQ+iQE3BBMBCAAhBQJYSZuuAhsDBQsJCAcDBRUK
CQgLBRYCAwEAAh4BAheAAAoJEPm6Ctoxy9ie5VAIALXzzB78e3Fe0J83zOfj7VBH
RoIsljdnlOPirIciZquOoeOOMpSdwgHA8sdlFxzspEDyN4X1YU2zJ5emE4x1bNSY
8tI9h7Xflq6kGJ3zlYa5SQ9w97Z0Mnas0j7wbJGeajPmbb6ZFfWY83rowHUuIujq
l+RN0Av2MKxEXXeydOdZGImvzCoNltHWlmoHxI9+oerPOQ+04RxhFnCvwv5HyiN2
9O8sn08F92wXRrKzLcudXJeUZgQIVmv5spY84SMldv/lSr18s3lPlvQDafPjbzUs
7Q6dJFiiGdW+sOW3MntJYAe9n8X2tly5owMs58N8BNThMJoLhtIm1MNZzoGnMBa5
AQ0EWEmbrgEIAOF4kVuofaESBahVCR4jWl0wWbiv3RNOUb/7Vm1TXeH8kmkLkIPG
diDSrc/yENi9i9I/e+7fzV+NY4B0IzPewUfLUrbrUR43LRBhumNAkpDEaXYQnz+M
GYIXj/2pWJoVs0tJMauspCJK9+iTbFPENE7nllQb0bI1FZ2nSgCdw3u47o7Dc3UK
h0xWrC9G18BJSZbPn9eUZ0ioDZaVCnxvJfS+MbSj9KJfG6xgngK/khSrMPiyBMXs
1mSXI+pZSMFXTRl+U9vIN9qkdsP1vgin7CgwQa2V0MHPdQap7NszbpG0dduxRkvg
M7uK2Y7QCviDq8eVbC8fqsAvRe+UDIXbA3sAEQEAAYkBHwQYAQgACQUCWEmbrgIb
DAAKCRD5ugraMcvYnoIuB/9cHKVJhmGe105G0XeYNVq+X0yzSugMfAwVGJOIY4bd
kbxSOj67eAc1xTH6wbx7KHHhDfDVN/5KHxJSm+uJXE6hi62dY++syPdoqhv/1AMD
0YKpx62Erm9zqJ3/k5pCPmzFLEniQ48bdZFxaVUZBvZ4c4cq7aE5kY/WfSN/WNOJ
79zSo+vT2RntuFY24Rkplwo+aiq/gEdwKvuOzVDc07G+idozfWIYAWXRgiGDEgUg
mPkNbpYLoM1MPKTTkBVMjYvEESdkiPjHHcBugV5kpsuyWm6jtbgR2Jt84gq8+qv9
gVgkT0xo+Jf/9X7so8CXqtI9P1keQ51gXM3lQFXkp7FQuQENBFhJnJYBCAC/Q4Rb
dpAwRval9S6doIVKvPu27haj4Irppgz4c0NKtnGY6MkYOXwMJmd1KGnV4kU+zJAX
Cj+4fo0nUnPwMl+vkr6X3KtOOMr9Bb5T1wnj2YieYpA0oEf4Jnic8qQZKz6SV2aZ
xB/FgS+orOC1mDv1xmSPuHfCZuH2JtHA+4y+3XqYt0ZusS31vSsv63HiUqt0c33B
MrTdgDmP0yntDnS1Qb7cgwhMe6AVXHHNJDZSNbCWkwu1ASHfrTRUt1ijEUZocGBI
EmMN+vdyU4Nd5aF/4fiQRoNOq3WLjknaKM+uAJ62AguDzuEkn3z6Ei2rlg3KN/9L
3Mzi7D7gdVwhseytABEBAAGJAR8EGAEIAAkFAlhJnJYCGyAACgkQ+boK2jHL2J7h
pgf9EDjp0U9FgpmW0JVKOshmkdJIoF0km4YBKn5KLjVTmPNP2js3gD4PMkfuXMUR
2/uDQJvEpgL/DqbKqt8TgupxGsMmQ3mYgnaiVwDH0yNSz6rpzYSsvnZxaIyKjpp9
63RfQqAtg42PF3Dje8vlMT7lo7Pb8naUr+bu7PaIsPZL1Bl0lGMymAKS/AUZ6B1e
UIy7Qg+/Qcl95+f/4nnQuxTpA5kqcibAAWpM/xbxbpKoydbJZG0opxgai9hvy7hO
f0Rlep7cdISuP5YcAdGWYSHq5t4RJplGLFlBD4hOAzkTi8KmtjriLEIp7fMG8QCY
Yge3O32KK6BSdWmgYjuINvO0LJkCDQRjDhTjARAA4CrSPsoEwnp/dp9xhk0Mv66o
Wx9YbLPqmSea2HKfFL+a5BKfOYxIa2Rdp1lIognPlmBde7dQtaT8YfHHjjWwhp1e
IWcQvu1Qi7hU+hR2BOw9uc0bYoPGJ0VsWoa6bqn5NFv8n2owm1PlWwkXXZpi6s29
Dpm49BGxDuO7kRUSJOfOHamKn8WBvJcbcV9WEn+GlLvkf2KEXdTPyPTau8Oe56yM
2HNpxZcDwI++zpHvAgWaVxYOaSljpmojpIdI5RQjSK48hQutFqJo3znqB7Csl+mf
2a9x03sA0bBZeV5B46WcnvAWftItWQIQK2jXVk4tfWeVyVaCFR7Otmubc31qZm2O
0uBx1CiX7PdUSxopwVyeiM7ZgL5oIsLh/J8gPHySkNAeb9fieR9lXVnekALkWVGt
i8hM1az8ZBS/F0aHjsQB0TRwI+5Nkoc97xnXIEOwCr1425yt62B/XgHRCi+5ViT6
IqQIQfh+PXX7cYR+n7C2i1tlHS25dYosBx+Z3YdigGQahEoSbk2EkPzPtIQRSvva
N2va9pctMQ4bN4H9d7HzA9tHpvxMUq3Y9PLpqg6SlIo6XuEpMb/I5JxsopPe7wcJ
m6rMKH7vv8j76zKSc9oWitsP/CCQmuiLTpmdyZNcOKjubfEcpyfTC76ekHzT85ry
WdVNHMppfkMHTu+wv4MAEQEAAbQmR2FicmllbCBDYXJ1c28gPGNhcnVzb2dhYnJp
ZWxAcGhwLm5ldD6JAlcEEwEIAEEWIQQsFsdl2+VKCIEw8bxLm19gC1XztAUCYw4U
4wIbAwUJA8JnAAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBLm19gC1Xz
tE39D/4pT/kHyTZb0c0/dJw+4C93pTigi+BSOTTrVP/HoYvdp1gLcP8Nf3ROpaa3
sTv7qnZxG4AJW8EoWU8Bx3HuCv20/hEwM9vjVOdCqi313Ep/krl4nknv/8eY9lmR
8mjgRVaAoL9SFvUy8bJrsphJ2w/rTAMX4EKK41AoU9KGXm42cU5erIWGp9OUzhSa
vTKppsn4rmBm6uw/nfmNoGLithmsvihG/tXN39Ruf5YYeHEBi1RjL9N2E0VZAKwW
9KbG5C8ylu7dw/8zrbXQkPemv6cWouGNdP3s1gmByoVqrBK3UU0a/13U0aT4wut/
BqQ5Xxmqu9RfQOEK3e/Q7X3kGp2Zeww0UreKfjoyvcsfjV/HDOAz9Txip0OCd1Bv
yGSl0lePLSSo54zSPJA8ar5dw501jeKn1/IZdl9CD+hxR0uqp5x/0y2QXYcC6L2G
bkRkcUkppo1HVjdnpjakGyip9ylKmNRvB9NbxfKNGPC7B4MhGix5ho9PJgqR3lwh
gkLM+Y711I/JPVgwffUiEASwlk7XgGd67s0ace8wfxDx3mTWM58m2j+BLNjuQZgN
xynYhsGP3Ln6yMnKsGkT1wIY1cR3CUzdl9SPhloRZjYs0MFqZQ0ycsHDFaZJWmQ0
PzurREeiF6d21UQid6kxlA3c1AXMKOhV+ItlXDD8cAwi8jZSG5kCDQRetvQuARAA
5fzuO7R32WqemNz8HyPf+MHv0w8CS6gT/IzM9wB/LOXvK1hyCMFyWqNTVhZHeFZ0
kojRDHn35KzVqcgm469OjRJpqePRglKUMIU9Q7kLvC4SqHj4SBpwCLLbctS26cpU
n0xDu35O0p5GKMjzgornxFwzi6QcfBsJv3DDWYRSNOVwkEn+fvSI2hMYoYJnXwin
IW8rxq1J/WO3ruT2FLbBLtUk2rDc6ubrEkOoaLd8wW1aD0SvGu02Qgxias76h9Gy
KVRylSsQPK/ZD8U2+I5UT0FfNVUnvPE4LCMw0nhqjoTOTQ05lTfqq/QGDwHchY3p
rFYzBRC9+HRIDNlQbF/O6tobzpGPXPbU8nAnFABMhGERF+bXXwQBXHA//HPQ3Cuv
TjgfHRaLyZfqqLQHl3Wt/TxUBSgn8GGvst9umNuLTPia/BmH7J1GujAOh9/6DQgB
qbNFWZwVUXI50szaIz3PXQOzp0++LpBW9Mxl+sTeXUwikVv5i455TkBAVuXSyjYd
pY/VMxv/SlCOFeH1bBI5/CMbVDISJuzgLFIxsnZPA9gs2j1BBmcF08w8FR9rQmRq
HD42fO0eMQ2wduyv+JzVm+Lse5pRMIrObWgZ6IiogFe0fxatCxCUBaIl0S+7ZiQo
DKPFQ4P2t4vhrw1sa97Ux40LVPiidfk6on90Kyed3X0AEQEAAbQ4R2FicmllbCBD
YXJ1c28gKFJlbGVhc2UgTWFuYWdlcikgPGNhcnVzb2dhYnJpZWxAcGhwLm5ldD6J
AlQEEwEIAD4WIQS/3dKGQoJPgRjvd5CbZ6XBIikRjwUCXrb0LgIbAwUJB4TOAAUL
CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCbZ6XBIikRj3dhEACit6Tw10jGR6AM
FdKtVVHTADcWxPu0xPblxUMelXQ2cZWhFhFBbrmuNbvM8Aod7+heTow65VsKD0av
3Oclr8qVAeyLQey/7r7DqsulfDxpB+KR8WAshU4Qtjr8yhVxqja8Re9DSAM+jckp
UD5buUytj6wtTIlzDD3IjXXzWoElGUCnnDDIo+Ko0TEcqXFGSUxJHq+AkehwvuFJ
ZwY+lKYoyqrmhmTAHveaESS1cAjrIS4B44oTHtdqsF9Z43gEKj0EeCmeyVHmmODN
aMpscrmT5cFLQCkqLh0O7O4Nyh2qEiGpSGsWPTgsbOdh+ctrshW66kg1Vj4df84F
335ruoQf6EXsg4YXB+O/nE4J9t3MPOne/gbqaW7NOYPEHI21r9PfSEW1aYqypjkU
/uKnV43r/8O+FmVBVyluzxYR6K+jwFG9swHLq1b+EUyFbEQ+sD6L1CoJG3SXl/b2
ya2cnIJxk+LcC+1kjyor5+AWASKdvP42c5djrYksmX/4a5xKhafH2uA4lvZkQNxM
W43wkKjhjE8C8AJI+JvgIXTeecWEC7I/+qc9wMrAUaEtRP77cUiKUQAJn91IYTKU
ZCpNJgOX+DLEKkeyWdm3p/ZPxkx3h+6rKs29ZPqxMBGPBfdUILAc0+czuKT0NayB
kzeAgWu0HCR933N4va2DGALblZaQlJgzBGYgDVwWCSsGAQQB2kcPAQEHQET/J56A
hF3VoW7XvfydS3kGVTEN7zzOwA06KmRjb1w3tCZDYWx2aW4gQnVja2xleSAoUEhQ
KSA8Y2FsdmluYkBwaHAubmV0PoiTBBMWCgA7FiEEnX+ZoMuPBcimlY1iVql692AK
OaYFAmYgDVwCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQVql692AK
OaabxgD/U1oPDkgLiGarAcMXetpNNWGxtPCQpanwfP2j3qBKj3EBAPvlcIwuQaaX
pSssDOgrWLcUdLTPs7dzo4ypTeNNAMIGuDgEZiANXBIKKwYBBAGXVQEFAQEHQPkj
qvdb94qwtcImUfZHrErbLpbCfpYhQtNaC7k/TocBAwEIB4h4BBgWCgAgFiEEnX+Z
oMuPBcimlY1iVql692AKOaYFAmYgDVwCGwwACgkQVql692AKOaZG2AD/aKqJAuXw
Oclj3Yt31xhJeCuurZHmyDmuT25ttx54OD8BAKZcfBeklQ+7X7M6I6iQ3+VuMOKt
BdMJJz0gi4wrpXQEmQINBGZLNvEBEADLRJ//ovPDl1oL8OUdCevYx12mazjaxcim
m2ei5WxRxYlB1LSjjFzWrzvSlwq8WXoxjyb7lLw+VHSXokO88Jx3zAUpepZNT2wQ
3/YTGw4i6wq2uyyPsgVPELe9qr0Y8mROPf2CHsDfEaFzoXYZZ31ucXzP7N1bIH0u
vH3THYOMAQ3Ag637py8exU5lehs9m8mLv0pQIDsWJUCsXsjiDptI0/8qRaBbuP10
bo8gJlxCH+7UQI+Adac0drMgbIWqfsVhm64nbvOIwxMz+wliNztXlkw1anmK5Q9c
eUrpkkjiFuEvstyyBlwqpr8a4sOfT7wxjs/2wg7IdJvcQZFVbVRw+WVZ3eVgSkoq
oCGd2KrbaQjktCihkmSxd6gTCJYUOVUl/Nxrz35AW7kIOUICsYrd6Zh7Xr+jyjfV
cGs55bbxzl5QCsPcDtHXdOQ2oAVC3zqkjWDDloFdGHIVW5W7flc9jvfg7otmmSls
CTABc97JCoOdlDoRtp4wLg50RZXfQJ8FNpqebyFhFmGO4AGkbYuycGiupVq5rfdW
M46V7K0yWftSZSKFHiD+B2hq3docuk+o4g2AdZV0eEH3/UKRz0L1p5VCWk/yU+oF
+tzDrhCwfGSy8PQL4zfnkfttSFMmrlrgohyAF5QvBYZt99MWO1Hr8O2hPOkcZ6CL
gsvrMaD2mQARAQABtCtTYWtpIFRha2FtYWNoaSAoZm9yIHBocC5uZXQpIDxzYWtp
QHBocC5uZXQ+iQJOBBMBCAA4FiEEBhbpPZWvRxJD4mdhdwQm4X67s90FAmZLNvEC
GwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQdwQm4X67s90g4Q/6A8hovyPm
0qUadEJzXEWVLdLBqwHf5Aagxu8TEQUhn7ku/VKWfx8UBaI/5hTpPEC+Lexkewea
K3xjs6DeIyFeeY87ZpujZ8U2pS1DgrYNH11lRPcJM9sh5X5p0EnsHZMAIAqNq+k5
bv0jYNNKduf5v44Cls1mg+I5CBhpgeZGRE+QLxRGb3YoQC3HwRnXHCYNsQNYbRhY
gsUwfwxoHiGpM1EjeeX37mVhETDnJNnxKf/7r0nAVcQZqz1okJyhNBpM1Y/NgCxu
TyG222TZmJOYuNbyZIT2ZG6z0IbQZbst4rhWmJk1oEA8EV5chMMOwP0eUuKWBHqT
/QCmrX9JyWKeTm7XJb1LBi416esrTNKicrPnhZopTkEEHFc60RvchO8XlZYepisi
JprUjW2T2KY+FbKwwQOFDQk99dVwYocd4CzzkdG/dKeda+Dj6oz/lIniEtPQREC/
rZGlQNw+czkHhvk1Vu49BrYMY+AfnJ3QZqQr5xAQaVehnpcxaUPM23pOmLiFm0lr
tuU32yIXeCy+UEX+0k2f6iODlr+3792cbpMcH7Bk0YNOm8b9SNYvqVPrunFGttg0
4TtnTMFpDaN3i8GWoMXj+NmrFnQLBy/dpc3YvRD/hqtRXDwRXTNoIaCg1vttFWV4
F86XHs0p5xoKeUfHoHlV1320gZCBn8dm+a65Ag0EZks28QEQANZ9UNHdyJJSGTqj
LIPQQET+E11NmpwbsLjLiQMFKZEmL0VPtqjh2qtLeKGSD9BQQNLHfEU48M3GiUNq
H21UDWh6ObDCGE2uPvL3U/C8w+2F4IABv8WD8FVaZkREX9MoRiPVd1HOEAOYsgP9
Qwv60jVM+REDSnk/0lUfbcvt/JIxNYoRnBLR2LEG2WV0GNnBFpkJ5+KzR/cdtZEo
xodNJvE2QOeN2BM7Rj4LTtwxh6sCI2Xd60Si7nNtHSn/C/1/+KA2igH/w1+buS3p
JXkhtH+Z6/8kBdUz7GgfIzRBfnJ78+H9PFjIPPa0/waRsaS1Sgk9FLNFXMrmjzg8
v67qmhjgMrdPcVGkW0S2WvK3pY1FiYf0iMlfW4kKwPJAKNM3x+x35Bsf2a6tIAQk
ZOjcidJppenAX3tl9T0vpuCO4eaEKnP2Dyxgnpm8+Um9kwhapjhU0tJVx//vMzqo
vb6dG5zSiG1XZt5k0YpJMVEuuYpuwTnJCBkZz8nzb7+JQ12he0IT2mPsXgMlq2Dd
j9OnuoCZpeM/YkjxOGwVZfNvEJUUhbcH6Vu5gPnG3+5tXbwWnC1jeA45pKkq4BHY
QnoBW03OAcavKxUWud8Xh5E4FNAWJQ2VyrI1Bl1raXL7mvbDxRXMLGyaz2KDRRoK
tpYCvjoBr6azfIR1yjDTheJpAHGxABEBAAGJAjYEGAEIACAWIQQGFuk9la9HEkPi
Z2F3BCbhfruz3QUCZks28QIbDAAKCRB3BCbhfruz3b8ND/4mPooynDsIAXQ2ygvA
XC/zpIKm1fc9f81Ju3hC99vMBdTHjMD4miBxRrlUZNAWqpzORMJqMZFQy0BHvwph
KDtRyhE+PPu9pQHqcOe9weiCKu+MCTrlS0hUuzg7RBrzzOrf2GuQYS8SbHBqb1Cr
WQFnOJ0L5tGHd0sRq7KPY9P3Wy9OPX1JX8eo637LgxKbWC5i4spd4qRpXYU1xaeo
G8s353O8oTdNCfHqxKI2G3lu3J9ojMNUxRbi0ATS3VOXGkLkhyvtDeXDwe+N+9cT
RwMc8QEEYvBhL9+B1NUMzRfC3GSQ+e9oDBVrvtEYs4pY+H56ETm56Dl2j8uiyCGH
SsjjL48lDc1pQXnlG9aQn/zANQFG6PdMsYYV+qN+Ktp3sd6a3LN83UaeGxfaOn3A
+SsShQenAGKUmGWiDNMJdeCrLwXvSFJO+qEFMrkEFnKb1lPCLkGer/5oM/KLyLZD
zOy3+3/Wl0B0nFZIlNw5VZB9OUC4PcR7ZPsFhb5QIxpQrq3o6g1eQXrxTrZVJzk/
0K3Lm+U29jbmGgQT4S31gnxwzXNKEkVFnMlCnAFHA3XR8l3W2tswMbPSSogcNS3G
Pro6LL3ImaCVxmrI/w1QgGZrxP53PNSyH0MxH1kVTqTcxnGJL6BUt/pTdScHstAB
scsNO/h9K2rfsNinuiQPA0QDZJkCDQRoReomARAA2GYr8hl6sDg6svwPAmZx/p2d
oUBPT+z1cFMbCh7klCG7BO/FzWpHGpE2lxUJw/BrLHQwuvjlYXdUZ7mtyIb/AB2I
Gh10ybM9Dmy2chYMGfkBfLZi2r8RWUuyNhtUhptHq8OoHAsOHhlDrb/QKLHie641
ZrUBH81mn+t4ruK7tQopMRTuVWiB153OuMo3zTza7K1OjOjE114w1MdX+Qv4Dn8t
3+wwo14GqMn19vcPxifV4C2X6Rp8S56IG2byxPrcaYkdBMYmsTHaocSUkfoQQX1R
E8O+JXOiCTkuzX00xRUV5qdxXOXlEcABFuN1YKb3GIMvjY9xTNOumMfhlGue0PUU
9smVDaMxoau0d/svcuuumU0AM+LiEAVSbkKsTg3KqgWd/wxLxRqWUbm2UAld+2tR
rCrZk6OBws5ra5X42dRhm/nz7wLOneCFVDH7qsT+bug+qO9HlLbAOw50G7bVcYGI
/KCkIEh/h55+bBytxxTgriRLWTzscA3yKmSqNsoMKqTOoANKEUxiWfJOyz6Gpa6k
U6QbzCzw7zIeI8N9WBMLVA4johWkhneWUuAfpPouL3ETeK2sgi8nmlfC8uOiy5rO
E4XvdlVsoxpjibvRXgtzfQCaZtI/inzEyAzmyCCH3brd9zoHww/fJkDs2Nfh8B8o
wHAAJtVZ0wIEa2KOIZcAEQEAAbQrRGFuaWVsIFNjaGVyemVyIChmb3IgUEhQKSA8
ZGFuaWVsc0BwaHAubmV0PokCUgQTAQgAPBYhBNlcA7xwK+lRU0SuM3TkS8kGdwGl
BQJoReomAxsvBAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRB05EvJBncB
pXXrEADEMeiWUvstRa3+Uym+o39Bc2SB5x9SxoGWeVJlfJ1COIFea7dkTaEggy+v
+eYejhraF1kg1mxHISSTUwgM3Wm+KqHgdcAorGyhtRcXri7r3WGmrjr1LcCJe3TS
hA+Gm5SNlgFd5FAy2pkS3G8Ozw/3Ac8vhedNZAiBv4q8ynYMoc4PcxtvUUv92gZ7
+qNzEA8OJxcf0yQtv8EHwN+89LyTEXTkK6enJ4CGriMW/fURrdJUwJpHZ+86qNDP
c7c85aLLEtQ0rRgCvPYScqc5q8AKUKjzUIPuDdMoomfvR+fUaGiyOVZUjsUSCsnv
zm1G+6K8fWz4XEYPm8FnhGFcO++1GRzSGoVp2TXIau4CV4Ui0n/0UbphKpZZddQW
HqpH7uXq2E85r7qp6m/R78FOgUJ2eI9edB2aN59J1kcb5/Q7hmi1CABijyJs4uYX
PHyn18+Ydzha+0Q2HoIIn3rjfjzG/DSxKhB2tKWcin42szvhs6xc9gBWlmyqWFPV
W4d4R0UqJpI34/7+q1sn1pViQ1ffbybOn7g0Q07uBBo7Z5DPuEOv02RwEHRdeTIV
QURF3eHul2cjZt7aoC1mY/mOlECVj2vY5nUZT5dsZRnuzVvoku3LlHMbqyM5m0oa
e5j8+/kDm+uXIaGNu1xltHz4oz5zczfQCDcGFwsh0wfhrYZt9ZgzBGhF7dkWCSsG
AQQB2kcPAQEHQBwa+6w9VzzM7hyPRWnZ8JZ+3Hti9Te5GPO2Wkc7M1OPtB5Wb2xr
ZXIgRHVzY2ggPGVkb3JpYW5AcGhwLm5ldD6IkwQTFgoAOxYhBEnZr2vHKoDWaRcZ
yKoj9b6ccJfUBQJoRe3ZAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJ
EKoj9b6ccJfUUhoBAKkJtGkYqHW7MmwjiI/on1s18zTeSwl2128R6/WP8BeJAPsE
IekiW6Jx1KCmWcAHQbVzr1k+XZUVQCJsOl9A00VzBrg4BGhF7dkSCisGAQQBl1UB
BQEBB0DAmJAXdpBwDtiFbpQiis329+xIkcpb4aMQLemV0VhFbAMBCAeIeAQYFgoA
IBYhBEnZr2vHKoDWaRcZyKoj9b6ccJfUBQJoRe3ZAhsMAAoJEKoj9b6ccJfU2mcB
ANESDPjneRa0LZy123AjD/pchlQKwrxg6svX75tcRB0yAQCQ4EYWk3b/BE3THdnN
nHPNsFNBKk0UUuDa9ktgklvkCQ==
=Ob23
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -19,15 +19,13 @@ DirectoryIndex index.php
#
# Redirect to local php-fpm (no mod_php in default configuration)
#
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
<IfModule !mod_php.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
#
@ -36,7 +34,7 @@ DirectoryIndex index.php
#
# mod_php options
#
<IfModule mod_php7.c>
<IfModule mod_php.c>
#
# Cause the PHP interpreter to handle files with a .php extension.
#

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,11 @@
# easy for developers to write dynamically generated webpages.
#
# Cannot load both php5 and php7 modules
# Cannot load both php5, php7 and php modules
<IfModule !mod_php5.c>
<IfModule prefork.c>
LoadModule php7_module modules/libphp7.so
<IfModule !mod_php7.c>
<IfModule prefork.c>
LoadModule php_module modules/libphp.so
</IfModule>
</IfModule>
</IfModule>

5
SOURCES/php.tmpfiles Normal file
View File

@ -0,0 +1,5 @@
d /var/lib/php 0755 root root -
d /var/lib/php/opcache 0770 root apache -
d /var/lib/php/session 0770 root apache -
d /var/lib/php/wsdlcache 0770 root apache -
d /var/log/php-fpm 0770 apache root -

View File

@ -1,7 +0,0 @@
<IfModule !mod_php5.c>
<IfModule !prefork.c>
# ZTS module is not supported, so FPM is preferred
# LoadModule php7_module modules/libphp7-zts.so
</IfModule>
</IfModule>

File diff suppressed because it is too large Load Diff